[infinispan-dev] failing queries on one node

Mircea Markus mircea.markus at jboss.com
Mon Sep 3 22:03:56 EDT 2012


The root cause of this, as suggested by Dan and Sanne is the fact that during a cache's creation another cache is being started.
I've made a fix candidate[1] which I assigned to Dan. I still get some failures on Ales' test, but with a different error message.

[1] https://github.com/infinispan/infinispan/pull/1281
Cheers,
Mircea 

On 3 Sep 2012, at 10:30, Ales Justin wrote:

> Also to add ...
> 
> With some more testing, it showed that it is *slave* node's queries that failed.
> 
> I setup a static master node selection: via jgroupsMaster / jgroupsSlave.
> When I changed the node type, different test failed.
> 
> e.g. if node A was slave, queryOnA, indexGenAndQueryInsertOnA, testContentOnA failed.
> if node B was slave, simply change A --> B in test names above
> 
> This is the full test:
> * https://raw.github.com/capedwarf/capedwarf-blue/a3b33ffad60e69a4c67f6b0e4ebe299ffa37d350/cluster-tests/src/test/java/org/jboss/test/capedwarf/cluster/DatastoreTestCase.java
> 
> As Sanne mentioned, that locking issue on Lucene cache's looks suspicious ...
> 
> -Ales
> 
> On Sep 3, 2012, at 11:20 AM, Sanne Grinovero <sanne at infinispan.org> wrote:
> 
>> Team, I hope someone more familiar with state transfer and cache
>> starting logic can help Ales as I don't think this is a Query or
>> Hibernate Search related problem.
>> Even more as his test was working not so long ago, and there where no
>> Search releases nor mayor changes in Infinispan Query.
>> 
>> This problem and the locking errors he reported in a different post
>> are very likely related: if the background thread in Hibernate
>> Search's backend fails to update the index because of the locking
>> issue, it doesn't surprise me that the other nodes are unable to see
>> an updated index (as write operations failed).
>> 
>> Cheers,
>> Sanne
>> 
>> On 3 September 2012 01:00, Ales Justin <ales.justin at gmail.com> wrote:
>>> After fixing that ISPN-2253:
>>> *
>>> https://github.com/alesj/infinispan/commit/05229f426e829742902de0305488282b8283b8e5
>>> (Sanne is working on even cleaner solution)
>>> 
>>> It now also looks like our CapeDwarf clustering tests have been (almost)
>>> fixed.
>>> It now appears as if one node cannot do proper querying:
>>> 
>>> Deployment dep1 goes to node1, same deployment dep2 goes to node2.
>>> 
>>> "Failed tests:
>>> queryOnA(org.jboss.test.capedwarf.cluster.DatastoreTestCase): Number of
>>> entities: 0"
>>> 
>>> Where as "queryOnB" doesn't fail.
>>> 
>>> @Sanne -- do we have any query tests covering this kind of scenario?
>>> 
>>> I'm using jgroups' auto-master selection.
>>> 
>>> Tomorrow I'll try fixed jgroups master/slave selection,
>>> and the new dynamic auto-master selection.
>>> 
>>> Any ideas still welcome. ;-)
>>> 
>>> -Ales
>>> 
>>> ---
>>> 
>>>    @InSequence(30)
>>>    @Test
>>>    @OperateOnDeployment("dep1")
>>>    public void putStoresEntityOnDepA() throws Exception {
>>>        Entity entity = createTestEntity("KIND", 1);
>>>        getService().put(entity);
>>>        assertStoreContains(entity);
>>>    }
>>> 
>>>    @InSequence(31)
>>>    @Test
>>>    @OperateOnDeployment("dep2")
>>>    public void putStoresEntityOnDepB() throws Exception {
>>>        Entity entity = createTestEntity("KIND", 2);
>>>        getService().put(entity);
>>>        assertStoreContains(entity);
>>>    }
>>> 
>>>    @InSequence(40)
>>>    @Test
>>>    @OperateOnDeployment("dep1")
>>>    public void getEntityOnDepA() throws Exception {
>>>        waitForSync();
>>> 
>>>        Key key = KeyFactory.createKey("KIND", 1);
>>>        Entity lookup = getService().get(key);
>>> 
>>>        Assert.assertNotNull(lookup);
>>> 
>>>        Entity entity = createTestEntity("KIND", 1);
>>>        Assert.assertEquals(entity, lookup);
>>>    }
>>> 
>>>    @InSequence(50)
>>>    @Test
>>>    @OperateOnDeployment("dep2")
>>>    public void getEntityOnDepB() throws Exception {
>>>        waitForSync();
>>> 
>>>        Entity entity = createTestEntity("KIND", 1);
>>>        assertStoreContains(entity);
>>>    }
>>> 
>>>    @InSequence(52)
>>>    @Test
>>>    @OperateOnDeployment("dep1")
>>>    public void queryOnA() throws Exception {
>>>        waitForSync();
>>> 
>>>        int count = getService().prepare(new
>>> Query("KIND")).countEntities(Builder.withDefaults());
>>>        Assert.assertTrue("Number of entities: " + count, count == 2);
>>>    }
>>> 
>>>    @InSequence(53)
>>>    @Test
>>>    @OperateOnDeployment("dep2")
>>>    public void queryOnB() throws Exception {
>>>        waitForSync();
>>> 
>>>        int count = getService().prepare(new
>>> Query("KIND")).countEntities(Builder.withDefaults());
>>>        Assert.assertTrue("Number of entities: " + count, count == 2);
>>>    }
>>> 
> 
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

-- 
Mircea Markus
Infinispan lead (www.infinispan.org)



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20120904/4527b2ff/attachment.html 


More information about the infinispan-dev mailing list