Archived

This forum has been archived. Please start a new discussion on GitHub.

Freeze error

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

Comments

  • bernard
    bernard Jupiter, FL
    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,
    Bernard