directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Lecharny <elecha...@gmail.com>
Subject [ServerEntry] We may need our own JDBM code base
Date Thu, 07 Feb 2008 13:35:18 GMT
Hi guys,

I'm now pushing the modifications to the backend. Entries will be stored 
as ServerEntry serialized data, instead of serialiazed Attributes. This 
will have some impacts :
- The MasterTable won't be compatible with the previous version (1.X and 
1.5.1)
- We will have to modify the way data are serialized, using some other 
instance of Serializer classes (this is an Interface declared in the 
JDBM package, which is used internally by JDBM)
- As JDBM serialize the Serializer into the files on disk, and as our 
new serializer needs some reference on Registries, this is a dead end : 
the restored Serializer won't contain any reference to the registries

The last point is blocking. I don't know why JDBM has to store a 
reference to the serializer, but the BTree class use it :

BTree
...
    public void readExternal( ObjectInput in )
        throws IOException, ClassNotFoundException
    {
        ...
        _valueSerializer = (Serializer) in.readObject();

Here, we need to inject the registries, otherwise the serializer won't 
be initialized correctly, leading to NPE all over the server. The BPage 
class use this _valueSerializer to serialize and deserialize data  
(BPage implements the Serializer interface) :

...
                        if ( serialized != null ) {
                            bpage._values[ i ] = 
_btree._valueSerializer.deserialize( serialized );
...

So I suggest we define a new project with JDBM sources, and fork from 
the existing base to have our own. That will allow us to bypass this 
limitation.

Any other solution in mind ?

-- 
--
cordialement, regards,
Emmanuel L├ęcharny
www.iktek.com
directory.apache.org



Mime
View raw message