Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: avoiding a race (read locks)

by westy032001 (Novice)
on Sep 28, 2010 at 15:31 UTC ( #862450=note: print w/replies, xml ) Need Help??


in reply to Re: avoiding a race (read locks)
in thread avoiding a race

Thanks for the reply.

If I understand you correctly, isnt there still a potential for a race condition ?

If the database goes down and all 300 procs get a db error.

process 123 open file and places a shared lock

process 321 opens file and places a shared lock

process 123 decides it is going to modify the file and so waits for 123 to unlock then places an exclusive lock modifies file and closes

process 321 decides it is going to modify the file and so places an exclusive lock modifies file and closes.

If both are changing the file as a result of the same error (i.e database is down) you will get 2 of the same error codes recorded. and 2 emails sent to admins .

thanks.

Replies are listed 'Best First'.
Re^3: avoiding a race (read locks)
by Corion (Patriarch) on Sep 28, 2010 at 15:48 UTC

    See the following sentence in tye's scheme:

    When you get [the write lock], you read from the position in the file that was the previous end of the file and update your decision as to whether you need to write.

    So, in your example case, Process 321 would notice that the file changed since it last checked and that another process already sent the notification.

      Thanks, Corion.

      I also should have pointed out that, in order to keep reading past what had previously been the end-of-file, you'll need to seek( $fh, 0, 0 ) (if you don't just re-open the file).

      - tye        

      aha ! Thank you !

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2023-12-11 13:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What's your preferred 'use VERSION' for new CPAN modules in 2023?











    Results (41 votes). Check out past polls.

    Notices?