Archived
This forum has been archived. Please start a new discussion on GitHub.
Freeze error
in Help Center
Hello again,
We a seeing a error using Freeze that looks like this:
[ IceStorm: Berkeley DB: DbEnv "IceStorm": DB_LOGC->get: LSN 1/34172: invalid log record header ]
IceStorm: warning: deleteOldLogs on DbEnv "IceStorm" raised: SharedDbEnv.cpp:258: Freeze::DatabaseException:
DbEnv::log_archive: I/O error
We cannot recreate the problem on demand. We are using the Freeze map to write to a subdirectory, "db".
Can someone tell us why this might happen, what the implications are, and how we might fix it.
Thanks,
Brian
We a seeing a error using Freeze that looks like this:
[ IceStorm: Berkeley DB: DbEnv "IceStorm": DB_LOGC->get: LSN 1/34172: invalid log record header ]
IceStorm: warning: deleteOldLogs on DbEnv "IceStorm" raised: SharedDbEnv.cpp:258: Freeze::DatabaseException:
DbEnv::log_archive: I/O error
We cannot recreate the problem on demand. We are using the Freeze map to write to a subdirectory, "db".
Can someone tell us why this might happen, what the implications are, and how we might fix it.
Thanks,
Brian
0
Comments
-
Hello Brian,
This looks like a Berkeley DB bug; maybe you could upgrade to Berkeley DB 4.2.52 to see if the problem disappears?
Freeze uses Berkeley DB with transactions; Berkeley DB uses "write ahead" logging for its transactions, and as a result generates lots of transaction log files.
If you want to backup your Freeze databases, you need to copy these log files and remove them yourself. Otherwise, Freeze periodically deletes old log files (using a background thread). That's the default behavior
See Freeze.DbEnv.<envName>.OldLogsAutoDelete in the Ice 1.3.0 book or the CHANGES file.
This Freeze background thread just calls log_archive (http://www.sleepycat.com/docs/api_cxx/log_archive.html) to figure out which log files can be removed. This call should never fail.
If log_archive fails from time to time (not all the time), you could just ignore it. The exception in question is caught and displayed as a warning, and does not kill the thread that performs checkpoints and logs removals.
Cheers,
Bernard0