[
https://issues.apache.org/jira/browse/GEODE-3676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Lynn Gallinat updated GEODE-3676:
---------------------------------
Description:
Create a new callback called WriteInterceptor to allow a user to change the
value to be written during a write operation.
Use cases:
# Needing to update an entry when doing write behind caching. For example --
inserting into a DB and needed to add the auto generated id to the domain
object entry.
# Needing to update an entry when doing inline-caching. Example: needing to
update a PdxInstance on-the-fly.
Requirements:
# This callback should not be invoked while holding locks on the RegionEntry.
# Each Region will only support one instance of WriteInterceptor.
# Callback should be invoked:
#* before CacheWriter
#* before value constraint checks
#* before null checks on a put
#* after CacheLoader
# The WriteInterceptor must be mutable at runtime so that a user can change the
WriteInterceptor on an existing region.
# The WriteInterceptor can be installed or changed via APIs and gfsh commands.
# The WriteInterceptor should be invoked only in the member that initiated the
write operation and should not be invoked at subsequent distribution points.
Write operations that should invoke the WriteInterceptor:
# create
# put
# putAll
# get (if it invokes a CacheLoader)
# getAll (if it invokes a CacheLoader)
# putIfAbsent
# replace
# RegionEntry.setValue() -- do we want to support this?
was:
Create a new callback called WriteInterceptor to allow a user to change the
value to be written during a write operation.
Use cases:
# Needing to update an entry when doing write behind caching. For example --
inserting into a DB and needed to add the auto generated id to the domain
object entry.
# Needing to update an entry when doing inline-caching. Example: needing to
update a PdxInstance on-the-fly.
Requirements:
# This callback should not be invoked while holding locks on the RegionEntry.
# Each Region will only support one instance of WriteInterceptor.
# Callback should be invoked:
#* before CacheWriter
#* before value constraint checks
#* before null checks on a put
#* after CacheLoader
# The WriteInterceptor must be mutable at runtime so that a user can change the
WriteInterceptor on an existing region.
# The WriteInterceptor can be installed or changed via APIs and gfsh commands.
# The WriteInterceptor should be invoked only in the member that initiated the
write operation and should not be invoked at subsequent distribution points.
> Add WriteInterceptor user callback to modify a value before being put into
> the cache
> ------------------------------------------------------------------------------------
>
> Key: GEODE-3676
> URL: https://issues.apache.org/jira/browse/GEODE-3676
> Project: Geode
> Issue Type: New Feature
> Components: regions
> Reporter: Fred Krone
> Assignee: Lynn Gallinat
>
> Create a new callback called WriteInterceptor to allow a user to change the
> value to be written during a write operation.
> Use cases:
> # Needing to update an entry when doing write behind caching. For example --
> inserting into a DB and needed to add the auto generated id to the domain
> object entry.
> # Needing to update an entry when doing inline-caching. Example: needing to
> update a PdxInstance on-the-fly.
> Requirements:
> # This callback should not be invoked while holding locks on the RegionEntry.
> # Each Region will only support one instance of WriteInterceptor.
> # Callback should be invoked:
> #* before CacheWriter
> #* before value constraint checks
> #* before null checks on a put
> #* after CacheLoader
> # The WriteInterceptor must be mutable at runtime so that a user can change
> the WriteInterceptor on an existing region.
> # The WriteInterceptor can be installed or changed via APIs and gfsh commands.
> # The WriteInterceptor should be invoked only in the member that initiated
> the write operation and should not be invoked at subsequent distribution
> points.
> Write operations that should invoke the WriteInterceptor:
> # create
> # put
> # putAll
> # get (if it invokes a CacheLoader)
> # getAll (if it invokes a CacheLoader)
> # putIfAbsent
> # replace
> # RegionEntry.setValue() -- do we want to support this?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)