[JBoss JIRA] (ISPN-1588) IndexOutOfBoundsException while using clustered query
by Mathieu Lachance (Created) (JIRA)
IndexOutOfBoundsException while using clustered query
-----------------------------------------------------
Key: ISPN-1588
URL: https://issues.jboss.org/browse/ISPN-1588
Project: Infinispan
Issue Type: Bug
Components: Querying, RPC
Affects Versions: 5.1.0.BETA5
Reporter: Mathieu Lachance
Assignee: Sanne Grinovero
when using clustered query with dist sync mode i'm running into index out of bound exception.
java.lang.IndexOutOfBoundsException: Index: 100, Size: 100
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.infinispan.query.clustered.DistributedIterator.current(DistributedIterator.java:138)
at org.infinispan.query.clustered.DistributedIterator.next(DistributedIterator.java:114)
at org.infinispan.query.clustered.ClusteredCacheQueryImpl.list(ClusteredCacheQueryImpl.java:136)
at com.XXX.DistributedCache.cacheQueryList(DistributedCache.java:239)
at com.XXX.DistributedCache.cacheQueryList(DistributedCache.java:200)
at com.XXX.ClientCache.getClientsByServerId(ClientCache.java:168)
at com.XXX.getClientsByServerId(ClientManager.java:157)
at com.XXX$PingClient.run(PlayerBll.java:890)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
i do not have any reproductible step, but here's what i know :
it only seems to happen under high contention ; when i'm running stress test.
when running a stress test i might get query that return over than 100 results.
tough i've also seen it happen on query that can only return few (4-6) results.
i never saw the stack trace with different index and size different than 100 (it's always the exact same exception).
i've also tried the lazy iterator to see if it would have a different behavior, but i get the same stack trace.
is there anything i could look up in the source code to debug and maybe find the repro steps ?
thanks,
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 7 months
[JBoss JIRA] (ISPN-1740) Refactor internal classes and SPIs to use new Configuration beans
by Manik Surtani (JIRA)
Manik Surtani created ISPN-1740:
-----------------------------------
Summary: Refactor internal classes and SPIs to use new Configuration beans
Key: ISPN-1740
URL: https://issues.jboss.org/browse/ISPN-1740
Project: Infinispan
Issue Type: Enhancement
Components: Configuration
Affects Versions: 5.1.0.FINAL
Reporter: Manik Surtani
Assignee: Vladimir Blagojevic
Fix For: 5.2.0.FINAL
The current programmatic configuration makes use of the old 5.0.x config beans internally (injection) as well as unit tests and in SPIs (CacheStore, CommandInterceptor, etc).
We need to refactor these SPIs and internal code to use the new post-5.1 config beans.
However, the public API (DefaultCacheManager) should still support the old Configuration beans. To do this we'd need to write something like the reverse of the LegacyConfigurationAdapter. The LegacyConfigurationAdapter takes a 5.1 Configuration and creates a 5.0 Configuration. We need to do this in reverse once the internals start using the new 5.1 Configuration.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 7 months
[JBoss JIRA] Created: (ISPN-999) Support eventual consistency
by Manik Surtani (JIRA)
Support eventual consistency
----------------------------
Key: ISPN-999
URL: https://issues.jboss.org/browse/ISPN-999
Project: Infinispan
Issue Type: Feature Request
Components: Distributed Cache, Locking and Concurrency
Reporter: Manik Surtani
Assignee: Manik Surtani
Fix For: 5.1.0.BETA1, 5.1.0.Final
Essentially, it is about supporting eventual consistency in Infinispan. Currently Infinispan is strongly consistent when using synchronous distribution mode. Each data owner receives updates synchronously so anyone anywhere on the cluster doing a GET will see the correct value. The only exception is during a rehash (when a new node joins or leaves), that consistency is eventual since the GET may reach a new joiner who may not have applied state it receives from its neighbours yet. However this is hidden from users since the GET is sent to> 1 data owner and if an UnsureResponse is received (determined by the fact that a new joiner responds and the new joiner wouldn't have finished applying state), the caller thread waits for more definite responses.
However, there is a use case for being eventually consistent as well: the main benefits being speed and partition tolerance. E.g., if we use distribution in asynchronous mode, the writes become *much* faster. However, anyone anywhere doing a GET will have to perform the GET on all data owners, and compare the versions of the data received to determine which is the latest. And if there is a conflict, to pass back all values to the user.
So in terms of design, what I have in mind is:
* All cache entries are versioned using vector clocks. One vector clock per node.
* When a node performs a GET, the GET is sent to all data owners (concurrently), and the value + version is retrieved from each.
* If the versions are all the same (or they can be "fast forwarded"), the value is returned
* Otherwise, all potential values and their versions are returned
* A resolve() API should be provided where application code may provide a "hint" as to which version should be "correct" - which will cause an update.
* In terms of implementation, this will touch the DistributionInterceptor, InternalCacheEntry and relevant factories, some config code (since this should be consistency model should be configurable), and a new public interface.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 8 months