Package org.infinispan.container.impl
Class EntryFactoryImpl
java.lang.Object
org.infinispan.container.impl.EntryFactoryImpl
- All Implemented Interfaces:
EntryFactory
EntryFactory
implementation to be used for optimistic locking scheme.- Since:
- 5.1
- Author:
- Mircea Markus
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected MVCCEntry
<?, ?> createWrappedEntry
(Object key, CacheEntry<?, ?> cacheEntry) void
init()
final CompletionStage
<Void> wrapEntryForReading
(InvocationContext ctx, Object key, int segment, boolean isOwner, boolean hasLock, CompletionStage<Void> previousStage) Wraps an entry for reading.wrapEntryForWriting
(InvocationContext ctx, Object key, int segment, boolean isOwner, boolean isRead, CompletionStage<Void> previousStage) Insert an entry that exists in the data container into the context.void
wrapEntryForWritingSkipExpiration
(InvocationContext ctx, Object key, int segment, boolean isOwner) 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 wrappedvoid
wrapExternalEntry
(InvocationContext ctx, Object key, CacheEntry externalEntry, boolean isRead, boolean isWrite) Insert an external entry (e.g.
-
Constructor Details
-
EntryFactoryImpl
public EntryFactoryImpl()
-
-
Method Details
-
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 rawCacheEntry
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 interfaceEntryFactory
- Parameters:
ctx
- current invocation contextkey
- key to look up and wrapsegment
- segment for the keyisOwner
- true if this node is current owner in readCH (or we ignore CH)hasLock
- true if the invoker already has the lock for this keypreviousStage
- 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 interfaceEntryFactory
- Parameters:
ctx
- current invocation contextkey
- key to look up and wrapsegment
- segment for the keyisOwner
- 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 entrypreviousStage
- 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 interfaceEntryFactory
- Parameters:
ctx
- current invocation contextkey
- key to look up and wrapsegment
- segment for the keyisOwner
- 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 interfaceEntryFactory
- Parameters:
ctx
- current invocation contextkey
- key to look up and wrapexternalEntry
- the value to be inserted into contextisRead
- true if this operation is expected to read the value of the entryisWrite
- if this is executed within a write command
-
createWrappedEntry
-