[infinispan-issues] [JBoss JIRA] Updated: (ISPN-399) State transfer requests for non existing caches should not throw exception

Galder Zamarreno (JIRA) jira-events at lists.jboss.org
Tue Apr 13 11:40:34 EDT 2010


     [ https://jira.jboss.org/jira/browse/ISPN-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Galder Zamarreno updated ISPN-399:
----------------------------------

    Attachment: infinispan.log


> State transfer requests for non existing caches should not throw exception
> --------------------------------------------------------------------------
>
>                 Key: ISPN-399
>                 URL: https://jira.jboss.org/jira/browse/ISPN-399
>             Project: Infinispan
>          Issue Type: Bug
>          Components: State transfer
>    Affects Versions: 4.1.0.ALPHA2
>            Reporter: Galder Zamarreno
>            Assignee: Galder Zamarreno
>             Fix For: 4.1.0.BETA1
>
>         Attachments: infinispan.log
>
>
> I think this is my lucky week. Here comes another puzzle:
> I'm trying to prototype having a separate cache for Hot Rod topology view information and here's the sequence of events that happen:
> 1. Start 1st Hot Rod server which also starts up the Hot Rod topology cache (cache name = ___hotRodTopologyCache). JGroups local address is: eq-11980:
> 2010-04-13 17:13:36,056 3881  INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (main:) Cache local address is eq-11980, physical addresses are [127.0.0.1:7900]
> 2010-04-13 17:13:36,056 3881  TRACE [org.infinispan.factories.GlobalComponentRegistry] (main:) Registering a shutdown hook.  Configured behavior = DEFAULT
> 2010-04-13 17:13:36,057 3882  INFO  [org.infinispan.factories.GlobalComponentRegistry] (main:) Infinispan version: Infinispan 'Starobrno' 4.1.0.SNAPSHOT
> 2010-04-13 17:13:36,057 3882  TRACE [org.infinispan.factories.GlobalComponentRegistry] (main:) Named component register, put org.infinispan.factories.ComponentRegistry at 1d6fbb3 under ___hotRodTopologyCache in {}@ee6ad6
> 2. Start 2nd Hot Rod server which also starts up the Hot Rod topology cache (cache name = ___hotRodTopologyCache). JGroups local address is: eq-54009
> 2010-04-13 17:13:36,474 4299  INFO  [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (main:) Cache local address is eq-54009, physical addresses are [127.0.0.1:7901]
> 2010-04-13 17:13:36,474 4299  TRACE [org.infinispan.factories.GlobalComponentRegistry] (main:) Registering a shutdown hook.  Configured behavior = DEFAULT
> 2010-04-13 17:13:36,474 4299  INFO  [org.infinispan.factories.GlobalComponentRegistry] (main:) Infinispan version: Infinispan 'Starobrno' 4.1.0.SNAPSHOT
> 2010-04-13 17:13:36,474 4299  TRACE [org.infinispan.factories.GlobalComponentRegistry] (main:) Named component register, put org.infinispan.factories.ComponentRegistry at 1de007d under ___hotRodTopologyCache in {}@b5ad68
> 3. Since topology caches are configured with fetch in memory state, when eq-54009 starts, it requests eq-11980 to generate state:
> 2010-04-13 17:13:36,501 4326  TRACE [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,eq-11980:) Received request to generate state for cache named '___hotRodTopologyCache'.  Attempting to generate state.
> 4. Now, let's send a put command to server in eq-11980 for brand new named cache 'hotRodReplSync'
> 2010-04-13 17:13:36,752 4577  TRACE [org.infinispan.server.hotrod.RequestResolver$] (HotRodWorker-1-1:) Operation code: 1 has been matched to Some(PutRequest)
> 2010-04-13 17:13:36,754 4579  TRACE [org.infinispan.server.hotrod.HotRodDecoder$] (HotRodWorker-1-1:) Decoded header HotRodHeader{op=PutRequest, messageId=1, cacheName=hotRodReplSync, flag=NoFlag, clientIntelligence=0, topologyId=0}
> 5. Now eq-11980 attempts to fetch state from eq-54009 for cache 'hotRodReplSync':
> 2010-04-13 17:13:36,790 4615  INFO  [org.infinispan.remoting.rpc.RpcManagerImpl] (HotRodWorker-1-1:) Trying to fetch state from eq-54009
> 2010-04-13 17:13:36,792 4617  TRACE [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (Incoming-1,Infinispan-Cluster,eq-11980:) Received state for cache named 'hotRodReplSync'.  Attempting to apply state.
> 2010-04-13 17:13:36,792 4617  TRACE [org.infinispan.factories.GlobalComponentRegistry] (Incoming-1,Infinispan-Cluster,eq-11980:) Named component register, get hotRodReplSync from {___hotRodTopologyCache=org.infinispan.factories.ComponentRegistry at 1d6fbb3, hotRodReplSync=org.infinispan.factories.ComponentRegistry at 19c5048}@ee6ad6
> 2010-04-13 17:13:36,792 4617  DEBUG [org.infinispan.statetransfer.StateTransferManagerImpl] (Incoming-1,Infinispan-Cluster,eq-11980:) Applying state
> 2010-04-13 17:13:36,792 4617  TRACE [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,eq-54009:) Received request to generate state for cache named 'hotRodReplSync'.  Attempting to generate state.
> 6. But eq-54009 does not have a 'hotRodReplSync' cache yet cos no requests have been sent to the 2nd (eq-54009) server yet and hence fails with:
> 2010-04-13 17:13:36,792 4617  INFO  [org.infinispan.remoting.InboundInvocationHandlerImpl] (STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,eq-54009:) Cache named hotRodReplSync does not exist on this cache manager!
> 2010-04-13 17:13:36,794 4619  ERROR [org.infinispan.remoting.transport.jgroups.JGroupsTransport] (STREAMING_STATE_TRANSFER-sender-1,Infinispan-Cluster,eq-54009:) Caught while responding to state transfer request
> org.infinispan.statetransfer.StateTransferException: Cache named hotRodReplSync does not exist on this cache manager!
> 	at org.infinispan.remoting.InboundInvocationHandlerImpl.getStateTransferManager(InboundInvocationHandlerImpl.java:85)
> 	at org.infinispan.remoting.InboundInvocationHandlerImpl.generateState(InboundInvocationHandlerImpl.java:77)
> 	at org.infinispan.remoting.transport.jgroups.JGroupsTransport.getState(JGroupsTransport.java:586)
> IMO, 6 is a valid case and should not throw an error. As you can see here, a server might not have had any requests for a cache yet, so might not have that cache started yet. The most reasonable thing for eq-54009 to do here is not to serve any state instead of throwing an error.

-- 
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