Sure, I guess you meant javascript driver? W dniu środa, 28 września 2016 02:25:32 UTC+2 użytkownik Michael Hunger napisał: > > Could you please paste this as an github issue for the java driver? > > On Tue, Sep 27, 2016 at 11:23 PM, Michał Sitarz <[email protected] > <javascript:>> wrote: > >> Hi! >> >> While I was writing unit tests for my app I noticed this exception when >> testing more concurrent sessions than connectionPoolSize in javascript >> neo4j-driver. >> >> Versions: >> neo4j - dockerized 3.0.1, image neo4j:3.0 >> neo4j-driver - 1.0.1 >> nodejs - tested on 6.6.0 and 6.2.1 >> >> Error: >> 2016-09-27 19:21:41.296+0000 ERROR [o.n.b.v.t.BoltProtocolV1] Failed to >> write response to driver >> java.lang.NullPointerException >> at >> org.neo4j.bolt.v1.transport.ChunkedOutput.ensure(ChunkedOutput.java:156) >> at >> org.neo4j.bolt.v1.transport.ChunkedOutput.writeShort(ChunkedOutput.java:90) >> at >> org.neo4j.bolt.v1.packstream.PackStream$Packer.packStructHeader(PackStream.java:304) >> at >> org.neo4j.bolt.v1.messaging.PackStreamMessageFormatV1$Writer.handleSuccessMessage(PackStreamMessageFormatV1.java:145) >> at >> org.neo4j.bolt.v1.messaging.msgprocess.MessageProcessingCallback.completed(MessageProcessingCallback.java:102) >> at >> org.neo4j.bolt.v1.messaging.msgprocess.MessageProcessingCallback.completed(MessageProcessingCallback.java:31) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine.after(SessionStateMachine.java:823) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine.reset(SessionStateMachine.java:699) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorkerFacade.lambda$reset$6(SessionWorkerFacade.java:87) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.execute(SessionWorker.java:116) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.run(SessionWorker.java:77) >> at java.lang.Thread.run(Thread.java:745) >> >> >> I can reproduce this error on fresh DB using this code: >> const _ = require('lodash'), >> neo4j = require('neo4j-driver').v1; >> >> const driver = neo4j.driver('bolt://localhost:7687', >> neo4j.auth.basic('neo4j', >> 'neo4j'), >> {connectionPoolSize: 1}); >> >> for (let i = 0; i < 100; i++) { >> let session = driver.session(); >> >> session >> .run('create (u:User {id: {id}}) return u', {id: _.random(100000)}) >> .then(records => { >> >> console.log('=====================NUMBER'+i+'======================='); >> console.log(records) >> console.log('=============================================='); >> session.close(); >> }) >> .catch(err => { >> console.error(err); >> session.close(); >> }); >> >> } >> >> >> The same problem appears using observer: >> const _ = require('lodash'), >> neo4j = require('neo4j-driver').v1; >> >> const driver = neo4j.driver('bolt://localhost:7687', >> neo4j.auth.basic('neo4j', >> 'neo4j'), >> {connectionPoolSize: 1}); >> >> for (let i = 0; i < 100; i++) { >> let session = driver.session(); >> >> session >> .run('create (u:User {id: {id}}) return u', {id: _.random(100000)}) >> .subscribe({ >> onNext(record) { >> >> }, >> onCompleted(summary) { >> console.log('finished number ' + i); >> session.close(); >> }, >> onError(err) { >> console.error(err, 'itaration number' + i); >> } >> }); >> } >> >> >> >> After removing session.close() this problem disappears in both cases. >> >> When using lower number of session e.g. 5, then the same problem appears >> after few scripts run. However, all records are returned properly. >> I wouldn't notice this if next test in my suite sometimes didn't >> strangely fail with timeout or even exception shown below when using "match >> (u:Testing) detach delete u" on afterEach hook. >> >> 2016-09-27 20:19:32.868+0000 ERROR [o.n.b.v.r.i.ErrorReporter] Client >> triggered an unexpected error [UnknownError]: >> Property[1075,used=false,prev=-1,next=-1] not in use. See debug.log for >> more details, reference 4c0fb1ed-ee5b-4036-a156-828a206cfc2e. >> 2016-09-27 20:19:32.868+0000 ERROR [o.n.b.v.r.i.ErrorReporter] Client >> triggered an unexpected error [UnknownError]: >> Property[1075,used=false,prev=-1,next=-1] not in use, reference >> 4c0fb1ed-ee5b-4036-a156-828a206cfc2e. >> Property[1075,used=false,prev=-1,next=-1] not in use >> org.neo4j.kernel.impl.store.InvalidRecordException: >> Property[1075,used=false,prev=-1,next=-1] not in use >> at >> org.neo4j.kernel.impl.store.record.RecordLoad$1.verify(RecordLoad.java:55) >> at >> org.neo4j.kernel.impl.store.CommonAbstractStore.verifyAfterReading(CommonAbstractStore.java:1240) >> at >> org.neo4j.kernel.impl.store.CommonAbstractStore.readIntoRecord(CommonAbstractStore.java:1064) >> at >> org.neo4j.kernel.impl.store.CommonAbstractStore.getRecord(CommonAbstractStore.java:1042) >> at >> org.neo4j.kernel.impl.transaction.state.Loaders$2.load(Loaders.java:165) >> at >> org.neo4j.kernel.impl.transaction.state.Loaders$2.load(Loaders.java:145) >> at >> org.neo4j.kernel.impl.transaction.state.RecordChanges.getOrLoad(RecordChanges.java:72) >> at >> org.neo4j.kernel.impl.transaction.state.PropertyDeleter.deletePropertyChain(PropertyDeleter.java:45) >> at >> org.neo4j.kernel.impl.transaction.state.TransactionRecordState.getAndDeletePropertyChain(TransactionRecordState.java:336) >> at >> org.neo4j.kernel.impl.transaction.state.TransactionRecordState.nodeDelete(TransactionRecordState.java:322) >> at >> org.neo4j.kernel.impl.storageengine.impl.recordstorage.TransactionToRecordStateVisitor.visitDeletedNode(TransactionToRecordStateVisitor.java:89) >> at >> org.neo4j.storageengine.api.txstate.TxStateVisitor$Delegator.visitDeletedNode(TxStateVisitor.java:220) >> at >> org.neo4j.kernel.api.txstate.TransactionCountingStateVisitor.visitDeletedNode(TransactionCountingStateVisitor.java:100) >> at >> org.neo4j.kernel.impl.api.state.TxState$12.visitRemoved(TxState.java:339) >> at >> org.neo4j.kernel.impl.api.state.TxState$12.visitRemoved(TxState.java:335) >> at >> org.neo4j.kernel.impl.util.diffsets.SuperDiffSets.accept(SuperDiffSets.java:70) >> at org.neo4j.kernel.impl.util.diffsets.DiffSets.accept(DiffSets.java:41) >> at org.neo4j.kernel.impl.api.state.TxState.accept(TxState.java:274) >> at >> org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine.createCommands(RecordStorageEngine.java:304) >> at >> org.neo4j.kernel.impl.api.KernelTransactionImplementation.commit(KernelTransactionImplementation.java:431) >> at >> org.neo4j.kernel.impl.api.KernelTransactionImplementation.close(KernelTransactionImplementation.java:380) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine$State$3.commitTransaction(SessionStateMachine.java:187) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine$State$4.discardAll(SessionStateMachine.java:258) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine$State$4.pullAll(SessionStateMachine.java:237) >> at >> org.neo4j.bolt.v1.runtime.internal.SessionStateMachine.pullAll(SessionStateMachine.java:664) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorkerFacade.lambda$pullAll$4(SessionWorkerFacade.java:74) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.execute(SessionWorker.java:116) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.executeBatch(SessionWorker.java:102) >> at >> org.neo4j.bolt.v1.runtime.internal.concurrent.SessionWorker.run(SessionWorker.java:82) >> at java.lang.Thread.run(Thread.java:745) >> >> And error returned to client: >> Structure { >> signature: 127, >> fields: >> [ { code: 'Neo.DatabaseError.General.UnknownError', >> message: 'An unexpected failure occurred, see details in the >> database logs, reference number 4c0fb1ed-ee5b-4036-a156-828a206cfc2e.' } ] } >> >> >> >> When I don't use tests that runs more sessions than connectionPoolSize >> and without afterEach hook, then everything is OK. >> >> So to summarize: >> 1) I hit NullPointerException in DB when running more sessions than >> connectionPoolSize >> 2) After hitting NullPointerException, next test which is simple >> transaction will timeout. >> 3) using afterEach hook that deletes all test nodes, sometimes I get >> UnknownError on client and InvalidRecordException in DB >> >> So how can I make sure that this sort of problems doesn't occur on my >> server when requests will increase so much that there will be more sessions >> than connectionPoolSize? >> >> Thanks! >> Michal >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Neo4j" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > >
-- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
