Bug #18305

Updated by Kyle Knoepfel almost 3 years ago

I am using the dbOutput (SQLite) output of TimeTracker to study module timing distributions. This works when I create a new file for each run. If instead I use the 'overwrite' option (overwrite : true) to overwrite an existing file, art sometimes issues an exception, noted below. The exception seems to be issued randomly (rerunning the same job multiple times produces different results), but is fairly consistently produced when processing more events the 2nd time than the first.

> %MSG-s ArtException: Early 30-Oct-2017 16:04:12 CDT JobSetup
> cet::exception caught in art
> ---- OtherArt BEGIN


---- SQLExecutionError BEGIN

database disk image is malformed

---- SQLExecutionError END

cet::exception caught during construction of service type
> art::TimeTracker:
> ---- OtherArt END
> %MSG
> Art has completed and will exit with status 1

As a more minor but annoying issue, I note that, without the overwrite option, if I try to write to the same database file, the exception message is obscure and doesn't help the user understand what the problem is.

> Transaction d'tor called before commit was called.
> terminate called after throwing an instance of
> 'cet::coded_exception<cet::sqlite::errors::ErrorCodes,
> &cet::sqlite::ExceptionDetail::translate[abi:cxx11]>'

what(): ---- SQLExecutionError BEGIN

Failed to bind int64.

Return code: 21
> ---- SQLExecutionError END