Class NonTxDistributionInterceptor

  • All Implemented Interfaces:
    org.infinispan.commands.Visitor, AsyncInterceptor

    public class NonTxDistributionInterceptor
    extends BaseDistributionInterceptor
    Non-transactional interceptor used by distributed caches that support concurrent writes. It is implemented based on lock forwarding. E.g. - 'k' is written on node A, owners(k)={B,C} - A forwards the given command to B - B acquires a lock on 'k' then it forwards it to the remaining owners: C - C applies the change and returns to B (no lock acquisition is needed) - B applies the result as well, releases the lock and returns the result of the operation to A.

    Note that even though this introduces an additional RPC (the forwarding), it behaves very well in conjunction with consistent-hash aware hotrod clients which connect directly to the lock owner.

    Since:
    8.1
    Author:
    Mircea Markus, Dan Berindei
    • Constructor Detail

      • NonTxDistributionInterceptor

        public NonTxDistributionInterceptor()
    • Method Detail

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