Class ScatteredDistributionInterceptor

  • All Implemented Interfaces:
    org.infinispan.commands.Visitor, AsyncInterceptor
    Direct Known Subclasses:
    BiasedScatteredDistributionInterceptor

    public class ScatteredDistributionInterceptor
    extends org.infinispan.interceptors.impl.ClusteringInterceptor
    This interceptor mixes several functions: A) replicates changes to other nodes B) commits the entry C) schedules invalidation On primary owner, the commit is executed before the change is replicated to other node. If the command reads previous value and the version of entry in DataContainer has changed during execution ConcurrentChangeException is thrown and the command has to be retried.
    Author:
    Radim Vansa <rvansa@redhat.com>
    • Field Detail

      • groupManager

        protected org.infinispan.distribution.group.impl.GroupManager groupManager
      • functionalNotifier

        protected org.infinispan.functional.impl.FunctionalNotifier functionalNotifier
    • Constructor Detail

      • ScatteredDistributionInterceptor

        public ScatteredDistributionInterceptor()
    • Method Detail

      • visitEvictCommand

        public java.lang.Object visitEvictCommand​(InvocationContext ctx,
                                                  org.infinispan.commands.write.EvictCommand command)
        Specified by:
        visitEvictCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitEvictCommand in class DDAsyncInterceptor
      • singleWriteOnRemotePrimary

        protected java.util.concurrent.CompletionStage<ValidResponse> singleWriteOnRemotePrimary​(Address target,
                                                                                                 org.infinispan.commands.write.DataWriteCommand command)
        This method is called by a non-owner sending write request to the primary owner
      • completeSingleWriteOnPrimaryOriginator

        protected java.util.concurrent.CompletionStage<?> completeSingleWriteOnPrimaryOriginator​(org.infinispan.commands.write.DataWriteCommand command,
                                                                                                 Address backup,
                                                                                                 java.util.concurrent.CompletionStage<?> rpcFuture)
        This is a hook for bias-enabled mode where the primary performs additional RPCs but replication to another node. The returned CF will be complete when both the provided rpcFuture completes and all additional RPCs are complete, too. Failure in any of the RPCs will fail this future.
      • scheduleKeyInvalidation

        protected void scheduleKeyInvalidation​(java.lang.Object key,
                                               EntryVersion nextVersion,
                                               boolean removed)
      • visitPutKeyValueCommand

        public java.lang.Object visitPutKeyValueCommand​(InvocationContext ctx,
                                                        org.infinispan.commands.write.PutKeyValueCommand command)
                                                 throws java.lang.Throwable
        Specified by:
        visitPutKeyValueCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitPutKeyValueCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitRemoveCommand

        public java.lang.Object visitRemoveCommand​(InvocationContext ctx,
                                                   org.infinispan.commands.write.RemoveCommand command)
                                            throws java.lang.Throwable
        Specified by:
        visitRemoveCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitRemoveCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReplaceCommand

        public java.lang.Object visitReplaceCommand​(InvocationContext ctx,
                                                    org.infinispan.commands.write.ReplaceCommand command)
                                             throws java.lang.Throwable
        Specified by:
        visitReplaceCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReplaceCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitComputeIfAbsentCommand

        public java.lang.Object visitComputeIfAbsentCommand​(InvocationContext ctx,
                                                            org.infinispan.commands.write.ComputeIfAbsentCommand command)
                                                     throws java.lang.Throwable
        Specified by:
        visitComputeIfAbsentCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitComputeIfAbsentCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitComputeCommand

        public java.lang.Object visitComputeCommand​(InvocationContext ctx,
                                                    org.infinispan.commands.write.ComputeCommand command)
                                             throws java.lang.Throwable
        Specified by:
        visitComputeCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitComputeCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitPutMapCommand

        public java.lang.Object visitPutMapCommand​(InvocationContext ctx,
                                                   org.infinispan.commands.write.PutMapCommand command)
                                            throws java.lang.Throwable
        Specified by:
        visitPutMapCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitPutMapCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitGetKeyValueCommand

        public java.lang.Object visitGetKeyValueCommand​(InvocationContext ctx,
                                                        org.infinispan.commands.read.GetKeyValueCommand command)
                                                 throws java.lang.Throwable
        Specified by:
        visitGetKeyValueCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitGetKeyValueCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitGetCacheEntryCommand

        public java.lang.Object visitGetCacheEntryCommand​(InvocationContext ctx,
                                                          org.infinispan.commands.read.GetCacheEntryCommand command)
                                                   throws java.lang.Throwable
        Specified by:
        visitGetCacheEntryCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitGetCacheEntryCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitGetAllCommand

        public java.lang.Object visitGetAllCommand​(InvocationContext ctx,
                                                   org.infinispan.commands.read.GetAllCommand command)
                                            throws java.lang.Throwable
        Specified by:
        visitGetAllCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitGetAllCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitClearCommand

        public java.lang.Object visitClearCommand​(InvocationContext ctx,
                                                  org.infinispan.commands.write.ClearCommand command)
                                           throws java.lang.Throwable
        Specified by:
        visitClearCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitClearCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • handleClear

        protected void handleClear​(InvocationContext ctx,
                                   org.infinispan.commands.VisitableCommand command,
                                   java.lang.Object ignored)
      • visitReadOnlyKeyCommand

        public java.lang.Object visitReadOnlyKeyCommand​(InvocationContext ctx,
                                                        org.infinispan.commands.functional.ReadOnlyKeyCommand command)
                                                 throws java.lang.Throwable
        Specified by:
        visitReadOnlyKeyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadOnlyKeyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReadOnlyManyCommand

        public java.lang.Object visitReadOnlyManyCommand​(InvocationContext ctx,
                                                         org.infinispan.commands.functional.ReadOnlyManyCommand command)
                                                  throws java.lang.Throwable
        Specified by:
        visitReadOnlyManyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadOnlyManyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitWriteOnlyKeyCommand

        public java.lang.Object visitWriteOnlyKeyCommand​(InvocationContext ctx,
                                                         org.infinispan.commands.functional.WriteOnlyKeyCommand command)
                                                  throws java.lang.Throwable
        Specified by:
        visitWriteOnlyKeyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitWriteOnlyKeyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReadWriteKeyValueCommand

        public java.lang.Object visitReadWriteKeyValueCommand​(InvocationContext ctx,
                                                              org.infinispan.commands.functional.ReadWriteKeyValueCommand command)
                                                       throws java.lang.Throwable
        Specified by:
        visitReadWriteKeyValueCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadWriteKeyValueCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReadWriteKeyCommand

        public java.lang.Object visitReadWriteKeyCommand​(InvocationContext ctx,
                                                         org.infinispan.commands.functional.ReadWriteKeyCommand command)
                                                  throws java.lang.Throwable
        Specified by:
        visitReadWriteKeyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadWriteKeyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitWriteOnlyManyEntriesCommand

        public java.lang.Object visitWriteOnlyManyEntriesCommand​(InvocationContext ctx,
                                                                 org.infinispan.commands.functional.WriteOnlyManyEntriesCommand command)
                                                          throws java.lang.Throwable
        Specified by:
        visitWriteOnlyManyEntriesCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitWriteOnlyManyEntriesCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitWriteOnlyKeyValueCommand

        public java.lang.Object visitWriteOnlyKeyValueCommand​(InvocationContext ctx,
                                                              org.infinispan.commands.functional.WriteOnlyKeyValueCommand command)
                                                       throws java.lang.Throwable
        Specified by:
        visitWriteOnlyKeyValueCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitWriteOnlyKeyValueCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitWriteOnlyManyCommand

        public java.lang.Object visitWriteOnlyManyCommand​(InvocationContext ctx,
                                                          org.infinispan.commands.functional.WriteOnlyManyCommand command)
                                                   throws java.lang.Throwable
        Specified by:
        visitWriteOnlyManyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitWriteOnlyManyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReadWriteManyCommand

        public java.lang.Object visitReadWriteManyCommand​(InvocationContext ctx,
                                                          org.infinispan.commands.functional.ReadWriteManyCommand command)
                                                   throws java.lang.Throwable
        Specified by:
        visitReadWriteManyCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadWriteManyCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitReadWriteManyEntriesCommand

        public java.lang.Object visitReadWriteManyEntriesCommand​(InvocationContext ctx,
                                                                 org.infinispan.commands.functional.ReadWriteManyEntriesCommand command)
                                                          throws java.lang.Throwable
        Specified by:
        visitReadWriteManyEntriesCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitReadWriteManyEntriesCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • visitGetKeysInGroupCommand

        public final java.lang.Object visitGetKeysInGroupCommand​(InvocationContext ctx,
                                                                 org.infinispan.commands.remote.GetKeysInGroupCommand command)
                                                          throws java.lang.Throwable
        Specified by:
        visitGetKeysInGroupCommand in interface org.infinispan.commands.Visitor
        Overrides:
        visitGetKeysInGroupCommand in class DDAsyncInterceptor
        Throws:
        java.lang.Throwable
      • getLog

        protected org.infinispan.util.logging.Log getLog()
        Specified by:
        getLog in class org.infinispan.interceptors.impl.BaseRpcInterceptor
      • singleWriteResponse

        protected java.lang.Object singleWriteResponse​(InvocationContext ctx,
                                                       org.infinispan.commands.write.DataWriteCommand cmd,
                                                       java.lang.Object returnValue)
        This method is called by primary owner responding to the originator after write has been completed
      • manyWriteResponse

        protected java.lang.Object manyWriteResponse​(InvocationContext ctx,
                                                     org.infinispan.commands.write.WriteCommand cmd,
                                                     java.lang.Object returnValue)
      • completeManyWriteOnPrimaryOriginator

        protected void completeManyWriteOnPrimaryOriginator​(org.infinispan.commands.write.WriteCommand command,
                                                            Address backup,
                                                            org.infinispan.interceptors.distribution.CountDownCompletableFuture future)
        This is a hook for bias-enabled mode where the primary performs additional RPCs but replication to another node. Implementation is expected to increment future on each additional RPC and decrement it when the response arrives.