Archived

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

FreezeScript transformdb question

I have a Freeze evictor server implementation (thingServer) which serves/stores "Thing" objects, based on the PersistentThing Ice class, from/in database "db/things".

I updated the server by adding new data members new1, new2, new3 to the
PersistentThing class in my Thing.ice slice file:

class PersistentThing implements ThingInterface
{
string item1;
int item2;
int item3;
string item4;

string other;
double other2;

string new1;
string new2;
int new3;
}

I then used the FreezeScript transformdb to transform the associated Freeze/Berkeley database file:

transformdb -e --old ~/interfaces/oldThing.ice --new ~/interfaces/Thing.ice
db things newdb

I then renamed "newdb" to "db".

The evictor associated with "PersistentThing" objects has four indicies.

FREEZE_INDEXES := \
Thing1Index,spdata::PersistentThing,item1 \
Thing2Index,spdata::PersistentThing,item2 \
Thing3Index,spdata::PersistentThing,item3 \
Thing4Index,spdata::PersistentThing,item4

According to the Ice Manual, these indices are now empty in the new database and must be re-populated by setting

Freeze.Evictor.db.things.PopulateEmptyIndices=4

in the configuration file associated with thingServer.

However when I start up thingServer, I get the following error message:

Install object factories
Create the Freeze indices
Create the servant initializers
Create an object adapter
Create evictors, add to adapter as servant locators
Create thingEvictor
Finding last valid log LSN: file: 48 offset 8755908
Recovery starting from [48][6854938]
Recovery complete at Tue Nov 1 16:43:02 2005
Maximum transaction ID 80000007 Recovery checkpoint [48][8755908]
[ thingServer: Berkeley DB: DbEnv "db": Lock table is out of available locks ]
[ thingServer: Berkeley DB: DbEnv "db": Lock table is out of available object entries ]
terminate called after throwing an instance of 'DbException'
what(): DbEnv::stream_error: Invalid argument

(NOTE: the original "things" file with indices was 97,296,384 bytes.
The new "things" file with empty indices is 63,242,240 bytes)

Are there some other parameters that I should be setting?

Thank you

Comments