[infinispan-dev] First version of JBoss Marshalling based Marshaller

Bela Ban bban at redhat.com
Sat Apr 11 03:16:09 EDT 2009


I suggest you also take a look at performance and the size of te 
marshalled data, compared to the current marshalling code.

I recall we had a bad experience with JBoss Serialization, which blew up 
our data

Galder Zamarreno wrote:
> Hi,
>
> Re: https://jira.jboss.org/jira/browse/ISPN-44
>
> I've attached a patch to the JIRA containing a 1st implementation of a 
> JBoss Marshalling based marshalling layer for Infinispan. A few notes:
>
> - JBMAR based marshalling is optional for the moment. To enable it, 
> configure the marshaller to be 
> org.infinispan.marshall.jboss.JBossMarshaller.
>
> - I created a new profile that runs the testsuite with this 
> marshaller. To run, just do: mvn -Ptest-jbossmarshaller test.
>
> - I've run the testsuite for core and there're no regressions with new 
> marshaller. I also wanted to test jdbc but the testsuite seems to need 
> a bit of tidying up or I need to preconfigure something (Tests run: 
> 177, Failures: 4, Errors: 0, Skipped: 164, Time elapsed: 0.631 sec <<< 
> FAILURE!). Regardless, jdbc uses a dummy marshaller so would be 
> pointless for the moment.
>
> - Different type marshalling has been implemented using 
> org.jboss.marshalling.Externalizer implementations mapped from 
> HorizonMarshaller class. JBMAR does support Externalizable classes but 
> I figured it out later and wanted to touch as less of existing code as 
> possible. So, for Beta1, some of Externalizer implementations (except 
> JDK classes) will probably go in favour of Externalizable 
> implementations.
>
> - StateTransferManagerImpl uses marshaller in a different way to the 
> rest. It first opens an ObjectOutput and then makes multiple calls to 
> stream stuff. StateTransferManagerImpl was hardcoded to use OOS and 
> OIS so I had to add org.infinispan.marshall.Marshaller that would 
> start/finish these OO/OI implementations. This is to enable 
> JBossMarshaller to provide OO/OI implementations coming from JBMAR.
>
> - I had one doubt about the scope of the marshaller. I gave it 
> @Scope(Scopes.GLOBAL) since it'd be something shared among all caches. 
> Now, I assume its @Stop method would be called when all caches are 
> finished and the CacheManager is stopped? Wanted to make sure nothing 
> is leaked!.
>
> - Application level versioning (VAM) is not yet supported in JBMAR but 
> David is happy to listen for ideas. I'll address that for Beta1.
>
> - For Beta1, I'd like David to have a look at what I've done and see 
> if he can review it and then do perf tests to see whether this new 
> implementation is faster than our current one. If it is, next step 
> would be to design a way for people to extend/modify via configuration 
> magic numbers for their classes, provide Externalizers for their own 
> classes...etc.
>
> Cheers,

-- 
Bela Ban
Lead JGroups / Clustering Team
JBoss - a division of Red Hat




More information about the infinispan-dev mailing list