Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

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

by rovf (Priest)
on Oct 23, 2012 at 14:27 UTC ( [id://1000484]=note: print w/replies, xml ) Need Help??


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

What do you get from $^E
I don't know (yet). I already thought to output this value too, but I can't do any changes to the application during the next couple of weeks, so this has to wait.

I thought maybe the effect I'm experiencing might be well known already, so someone could already have a good guess what's going wrong. I now understand that this error code is far too general, to reasonably diagnose the problem....

-- 
Ronald Fischer <ynnor@mm.st>

Replies are listed 'Best First'.
Re^3: Spurious "Invalid Argument" on file open
by BrowserUk (Patriarch) on Oct 23, 2012 at 20:40 UTC

    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

      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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2024-04-25 13:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found