[JBoss JIRA] (ISPN-11802) Create SPI for Cross-Site Replication conflict resolution
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-11802?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-11802:
-----------------------------------
Sprint: DataGrid Sprint #44, DataGrid Sprint #45, DataGrid Sprint #46, DataGrid Sprint #47 (was: DataGrid Sprint #44, DataGrid Sprint #45, DataGrid Sprint #46)
> Create SPI for Cross-Site Replication conflict resolution
> ---------------------------------------------------------
>
> Key: ISPN-11802
> URL: https://issues.redhat.com/browse/ISPN-11802
> Project: Infinispan
> Issue Type: Enhancement
> Components: Core, Cross-Site Replication
> Reporter: Pedro Ruivo
> Assignee: Pedro Ruivo
> Priority: Major
> Fix For: 12.0.0.Dev02
>
>
> A conflict happens if 2 sites try to update the same key (put/remove) concurrently.
> With async Cross-Site Replication (aka IRAC) when a conflict is detected, we use the site name to pick the winning update.
> h2. Interface
> {code:java}
> interface ABC<V> { // or concrete class
> String site(); //the site name which wrote this value
> V value(); // the value. can be null if the key was removed
> Metadata metadata(); //can be null
> }
> interface Resolve<K, V> {
> ABC<V> resolve(K key, ABC<V> entry1, ABC<V> entry2);
> }
> {code}
> h2. Configuration
> Set the class name to use. Can be a {{Class}} object (as shown above) or a {{String}} with the class name.
> For server mode, you need to add your jar with the classes required to {{server/lib}}.
> The configuration fails to validate if the conflict resolution class is set with {{SYNC}} strategy.
> {code:java}
> ConfigurationBuilder.sites().addBackup()
> .site("S")
> .strategy(BackupConfiguration.BackupStrategy.ASYNC)
> .conflictResolution(MyResover.class);
> {code}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years, 4 months
[JBoss JIRA] (ISPN-12005) Store purge should ignore errors
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12005?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12005:
-----------------------------------
Sprint: DataGrid Sprint #46, DataGrid Sprint #47 (was: DataGrid Sprint #46)
> Store purge should ignore errors
> --------------------------------
>
> Key: ISPN-12005
> URL: https://issues.redhat.com/browse/ISPN-12005
> Project: Infinispan
> Issue Type: Bug
> Components: Core, Loaders and Stores
> Affects Versions: 10.1.5.Final, 11.0.0.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Final, 11.0.2.Final
>
>
> Purging of expired entries from stores is a pretty involved process, especially with {{RocksDBStore}}. When there's a problem unmarshalling the expired bucket or deleting an expired key, the purge task bails out immediately, without processing the remaining keys. To make matters worse, the exception it not logged anywhere. The only sign that something is wrong is a growing store (in the case of {{RocksDBStore}}, a growing number of SST files).
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years, 4 months
[JBoss JIRA] (ISPN-12148) Hibernate-cache NullPointerException in CacheMgmtInterceptor
by Tristan Tarrant (Jira)
[ https://issues.redhat.com/browse/ISPN-12148?page=com.atlassian.jira.plugi... ]
Tristan Tarrant updated ISPN-12148:
-----------------------------------
Fix Version/s: 12.0.0.Dev02
(was: 12.0.0.Dev01)
> Hibernate-cache NullPointerException in CacheMgmtInterceptor
> ------------------------------------------------------------
>
> Key: ISPN-12148
> URL: https://issues.redhat.com/browse/ISPN-12148
> Project: Infinispan
> Issue Type: Bug
> Components: Hibernate Cache
> Affects Versions: 11.0.1.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Fix For: 12.0.0.Dev02
>
>
> There is a mismatch between the {{command.hasAnyFlag(FlagBitSets.SKIP_STATISTICS)}} check in {{CacheMgmtInterceptor}} and the {{Param.StatisticsMode.isSkip(command.getParams())}} check in {{CallInterceptor}}, causing the return value to be {{null}} when {{CacheMgmtInterceptor}} expects a {{StatisticsEnvelope}} instance.
>
> {noformat}
> 17:02:05,601 ERROR (Executor-2:[]) [InvocationContextInterceptor] ISPN000136: Error executing command ReadWriteKeyCommand on Cache 'org.infinispan.test.hibernate.cache.commons.functional.entities.Item', writing keys [7]
> java.lang.NullPointerException: null
> at org.infinispan.interceptors.impl.CacheMgmtInterceptor.lambda$updateStatisticsReadWrite$10(CacheMgmtInterceptor.java:372) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextThenApply(BaseAsyncInterceptor.java:86) ~[classes/:?]
> at org.infinispan.interceptors.impl.CacheMgmtInterceptor.updateStatisticsReadWrite(CacheMgmtInterceptor.java:368) ~[classes/:?]
> at org.infinispan.interceptors.impl.CacheMgmtInterceptor.visitReadWriteKeyCommand(CacheMgmtInterceptor.java:396) ~[classes/:?]
> at org.infinispan.commands.functional.ReadWriteKeyCommand.acceptVisitor(ReadWriteKeyCommand.java:91) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:59) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:53) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitReadWriteKeyCommand(DDAsyncInterceptor.java:200) ~[classes/:?]
> at org.infinispan.commands.functional.ReadWriteKeyCommand.acceptVisitor(ReadWriteKeyCommand.java:91) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNextAndExceptionally(BaseAsyncInterceptor.java:128) ~[classes/:?]
> at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:90) ~[classes/:?]
> at org.infinispan.interceptors.BaseAsyncInterceptor.invokeNext(BaseAsyncInterceptor.java:61) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.handleDefault(DDAsyncInterceptor.java:53) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitReadWriteKeyCommand(DDAsyncInterceptor.java:200) ~[classes/:?]
> at org.infinispan.commands.functional.ReadWriteKeyCommand.acceptVisitor(ReadWriteKeyCommand.java:91) ~[classes/:?]
> at org.infinispan.interceptors.DDAsyncInterceptor.visitCommand(DDAsyncInterceptor.java:49) ~[classes/:?]
> at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invokeAsync(AsyncInterceptorChainImpl.java:226) ~[classes/:?]
> at org.infinispan.functional.impl.AbstractFunctionalMap.invokeAsync(AbstractFunctionalMap.java:131) ~[classes/:?]
> at org.infinispan.functional.impl.ReadWriteMapImpl.eval(ReadWriteMapImpl.java:56) ~[classes/:?]
> at org.infinispan.hibernate.cache.commons.access.NonStrictAccessDelegate.putFromLoad(NonStrictAccessDelegate.java:118) ~[classes/:?]
> at org.infinispan.hibernate.cache.v53.impl.ReadOnlyEntityDataAccess.putFromLoad(ReadOnlyEntityDataAccess.java:30) ~[classes/:?]
> at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:254) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:160) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(AbstractRowReader.java:252) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:215) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:133) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:107) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:188) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4289) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:597) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:565) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:226) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:122) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:93) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1277) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:1119) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:178) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:309) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:95) ~[hibernate-core-5.3.17.Final.jar:5.3.17.Final]
> at org.infinispan.test.hibernate.cache.commons.functional.entities.Item$HibernateProxy$vC8GnuyS.getName(Unknown Source) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.functional.AbstractNonInvalidationTest.lambda$removeFlushWait$2(AbstractNonInvalidationTest.java:127) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.util.TxUtil.withResourceLocalTx(TxUtil.java:105) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.util.TxUtil.lambda$withTxSessionApply$5(TxUtil.java:56) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.util.TxUtil.withSessionApply(TxUtil.java:72) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.util.TxUtil.withTxSessionApply(TxUtil.java:56) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.functional.SingleNodeTest.withTxSessionApply(SingleNodeTest.java:43) ~[test-classes/:?]
> at org.infinispan.test.hibernate.cache.commons.functional.AbstractNonInvalidationTest.lambda$removeFlushWait$3(AbstractNonInvalidationTest.java:124) ~[test-classes/:?]
> {noformat}
>
>
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
4 years, 4 months