The persistent store identifies objects using a two-part object id, each part being a 32 bit integer. The first part identifies the persistent store in which the object is saved, and the second part is a unique identification of the object within that store. Currently the persistent store id is simply the system time (in seconds) when the store was created. A persistent store containing references to other persistent store thus maintains a mapping from these creation times to the full pathname of the persistent stores, in order to be able to call the openpstore virtual with the correct pathname.
Unfortunately this identification is not entirely unique. The persistent store kernel ensures that no two stores created by the same process gets the same creationtime, but there is currently no way to ensure that different processes do not create persistent stores with the same creation time. A process simultaneously opening two persistent stores with the same creation time will therefore in the best case receive wrong alreadyOpen exceptions, and in the worst case wrong in-memory object graphs may be created.
In future versions of the persistent store, this problem will be solved by using an alternative identification scheme.
Persistence in BETA - Reference Manual | © 1991-2002 Mjølner Informatics |
[Modified: Monday October 23rd 2000 at 10:43]
|