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

Galder Zamarreno (JIRA) jira-events at lists.jboss.org
Thu Jul 9 04:34:29 EDT 2009


    [ https://jira.jboss.org/jira/browse/ISPN-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12475575#action_12475575 ] 

Galder Zamarreno commented on ISPN-125:
---------------------------------------

Bed time thinking: Do I need an annotation at all here? I believe I might be able to do all that's required with the existing interface which would simplify things. Easier to just implement an interface than implement the interface plus adding the annotation. More bed time thinking to come...

> 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