Archived
This forum has been archived. Please start a new discussion on GitHub.
FreezeScript transformdb question
in Help Center
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
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
0
Comments
-
Before we answer your question can you please fill in your signature details as described in this post http://www.zeroc.com/vbulletin/showthread.php?t=16970
-
Done -- Sorry about the oversight!0
-
Please see this thread:
http://www.zeroc.com/vbulletin/showthread.php?t=597
I would recommend using a more reasonable value than the poster though0 -
Setting the parameters "set_lk_max_locks", "set_lk_max_objects", and "set_lk_max_lockers" in the DB_CONFIG file took care of my
problem.
Thanks!0