Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: Spurious "Invalid Argument" on file open

by BrowserUk (Patriarch)
on Oct 23, 2012 at 20:40 UTC ( [id://1000520]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Spurious "Invalid Argument" on file open
in thread Spurious "Invalid Argument" on file open

The most likely reason -- especially given the network involvement -- is TOCTTOU.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

Replies are listed 'Best First'.
Re^4: Spurious "Invalid Argument" on file open
by rovf (Priest) on Oct 24, 2012 at 08:47 UTC
    I don't see the possibility for a race condition here. A race condition could happen, if something changes to the file between the time I check the existence, and the time I read the file. However, the file is pretty static: It is kind of a configuration file, and after it is created, it doesn't change for weeks, maybe months.

    -- 
    Ronald Fischer <ynnor@mm.st>
      A race condition could happen, if something changes to the file between the time I check the existence, and the time I read the file. However, the file is pretty static:

      With the network involved, it doesn't have to be the file that changed. Any temporary resource state in the fabric between you and the actual file could -- breifly -- manifest itself as in an inability to open the file.

      I'd suggest cutting out the possibility of a race by just opening the file. And if the open fails, retry some number of times before logging an error:

      for my $try ( 1 .. RETRIES ) { if(open(my $rule_fh,'<',$rule_file)) { last; } if( $try == RETRIES ) { die "Can not read file $rule_file : $! / $^E"; } }

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

        With the network involved, it doesn't have to be the file that changed. Any temporary resource state in the fabric between you and the actual file could -- breifly -- manifest itself as in an inability to open the file.
        That sounds frightening. I didn't expect this ... thought that in this case the underlying software layer (CIFS) would take care about such glitches. Just to get some idea ... what kind of resource state could, for example, cause such an effect?

        I think I will follow your suggestion to do a retry....

        -- 
        Ronald Fischer <ynnor@mm.st>

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1000520]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (4)
As of 2024-03-19 03:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found