[JBoss JIRA] (ISPN-5465) Replace the Hash function with a segment mapper
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5465?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5465:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Replace the Hash function with a segment mapper
> -----------------------------------------------
>
> Key: ISPN-5465
> URL: https://issues.jboss.org/browse/ISPN-5465
> Project: Infinispan
> Issue Type: Feature Request
> Components: Configuration, Core
> Affects Versions: 7.2.1.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Fix For: 8.1.0.Final
>
>
> Currently, we allow the user to customize the mapping of keys to CH segments with a custom {{Hash}} function. But the Hash function doesn't give the user direct control over where a key is mapped, the ultimate location depends on the CH implementation. The CH implementation is also customizable, but it's much harder for the user to get right.
> We should replace the Hash with something like this:
> {code:java}
> public interface SegmentMapper {
> public int getSegment(Object key, int numSegments);
> {code}
> This should also be easier to implement than the {{Grouper}} interface we have now, when the user only needs co-location and doesn't need additional grouping features like {{cache.getGroup(name)}}.
> I think this should also help internally, e.g. to replace the {{GroupingConsistentHash}} that needs to be re-created on every topology update with a constant {{SegmentMapper}} wrapper. It might also help to compute the segment of a key only once and save it in the context, instead of computing it every time we need to know the location of a key.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5572) Exposed JMX MBeans should be separate components
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5572?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5572:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Exposed JMX MBeans should be separate components
> ------------------------------------------------
>
> Key: ISPN-5572
> URL: https://issues.jboss.org/browse/ISPN-5572
> Project: Infinispan
> Issue Type: Task
> Components: Core
> Affects Versions: 8.0.0.Alpha2, 7.2.3.Final
> Reporter: Dan Berindei
> Fix For: 8.1.0.Final
>
>
> We currently expose internal components as JMX MBeans, and that makes our JMX "API" very unstructured. The exposed MBeans should be separate components, and the only concern in their interfaces should be ease of use.
> One example of JMX getting in the way of refactoring is {{CacheMgmtInterceptor}}. The interceptor chain is dynamic, so it should be possible to insert the interceptor only when statistics are enabled. But because the {{statisticsEnabled}} attribute is on the interceptor itself, that becomes a lot trickier, and we had to introduce a separate configuration attribute that disables statistics permanently (ISPN-5542).
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5557) Core threading redesign
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5557?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5557:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Core threading redesign
> -----------------------
>
> Key: ISPN-5557
> URL: https://issues.jboss.org/browse/ISPN-5557
> Project: Infinispan
> Issue Type: Task
> Components: Core
> Affects Versions: 7.2.2.Final
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Priority: Critical
> Fix For: 8.1.0.Final
>
>
> Infinispan needs a lot of threads, because everything is synchronous: locking, remote command invocations, cache writers. This causes various issues, from general context switching overhead to the thread pools getting full and causing deadlocks.
> We should redesign the core so that most blocking happens on the application threads, and the number of internal threads is kept to a minimum.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5533) M/R DeltaAwareList can add duplicate values because of topology changes
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5533?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5533:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> M/R DeltaAwareList can add duplicate values because of topology changes
> -----------------------------------------------------------------------
>
> Key: ISPN-5533
> URL: https://issues.jboss.org/browse/ISPN-5533
> Project: Infinispan
> Issue Type: Bug
> Components: Core, Distributed Execution and Map/Reduce
> Affects Versions: 7.2.2.Final, 8.0.0.Alpha1
> Reporter: Dan Berindei
> Fix For: 8.1.0.Final
>
>
> By default, the intermediate cache is non-transactional, so a topology change will cause write commands to be retried. Because a {{PutKeyValueCommand(K, DeltaAwareList)}} command is not idempotent, a retried command will append extra intermediate values to the list.
> The M/R framework tries to guard against this by waiting for all the nodes to initialize the intermediate cache before starting the reduce phase, but it cannot guard against nodes joining or leaving during the reduce phase.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5570) Cross-site: retry backup commands
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5570?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5570:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Cross-site: retry backup commands
> ---------------------------------
>
> Key: ISPN-5570
> URL: https://issues.jboss.org/browse/ISPN-5570
> Project: Infinispan
> Issue Type: Bug
> Components: Core, Cross-Site Replication
> Affects Versions: 7.2.3.Final
> Reporter: Dan Berindei
> Fix For: 8.1.0.Final
>
>
> There are 3 phases in a backup RPC:
> 1. Sender -> Local site master: caused by the site master is shutting down or crashing, or by a network split.
> 2. Local site master -> Remote site master:
> 2.1. Local site master is no longer a site master, e.g. because it's shutting down or because it's no longer coordinator after a merge.
> 2.2. Remote site master is not longer a site master.
> 2.3. Link between local site and remote site is down.
> 3. Remote site master -> Backup targets
> Replication failures in phase 3 are handled by retrying (except for TimeoutExceptions), because {{BaseBackupReceiver}} uses regular cache methods to perform the updates.
> But replication failures in phases 1 and 2 are not handled in any way, except for causing the remote site to be taken offline after a certain number of replication failures (if backup is synchronous). We should instead retry backup RPCs when we get a {{SuspectException}} or {{UnreachableException}}, and perhaps even when we get no response (2.2?), and only stop when the timeout expires or when the backup is taken offline.
> Async backup probably needs retrying as well, and perhaps even a more sophisticated approach like I-RAC (ISPN-2634).
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5530) AtomicObjectFactoryTest.distributedCacheTest random failures
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5530?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5530:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> AtomicObjectFactoryTest.distributedCacheTest random failures
> ------------------------------------------------------------
>
> Key: ISPN-5530
> URL: https://issues.jboss.org/browse/ISPN-5530
> Project: Infinispan
> Issue Type: Bug
> Components: Test Suite - Core
> Affects Versions: 7.2.2.Final, 8.0.0.Alpha1
> Reporter: Dan Berindei
> Priority: Blocker
> Labels: testsuite_stability
> Fix For: 8.1.0.Final
>
>
> {noformat}
> java.lang.AssertionError: obtained = 999; espected = 1000 expected:<1000> but was:<999>
> 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.infinispan.atomic.AtomicObjectFactoryTest.distributedCacheTest(AtomicObjectFactoryTest.java:114)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
> 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:348)
> at org.testng.SuiteRunner.access$000(SuiteRunner.java:38)
> at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:382)
> at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5521) Upgrade to Hibernate ORM 5.0.0.CR2
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5521?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5521:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Upgrade to Hibernate ORM 5.0.0.CR2
> ----------------------------------
>
> Key: ISPN-5521
> URL: https://issues.jboss.org/browse/ISPN-5521
> Project: Infinispan
> Issue Type: Component Upgrade
> Components: Loaders and Stores
> Reporter: Sanne Grinovero
> Assignee: Tristan Tarrant
> Fix For: 8.1.0.Final
>
>
> I'm opening this to make sure we keep Infinispan aligned with the other platforms, now moving to Hibernate 5.
> This affects at least the JPA CacheStore, I'm not sure if other components.
> Among many improvements, noticeable for Infinispan there is better OSGi support.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months
[JBoss JIRA] (ISPN-5515) Purge store if there is another node already running
by Pedro Ruivo (JIRA)
[ https://issues.jboss.org/browse/ISPN-5515?page=com.atlassian.jira.plugin.... ]
Pedro Ruivo updated ISPN-5515:
------------------------------
Fix Version/s: 8.1.0.Final
(was: 8.0.0.Final)
> Purge store if there is another node already running
> ----------------------------------------------------
>
> Key: ISPN-5515
> URL: https://issues.jboss.org/browse/ISPN-5515
> Project: Infinispan
> Issue Type: Enhancement
> Components: Core, Loaders and Stores
> Affects Versions: 7.2.2.Final, 8.0.0.Alpha1
> Reporter: Dan Berindei
> Assignee: Dan Berindei
> Fix For: 8.1.0.Final
>
>
> Preloading happens before communicating with other nodes that might already have the cache running. When joining the existing members, the cache then waits to receive the first CH in which it is a member, and then deletes only the entries in the segments that it doesn't own in that CH.
> The intention of this was to remove as little as possible from the existing data, e.g. if the first node to start up is not the one that was stopped last. But the preloaded entries are not replicated to the other nodes, so this can lead to inconsistencies.
> It would be better to delay preloading until we know we are the first node to start up, but failing that we could clear the data container and the store before receiving the initial state.
> Note that this will only allow preloading data from one node. Restoring data from more nodes is harder to do, and we will implement it as part of graceful restart.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
8 years, 8 months