[JBoss JIRA] (ISPN-9592) Lockdown query internals
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-9592?page=com.atlassian.jira.plugin... ]
Tristan Tarrant updated ISPN-9592:
----------------------------------
Fix Version/s: 12.0.0.Final
(was: 11.0.0.Final)
> Lockdown query internals
> ------------------------
>
> Key: ISPN-9592
> URL: https://issues.redhat.com/browse/ISPN-9592
> Project: Infinispan
> Issue Type: Task
> Reporter: Nistor Adrian
> Assignee: Nistor Adrian
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> Many things in query implementation are left public although they are very prone to creating insidious bugs if accessed externally. These are not proper extension points and should be made package local or provided strictly via SearchManagerImplementor.
> * Move SearchManager.purge(Class) method to SearchManagerImplementor
> * DefaultSearchWorkCreator should be moved to org.infinispan.query.backend and made package local
> * TransactionalEventTransactionContext is not used, can be removed, and its non-tx counterpart (NoTransactionContext) no longer has to be public
> * all public methods in QueryInterceptor must be reviewed and made package local ASAP
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 9 months
[JBoss JIRA] (ISPN-11110) JdbcStringBasedStore Purge should not use FOR UPDATE to avoid excessive locking
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-11110?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-11110:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 11.0.0.Final)
> JdbcStringBasedStore Purge should not use FOR UPDATE to avoid excessive locking
> -------------------------------------------------------------------------------
>
> Key: ISPN-11110
> URL: https://issues.redhat.com/browse/ISPN-11110
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores
> Affects Versions: 10.1.0.CR1
> Reporter: Ryan Emerson
> Assignee: Ryan Emerson
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> https://issues.redhat.com/browse/ISPN-10337 Added the FOR UPDATE to the select query used by the purge method in order to ensure that the purge method would lock all of the affected rows so that no subsequent updates to a key could be incorrectly removed by the purge method.
> However, if the purge does a select for update and does a single commit at the end of the purge, that will block write operations on all the expired keys for the entire duration of the purge. The clustered purge listener does cache.removeLifespanExpired(key, null, null).join(), so the entire duration of the purge could mean a really long time.
> Instead we should utilise a normal select query followed by a 'delete from table where id = ? and timestamp = ?' to prevent accidentally deleting an update.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 9 months
[JBoss JIRA] (ISPN-11081) Data Store
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-11081?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-11081:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 11.0.0.Final)
> Data Store
> ----------
>
> Key: ISPN-11081
> URL: https://issues.redhat.com/browse/ISPN-11081
> Project: Infinispan
> Issue Type: Task
> Components: Core
> Affects Versions: 10.1.0.CR1
> Reporter: Tristan Tarrant
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> In scenarios where Infinispan is used as a persistent data store, the elasticity provided by rebalancing on scaling down (either voluntarily or because of node failure) can lead to data loss, even with persistent caches if all the owners of a segment leave the cluster before rebalancing can be completed. The remaining cluster should prevent writes to the lost segments until the nodes that own them are restarted.
> It should be possible to configure Infinispan so that elasticity only applies when scaling up, i.e. adding a node will cause a rebalance.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 9 months
[JBoss JIRA] (ISPN-11119) Invalidation put should load previous value from stores
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-11119?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-11119:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 11.0.0.Final)
> Invalidation put should load previous value from stores
> -------------------------------------------------------
>
> Key: ISPN-11119
> URL: https://issues.redhat.com/browse/ISPN-11119
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 9.3.6.Final, 9.4.17.Final, 10.0.1.Final, 10.1.0.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> A {{cache.put(key, value)}} without the {{IGNORE_RETURN_VALUES}} flag should load the previous value from the store(s) and return it.
> Currently the previous value is loaded only if the originator of the put is the primary owner of the key (see {{ClusteredCacheLoaderInterceptor.skipLoadForWriteCommand()}}).
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 9 months
[JBoss JIRA] (ISPN-11117) In a distributed cache stale entries are not removed from the store
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-11117?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-11117:
-----------------------------------
Fix Version/s: 12.0.0.Final
(was: 11.0.0.Final)
> In a distributed cache stale entries are not removed from the store
> -------------------------------------------------------------------
>
> Key: ISPN-11117
> URL: https://issues.redhat.com/browse/ISPN-11117
> Project: Infinispan
> Issue Type: Bug
> Components: Core, State Transfer
> Affects Versions: 9.3.6.Final, 9.4.17.Final, 10.0.1.Final, 10.1.0.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> This is a follow-up on ISPN-11116. It's wrong for invalidation commands to load the previous value from the store, but we also have the opposite problem: in a distributed cache, when a node loses some segments and the store is not segmented, we use an {{InvalidateCommand}} to remove stale entries, and it doesn't actually remove any entries from the store.
> Instead of keeping {{InvalidateCommand}} as is and finding another solution for removing stale segments, we could change {{InvalidateCommand}} to also remove entries from private stores.
> Invalidation mode is very unlikely to be used with private stores, but we don't actually prohibit it, so it's better for invalidation mode as well if {{InvalidateCommand}} removed entries from the private stores and ignored the shared stores. The only problem remaining is to actually optimize {{CacheLoaderInterceptor}} so that it doesn't load the previous value unless there is a listener.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
5 years, 9 months