in reply to Re: Ignoring/Trapping the DIE signal
in thread Ignoring/Trapping the DIE signal

Actually, I've already got that functionality in cron & startup scripts for fatal errors, but it doesn't help if MySQL has gone away. For 1 of the progs, that's fine, but the main one is a radius (Accounting) pkt ctr/sender, with a lot of ancillary info for each rec stored in memory. If it crashes we'd lose that info, which is the main purpose of the machine.
This prog can manage without MYSQL for a while if needed, but I'd like it to try to reconnect regularly until MySQL comes back.
I'd be surprised if there isn't a way to do this...

Replies are listed 'Best First'.
Re^3: Ignoring/Trapping the DIE signal
by sgifford (Prior) on Jun 15, 2006 at 02:25 UTC
    Hrm. You could certainly store the data in stable storage, like with DB_File, though that would have a performance cost. On the other hand, I've never seen a die that eval didn't deal with properly...
      Yeah, the performance cost is why I only update the DB after a successful send, and then only with basic info, not all the different pkt type counts.
      As for the eval{}, feel free to try it on the above code. What seems to happen (as per the results above) is that it can't handle repeated failures ie if MySQL doesn't come back quickly, it survives 1 or 2 DB related errors, but finally keels over, even if used with SIG{__DIE__}.
      If you can prove me wrong I'd be ecstatic :-) .
      I've also tried putting the eval around just the SQL cmd block ie from SELECT ... to ... finish, without success.
        Yeah, the performance cost is why I only update the DB after a successful send, and then only with basic info, not all the different pkt type counts.
        You could consider using a shared memory segment or mmap'd file for this sort of information; they're very fast, but the OS can provide persistence even if your process dies.
        As for the eval{}, feel free to try it on the above code.
        Well, the code below worked for me reliably over a few hundred connects...