[JBoss JIRA] (ISPN-5623) Retried prepare commands do not wait for backup locks
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5623?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5623:
------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/3863
> Retried prepare commands do not wait for backup locks
> -----------------------------------------------------
>
> Key: ISPN-5623
> URL: https://issues.jboss.org/browse/ISPN-5623
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.2.3.Final, 8.0.0.Beta1
> Reporter: Dan Berindei
> Assignee: Pedro Ruivo
> Fix For: 8.1.0.Final
>
> Attachments: OptimisticPrimaryOwnerCrashDuringPrepareTest.java
>
>
> When the primary owner crashes during prepare, the prepare command is retried on the new primary owner. But because the transaction topology id stays the same, the new primary owner does not check for backup locks owned by other transactions from the previous topology.
> That makes it possible for the retried prepare command to lock a key that was already locked by another transaction on the primary owner.
> This wasn't a problem before the ISPN-4546 fix, because a primary owner crash would have forced the transaction to roll back.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-5948) ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner and ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fail with assertion error
by William Burns (JIRA)
[ https://issues.jboss.org/browse/ISPN-5948?page=com.atlassian.jira.plugin.... ]
William Burns edited comment on ISPN-5948 at 11/30/15 12:29 PM:
----------------------------------------------------------------
Actually it seems what is happening is that there are 2 concurrent reads on the expired entry. Unfortunately the concurrent reads are occurring due to a clustered get broadcasted to both of the owners from a non owner. Interestingly the staggered get would probably fix this test. But I can make the test be a bit more resilient.
Although the locking as you have mentioned maybe causing the reordering of events.
was (Author: william.burns):
Actually it seems what is happening is that there are 2 concurrent reads on the expired entry. Unfortunately the concurrent reads are occurring due to a clustered get broadcasted to both of the owners from a non owner. Interestingly the staggered get would probably fix this test. But I can make the test be a bit more resilient.
> ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner and ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fail with assertion error
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: ISPN-5948
> URL: https://issues.jboss.org/browse/ISPN-5948
> Project: Infinispan
> Issue Type: Bug
> Components: Test Suite - Core
> Reporter: Roman Macor
> Assignee: William Burns
> Labels: testsuite_stability
> Attachments: ClusterListenerDistTxTest.log.gz
>
>
> ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner fails with:
> Error Message
> expected:<MagicKey#null{2ea2ae14@ClusterListenerDistTxTest-NodeDE-7642/40}-expiring> but was:<null>
> Stacktrace
> java.lang.AssertionError: expected:<MagicKey#null{2ea2ae14@ClusterListenerDistTxTest-NodeDE-7642/40}-expiring> but was:<null>
> at org.testng.AssertJUnit.fail(AssertJUnit.java:59)
> at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerUtilTest.verifySimpleExpirationEvents(AbstractClusterListenerUtilTest.java:292)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testExpirationFilter(AbstractClusterListenerTest.java:735)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationFilter(AbstractClusterListenerTest.java:705)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationFilterNotOwner(AbstractClusterListenerTest.java:692)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
> at java.lang.reflect.Method.invoke(Method.java:620)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767)
> at org.testng.TestRunner.run(TestRunner.java:617)
> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
> at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
> at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
> at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
> at java.util.concurrent.FutureTask.run(FutureTask.java:274)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
> at java.lang.Thread.run(Thread.java:809)
> ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fails with:
> Error Message
> expected:<fi> but was:<null>
> Stacktrace
> java.lang.AssertionError: expected:<fi> but was:<null>
> at org.testng.AssertJUnit.fail(AssertJUnit.java:59)
> at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerUtilTest.verifySimpleExpirationEvents(AbstractClusterListenerUtilTest.java:292)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testExpirationConverter(AbstractClusterListenerTest.java:767)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationConverterNotOwner(AbstractClusterListenerTest.java:742)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
> at java.lang.reflect.Method.invoke(Method.java:620)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767)
> at org.testng.TestRunner.run(TestRunner.java:617)
> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
> at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
> at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
> at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
> at java.util.concurrent.FutureTask.run(FutureTask.java:274)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
> at java.lang.Thread.run(Thread.java:809)
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-5948) ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner and ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fail with assertion error
by William Burns (JIRA)
[ https://issues.jboss.org/browse/ISPN-5948?page=com.atlassian.jira.plugin.... ]
William Burns commented on ISPN-5948:
-------------------------------------
Actually it seems what is happening is that there are 2 concurrent reads on the expired entry. Unfortunately the concurrent reads are occurring due to a clustered get broadcasted to both of the owners from a non owner. Interestingly the staggered get would probably fix this test. But I can make the test be a bit more resilient.
> ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner and ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fail with assertion error
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: ISPN-5948
> URL: https://issues.jboss.org/browse/ISPN-5948
> Project: Infinispan
> Issue Type: Bug
> Components: Test Suite - Core
> Reporter: Roman Macor
> Assignee: William Burns
> Labels: testsuite_stability
> Attachments: ClusterListenerDistTxTest.log.gz
>
>
> ClusterListenerDistTxTest.testSimpleExpirationFilterNotOwner fails with:
> Error Message
> expected:<MagicKey#null{2ea2ae14@ClusterListenerDistTxTest-NodeDE-7642/40}-expiring> but was:<null>
> Stacktrace
> java.lang.AssertionError: expected:<MagicKey#null{2ea2ae14@ClusterListenerDistTxTest-NodeDE-7642/40}-expiring> but was:<null>
> at org.testng.AssertJUnit.fail(AssertJUnit.java:59)
> at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerUtilTest.verifySimpleExpirationEvents(AbstractClusterListenerUtilTest.java:292)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testExpirationFilter(AbstractClusterListenerTest.java:735)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationFilter(AbstractClusterListenerTest.java:705)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationFilterNotOwner(AbstractClusterListenerTest.java:692)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
> at java.lang.reflect.Method.invoke(Method.java:620)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767)
> at org.testng.TestRunner.run(TestRunner.java:617)
> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
> at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
> at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
> at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
> at java.util.concurrent.FutureTask.run(FutureTask.java:274)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
> at java.lang.Thread.run(Thread.java:809)
> ClusterListenerDistTxTest.testSimpleExpirationConverterNotOwner fails with:
> Error Message
> expected:<fi> but was:<null>
> Stacktrace
> java.lang.AssertionError: expected:<fi> but was:<null>
> at org.testng.AssertJUnit.fail(AssertJUnit.java:59)
> at org.testng.AssertJUnit.failNotEquals(AssertJUnit.java:364)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:80)
> at org.testng.AssertJUnit.assertEquals(AssertJUnit.java:88)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerUtilTest.verifySimpleExpirationEvents(AbstractClusterListenerUtilTest.java:292)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testExpirationConverter(AbstractClusterListenerTest.java:767)
> at org.infinispan.notifications.cachelistener.cluster.AbstractClusterListenerTest.testSimpleExpirationConverterNotOwner(AbstractClusterListenerTest.java:742)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
> at java.lang.reflect.Method.invoke(Method.java:620)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767)
> at org.testng.TestRunner.run(TestRunner.java:617)
> at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
> at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
> at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
> at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
> at java.util.concurrent.FutureTask.run(FutureTask.java:274)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1157)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:627)
> at java.lang.Thread.run(Thread.java:809)
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-6001) The infinispan server schemas are broken in many ways
by Tristan Tarrant (JIRA)
Tristan Tarrant created ISPN-6001:
-------------------------------------
Summary: The infinispan server schemas are broken in many ways
Key: ISPN-6001
URL: https://issues.jboss.org/browse/ISPN-6001
Project: Infinispan
Issue Type: Bug
Reporter: Tristan Tarrant
Assignee: Tristan Tarrant
The server schemas for the infinispan subsystem are broken in many ways:
- unnecessary required "name" attribute on stores
- missing configuration template
- leveldb store schema not referenced in cache declaration
- more
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-5482) JSR-107 - Provide mechanism to handle expiration events
by Gustavo Fernandes (JIRA)
[ https://issues.jboss.org/browse/ISPN-5482?page=com.atlassian.jira.plugin.... ]
Gustavo Fernandes reassigned ISPN-5482:
---------------------------------------
Assignee: Gustavo Fernandes
> JSR-107 - Provide mechanism to handle expiration events
> --------------------------------------------------------
>
> Key: ISPN-5482
> URL: https://issues.jboss.org/browse/ISPN-5482
> Project: Infinispan
> Issue Type: Feature Request
> Components: JCache
> Reporter: Matej Čimbora
> Assignee: Gustavo Fernandes
>
> Currently, expiration events are supported only by embedded mode & additionally require entry to be accessed in order to be created. This can lead to CacheEntryExpiredListener not being notified when an entry expires.
> Note: Not covered by TCK tests.
> Example:
> {code}
> @Test
> public void testExpiration(Method m) {
> Cache<String, String> cache1 = getCache1(m);
> Cache<String, String> cache2 = getCache2(m);
> TestExpiredListener listener = new TestExpiredListener();
> MutableCacheEntryListenerConfiguration conf1 = new MutableCacheEntryListenerConfiguration(FactoryBuilder.factoryOf(listener), null, false, false);
> cache1.registerCacheEntryListener(conf1);
> cache2.put("key1", "val1");
> sleep(5000);
> // Required by embedded JCache implementation to work
> assert cache1.get("key1") == null;
> // Failing for remote JCache implementation
> assertEquals(1, listener.invocationCount);
> }
> private static class TestExpiredListener implements CacheEntryExpiredListener, Serializable {
> private int invocationCount;
> @Override
> public void onExpired(Iterable iterable) throws CacheEntryListenerException {
> Iterator iterator = iterable.iterator();
> while (iterator.hasNext()) {
> iterator.next();
> invocationCount++;
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-5482) JSR-107 - Provide mechanism to handle expiration events
by Gustavo Fernandes (JIRA)
[ https://issues.jboss.org/browse/ISPN-5482?page=com.atlassian.jira.plugin.... ]
Gustavo Fernandes updated ISPN-5482:
------------------------------------
Status: Open (was: New)
> JSR-107 - Provide mechanism to handle expiration events
> --------------------------------------------------------
>
> Key: ISPN-5482
> URL: https://issues.jboss.org/browse/ISPN-5482
> Project: Infinispan
> Issue Type: Feature Request
> Components: JCache
> Reporter: Matej Čimbora
>
> Currently, expiration events are supported only by embedded mode & additionally require entry to be accessed in order to be created. This can lead to CacheEntryExpiredListener not being notified when an entry expires.
> Note: Not covered by TCK tests.
> Example:
> {code}
> @Test
> public void testExpiration(Method m) {
> Cache<String, String> cache1 = getCache1(m);
> Cache<String, String> cache2 = getCache2(m);
> TestExpiredListener listener = new TestExpiredListener();
> MutableCacheEntryListenerConfiguration conf1 = new MutableCacheEntryListenerConfiguration(FactoryBuilder.factoryOf(listener), null, false, false);
> cache1.registerCacheEntryListener(conf1);
> cache2.put("key1", "val1");
> sleep(5000);
> // Required by embedded JCache implementation to work
> assert cache1.get("key1") == null;
> // Failing for remote JCache implementation
> assertEquals(1, listener.invocationCount);
> }
> private static class TestExpiredListener implements CacheEntryExpiredListener, Serializable {
> private int invocationCount;
> @Override
> public void onExpired(Iterable iterable) throws CacheEntryListenerException {
> Iterator iterator = iterable.iterator();
> while (iterator.hasNext()) {
> iterator.next();
> invocationCount++;
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years
[JBoss JIRA] (ISPN-5482) JSR-107 - Provide mechanism to handle expiration events
by Gustavo Fernandes (JIRA)
[ https://issues.jboss.org/browse/ISPN-5482?page=com.atlassian.jira.plugin.... ]
Gustavo Fernandes updated ISPN-5482:
------------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/3861
> JSR-107 - Provide mechanism to handle expiration events
> --------------------------------------------------------
>
> Key: ISPN-5482
> URL: https://issues.jboss.org/browse/ISPN-5482
> Project: Infinispan
> Issue Type: Feature Request
> Components: JCache
> Reporter: Matej Čimbora
>
> Currently, expiration events are supported only by embedded mode & additionally require entry to be accessed in order to be created. This can lead to CacheEntryExpiredListener not being notified when an entry expires.
> Note: Not covered by TCK tests.
> Example:
> {code}
> @Test
> public void testExpiration(Method m) {
> Cache<String, String> cache1 = getCache1(m);
> Cache<String, String> cache2 = getCache2(m);
> TestExpiredListener listener = new TestExpiredListener();
> MutableCacheEntryListenerConfiguration conf1 = new MutableCacheEntryListenerConfiguration(FactoryBuilder.factoryOf(listener), null, false, false);
> cache1.registerCacheEntryListener(conf1);
> cache2.put("key1", "val1");
> sleep(5000);
> // Required by embedded JCache implementation to work
> assert cache1.get("key1") == null;
> // Failing for remote JCache implementation
> assertEquals(1, listener.invocationCount);
> }
> private static class TestExpiredListener implements CacheEntryExpiredListener, Serializable {
> private int invocationCount;
> @Override
> public void onExpired(Iterable iterable) throws CacheEntryListenerException {
> Iterator iterator = iterable.iterator();
> while (iterator.hasNext()) {
> iterator.next();
> invocationCount++;
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
9 years