Class EntryFactoryImpl

  • All Implemented Interfaces:
    EntryFactory

    public class EntryFactoryImpl
    extends Object
    implements EntryFactory
    EntryFactory implementation to be used for optimistic locking scheme.
    Since:
    5.1
    Author:
    Mircea Markus
    • Constructor Detail

      • EntryFactoryImpl

        public EntryFactoryImpl()
    • Method Detail

      • init

        public void init()
      • wrapEntryForReading

        public final CompletionStage<Void> wrapEntryForReading​(InvocationContext ctx,
                                                               Object key,
                                                               int segment,
                                                               boolean isOwner,
                                                               boolean hasLock,
                                                               CompletionStage<Void> previousStage)
        Description copied from interface: EntryFactory
        Wraps an entry for reading. Usually this is just a raw CacheEntry but certain combinations of isolation levels and the presence of an ongoing JTA transaction may force this to be a proper, wrapped MVCCEntry. The entry is also typically placed in the invocation context.
        Specified by:
        wrapEntryForReading in interface EntryFactory
        Parameters:
        ctx - current invocation context
        key - key to look up and wrap
        segment - segment for the key
        isOwner - true if this node is current owner in readCH (or we ignore CH)
        hasLock - true if the invoker already has the lock for this key
        previousStage - if wrapping can't be performed synchronously, only access the invocation context from another thread after this stage is complete
        Returns:
        stage that when complete the value should be in the context
      • wrapEntryForWriting

        public CompletionStage<Void> wrapEntryForWriting​(InvocationContext ctx,
                                                         Object key,
                                                         int segment,
                                                         boolean isOwner,
                                                         boolean isRead,
                                                         CompletionStage<Void> previousStage)
        Description copied from interface: EntryFactory
        Insert an entry that exists in the data container into the context. Doesn't do anything if the key was already wrapped.

        The returned stage will always be complete if isOwner is false.

        Specified by:
        wrapEntryForWriting in interface EntryFactory
        Parameters:
        ctx - current invocation context
        key - key to look up and wrap
        segment - segment for the key
        isOwner - true if this node is current owner in readCH (or we ignore CH)
        isRead - true if this operation is expected to read the value of the entry
        previousStage - if wrapping can't be performed synchronously, only access the invocation context from another thread after this stage is complete
      • wrapEntryForWritingSkipExpiration

        public void wrapEntryForWritingSkipExpiration​(InvocationContext ctx,
                                                      Object key,
                                                      int segment,
                                                      boolean isOwner)
        Description copied from interface: EntryFactory
        Insert an entry that exists in the data container into the context, even if it is expired Doesn't do anything if the key was already wrapped
        Specified by:
        wrapEntryForWritingSkipExpiration in interface EntryFactory
        Parameters:
        ctx - current invocation context
        key - key to look up and wrap
        segment - segment for the key
        isOwner - is the local node a read owner?
      • wrapExternalEntry

        public void wrapExternalEntry​(InvocationContext ctx,
                                      Object key,
                                      CacheEntry externalEntry,
                                      boolean isRead,
                                      boolean isWrite)
        Description copied from interface: EntryFactory
        Insert an external entry (e.g. loaded from a cache loader or from a remote node) into the context.
        Specified by:
        wrapExternalEntry in interface EntryFactory
        Parameters:
        ctx - current invocation context
        key - key to look up and wrap
        externalEntry - the value to be inserted into context
        isRead - true if this operation is expected to read the value of the entry
        isWrite - if this is executed within a write command