[infinispan-issues] [JBoss JIRA] Updated: (ISPN-835) State transfer should not force all invocations to be synchronous

Manik Surtani (JIRA) jira-events at lists.jboss.org
Mon Jan 17 08:43:49 EST 2011


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

Manik Surtani updated ISPN-835:
-------------------------------

             Fix Version/s:     (was: 4.2.1.Final)
    Workaround Description: 
Workaround #1:

Disable state transfer - and use a ClusteredCacheLoader to lazily lookup remote state as and when needed.  It might require some code changes to make the code efficient, for example:
If put() method's return value is not needed, pass Flag.SKIP_CACHE_LOAD so that clustered cache loader is not queried for previous value.

Workaround #2:

Enable state transfer and REPL_SYNC.  Use the Async API (e.g., cache.putAsync(k, v)) to actieve 'fire-and-forget' capabilities.

Workaround #3:

Enable state transfer and REPL_ASYNC.  All RPCs end up becoming sync, but client threads *will not* be held up if you enable a replication queue (which is recommended for async mode anyway).

  was:
Disable state transfer - and use a ClusteredCacheLoader to lazily lookup remote state as and when needed.

It might require some code changes to make the code efficient, for example:

If put() method's return value is not needed, pass Flag.SKIP_CACHE_LOAD so that clustered cache loader is not queried for previous value.

                  Priority: Major  (was: Critical)


De-prioritising due to the large number of options as workarounds.

> State transfer should not force all invocations to be synchronous
> -----------------------------------------------------------------
>
>                 Key: ISPN-835
>                 URL: https://issues.jboss.org/browse/ISPN-835
>             Project: Infinispan
>          Issue Type: Bug
>          Components: RPC, State transfer
>    Affects Versions: 4.1.0.Final, 4.2.0.CR4
>            Reporter: Galder Zamarreño
>            Assignee: Manik Surtani
>             Fix For: 5.0.0.BETA1, 5.0.0.Final
>
>
> Enabling state transfer is forcing even asynchronous caches to become synchronous.
> A better way is needed to make sure state transfer works correctly (sync calls needed here) while normal replication calls remain asynchronous.
> See https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/remoting/transport/jgroups/CommandAwareRpcDispatcher.java#L254 where the response mode is overridden based on whether replay is supported.  And replay support is always on when state transfer is enabled:
> https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/remoting/rpc/RpcManagerImpl.java#L101
> Need to explore whether a joiner flag can be maintained based on a view change, and replay only supported when a joiner is still "joining", and not otherwise.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the infinispan-issues mailing list