[Red Hat JIRA] (ISPN-12430) AsyncNonBlockingStore can have many more modifications than modification queue size
by Dan Berindei (Jira)
[ https://issues.redhat.com/browse/ISPN-12430?page=com.atlassian.jira.plugi... ]
Dan Berindei updated ISPN-12430:
--------------------------------
Resolution: Done
Status: Resolved (was: Pull Request Sent)
> AsyncNonBlockingStore can have many more modifications than modification queue size
> -----------------------------------------------------------------------------------
>
> Key: ISPN-12430
> URL: https://issues.redhat.com/browse/ISPN-12430
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores
> Reporter: Will Burns
> Assignee: Will Burns
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> The AsyncNonBlockingStore is known to allow for concurrent writes more than modification queue size. Unfortunately, due to how synchronized Publisher works it can be much much more if a given thread is delayed as other threads can sneak in. For example in the stress test with 1024 modification queue size I could get 6K entries in a given queue. The problem is that the concurrent publisher would add the value to its own queue which was only processed on the first thread, which means many could sneak in as no changes were actually populated in the map. https://github.com/ReactiveX/RxJava/blob/3.x/src/main/java/io/reactivex/r...
>
> We should change this to be a bit more strict and limit the writes to only queue + # of threads with concurrent modifications.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months
[Red Hat JIRA] (ISPN-12626) Document @ProtoAdaptor for marshalling of external classes
by Donald Naro (Jira)
[ https://issues.redhat.com/browse/ISPN-12626?page=com.atlassian.jira.plugi... ]
Donald Naro updated ISPN-12626:
-------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/8984, https://github.com/infinispan/infinispan/pull/9000, https://github.com/infinispan/infinispan/pull/9003, https://github.com/infinispan/infinispan/pull/9005 (was: https://github.com/infinispan/infinispan/pull/8984, https://github.com/infinispan/infinispan/pull/9000, https://github.com/infinispan/infinispan/pull/9003)
> Document @ProtoAdaptor for marshalling of external classes
> ----------------------------------------------------------
>
> Key: ISPN-12626
> URL: https://issues.redhat.com/browse/ISPN-12626
> Project: Infinispan
> Issue Type: Task
> Components: Documentation
> Affects Versions: 12.0.0.CR1
> Reporter: Ryan Emerson
> Assignee: Donald Naro
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> Protostream 4.4.0.Alpha4 added support for automatically generating marshallers for external classes via the {{@ProtoAdaptor}} field. This greatly simplifies how a user can marshall third party classes, as it's no longer necessary to implement the {{MessageMarshaller}} interface and explicitly create a {{SerializationContextInitializer}} implementation.
> Process for using {{@ProtoAdaptor}}
> 1. Create an adaptor class and add the {{@ProtoAdaptor}} annotation
> {code:java}
> @ProtoAdapter(UUID.class)
> public class UUIDAdapter {
> @ProtoFactory
> UUID create(Long mostSigBitsFixed, Long leastSigBitsFixed) {
> return new UUID(mostSigBitsFixed, leastSigBitsFixed);
> }
> @ProtoField(number = 1, type = Type.FIXED64, defaultValue = "0")
> Long getMostSigBitsFixed(UUID uuid) {
> return uuid.getMostSignificantBits();
> }
> @ProtoField(number = 2, type = Type.FIXED64, defaultValue = "0")
> Long getLeastSigBitsFixed(UUID uuid) {
> return uuid.getLeastSignificantBits();
> }
> }
> {code}
> 2. Register {{UUIDAdapter}} with your {{SerialiazationContextInitializer}} interface (LibraryInitializer in the docs examples).
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months
[Red Hat JIRA] (ISPN-12647) Investigate shutdown of bundled store implementations
by Dan Berindei (Jira)
Dan Berindei created ISPN-12647:
-----------------------------------
Summary: Investigate shutdown of bundled store implementations
Key: ISPN-12647
URL: https://issues.redhat.com/browse/ISPN-12647
Project: Infinispan
Issue Type: Task
Components: Loaders and Stores
Affects Versions: 12.0.0.CR1
Reporter: Dan Berindei
Investigate the shutdown procedure in the bundled store implementations and make sure that
* Modifications submitted before (cache) stop are fully persisted.
* Modifications submitted after (cache) stop are all rejected.
E.g. {{AsyncNonBlockingStore}} will only stop accepting new modifications after it finishes writing the queued modifications.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months
[Red Hat JIRA] (ISPN-12626) Document @ProtoAdaptor for marshalling of external classes
by Donald Naro (Jira)
[ https://issues.redhat.com/browse/ISPN-12626?page=com.atlassian.jira.plugi... ]
Donald Naro updated ISPN-12626:
-------------------------------
Git Pull Request: https://github.com/infinispan/infinispan/pull/8984, https://github.com/infinispan/infinispan/pull/9000, https://github.com/infinispan/infinispan/pull/9003 (was: https://github.com/infinispan/infinispan/pull/8984, https://github.com/infinispan/infinispan/pull/9000)
> Document @ProtoAdaptor for marshalling of external classes
> ----------------------------------------------------------
>
> Key: ISPN-12626
> URL: https://issues.redhat.com/browse/ISPN-12626
> Project: Infinispan
> Issue Type: Task
> Components: Documentation
> Affects Versions: 12.0.0.CR1
> Reporter: Ryan Emerson
> Assignee: Donald Naro
> Priority: Major
> Fix For: 12.0.0.Final
>
>
> Protostream 4.4.0.Alpha4 added support for automatically generating marshallers for external classes via the {{@ProtoAdaptor}} field. This greatly simplifies how a user can marshall third party classes, as it's no longer necessary to implement the {{MessageMarshaller}} interface and explicitly create a {{SerializationContextInitializer}} implementation.
> Process for using {{@ProtoAdaptor}}
> 1. Create an adaptor class and add the {{@ProtoAdaptor}} annotation
> {code:java}
> @ProtoAdapter(UUID.class)
> public class UUIDAdapter {
> @ProtoFactory
> UUID create(Long mostSigBitsFixed, Long leastSigBitsFixed) {
> return new UUID(mostSigBitsFixed, leastSigBitsFixed);
> }
> @ProtoField(number = 1, type = Type.FIXED64, defaultValue = "0")
> Long getMostSigBitsFixed(UUID uuid) {
> return uuid.getMostSignificantBits();
> }
> @ProtoField(number = 2, type = Type.FIXED64, defaultValue = "0")
> Long getLeastSigBitsFixed(UUID uuid) {
> return uuid.getLeastSignificantBits();
> }
> }
> {code}
> 2. Register {{UUIDAdapter}} with your {{SerialiazationContextInitializer}} interface (LibraryInitializer in the docs examples).
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months
[Red Hat JIRA] (ISPN-12646) IllegalArgumentException when doing Rolling Upgrades on transactional caches
by Gustavo Fernandes (Jira)
[ https://issues.redhat.com/browse/ISPN-12646?page=com.atlassian.jira.plugi... ]
Gustavo Fernandes updated ISPN-12646:
-------------------------------------
Status: Open (was: New)
> IllegalArgumentException when doing Rolling Upgrades on transactional caches
> ----------------------------------------------------------------------------
>
> Key: ISPN-12646
> URL: https://issues.redhat.com/browse/ISPN-12646
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 11.0.9.Final
> Reporter: Gustavo Fernandes
> Assignee: Gustavo Fernandes
> Priority: Major
>
> {noformat}
> Caused by: java.lang.IllegalArgumentException: Cannot create a transactional context without a valid Transaction instance.
> at org.infinispan.context.impl.TransactionalInvocationContextFactory.createInvocationContext(TransactionalInvocationContextFactory.java:63)
> [...]
> at org.infinispan.cache.impl.DecoratedCache.putIfAbsent(DecoratedCache.java:688)
> at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.putIfAbsent(AbstractDelegatingAdvancedCache.java:328)
> at org.infinispan.cache.impl.EncoderCache.putIfAbsent(EncoderCache.java:450)
> at org.infinispan.persistence.remote.upgrade.MigrationTask.lambda$migrateEntriesWithMetadata$0(MigrationTask.java:128)
> at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1771)
> {noformat}
> The migration component that obtains data from the remote cache does not use transactions to write to the destination cache, and since it runs on a separate thread, it cannot see any ongoing transaction and thus fail to write to the cache.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months
[Red Hat JIRA] (ISPN-12646) IllegalArgumentException when doing Rolling Upgrades on transactional caches
by Gustavo Fernandes (Jira)
Gustavo Fernandes created ISPN-12646:
----------------------------------------
Summary: IllegalArgumentException when doing Rolling Upgrades on transactional caches
Key: ISPN-12646
URL: https://issues.redhat.com/browse/ISPN-12646
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 11.0.9.Final
Reporter: Gustavo Fernandes
Assignee: Gustavo Fernandes
{noformat}
Caused by: java.lang.IllegalArgumentException: Cannot create a transactional context without a valid Transaction instance.
at org.infinispan.context.impl.TransactionalInvocationContextFactory.createInvocationContext(TransactionalInvocationContextFactory.java:63)
[...]
at org.infinispan.cache.impl.DecoratedCache.putIfAbsent(DecoratedCache.java:688)
at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.putIfAbsent(AbstractDelegatingAdvancedCache.java:328)
at org.infinispan.cache.impl.EncoderCache.putIfAbsent(EncoderCache.java:450)
at org.infinispan.persistence.remote.upgrade.MigrationTask.lambda$migrateEntriesWithMetadata$0(MigrationTask.java:128)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1771)
{noformat}
The migration component that obtains data from the remote cache does not use transactions to write to the destination cache, and since it runs on a separate thread, it cannot see any ongoing transaction and thus fail to write to the cache.
--
This message was sent by Atlassian Jira
(v8.13.1#813001)
5 years, 3 months