Skip to content

Commit 6510f92

Browse files
author
Zhen Li
authored
Merge pull request #160 from eve-bright/release-connections-to-correct-pool
Release connections to correct pool when using routing driver
2 parents 56c7995 + 4e716db commit 6510f92

File tree

4 files changed

+55
-2
lines changed

4 files changed

+55
-2
lines changed

src/v1/driver.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class Driver {
7272
let conn = connect(url, this._config);
7373
conn.initialize(this._userAgent, this._token, streamObserver);
7474
conn._id = sessionId;
75-
conn._release = () => release(this._url, conn);
75+
conn._release = () => release(url, conn);
7676

7777
this._openSessions[sessionId] = conn;
7878
return conn;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
!: AUTO INIT
2+
!: AUTO RESET
3+
!: AUTO PULL_ALL
4+
5+
C: RUN "CALL dbms.cluster.routing.getServers" {}
6+
PULL_ALL
7+
S: SUCCESS {"fields": ["ttl", "servers"]}
8+
RECORD [9223372036854775807, [{"addresses": ["127.0.0.1:9001"],"role": "WRITE"}, {"addresses": ["127.0.0.1:9005","127.0.0.1:9003"], "role": "READ"},{"addresses": ["127.0.0.1:9004","127.0.0.1:9002","127.0.0.1:9003"], "role": "ROUTE"}]]
9+
SUCCESS {}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
!: AUTO INIT
2+
!: AUTO RESET
3+
!: AUTO PULL_ALL
4+
5+
C: RUN "CREATE (n {name:'Bob'})" {}
6+
PULL_ALL
7+
S: SUCCESS {}
8+
SUCCESS {}
9+
C: RUN "CREATE ()" {}
10+
PULL_ALL
11+
S: SUCCESS {}
12+
SUCCESS {}

test/v1/routing.driver.boltkit.it.js

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,5 +640,37 @@ describe('routing driver ', function () {
640640
});
641641
});
642642
});
643-
});
643+
it('should re-use connections', function (done) {
644+
if (!boltkit.BoltKitSupport) {
645+
done();
646+
return;
647+
}
648+
// Given
649+
var kit = new boltkit.BoltKit();
650+
var seedServer = kit.start('./test/resources/boltkit/single_write_server.script', 9002);
651+
var writeServer = kit.start('./test/resources/boltkit/two_write_responses_server.script', 9001);
644652

653+
kit.run(function () {
654+
var driver = neo4j.driver("bolt+routing://127.0.0.1:9002", neo4j.auth.basic("neo4j", "neo4j"));
655+
// When
656+
var session = driver.session(neo4j.session.WRITE);
657+
session.run("CREATE (n {name:'Bob'})").then(function () {
658+
session.close(function() {
659+
var connections = Object.keys(driver._openSessions).length
660+
session = driver.session(neo4j.session.WRITE);
661+
session.run("CREATE ()").then(function () {
662+
driver.close();
663+
seedServer.exit(function (code1) {
664+
writeServer.exit(function (code2) {
665+
expect(connections).toEqual(Object.keys(driver._openSessions).length)
666+
expect(code1).toEqual(0);
667+
expect(code2).toEqual(0);
668+
done();
669+
});
670+
});
671+
});
672+
});
673+
});
674+
});
675+
});
676+
});

0 commit comments

Comments
 (0)