You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Barry Oglesby (JIRA)" <ji...@apache.org> on 2016/11/17 20:56:59 UTC

[jira] [Created] (GEODE-2124) Queries that invoke StructSet addAll fail with ClassCastException

Barry Oglesby created GEODE-2124:
------------------------------------

             Summary: Queries that invoke StructSet addAll fail with ClassCastException
                 Key: GEODE-2124
                 URL: https://issues.apache.org/jira/browse/GEODE-2124
             Project: Geode
          Issue Type: Bug
            Reporter: Barry Oglesby


A query like this fails with the exception below:
{noformat}
select distinct oP.ID, oP.status, oP.getType from /data oP where element(select distinct p.ID, p.status, p.getType from /data p where p.ID = oP.ID).status = 'inactive'
{noformat}
{noformat}
Caused by: java.lang.ClassCastException: org.apache.geode.cache.query.internal.StructImpl cannot be cast to [Ljava.lang.Object;
	at org.apache.geode.cache.query.internal.StructSet$ObjectArrayHashingStrategy.hashCode(StructSet.java:70)
	at it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet.add(ObjectOpenCustomHashSet.java:248)
	at it.unimi.dsi.fastutil.objects.AbstractObjectCollection.addAll(AbstractObjectCollection.java:71)
	at it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet.addAll(ObjectOpenCustomHashSet.java:235)
	at org.apache.geode.cache.query.internal.StructSet.addAll(StructSet.java:248)
	at org.apache.geode.cache.query.internal.ResultsCollectionWrapper.addAll(ResultsCollectionWrapper.java:157)
	at org.apache.geode.cache.query.internal.Functions.element(Functions.java:103)
	at org.apache.geode.cache.query.internal.CompiledFunction.call(CompiledFunction.java:84)
	at org.apache.geode.cache.query.internal.CompiledFunction.evaluate(CompiledFunction.java:59)
	at org.apache.geode.cache.query.internal.CompiledPath.evaluate(CompiledPath.java:92)
	at org.apache.geode.cache.query.internal.CompiledComparison.evaluate(CompiledComparison.java:82)
	at org.apache.geode.cache.query.internal.CompiledSelect.doNestedIterations(CompiledSelect.java:787)
	at org.apache.geode.cache.query.internal.CompiledSelect.doNestedIterations(CompiledSelect.java:857)
	at org.apache.geode.cache.query.internal.CompiledSelect.doIterationEvaluate(CompiledSelect.java:715)
	at org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:553)
	at org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:57)
	at org.apache.geode.cache.query.internal.DefaultQuery.executeUsingContext(DefaultQuery.java:559)
	at org.apache.geode.internal.cache.PRQueryProcessor.executeQueryOnBuckets(PRQueryProcessor.java:367)
	at org.apache.geode.internal.cache.PRQueryProcessor.executeSequentially(PRQueryProcessor.java:331)
	at org.apache.geode.internal.cache.PRQueryProcessor.executeQuery(PRQueryProcessor.java:121)
	at org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnLocalNode(PartitionedRegionQueryEvaluator.java:909)
	at org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnRemoteAndLocalNodes(PartitionedRegionQueryEvaluator.java:327)
	at org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.queryBuckets(PartitionedRegionQueryEvaluator.java:445)
	at org.apache.geode.internal.cache.PartitionedRegion.doExecuteQuery(PartitionedRegion.java:1792)
	at org.apache.geode.internal.cache.PartitionedRegion.executeQuery(PartitionedRegion.java:1721)
	at org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:342)
	at org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:300)
	at org.apache.geode.internal.cache.tier.sockets.BaseCommandQuery.processQueryUsingParams(BaseCommandQuery.java:121)
	at org.apache.geode.internal.cache.tier.sockets.BaseCommandQuery.processQuery(BaseCommandQuery.java:65)
	at org.apache.geode.internal.cache.tier.sockets.command.Query.cmdExecute(Query.java:92)
	at org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:141)
	at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:777)
	at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:905)
	at org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1161)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:519)
	at java.lang.Thread.run(Thread.java:745)
{noformat}

The Collection being passed into the addAll method are the same in Geode and GemFire 8.x:

Geode:
{noformat}
c=[struct(ID:648,status:inactive,getType:type1)]; class=class java.util.HashSet
  o=struct(ID:648,status:inactive,getType:type1); class=class org.apache.geode.cache.query.internal.StructImpl
{noformat}
GemFire 8x:
{noformat}
c=[struct(ID:562,status:inactive,getType:type1)]; class=class java.util.HashSet
  o=struct(ID:562,status:inactive,getType:type1); class=class com.gemstone.gemfire.cache.query.internal.StructImpl
{noformat}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)