The request should execute without failing and throwing an error because of the session.
I currently use the pool.acquire() as specified in the docs : http://orientdb.com/docs/3.0.x/orientjs/OrientJS.html#pooled-sessions
and I use the session I just obtained to query a "small" amount of verticies ~300.
Here's my query : return await session.query("select from ClassName").all().
This is called in an async function.
But this query fails (sometimes), and it gives this error :
child [OrientDB.RequestError]: No query with id 'idnumber' found probably expired session
DB name="dbname"
at child.Operation.parseError (/dist/node_modules/orientjs/lib/client/network/protocol37/operation.js:1224:13)
at child.Operation.consume (/dist/node_modules/orientjs/lib/client/network/protocol37/operation.js:566:35)
at ONetworkConnection.Connection.process (/dist/node_modules/orientjs/lib/client/network/conn.js:460:17)
at ONetworkConnection.Connection.handleSocketData (/dist/node_modules/orientjs/lib/client/network/conn.js:342:20)
at Socket.emit (events.js:209:13)
at addChunk (_stream_readable.js:305:12)
at readableAddChunk (_stream_readable.js:286:11)
at Socket.Readable.push (_stream_readable.js:220:10)
at TCP.onStreamRead (internal/stream_base_commons.js:182:23) {
name: 'OrientDB.RequestError',
message: "No query with id 'idnumber' found probably expired session\r\n" +
'\tDB name="dbname"',
data: {},
isMVCC: [Function],
isTokenException: [Function],
previous: [],
code: 5,
identifier: 0,
id: 1,
type: 'com.orientechnologies.orient.core.exception.ODatabaseException',
hasMore: 0
}
The only solution I've found so far is to get a new connection to OrientDB by restarting the API, which isn't ideal.
After each query, I close my session, even if there is an error.
The only thing that I don't do like the docs is to close the pool, but I don't understand why I'd have to do it.
I don't really know how to reproduce this effectively, it just happens sometimes and I need to reboot my API. It happened many times and it keeps happening but I can't figure out what to do.
Hope this helps.
Cheers.
Hi @VincentMarrec
are you running in distributed environment?
How often does this happen?
Did you notice if it happens after x time?
Thanks
Hello,
I'm not running in distributed environment.
I didn't notice a specific period of time, it can happen 3 times in 30min, like 1 time in 4h.
This looks like a similar issue to #8733
Cheers
Hi @VincentMarrec
can you try to increase the timeout session expiration? Probably would solve temporarily the issue
Meanwhile i will try to reproduce it
https://orientdb.com/docs/2.2.x/Configuration.html#networktokenexpiretimeout
you can add -Dnetwork.token.expireTimeout=1440 in the startup script
Thanks
Ok, I'll try.
Thank you !
This has not fixed the issue. Please help I am also encountering this issue and seems to occur (in my case at least) when I querry a lot of data?
This is not just a setback or a tiny bug this makes OrientDB not reliable on any production dataset.
Maybe linked to #8733
Hi @CortneyKnorr
are you using which driver OrientJS?
is it delaying the issue this settings?
-Dnetwork.token.expireTimeout=1440
@CortneyKnorr
do you have a reproducer?
Thanks
I have changed the expireTimeout but the problem persists. It seems delayed. And I can not find any way of reproducing it. It occurs maily when I request 300+ records.
OrientJS 3.0.1
It also seems to depend of the quantity of data more than the number of records. BUT NO GUARANTEE
Hi @CortneyKnorr @VincentMarrec
good news i've reproduced the issue, so now i can work on a fix.
Great news thank you
Hi @CortneyKnorr @VincentMarrec
i've just pushed a fix and release OrientJS 3.0.7. Please upgrade it should solve the issue
Thanks
Hi !
I'll try with an upgraded version.
Thank you !
Most helpful comment
Hi @CortneyKnorr @VincentMarrec
good news i've reproduced the issue, so now i can work on a fix.