[infinispan-issues] [JBoss JIRA] Created: (ISPN-125) Switching to Externalizers to hardcoded indexes and @Marshallable annotation

Galder Zamarreno (JIRA) jira-events at lists.jboss.org
Wed Jul 8 10:30:51 EDT 2009


Switching to Externalizers to hardcoded indexes and @Marshallable annotation
----------------------------------------------------------------------------

                 Key: ISPN-125
                 URL: https://jira.jboss.org/jira/browse/ISPN-125
             Project: Infinispan
          Issue Type: Bug
          Components: RPC
    Affects Versions: 4.0.0.ALPHA5
            Reporter: Galder Zamarreno
            Assignee: Galder Zamarreno
             Fix For: 4.0.0.BETA1


Currently, ConstantObjectTable uses an indexed List to figure out which Externalizer it needs to read.
This index is calculated based on the order EXTERNALIZERS.entrySet() but this order could vary depending 
on the JDK and hence, different nodes could apply a different order. This would cause ISPN to malfunction.
Therefore, there's a need to hardcode these indexes somehow.

On the other hard, the way Externalizers and classes externalized are linked is not ideal since this is hardcoded.
Instead, a suggestion was made to create an annotation, i.e. @Mashallable? that is applied to classes that have
Externalizers associated to them. This annotation would also take a hardcoded index for it, i.e.

@Marshallable(externalizer=JGroupsAddressExternalizer.class, id=2)
public class JGroupsAddress implements Address {
...

The idea here is that instead of scanning for @Marshallable annotations at startup, instead, 
ConstantObjectTable.getObjectWriter() would be enhanced to writers map and if the target type not present,
scan the object for Marshallable annotation and add it to the map accordingly.

Finally, ConstantObjectTable.objects list needs to be switched to something else, possibly a identity hashmap 
so that free spaces are allowed. In the future, we could remove certain externalizers and hence that should leave
empty spots.

Note: We'd need some place where the next available index number for @Marshallable so that implementers can use it? 
How would we make sure this is kept up 2 date? Idea: The indexes could be maintained in a separate class that 
only contains indexes (as public static final) and @Marshallable annotations could just use them. That would give a global 
view of the available indexes.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the infinispan-issues mailing list