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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94eddb6ca44c911e72bc498048e91e3f3200147c67fe10b3a828d14ecce2bf7f
4
- data.tar.gz: fcc696515c9fb11bd4581cb057b875e727e81cc0e61f0b688adbf3b4da1930a7
3
+ metadata.gz: 8155401c9cf866b2f2595fdd1334c35c0d09b3160f9b7c9e1c94aef334ad66e5
4
+ data.tar.gz: 1e4ba8da99822dfb02dbc6f2088c478e1868592b387d9b6acef954f6973a6cd8
5
5
  SHA512:
6
- metadata.gz: d20a99580348b5313e5854cc6501dce13f0c09d92232faac3004b330cc64a97574d5b6ff0ff979ab24bc4c635e05b6c503ed901eb57d8f08469bec461e6a8528
7
- data.tar.gz: 4e0da2ae6afefb5590752642c7a707071ac6f09c1f15492d5e31afaa88f084ff1ebd88a619d1a64ae4dd91ef0c1ddbf49754f3a73fed0a59ef305d87a98186f0
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
- @code = args.shift if args.count > 1
11
- message = args.shift
12
- @suppressed = args.shift
13
- super(message)
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(exception)
17
- (@suppressed ||= []) << exception
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
- error = Util::Futures.completion_exception_cause(completion_error)
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
- error = Util::Futures.completion_exception_cause(completion_error)
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
- commit_error = Util::Futures.completion_exception_cause(completion_error)
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(received_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
- @error_handler.on_connection_failure(@address)
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" ? error_handler.on_connection_failure(@address) : e
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
- error = Futures.completion_exception_cause(completion_error)
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, error, errors)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Neo4j
4
4
  module Driver
5
- VERSION = '5.7.0.alpha.5'
5
+ VERSION = '5.7.0.alpha.6'
6
6
  end
7
7
  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.5
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: 3.6.9
539
+ rubygems_version: 4.0.3
540
540
  specification_version: 4
541
541
  summary: "==== To Install:"
542
542
  test_files: []