scanquery is not working, however SQL select and retrieving a single records works fine

classic Classic list List threaded Threaded
5 messages Options
Naveen Naveen
Reply | Threaded
Open this post in threaded view
|

scanquery is not working, however SQL select and retrieving a single records works fine

HI

Scanquery on a cache is not working, but simple GET with a key and select
statement on SQL console working fine. This is the error I get on the client
side

Ignite cluster is unavailable
[sock=14555e0a[TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
Socket[addr=XXX.XXX.com/XX.XXX.10.65,port=10800,localport=39968]]]


And on the server logs, I see the below error

[2020-12-31
10:38:03,395][ERROR][client-connector-#79][ClientListenerNioListener] Failed
to process client request
[req=o.a.i.i.processors.platform.client.cache.ClientCacheScanQueryRequest@18427c6f]
java.util.NoSuchElementException
        at
org.apache.ignite.internal.util.GridCloseableIteratorAdapter.nextX(GridCloseableIteratorAdapter.java:39)
        at
org.apache.ignite.internal.util.lang.GridIteratorAdapter.next(GridIteratorAdapter.java:35)
        at
org.apache.ignite.internal.processors.cache.AutoClosableCursorIterator.next(AutoClosableCursorIterator.java:59)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryCursor.writePage(ClientCacheQueryCursor.java:78)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryResponse.encode(ClientCacheQueryResponse.java:51)
        at
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.encode(ClientMessageParser.java:406)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:210)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:49)
        at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
        at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
        at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
        at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

This is the code

                         ClientCache<String, BinaryObject> cache =
ignite.cache(cacheName).withKeepBinary();
             try (QueryCursor<Cache.Entry&lt;String, BinaryObject>> cursor =
cache.query(new ScanQuery<String, BinaryObject>())) {
                        for (Cache.Entry<String, BinaryObject> entry :
cursor) {

It does work on our Dev cluster though, but not working on UAT, what could
be the issue.

Thanks
Naveen



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Naveen Naveen
Reply | Threaded
Open this post in threaded view
|

Re: scanquery is not working, however SQL select and retrieving a single records works fine

Any suggestions on this issue ?



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: scanquery is not working, however SQL select and retrieving a single records works fine

In reply to this post by Naveen
Hello!

You could try to pinpoint a specific partition of cache by doing per-partition scan queries on a cache. Then you could probably share part-NNN.bin with problematic partition with us so that we could check.
This assumes that you have persistence. If you don't, maybe it's easier to drop and recreate this cache.

Regards,
--
Ilya Kasnacheev


чт, 31 дек. 2020 г. в 10:20, Naveen <[hidden email]>:
HI

Scanquery on a cache is not working, but simple GET with a key and select
statement on SQL console working fine. This is the error I get on the client
side

Ignite cluster is unavailable
[sock=14555e0a[TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
Socket[addr=XXX.XXX.com/XX.XXX.10.65,port=10800,localport=39968]]]


And on the server logs, I see the below error

[2020-12-31
10:38:03,395][ERROR][client-connector-#79][ClientListenerNioListener] Failed
to process client request
[req=o.a.i.i.processors.platform.client.cache.ClientCacheScanQueryRequest@18427c6f]
java.util.NoSuchElementException
        at
org.apache.ignite.internal.util.GridCloseableIteratorAdapter.nextX(GridCloseableIteratorAdapter.java:39)
        at
org.apache.ignite.internal.util.lang.GridIteratorAdapter.next(GridIteratorAdapter.java:35)
        at
org.apache.ignite.internal.processors.cache.AutoClosableCursorIterator.next(AutoClosableCursorIterator.java:59)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryCursor.writePage(ClientCacheQueryCursor.java:78)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryResponse.encode(ClientCacheQueryResponse.java:51)
        at
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.encode(ClientMessageParser.java:406)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:210)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:49)
        at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
        at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
        at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
        at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

This is the code

                         ClientCache<String, BinaryObject> cache =
ignite.cache(cacheName).withKeepBinary();
             try (QueryCursor<Cache.Entry&lt;String, BinaryObject>> cursor =
cache.query(new ScanQuery<String, BinaryObject>())) {
                        for (Cache.Entry<String, BinaryObject> entry :
cursor) {

It does work on our Dev cluster though, but not working on UAT, what could
be the issue.

Thanks
Naveen



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Saikat Maitra Saikat Maitra
Reply | Threaded
Open this post in threaded view
|

Re: scanquery is not working, however SQL select and retrieving a single records works fine

Hi Naveen,

Did the scan query changes work for you?

I had faced a similar issue earlier and updating the code to use scan query inside a try/catch block instead of try with resources block worked for me.

Regards,
Saikat 

On Mon, Jan 4, 2021 at 5:04 AM Ilya Kasnacheev <[hidden email]> wrote:
Hello!

You could try to pinpoint a specific partition of cache by doing per-partition scan queries on a cache. Then you could probably share part-NNN.bin with problematic partition with us so that we could check.
This assumes that you have persistence. If you don't, maybe it's easier to drop and recreate this cache.

Regards,
--
Ilya Kasnacheev


чт, 31 дек. 2020 г. в 10:20, Naveen <[hidden email]>:
HI

Scanquery on a cache is not working, but simple GET with a key and select
statement on SQL console working fine. This is the error I get on the client
side

Ignite cluster is unavailable
[sock=14555e0a[TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
Socket[addr=XXX.XXX.com/XX.XXX.10.65,port=10800,localport=39968]]]


And on the server logs, I see the below error

[2020-12-31
10:38:03,395][ERROR][client-connector-#79][ClientListenerNioListener] Failed
to process client request
[req=o.a.i.i.processors.platform.client.cache.ClientCacheScanQueryRequest@18427c6f]
java.util.NoSuchElementException
        at
org.apache.ignite.internal.util.GridCloseableIteratorAdapter.nextX(GridCloseableIteratorAdapter.java:39)
        at
org.apache.ignite.internal.util.lang.GridIteratorAdapter.next(GridIteratorAdapter.java:35)
        at
org.apache.ignite.internal.processors.cache.AutoClosableCursorIterator.next(AutoClosableCursorIterator.java:59)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryCursor.writePage(ClientCacheQueryCursor.java:78)
        at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheQueryResponse.encode(ClientCacheQueryResponse.java:51)
        at
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.encode(ClientMessageParser.java:406)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:210)
        at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:49)
        at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
        at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
        at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
        at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

This is the code

                         ClientCache<String, BinaryObject> cache =
ignite.cache(cacheName).withKeepBinary();
             try (QueryCursor<Cache.Entry&lt;String, BinaryObject>> cursor =
cache.query(new ScanQuery<String, BinaryObject>())) {
                        for (Cache.Entry<String, BinaryObject> entry :
cursor) {

It does work on our Dev cluster though, but not working on UAT, what could
be the issue.

Thanks
Naveen



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
Naveen Naveen
Reply | Threaded
Open this post in threaded view
|

Re: scanquery is not working, however SQL select and retrieving a single records works fine

It got resolved.
The only change I made was, earlier I had multiple scanquery statements
using try with resources and based on specific condition one scanquery gets
executed. And made some changes to work with only  one scanquery and removed
all and then it started working fine.

Thanks
Naveen



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/