[JBoss JIRA] (ISPN-11802) Create SPI for Cross-Site Replication conflict resolution
by Ryan Emerson (Jira)
[ https://issues.redhat.com/browse/ISPN-11802?page=com.atlassian.jira.plugi... ]
Ryan Emerson resolved ISPN-11802.
---------------------------------
Resolution: Done
> 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.Dev03
>
>
> 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)
3 years, 9 months
[JBoss JIRA] (ISPN-12257) RemoteSpringSessionTest.testCreatingSessionWhenUsingREST always fails
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-12257?page=com.atlassian.jira.plugi... ]
Dan Berindei reassigned ISPN-12257:
-----------------------------------
Assignee: Dan Berindei
> RemoteSpringSessionTest.testCreatingSessionWhenUsingREST always fails
> ---------------------------------------------------------------------
>
> Key: ISPN-12257
> URL: https://issues.redhat.com/browse/ISPN-12257
> Project: Infinispan
> Issue Type: Bug
> Components: Spring Integration, Test Suite
> Affects Versions: 12.0.0.Dev02
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Major
> Labels: testsuite_stability
> Fix For: 12.0.0.Dev03
>
>
> The Spring Boot session references a `java.util.Collections$UnmodifiableList`, which is not in the default allow list.
> {noformat}
> org.infinispan.commons.CacheListenerException: ISPN004035: Caught exception [java.lang.reflect.InvocationTargetException] while invoking method [public void org.infinispan.spring.remote.session.RemoteApplicationPublishedBridge.processCacheEntryCreated(org.infinispan.client.hotrod.event.ClientCacheEntryCustomEvent)] on listener instance: org.infinispan.spring.remote.session.RemoteApplicationPublishedBridge@2d06db91
> at org.infinispan.client.hotrod.event.impl.ClientEventDispatcher$ClientListenerInvocation.invoke(ClientEventDispatcher.java:156) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.event.impl.ClientEventDispatcher.invokeCallbacks(ClientEventDispatcher.java:120) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.event.impl.ClientEventDispatcher.invokeEvent(ClientEventDispatcher.java:102) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.event.impl.ClientEventDispatcher.invokeEvent(ClientEventDispatcher.java:31) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.event.impl.ClientListenerNotifier.invokeEvent(ClientListenerNotifier.java:197) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.invokeEvent(HeaderDecoder.java:198) [infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.decode(HeaderDecoder.java:167) [infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> Caused by: java.lang.reflect.InvocationTargetException
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
> at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
> at org.infinispan.client.hotrod.event.impl.ClientEventDispatcher$ClientListenerInvocation.invoke(ClientEventDispatcher.java:154) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> ...
> Caused by: org.infinispan.client.hotrod.exceptions.HotRodClientException: ISPN004034: Unable to unmarshall bytes ACED0005737200266F7[...]
> at org.infinispan.client.hotrod.marshall.MarshallerUtil.bytes2obj(MarshallerUtil.java:72) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.DataFormat.valueToObj(DataFormat.java:108) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.spring.remote.session.RemoteApplicationPublishedBridge.readEvent(RemoteApplicationPublishedBridge.java:77) ~[infinispan-spring5-remote-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.spring.remote.session.RemoteApplicationPublishedBridge.processCacheEntryCreated(RemoteApplicationPublishedBridge.java:52) ~[infinispan-spring5-remote-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> ...
> Caused by: org.infinispan.commons.CacheException: ISPN000936: Class 'java.util.Collections$UnmodifiableList' blocked by deserialization allow list. Adjust the configuration serialization allow list regular expression to include this class.
> at org.infinispan.commons.marshall.CheckedInputStream.resolveClass(CheckedInputStream.java:25) ~[infinispan-commons-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> ...
> at java.util.HashMap.readObject(HashMap.java:1551) ~[?:?]
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
> at java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1216) ~[?:?]
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2359) ~[?:?]
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2193) ~[?:?]
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1685) ~[?:?]
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2498) ~[?:?]
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2392) ~[?:?]
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2193) ~[?:?]
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1685) ~[?:?]
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:499) ~[?:?]
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:457) ~[?:?]
> at org.infinispan.commons.marshall.JavaSerializationMarshaller.objectFromByteBuffer(JavaSerializationMarshaller.java:53) ~[infinispan-commons-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.commons.marshall.AbstractMarshaller.objectFromByteBuffer(AbstractMarshaller.java:82) ~[infinispan-commons-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> at org.infinispan.client.hotrod.marshall.MarshallerUtil.bytes2obj(MarshallerUtil.java:56) ~[infinispan-client-hotrod-12.0.0-SNAPSHOT.jar:12.0.0-SNAPSHOT]
> ...
> {noformat}
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
3 years, 9 months