neo4j-ruby-driver 5.7.0.alpha.5 → 5.7.0.alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/neo4j/driver/exceptions/neo4j_exception.rb +6 -6
- data/ruby/neo4j/driver/internal/async/internal_async_session.rb +6 -12
- data/ruby/neo4j/driver/internal/handlers/routing_response_handler.rb +16 -7
- data/ruby/neo4j/driver/internal/retry/exponential_backoff_retry_logic.rb +2 -3
- data/ruby/neo4j/driver/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8155401c9cf866b2f2595fdd1334c35c0d09b3160f9b7c9e1c94aef334ad66e5
|
|
4
|
+
data.tar.gz: 1e4ba8da99822dfb02dbc6f2088c478e1868592b387d9b6acef954f6973a6cd8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 814db07fdb74c015051783ea1a91db4db2db5a3c715f0a8ce27d83ba726e58af930af4f8470ef67afeb40392499cfdda0b3230a14cecbb3d2f4fbe2dbd1db496
|
|
7
|
+
data.tar.gz: df14e459b0e08839b105e95f7ca3a4ed7a08c021bd95cfa7ada04aae8c5e7b01383014f808b0c11d0d90e35eba6973adfb612273b32e1ecfbf1c88fb19d54528
|
|
@@ -7,14 +7,14 @@ module Neo4j
|
|
|
7
7
|
attr_reader :code, :suppressed
|
|
8
8
|
|
|
9
9
|
def initialize(*args)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@
|
|
13
|
-
|
|
10
|
+
args, exceptions = args.partition { |arg| arg.is_a?(String) }
|
|
11
|
+
super(args.pop)
|
|
12
|
+
@code = args.pop
|
|
13
|
+
add_suppressed(*exceptions)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def add_suppressed(
|
|
17
|
-
(@suppressed ||= [])
|
|
16
|
+
def add_suppressed(*exceptions)
|
|
17
|
+
(@suppressed ||= []).concat(exceptions) if exceptions.any?
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
@@ -32,10 +32,8 @@ module Neo4j::Driver
|
|
|
32
32
|
tx_future = @session.begin_transaction_async(mode, ** config)
|
|
33
33
|
|
|
34
34
|
tx_future.when_complete do |tx, completion_error|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if !error.nil?
|
|
38
|
-
result_future.complete_exceptionally(error)
|
|
35
|
+
if completion_error
|
|
36
|
+
result_future.complete_exceptionally(completion_error)
|
|
39
37
|
else
|
|
40
38
|
execute_work(result_future, tx, &work)
|
|
41
39
|
end
|
|
@@ -48,10 +46,8 @@ module Neo4j::Driver
|
|
|
48
46
|
work_future = safe_execute_work(tx, &work)
|
|
49
47
|
|
|
50
48
|
work_future.when_complete do |result, completion_error|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if !error.nil?
|
|
54
|
-
close_tx_after_failed_transaction_work(tx, result_future, error)
|
|
49
|
+
if completion_error
|
|
50
|
+
close_tx_after_failed_transaction_work(tx, result_future, completion_error)
|
|
55
51
|
else
|
|
56
52
|
close_tx_after_succeeded_transaction_work(tx, result_future, result)
|
|
57
53
|
end
|
|
@@ -83,10 +79,8 @@ module Neo4j::Driver
|
|
|
83
79
|
|
|
84
80
|
def close_tx_after_succeeded_transaction_work(tx, result_future, result)
|
|
85
81
|
tx.close_async(true).when_complete do |_ignored, completion_error|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if !commit_error.nil?
|
|
89
|
-
result_future.complete_exceptionally(commit_error)
|
|
82
|
+
if completion_error
|
|
83
|
+
result_future.complete_exceptionally(completion_error)
|
|
90
84
|
else
|
|
91
85
|
result_future.complete(result)
|
|
92
86
|
end
|
|
@@ -19,13 +19,12 @@ module Neo4j::Driver
|
|
|
19
19
|
|
|
20
20
|
private
|
|
21
21
|
|
|
22
|
-
def handled_error(
|
|
23
|
-
# TODO: probably not necessary with concurrent-ruby as it might not wrap exceptions like java
|
|
24
|
-
error = Futures.completion_exception_cause(received_error)
|
|
25
|
-
|
|
22
|
+
def handled_error(error)
|
|
26
23
|
case error
|
|
27
24
|
when Exceptions::ServiceUnavailableException
|
|
28
25
|
handled_service_unavailable_exception(error)
|
|
26
|
+
when Exceptions::ProtocolException
|
|
27
|
+
handled_protocol_exception(error)
|
|
29
28
|
when Exceptions::ClientException
|
|
30
29
|
handled_client_exception(error)
|
|
31
30
|
when Exceptions::TransientException
|
|
@@ -36,12 +35,22 @@ module Neo4j::Driver
|
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def handled_service_unavailable_exception(e)
|
|
39
|
-
|
|
40
|
-
Exceptions::SessionExpiredException("Server at #{@address} is no longer available", e)
|
|
38
|
+
record_connection_failure
|
|
39
|
+
Exceptions::SessionExpiredException.new("Server at #{@address} is no longer available", e)
|
|
41
40
|
end
|
|
42
41
|
|
|
43
42
|
def handled_transient_exception(e)
|
|
44
|
-
e.code == "Neo.TransientError.General.DatabaseUnavailable"
|
|
43
|
+
record_connection_failure if e.code == "Neo.TransientError.General.DatabaseUnavailable"
|
|
44
|
+
e
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def handled_protocol_exception(e)
|
|
48
|
+
record_connection_failure
|
|
49
|
+
e
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def record_connection_failure
|
|
53
|
+
@error_handler.on_connection_failure(@address)
|
|
45
54
|
end
|
|
46
55
|
|
|
47
56
|
def handled_client_exception(e)
|
|
@@ -92,10 +92,9 @@ module Neo4j::Driver
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
work_stage.on_resolution do |fulfilled, result, completion_error|
|
|
95
|
-
|
|
96
|
-
if error
|
|
95
|
+
if completion_error
|
|
97
96
|
# work failed in async way, attempt to schedule a retry
|
|
98
|
-
retry_on_error(result_future, work, start_time, retry_delay,
|
|
97
|
+
retry_on_error(result_future, work, start_time, retry_delay, completion_error, errors)
|
|
99
98
|
else
|
|
100
99
|
result_future.fulfill(result)
|
|
101
100
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: neo4j-ruby-driver
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.7.0.alpha.
|
|
4
|
+
version: 5.7.0.alpha.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Heinrich Klobuczek
|
|
@@ -536,7 +536,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
536
536
|
- !ruby/object:Gem::Version
|
|
537
537
|
version: '0'
|
|
538
538
|
requirements: []
|
|
539
|
-
rubygems_version:
|
|
539
|
+
rubygems_version: 4.0.3
|
|
540
540
|
specification_version: 4
|
|
541
541
|
summary: "==== To Install:"
|
|
542
542
|
test_files: []
|