[ 
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)

Reply via email to