G'day fanasy,
[Disclaimer: I'm not a user of DBM::Deep. The following are just suggestions.]
Instead of kill, which sends a kill -KILL signal, try gentler methods of termination. Some suggestions: kill -QUIT; kill -HUP; kill -TERM.
$@ could be modified before the code gets to the if block. Try writing your eval like this:
eval { ... $db->commit; 1; } or do { say $@ if length $@; $db->rollback; };
[Note: If you have Perl 5.12 or later, "length (v5.12.0)" handles the defined for you.]
Check through the DBM::Deep for possible solutions. You didn't give much information in your OP. If, for instance, you're using large files, the "LARGEFILE SUPPORT" section may prove useful. Check other sections, as appropriate.
Check "Active bugs for DBM-Deep" for problems similar to yours: there may be solutions or workarounds. "Bug #130395 for DBM-Deep: Fail gracefully when database hits max size" looked like it might be similar to your problem; although, that's just a report with no fix, solution or workaround.
I do note that active bugs have been posted over 13 years but not a single one has an entry in the "Fixed in" column. Also, this module has not been updated in almost three years; I wouldn't hold your breath for fixes to any of them.
— Ken
In reply to Re: DBM::Deep: Cannot allocate transaction ID
by kcott
in thread DBM::Deep: Cannot allocate transaction ID
by fanasy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |