As a workaround you can try to broadcast a task :
Collection<Integer> res =
ignite.compute(ignite.cluster().forCacheNodes("mycache")).broadcast(
new IgniteCallable<Integer>() {
/** Auto-inject ignite instance. */
@IgniteInstanceResource
private Ignite ignite;
@Override public Integer call() {
IgniteCache<Integer, Integer> cache =
ignite.getOrCreateCache(CACHE_NAME);
Iterator<Cache.Entry> curs = ((IgniteCache<Object,
Entity>)cache)
.query(new ScanQuery<Object, Entity>()
).iterator();
int cnt=0;
while(curs.hasNext()){
cnt += ((CompositeEntity)entry.getValue()).size()
}
return cnt;
}
}
);
On Mon, Oct 30, 2017 at 4:38 PM, Andrey Mashenkov <
[email protected]> wrote:
> Hi,
>
> This is known bug that transformer applies only to first page of results.
> Here is a ticket [1]
>
>
> [1] https://issues.apache.org/jira/browse/IGNITE-5804
>
> On Sat, Oct 28, 2017 at 8:57 AM, naresh.goty <[email protected]>
> wrote:
>
>> Hi All,
>>
>> We are seeing an issue with calculating size of few caches in our
>> application, only when there
>> are more than one server node is started at the same time.
>> As part of startup routine, we have a custom load routine to load data to
>> cache, and once load is successfully complete, then cache size is
>> calculated.
>>
>> Below is the error observed in the log when the size() method is invoked:
>>
>> {"eventTime" : "Oct 20 2017 10:50:25.698 AM PDT", "thread" :
>> "CacheExecutor-3", "level" : "ERROR", "class" :
>> "com.service.CacheManager",
>> "method" : "lambda$doLoad$146", "message" : ""}
>> java.lang.ClassCastException: org.apache.ignite.lang.IgniteBiTuple
>> cannot be
>> cast to java.lang.Integer
>> at
>> java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:210)
>> at
>> java.util.ArrayList$ArrayListSpliterator.forEachRemaining(
>> ArrayList.java:1374)
>> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.
>> java:481)
>> at
>> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPi
>> peline.java:471)
>> at
>> java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Reduc
>> eOps.java:708)
>> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.
>> java:234)
>> at java.util.stream.IntPipeline.reduce(IntPipeline.java:456)
>> at java.util.stream.IntPipeline.sum(IntPipeline.java:414)
>> at com.cache.RangeCache.size(RangeCache.java:369)
>>
>>
>>
>> public int size() {
>>
>> return((IgniteCache<Object, Entity>)cache)
>> .query(new ScanQuery<Object, Entity>(),
>> (entry) ->
>> ((CompositeEntity)entry.getValue()).size())
>> .getAll()
>> .stream()
>> .mapToInt(Integer::intValue)
>> .sum();
>>
>> }
>> Note: Entity is a custom interface for cache entities, and
>> CompositeEntity
>> implements Entity.
>>
>> Please let us know if there if you find any issue with above
>> method of
>> calculating cache size.
>>
>>
>>
>> --
>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>
>
>
>
> --
> Best regards,
> Andrey V. Mashenkov
>
--
Best regards,
Andrey V. Mashenkov