neo4j-ruby-driver 5.7.0.alpha.4 → 6.0.3.alpha.0-java

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.
Files changed (279) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +440 -40
  3. data/jruby/neo4j/driver/ext/async_converter.rb +55 -0
  4. data/jruby/neo4j/driver/ext/auth_tokens.rb +20 -0
  5. data/jruby/neo4j/driver/ext/config_converter.rb +83 -0
  6. data/jruby/neo4j/driver/ext/exception_checkable.rb +34 -0
  7. data/jruby/neo4j/driver/ext/exception_mapper.rb +92 -0
  8. data/jruby/neo4j/driver/ext/graph_database.rb +33 -0
  9. data/jruby/neo4j/driver/ext/internal/abstract_query_runner.rb +18 -0
  10. data/jruby/neo4j/driver/ext/internal/async/internal_async_session.rb +23 -0
  11. data/jruby/neo4j/driver/ext/internal/cluster/routing_table_registry_impl.rb +15 -0
  12. data/jruby/neo4j/driver/ext/internal/cursor/disposable_async_result_cursor.rb +15 -0
  13. data/jruby/neo4j/driver/ext/internal/driver_factory.rb +24 -0
  14. data/jruby/neo4j/driver/ext/internal/eager_result_value.rb +17 -0
  15. data/jruby/neo4j/driver/ext/internal/metrics/internal_connection_pool_metrics.rb +17 -0
  16. data/jruby/neo4j/driver/ext/internal/summary/internal_notification.rb +27 -0
  17. data/jruby/neo4j/driver/ext/internal/summary/internal_plan.rb +26 -0
  18. data/jruby/neo4j/driver/ext/internal/summary/internal_result_summary.rb +34 -0
  19. data/jruby/neo4j/driver/ext/internal_driver.rb +52 -0
  20. data/jruby/neo4j/driver/ext/internal_entity.rb +21 -0
  21. data/jruby/neo4j/driver/ext/internal_keys.rb +15 -0
  22. data/jruby/neo4j/driver/ext/internal_node.rb +13 -0
  23. data/jruby/neo4j/driver/ext/internal_record.rb +29 -0
  24. data/jruby/neo4j/driver/ext/internal_relationship.rb +13 -0
  25. data/jruby/neo4j/driver/ext/internal_result.rb +27 -0
  26. data/jruby/neo4j/driver/ext/internal_session.rb +44 -0
  27. data/jruby/neo4j/driver/ext/internal_transaction.rb +19 -0
  28. data/jruby/neo4j/driver/ext/logger.rb +60 -0
  29. data/jruby/neo4j/driver/ext/map_converter.rb +14 -0
  30. data/jruby/neo4j/driver/ext/neo_converter.rb +59 -0
  31. data/jruby/neo4j/driver/ext/query.rb +13 -0
  32. data/jruby/neo4j/driver/ext/ruby_converter.rb +57 -0
  33. data/jruby/neo4j/driver/ext/run_override.rb +22 -0
  34. data/jruby/neo4j/driver/ext/start_end_naming.rb +17 -0
  35. data/{ruby → jruby}/neo4j/driver/version.rb +1 -1
  36. data/jruby/neo4j/driver.rb +62 -0
  37. data/lib/neo4j/driver/{auto_closable.rb → auto_closeable.rb} +6 -6
  38. data/lib/neo4j/driver/exceptions/neo4j_exception.rb +6 -6
  39. data/lib/neo4j/driver/internal/deprecator.rb +15 -0
  40. metadata +91 -277
  41. data/ruby/neo4j/driver/access_mode.rb +0 -10
  42. data/ruby/neo4j/driver/auth_tokens.rb +0 -34
  43. data/ruby/neo4j/driver/bookmark.rb +0 -21
  44. data/ruby/neo4j/driver/config.rb +0 -89
  45. data/ruby/neo4j/driver/graph_database.rb +0 -78
  46. data/ruby/neo4j/driver/internal/async/connection/bolt_protocol_util.rb +0 -51
  47. data/ruby/neo4j/driver/internal/async/connection/bootstrap_factory.rb +0 -22
  48. data/ruby/neo4j/driver/internal/async/connection/channel_attributes.rb +0 -31
  49. data/ruby/neo4j/driver/internal/async/connection/channel_connected_listener.rb +0 -32
  50. data/ruby/neo4j/driver/internal/async/connection/channel_connector_impl.rb +0 -83
  51. data/ruby/neo4j/driver/internal/async/connection/channel_pipeline_builder_impl.rb +0 -22
  52. data/ruby/neo4j/driver/internal/async/connection/direct_connection.rb +0 -30
  53. data/ruby/neo4j/driver/internal/async/connection/event_loop_group_factory.rb +0 -83
  54. data/ruby/neo4j/driver/internal/async/connection/handshake_completed_listener.rb +0 -27
  55. data/ruby/neo4j/driver/internal/async/connection/handshake_handler.rb +0 -113
  56. data/ruby/neo4j/driver/internal/async/connection/netty_channel_initializer.rb +0 -57
  57. data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver.rb +0 -26
  58. data/ruby/neo4j/driver/internal/async/connection/netty_domain_name_resolver_group.rb +0 -19
  59. data/ruby/neo4j/driver/internal/async/connection/routing_connection.rb +0 -36
  60. data/ruby/neo4j/driver/internal/async/connection/stream.rb +0 -12
  61. data/ruby/neo4j/driver/internal/async/connection/stream_reader.rb +0 -16
  62. data/ruby/neo4j/driver/internal/async/connection_context.rb +0 -10
  63. data/ruby/neo4j/driver/internal/async/immutable_connection_context.rb +0 -24
  64. data/ruby/neo4j/driver/internal/async/inbound/byte_buf_input.rb +0 -30
  65. data/ruby/neo4j/driver/internal/async/inbound/channel_error_handler.rb +0 -77
  66. data/ruby/neo4j/driver/internal/async/inbound/chunk_decoder.rb +0 -41
  67. data/ruby/neo4j/driver/internal/async/inbound/connect_timeout_handler.rb +0 -32
  68. data/ruby/neo4j/driver/internal/async/inbound/connection_read_timeout_handler.rb +0 -17
  69. data/ruby/neo4j/driver/internal/async/inbound/inbound_message_dispatcher.rb +0 -171
  70. data/ruby/neo4j/driver/internal/async/inbound/inbound_message_handler.rb +0 -42
  71. data/ruby/neo4j/driver/internal/async/inbound/message_decoder.rb +0 -51
  72. data/ruby/neo4j/driver/internal/async/internal_async_session.rb +0 -98
  73. data/ruby/neo4j/driver/internal/async/internal_async_transaction.rb +0 -13
  74. data/ruby/neo4j/driver/internal/async/leak_logging_network_session.rb +0 -34
  75. data/ruby/neo4j/driver/internal/async/network_connection.rb +0 -194
  76. data/ruby/neo4j/driver/internal/async/network_session.rb +0 -150
  77. data/ruby/neo4j/driver/internal/async/outbound/chunk_aware_byte_buf_output.rb +0 -110
  78. data/ruby/neo4j/driver/internal/async/outbound/outbound_message_handler.rb +0 -39
  79. data/ruby/neo4j/driver/internal/async/pool/channel.rb +0 -66
  80. data/ruby/neo4j/driver/internal/async/pool/channel_pool.rb +0 -31
  81. data/ruby/neo4j/driver/internal/async/pool/channel_tracker.rb +0 -135
  82. data/ruby/neo4j/driver/internal/async/pool/connection_pool_impl.rb +0 -156
  83. data/ruby/neo4j/driver/internal/async/pool/netty_channel_health_checker.rb +0 -87
  84. data/ruby/neo4j/driver/internal/async/pool/netty_channel_pool.rb +0 -52
  85. data/ruby/neo4j/driver/internal/async/pool/network_connection_factory.rb +0 -21
  86. data/ruby/neo4j/driver/internal/async/pool/pool_settings.rb +0 -34
  87. data/ruby/neo4j/driver/internal/async/pool/timed_stack.rb +0 -15
  88. data/ruby/neo4j/driver/internal/async/result_cursors_holder.rb +0 -17
  89. data/ruby/neo4j/driver/internal/async/unmanaged_transaction.rb +0 -212
  90. data/ruby/neo4j/driver/internal/bookmark_holder.rb +0 -9
  91. data/ruby/neo4j/driver/internal/cluster/cluster_composition.rb +0 -48
  92. data/ruby/neo4j/driver/internal/cluster/cluster_composition_lookup_result.rb +0 -14
  93. data/ruby/neo4j/driver/internal/cluster/cluster_routing_table.rb +0 -122
  94. data/ruby/neo4j/driver/internal/cluster/identity_resolver.rb +0 -10
  95. data/ruby/neo4j/driver/internal/cluster/loadbalancing/least_connected_load_balancing_strategy.rb +0 -68
  96. data/ruby/neo4j/driver/internal/cluster/loadbalancing/load_balancer.rb +0 -125
  97. data/ruby/neo4j/driver/internal/cluster/loadbalancing/round_robin_array_index.rb +0 -13
  98. data/ruby/neo4j/driver/internal/cluster/multi_databases_routing_procedure_runner.rb +0 -31
  99. data/ruby/neo4j/driver/internal/cluster/rediscovery_impl.rb +0 -147
  100. data/ruby/neo4j/driver/internal/cluster/route_message_routing_procedure_runner.rb +0 -43
  101. data/ruby/neo4j/driver/internal/cluster/routing_context.rb +0 -77
  102. data/ruby/neo4j/driver/internal/cluster/routing_procedure_cluster_composition_provider.rb +0 -60
  103. data/ruby/neo4j/driver/internal/cluster/routing_procedure_response.rb +0 -35
  104. data/ruby/neo4j/driver/internal/cluster/routing_settings.rb +0 -24
  105. data/ruby/neo4j/driver/internal/cluster/routing_table_handler_impl.rb +0 -95
  106. data/ruby/neo4j/driver/internal/cluster/routing_table_registry_impl.rb +0 -121
  107. data/ruby/neo4j/driver/internal/cluster/single_database_routing_procedure_runner.rb +0 -73
  108. data/ruby/neo4j/driver/internal/connection_settings.rb +0 -16
  109. data/ruby/neo4j/driver/internal/cursor/async_result_cursor_impl.rb +0 -55
  110. data/ruby/neo4j/driver/internal/cursor/async_result_cursor_only_factory.rb +0 -24
  111. data/ruby/neo4j/driver/internal/cursor/disposable_async_result_cursor.rb +0 -61
  112. data/ruby/neo4j/driver/internal/cursor/result_cursor_factory_impl.rb +0 -24
  113. data/ruby/neo4j/driver/internal/cursor/rx_result_cursor_impl.rb +0 -110
  114. data/ruby/neo4j/driver/internal/database_name_util.rb +0 -37
  115. data/ruby/neo4j/driver/internal/default_bookmark_holder.rb +0 -9
  116. data/ruby/neo4j/driver/internal/default_domain_name_resolver.rb +0 -11
  117. data/ruby/neo4j/driver/internal/direct_connection_provider.rb +0 -40
  118. data/ruby/neo4j/driver/internal/driver_factory.rb +0 -126
  119. data/ruby/neo4j/driver/internal/handlers/begin_tx_response_handler.rb +0 -20
  120. data/ruby/neo4j/driver/internal/handlers/channel_releasing_reset_response_handler.rb +0 -30
  121. data/ruby/neo4j/driver/internal/handlers/commit_tx_response_handler.rb +0 -25
  122. data/ruby/neo4j/driver/internal/handlers/hello_response_handler.rb +0 -65
  123. data/ruby/neo4j/driver/internal/handlers/init_response_handler.rb +0 -34
  124. data/ruby/neo4j/driver/internal/handlers/legacy_pull_all_response_handler.rb +0 -199
  125. data/ruby/neo4j/driver/internal/handlers/no_op_response_handler.rb +0 -16
  126. data/ruby/neo4j/driver/internal/handlers/ping_response_handler.rb +0 -29
  127. data/ruby/neo4j/driver/internal/handlers/pull_handlers.rb +0 -32
  128. data/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb +0 -168
  129. data/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb +0 -298
  130. data/ruby/neo4j/driver/internal/handlers/pulln/fetch_size_util.rb +0 -20
  131. data/ruby/neo4j/driver/internal/handlers/reset_response_handler.rb +0 -34
  132. data/ruby/neo4j/driver/internal/handlers/rollback_tx_response_handler.rb +0 -25
  133. data/ruby/neo4j/driver/internal/handlers/route_message_response_handler.rb +0 -21
  134. data/ruby/neo4j/driver/internal/handlers/routing_response_handler.rb +0 -70
  135. data/ruby/neo4j/driver/internal/handlers/run_response_handler.rb +0 -38
  136. data/ruby/neo4j/driver/internal/handlers/session_pull_response_completion_listener.rb +0 -34
  137. data/ruby/neo4j/driver/internal/handlers/transaction_pull_response_completion_listener.rb +0 -20
  138. data/ruby/neo4j/driver/internal/impersonation_util.rb +0 -22
  139. data/ruby/neo4j/driver/internal/internal_bookmark.rb +0 -36
  140. data/ruby/neo4j/driver/internal/internal_database_name.rb +0 -9
  141. data/ruby/neo4j/driver/internal/internal_driver.rb +0 -74
  142. data/ruby/neo4j/driver/internal/internal_entity.rb +0 -21
  143. data/ruby/neo4j/driver/internal/internal_node.rb +0 -21
  144. data/ruby/neo4j/driver/internal/internal_pair.rb +0 -9
  145. data/ruby/neo4j/driver/internal/internal_path.rb +0 -35
  146. data/ruby/neo4j/driver/internal/internal_point2_d.rb +0 -9
  147. data/ruby/neo4j/driver/internal/internal_point3_d.rb +0 -6
  148. data/ruby/neo4j/driver/internal/internal_record.rb +0 -27
  149. data/ruby/neo4j/driver/internal/internal_relationship.rb +0 -27
  150. data/ruby/neo4j/driver/internal/internal_result.rb +0 -49
  151. data/ruby/neo4j/driver/internal/internal_session.rb +0 -81
  152. data/ruby/neo4j/driver/internal/internal_transaction.rb +0 -48
  153. data/ruby/neo4j/driver/internal/logging/channel_activity_logger.rb +0 -29
  154. data/ruby/neo4j/driver/internal/logging/channel_error_logger.rb +0 -17
  155. data/ruby/neo4j/driver/internal/logging/prefixed_logger.rb +0 -19
  156. data/ruby/neo4j/driver/internal/logging/reformatted_logger.rb +0 -17
  157. data/ruby/neo4j/driver/internal/messaging/abstract_message_writer.rb +0 -23
  158. data/ruby/neo4j/driver/internal/messaging/bolt_protocol.rb +0 -32
  159. data/ruby/neo4j/driver/internal/messaging/bolt_protocol_version.rb +0 -48
  160. data/ruby/neo4j/driver/internal/messaging/common/common_message_reader.rb +0 -51
  161. data/ruby/neo4j/driver/internal/messaging/common/common_value.rb +0 -33
  162. data/ruby/neo4j/driver/internal/messaging/common/common_value_packer.rb +0 -104
  163. data/ruby/neo4j/driver/internal/messaging/common/common_value_unpacker.rb +0 -256
  164. data/ruby/neo4j/driver/internal/messaging/encode/begin_message_encoder.rb +0 -15
  165. data/ruby/neo4j/driver/internal/messaging/encode/commit_message_encoder.rb +0 -14
  166. data/ruby/neo4j/driver/internal/messaging/encode/discard_all_message_encoder.rb +0 -14
  167. data/ruby/neo4j/driver/internal/messaging/encode/discard_message_encoder.rb +0 -15
  168. data/ruby/neo4j/driver/internal/messaging/encode/goodbye_message_encoder.rb +0 -14
  169. data/ruby/neo4j/driver/internal/messaging/encode/hello_message_encoder.rb +0 -15
  170. data/ruby/neo4j/driver/internal/messaging/encode/init_message_encoder.rb +0 -16
  171. data/ruby/neo4j/driver/internal/messaging/encode/logoff_message_encoder.rb +0 -14
  172. data/ruby/neo4j/driver/internal/messaging/encode/logon_message_encoder.rb +0 -15
  173. data/ruby/neo4j/driver/internal/messaging/encode/pull_all_message_encoder.rb +0 -14
  174. data/ruby/neo4j/driver/internal/messaging/encode/pull_message_encoder.rb +0 -15
  175. data/ruby/neo4j/driver/internal/messaging/encode/reset_message_encoder.rb +0 -14
  176. data/ruby/neo4j/driver/internal/messaging/encode/rollback_message_encoder.rb +0 -14
  177. data/ruby/neo4j/driver/internal/messaging/encode/route_message_encoder.rb +0 -24
  178. data/ruby/neo4j/driver/internal/messaging/encode/route_v44_message_encoder.rb +0 -22
  179. data/ruby/neo4j/driver/internal/messaging/encode/run_message_encoder.rb +0 -16
  180. data/ruby/neo4j/driver/internal/messaging/encode/run_with_metadata_message_encoder.rb +0 -17
  181. data/ruby/neo4j/driver/internal/messaging/request/abstract_streaming_message.rb +0 -25
  182. data/ruby/neo4j/driver/internal/messaging/request/begin_message.rb +0 -25
  183. data/ruby/neo4j/driver/internal/messaging/request/commit_message.rb +0 -20
  184. data/ruby/neo4j/driver/internal/messaging/request/discard_all_message.rb +0 -20
  185. data/ruby/neo4j/driver/internal/messaging/request/discard_message.rb +0 -23
  186. data/ruby/neo4j/driver/internal/messaging/request/goodbye_message.rb +0 -20
  187. data/ruby/neo4j/driver/internal/messaging/request/hello_message.rb +0 -30
  188. data/ruby/neo4j/driver/internal/messaging/request/init_message.rb +0 -19
  189. data/ruby/neo4j/driver/internal/messaging/request/logoff_message.rb +0 -13
  190. data/ruby/neo4j/driver/internal/messaging/request/logon_message.rb +0 -13
  191. data/ruby/neo4j/driver/internal/messaging/request/message_with_metadata.rb +0 -17
  192. data/ruby/neo4j/driver/internal/messaging/request/multi_database_util.rb +0 -26
  193. data/ruby/neo4j/driver/internal/messaging/request/pull_all_message.rb +0 -23
  194. data/ruby/neo4j/driver/internal/messaging/request/pull_message.rb +0 -22
  195. data/ruby/neo4j/driver/internal/messaging/request/reset_message.rb +0 -32
  196. data/ruby/neo4j/driver/internal/messaging/request/rollback_message.rb +0 -20
  197. data/ruby/neo4j/driver/internal/messaging/request/route_message.rb +0 -28
  198. data/ruby/neo4j/driver/internal/messaging/request/run_message.rb +0 -23
  199. data/ruby/neo4j/driver/internal/messaging/request/run_with_metadata_message.rb +0 -49
  200. data/ruby/neo4j/driver/internal/messaging/request/transaction_metadata_builder.rb +0 -24
  201. data/ruby/neo4j/driver/internal/messaging/response/failure_message.rb +0 -40
  202. data/ruby/neo4j/driver/internal/messaging/response/ignored_message.rb +0 -29
  203. data/ruby/neo4j/driver/internal/messaging/response/record_message.rb +0 -33
  204. data/ruby/neo4j/driver/internal/messaging/response/success_message.rb +0 -34
  205. data/ruby/neo4j/driver/internal/messaging/v3/bolt_protocol_v3.rb +0 -82
  206. data/ruby/neo4j/driver/internal/messaging/v3/message_format_v3.rb +0 -17
  207. data/ruby/neo4j/driver/internal/messaging/v3/message_writer_v3.rb +0 -27
  208. data/ruby/neo4j/driver/internal/messaging/v4/bolt_protocol_v4.rb +0 -29
  209. data/ruby/neo4j/driver/internal/messaging/v4/message_format_v4.rb +0 -13
  210. data/ruby/neo4j/driver/internal/messaging/v4/message_writer_v4.rb +0 -17
  211. data/ruby/neo4j/driver/internal/messaging/v41/bolt_protocol_v41.rb +0 -25
  212. data/ruby/neo4j/driver/internal/messaging/v42/bolt_protocol_v42.rb +0 -13
  213. data/ruby/neo4j/driver/internal/messaging/v43/bolt_protocol_v43.rb +0 -19
  214. data/ruby/neo4j/driver/internal/messaging/v43/message_format_v43.rb +0 -14
  215. data/ruby/neo4j/driver/internal/messaging/v43/message_writer_v43.rb +0 -20
  216. data/ruby/neo4j/driver/internal/messaging/v44/bolt_protocol_v44.rb +0 -17
  217. data/ruby/neo4j/driver/internal/messaging/v44/message_format_v44.rb +0 -14
  218. data/ruby/neo4j/driver/internal/messaging/v44/message_writer_v44.rb +0 -15
  219. data/ruby/neo4j/driver/internal/messaging/v5/bolt_protocol_v5.rb +0 -21
  220. data/ruby/neo4j/driver/internal/messaging/v5/message_format_v5.rb +0 -18
  221. data/ruby/neo4j/driver/internal/messaging/v5/value_unpacker_v5.rb +0 -17
  222. data/ruby/neo4j/driver/internal/messaging/v51/bolt_protocol_v51.rb +0 -40
  223. data/ruby/neo4j/driver/internal/messaging/v51/message_format_v51.rb +0 -14
  224. data/ruby/neo4j/driver/internal/messaging/v51/message_writer_v51.rb +0 -17
  225. data/ruby/neo4j/driver/internal/metrics/connection_pool_metrics_listener.rb +0 -34
  226. data/ruby/neo4j/driver/internal/metrics/internal_abstract_metrics.rb +0 -46
  227. data/ruby/neo4j/driver/internal/metrics/internal_connection_pool_metrics.rb +0 -105
  228. data/ruby/neo4j/driver/internal/metrics/internal_metrics.rb +0 -82
  229. data/ruby/neo4j/driver/internal/metrics/internal_metrics_provider.rb +0 -18
  230. data/ruby/neo4j/driver/internal/metrics/listener_event.rb +0 -17
  231. data/ruby/neo4j/driver/internal/metrics/metrics_provider.rb +0 -24
  232. data/ruby/neo4j/driver/internal/metrics/time_recorder_listener_event.rb +0 -15
  233. data/ruby/neo4j/driver/internal/packstream/byte_array_incompatible_packer.rb +0 -12
  234. data/ruby/neo4j/driver/internal/packstream/pack_input.rb +0 -47
  235. data/ruby/neo4j/driver/internal/packstream/pack_output.rb +0 -39
  236. data/ruby/neo4j/driver/internal/packstream/pack_stream.rb +0 -326
  237. data/ruby/neo4j/driver/internal/packstream/pack_type.rb +0 -17
  238. data/ruby/neo4j/driver/internal/read_only_bookmark_holder.rb +0 -13
  239. data/ruby/neo4j/driver/internal/resolved_bolt_server_address.rb +0 -35
  240. data/ruby/neo4j/driver/internal/retry/exponential_backoff_retry_logic.rb +0 -151
  241. data/ruby/neo4j/driver/internal/revocation_strategy.rb +0 -19
  242. data/ruby/neo4j/driver/internal/scheme.rb +0 -32
  243. data/ruby/neo4j/driver/internal/security/internal_auth_token.rb +0 -15
  244. data/ruby/neo4j/driver/internal/security/security_plan_impl.rb +0 -48
  245. data/ruby/neo4j/driver/internal/security_setting.rb +0 -66
  246. data/ruby/neo4j/driver/internal/session_factory_impl.rb +0 -32
  247. data/ruby/neo4j/driver/internal/spi/connection.rb +0 -19
  248. data/ruby/neo4j/driver/internal/spi/connection_pool.rb +0 -9
  249. data/ruby/neo4j/driver/internal/spi/response_handler.rb +0 -23
  250. data/ruby/neo4j/driver/internal/summary/internal_database_info.rb +0 -7
  251. data/ruby/neo4j/driver/internal/summary/internal_input_position.rb +0 -11
  252. data/ruby/neo4j/driver/internal/summary/internal_notification.rb +0 -16
  253. data/ruby/neo4j/driver/internal/summary/internal_plan.rb +0 -41
  254. data/ruby/neo4j/driver/internal/summary/internal_profiled_plan.rb +0 -32
  255. data/ruby/neo4j/driver/internal/summary/internal_result_summary.rb +0 -33
  256. data/ruby/neo4j/driver/internal/summary/internal_server_info.rb +0 -6
  257. data/ruby/neo4j/driver/internal/summary/internal_summary_counters.rb +0 -18
  258. data/ruby/neo4j/driver/internal/svm/netty_substitutions.rb +0 -196
  259. data/ruby/neo4j/driver/internal/svm/z_lib_substitutions.rb +0 -21
  260. data/ruby/neo4j/driver/internal/util/certificate_tool.rb +0 -65
  261. data/ruby/neo4j/driver/internal/util/clock.rb +0 -29
  262. data/ruby/neo4j/driver/internal/util/error_util.rb +0 -104
  263. data/ruby/neo4j/driver/internal/util/extract.rb +0 -123
  264. data/ruby/neo4j/driver/internal/util/format.rb +0 -39
  265. data/ruby/neo4j/driver/internal/util/futures.rb +0 -99
  266. data/ruby/neo4j/driver/internal/util/iterables.rb +0 -35
  267. data/ruby/neo4j/driver/internal/util/lock_util.rb +0 -23
  268. data/ruby/neo4j/driver/internal/util/metadata_extractor.rb +0 -107
  269. data/ruby/neo4j/driver/internal/util/mutex.rb +0 -9
  270. data/ruby/neo4j/driver/internal/util/preconditions.rb +0 -16
  271. data/ruby/neo4j/driver/internal/util/result_holder.rb +0 -72
  272. data/ruby/neo4j/driver/internal/util/server_version.rb +0 -60
  273. data/ruby/neo4j/driver/logging1.rb +0 -51
  274. data/ruby/neo4j/driver/net/server_address.rb +0 -9
  275. data/ruby/neo4j/driver/query.rb +0 -48
  276. data/ruby/neo4j/driver/records.rb +0 -13
  277. data/ruby/neo4j/driver/transaction_config.rb +0 -50
  278. data/ruby/neo4j/driver/values.rb +0 -26
  279. data/ruby/neo4j/driver.rb +0 -28
@@ -1,212 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Async
4
- class UnmanagedTransaction
5
- class State
6
- # The transaction is running with no explicit success or failure marked
7
- ACTIVE = 'active'
8
-
9
- # This transaction has been terminated either because of explicit {@link Session#reset()} or because of a fatal connection error.
10
- TERMINATED = 'terminated'
11
-
12
- # This transaction has successfully committed
13
- COMMITTED = 'committed'
14
-
15
- # This transaction has been rolled back
16
- ROLLED_BACK = 'rolled_back'
17
- end
18
-
19
- CANT_COMMIT_COMMITTED_MSG = "Can't commit, transaction has been committed"
20
- CANT_ROLLBACK_COMMITTED_MSG = "Can't rollback, transaction has been committed"
21
- CANT_COMMIT_ROLLED_BACK_MSG = "Can't commit, transaction has been rolled back"
22
- CANT_ROLLBACK_ROLLED_BACK_MSG = "Can't rollback, transaction has been rolled back"
23
- CANT_COMMIT_ROLLING_BACK_MSG = "Can't commit, transaction has been requested to be rolled back"
24
- CANT_ROLLBACK_COMMITTING_MSG = "Can't rollback, transaction has been requested to be committed"
25
- OPEN_STATES = [State::ACTIVE, State::TERMINATED]
26
- attr :connection
27
-
28
- def initialize(connection, bookmark_holder, fetch_size, result_cursors = ResultCursorsHolder.new)
29
- @connection = connection
30
- @protocol = connection.protocol
31
- @bookmark_holder = bookmark_holder
32
- @result_cursors = result_cursors
33
- @fetch_size = fetch_size
34
- @lock = Util::Mutex.new
35
- @state = State::ACTIVE
36
- end
37
-
38
- def begin_async(initial_bookmark, config)
39
- @protocol.begin_transaction(@connection, initial_bookmark, config)
40
- self
41
- rescue Neo4j::Driver::Exceptions::AuthorizationExpiredException
42
- @connection.terminate_and_release(Neo4j::Driver::Exceptions::AuthorizationExpiredException::DESCRIPTION)
43
- raise
44
- rescue Neo4j::Driver::Exceptions::ConnectionReadTimeoutException => begin_error
45
- @connection.terminate_and_release(begin_error.message)
46
- raise
47
- rescue
48
- @connection.release
49
- raise
50
- end
51
-
52
- def close_async(commit = false, complete_with_null_if_not_open = true)
53
- @lock.synchronize do
54
- if complete_with_null_if_not_open && !open?
55
- Util::ResultHolder.successful(nil)
56
- elsif @state == State::COMMITTED
57
- Util::ResultHolder.failed(Neo4j::Driver::Exceptions::ClientException.new(
58
- commit ? CANT_COMMIT_COMMITTED_MSG : CANT_ROLLBACK_COMMITTED_MSG))
59
- elsif @state == State::ROLLED_BACK
60
- Util::ResultHolder.failed(Neo4j::Driver::Exceptions::ClientException.new(
61
- commit ? CANT_COMMIT_ROLLED_BACK_MSG : CANT_ROLLBACK_ROLLED_BACK_MSG))
62
- else
63
- if commit
64
- if @rollback_pending
65
- Util::ResultHolder.failed(Neo4j::Driver::Exceptions::ClientException.new(CANT_COMMIT_ROLLING_BACK_MSG))
66
- elsif @commit_pending
67
- @commit_pending
68
- else
69
- @commit_pending = Util::ResultHolder.new
70
- nil
71
- end
72
- else
73
- if @commit_pending
74
- Util::ResultHolder.failed(Neo4j::Driver::Exceptions::ClientException.new(CANT_ROLLBACK_COMMITTING_MSG))
75
- elsif @rollback_pending
76
- @rollback_pending
77
- else
78
- @rollback_pending = Util::ResultHolder.new
79
- nil
80
- end
81
- end
82
- end
83
- end ||
84
- begin
85
- if commit
86
- target_future = @commit_pending
87
- target_action = lambda { |throwable|
88
- do_commit_async(throwable).chain(&handle_commit_or_rollback(throwable))
89
- }
90
- else
91
- target_future = @rollback_pending
92
- target_action = lambda { |throwable|
93
- do_rollback_async.chain(&handle_commit_or_rollback(throwable))
94
- }
95
- end
96
-
97
- @result_cursors.retrieve_not_consumed_error.then(&target_action)
98
- .side { |_, error| handle_transaction_completion(commit, error) }.copy_to(target_future)
99
- target_future
100
- end
101
- end
102
-
103
- def commit_async
104
- close_async(true, false)
105
- end
106
-
107
- def rollback_async
108
- close_async(false, false)
109
- end
110
-
111
- def run_async(query)
112
- ensure_can_run_queries
113
- cursor = @protocol.run_in_unmanaged_transaction(@connection, query, self, @fetch_size).async_result
114
- @result_cursors << cursor
115
- cursor.map_successful_run_completion_async
116
- end
117
-
118
- def run_rx(query)
119
- ensure_can_run_queries
120
- cursor_stage = @protocol.run_in_unmanaged_transaction(@connection, query, self, @fetch_size).rx_result
121
- @result_cursors << cursor_stage
122
- cursor_stage
123
- end
124
-
125
- def open?
126
- OPEN_STATES.include?(@lock.synchronize { @state })
127
- end
128
-
129
- def mark_terminated(cause)
130
- @lock.synchronize do
131
- if @state == State::TERMINATED
132
- add_suppressed_when_not_captured(@cause_of_termination, cause) if @cause_of_termination
133
- else
134
- @state = State::TERMINATED
135
- @cause_of_termination = cause
136
- end
137
- end
138
- end
139
-
140
- def ensure_can_run_queries
141
- @lock.synchronize do
142
- case @state
143
- when State::COMMITTED
144
- raise Neo4j::Driver::Exceptions::ClientException, 'Cannot run more queries in this transaction, it has been committed'
145
- when State::ROLLED_BACK
146
- raise Neo4j::Driver::Exceptions::ClientException, 'Cannot run more queries in this transaction, it has been rolled back'
147
- when State::TERMINATED
148
- # TODO clunky positional arguments of Neo4jException#initialize, move to named parameters
149
- raise Neo4j::Driver::Exceptions::ClientException, 'Cannot run more queries in this transaction, it has either experienced an fatal error or was explicitly terminated' #, # TODO should be able to pass @cause_of_termination
150
- end
151
- end
152
- end
153
-
154
- private
155
-
156
- def add_suppressed_when_not_captured(current_cause, new_cause)
157
- if current_cause != new_cause
158
- none_match = current_cause.get_suppressed.none? { |suppressed| suppressed == new_cause }
159
-
160
- if none_match
161
- current_cause.add_suppressed(new_cause)
162
- end
163
- end
164
- end
165
-
166
- def do_commit_async(cursor_failure)
167
- exception = @lock.synchronize do
168
- if @state == State::TERMINATED
169
- Neo4j::Driver::Exceptions::ClientException.new(
170
- "Transaction can't be committed. It has been rolled back either because of an error or explicit termination",
171
- cursor_failure != @cause_of_termination ? @cause_of_termination : nil)
172
- end
173
- end
174
-
175
- if exception
176
- Util::ResultHolder.failed(exception)
177
- else
178
- @protocol.commit_transaction(@connection).then(&@bookmark_holder.method(:bookmark=))
179
- end
180
- end
181
-
182
- def do_rollback_async
183
- if @lock.synchronize { @state } == State::TERMINATED
184
- Util::ResultHolder.successful(nil)
185
- else
186
- @protocol.rollback_transaction(@connection)
187
- end
188
- end
189
-
190
- def handle_commit_or_rollback(cursor_failure)
191
- lambda { |_value, commit_or_rollback_error|
192
- combined_error = Util::Futures.combine_errors(cursor_failure, commit_or_rollback_error)
193
- raise combined_error if combined_error
194
- }
195
- end
196
-
197
- def handle_transaction_completion(commit_attempt, throwable)
198
- @lock.synchronize { @state = commit_attempt && throwable.nil? ? State::COMMITTED : State::ROLLED_BACK }
199
-
200
- case throwable
201
- when Neo4j::Driver::Exceptions::AuthorizationExpiredException
202
- @connection.terminate_and_release(Neo4j::Driver::Exceptions::AuthorizationExpiredException::DESCRIPTION)
203
- when Neo4j::Driver::Exceptions::ConnectionReadTimeoutException
204
- @connection.terminate_and_release(throwable.message)
205
- else
206
- @connection.release # release in background
207
- end
208
- end
209
- end
210
- end
211
- end
212
- end
@@ -1,9 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- class BookmarkHolder
4
- NO_OP = Class.new(DefaultBookmarkHolder) do
5
- def bookmark=(_value) end
6
- end.new
7
- end
8
- end
9
- end
@@ -1,48 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- class ClusterComposition < Struct.new(:expiration_timestamp, :readers, :writers, :routers, :database_name)
5
- def initialize(expiration_timestamp:, database_name:, readers: [], writers: [], routers: [])
6
- super(expiration_timestamp, readers, writers, routers, database_name)
7
- end
8
-
9
- def has_writers?
10
- writers.present?
11
- end
12
-
13
- def has_routers_and_readers?
14
- routers.present? && readers.present?
15
- end
16
-
17
- def self.parse(record, now)
18
- return unless record
19
- new(expiration_timestamp: expiration_timestamp(now, record), database_name: record[:db],
20
- **record[:servers].to_h do |value|
21
- [servers(value[:role]),
22
- value[:addresses].map { |address| BoltServerAddress.new(uri: BoltServerAddress.uri_from(address)) }]
23
- end)
24
- end
25
-
26
- private
27
-
28
- def self.expiration_timestamp(now, record)
29
- ttl = record['ttl']
30
- now + (ttl.negative? ? 1000.years : ttl.seconds)
31
- end
32
-
33
- def self.servers(role)
34
- case role
35
- when 'READ'
36
- :readers
37
- when 'WRITE'
38
- :writers
39
- when 'ROUTE'
40
- :routers
41
- else
42
- raise ArgumentError, "invalid server role: #{role}"
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,14 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- class ClusterCompositionLookupResult
5
- attr_reader :cluster_composition, :resolved_initial_routers
6
-
7
- def initialize(composition, resolved_initial_routers = nil)
8
- @cluster_composition = composition
9
- @resolved_initial_routers = resolved_initial_routers
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,122 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- class ClusterRoutingTable
5
- MIN_ROUTERS = 1
6
-
7
- def initialize(of_database, _clock, *routing_addresses)
8
- @database_name = of_database
9
- @expiration_timestamp = Time.now
10
- @routers = routing_addresses.to_set.freeze
11
- @table_lock = Concurrent::ReentrantReadWriteLock.new
12
- @prefer_initial_router = true
13
- @disused = Set.new
14
- @readers = Set.new
15
- @writers = Set.new
16
- end
17
-
18
- def stale_for?(mode)
19
- @table_lock.with_read_lock do
20
- @expiration_timestamp <= Time.now ||
21
- routers.size < MIN_ROUTERS ||
22
- (mode == AccessMode::READ && @readers.size == 0) ||
23
- (mode == AccessMode::WRITE && @writers.size == 0)
24
- end
25
- end
26
-
27
- def has_been_stale_for?(extra_time)
28
- Time.now - @table_lock.with_read_lock { @expiration_timestamp } >= extra_time
29
- end
30
-
31
- def update(cluster)
32
- @table_lock.with_write_lock do
33
- @expiration_timestamp = cluster.expiration_timestamp
34
- @readers = new_with_reused_addresses(@readers, @disused, cluster.readers)
35
- @writers = new_with_reused_addresses(@writers, @disused, cluster.writers)
36
- @routers = new_with_reused_addresses(@routers, @disused, cluster.routers)
37
- @disused.clear
38
- @prefer_initial_router = !cluster.has_writers?
39
- end
40
- end
41
-
42
- def forget(address)
43
- @table_lock.with_write_lock do
44
- @routers = new_without_address_if_present(@routers, address)
45
- @readers = new_without_address_if_present(@readers, address)
46
- @writers = new_without_address_if_present(@writers, address)
47
- @disused << address
48
- end
49
- end
50
-
51
- def readers
52
- @table_lock.with_read_lock { @readers }
53
- end
54
-
55
- def writers
56
- @table_lock.with_read_lock { @writers }
57
- end
58
-
59
- def routers
60
- @table_lock.with_read_lock { @routers }
61
- end
62
-
63
- def servers
64
- @table_lock.with_write_lock do
65
- [@readers, @writers, @routers, @disused].reduce(&:+)
66
- end
67
- end
68
-
69
- def database
70
- @database_name
71
- end
72
-
73
- def forget_writer(to_remove)
74
- Util::LockUtil.execute_with_lock(@table_lock.write_lock) do
75
- @writers = new_without_address_if_present(@writers, to_remove)
76
- @disused << to_remove
77
- end
78
- end
79
-
80
- def replace_router_if_present(old_router, new_router)
81
- @table_lock.with_write_lock { @routers = new_with_address_replaced_if_present(@routers, old_router, new_router) }
82
- end
83
-
84
- def prefer_initial_router
85
- @table_lock.with_read_lock { @prefer_initial_router }
86
- end
87
-
88
- def expiration_timestamp
89
- @table_lock.with_read_lock { @expiration_timestamp }
90
- end
91
-
92
- def to_s
93
- @table_lock.with_read_lock do
94
- "Ttl #{@expiration_timestamp}, currentTime #{Time.now}, routers #{@routers}, writers #{@writers}, readers #{@readers}, database '#{@database_name.description}'"
95
- end
96
- end
97
-
98
- private
99
-
100
- def new_without_address_if_present(addresses, address_to_skip)
101
- (addresses - [address_to_skip]).freeze
102
- end
103
-
104
- def new_with_address_replaced_if_present(addresses, old_address, new_address)
105
- addresses.map { |address| address == old_address ? new_address : address }.freeze
106
- end
107
-
108
- def new_with_reused_addresses(*addresses)
109
- addresses.map(&:to_set).reduce(&:+).freeze
110
- end
111
-
112
- def to_bolt_server_address(address)
113
- if BoltServerAddress.class == address.class
114
- address
115
- else
116
- BoltServerAddress.new(host: address.host, port: address.port)
117
- end
118
- end
119
- end
120
- end
121
- end
122
- end
@@ -1,10 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- class IdentityResolver
5
- IDENTITY_RESOLVER = new
6
- alias resolve Array
7
- end
8
- end
9
- end
10
- end
@@ -1,68 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- module Loadbalancing
5
-
6
- # Load balancing strategy that finds server with the least amount of active (checked out of the pool) connections from given readers or writers. It finds a
7
- # start index for iteration in a round-robin fashion. This is done to prevent choosing same first address over and over when all addresses have the same amount
8
- # of active connections.
9
- class LeastConnectedLoadBalancingStrategy
10
-
11
- def initialize(connection_pool, logger)
12
- @readers_index = RoundRobinArrayIndex.new
13
- @writers_index = RoundRobinArrayIndex.new
14
-
15
- @connection_pool = connection_pool
16
- @log = logger
17
- end
18
-
19
- def select_reader(known_readers)
20
- select(known_readers, @readers_index, 'reader')
21
- end
22
-
23
- def select_writer(known_writers)
24
- select(known_writers, @writers_index, 'writer')
25
- end
26
-
27
- private
28
-
29
- def select(addresses, addresses_index, address_type)
30
- size = addresses.size
31
- if size == 0
32
- @log.debug("Unable to select #{address_type}, no known addresses given")
33
- return
34
- end
35
-
36
- # choose start index for iteration in round-robin fashion
37
- start_index = addresses_index.next(size)
38
- index = start_index
39
-
40
- least_connected_address = nil
41
- least_active_connections = nil
42
-
43
- # iterate over the array to find the least connected address
44
- addresses = addresses.to_a
45
- loop do
46
- address = addresses[index]
47
- active_connections = @connection_pool.in_use_connections(address)
48
-
49
- if least_active_connections.nil? || active_connections < least_active_connections
50
- least_connected_address = address
51
- least_active_connections = active_connections
52
- end
53
-
54
- # loop over to the start of the array when end is reached
55
- index = (index + 1) % size
56
-
57
- break if index == start_index
58
- end
59
-
60
- @log.debug("Selected #{address_type} with address: '#{least_connected_address}' and active connections: #{least_active_connections}")
61
-
62
- least_connected_address
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end
@@ -1,125 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- module Loadbalancing
5
- class LoadBalancer
6
- CONNECTION_ACQUISITION_COMPLETION_FAILURE_MESSAGE = 'Connection acquisition failed for all available addresses.'
7
- CONNECTION_ACQUISITION_COMPLETION_EXCEPTION_MESSAGE = "Failed to obtain connection towards %s server. Known routing table is: %s"
8
- CONNECTION_ACQUISITION_ATTEMPT_FAILURE_MESSAGE = "Failed to obtain a connection towards address %s, will try other addresses if available. Complete failure is reported separately from this entry."
9
- BOLT_SERVER_ADDRESSES_EMPTY_ARRAY = []
10
-
11
- delegate :close, to: :@connection_pool
12
-
13
- def initialize(initial_router, settings, connection_pool, event_executor_group, logger, load_balancing_strategy, resolver, &domain_name_resolver)
14
- clock = Util::Clock::System
15
- @connection_pool = connection_pool
16
- @rediscovery = create_rediscovery(event_executor_group, initial_router, resolver, settings, clock, logger, domain_name_resolver)
17
- @routing_tables = create_routing_tables(connection_pool, @rediscovery, settings, clock, logger)
18
- @load_balancing_strategy = load_balancing_strategy
19
- @event_executor_group = event_executor_group
20
- @log = logger
21
- end
22
-
23
- def acquire_connection(context)
24
- handler = @routing_tables.ensure_routing_table(context)
25
- connection = acquire(context.mode, handler.routing_table)
26
- Async::Connection::RoutingConnection.new(connection, context.database_name, context.mode,
27
- context.impersonated_user, handler)
28
- end
29
-
30
- def verify_connectivity
31
- @routing_tables.ensure_routing_table(Async::ImmutableConnectionContext.simple(supports_multi_db?))
32
- rescue Exceptions::ServiceUnavailableException
33
- raise Exceptions::ServiceUnavailableException,
34
- 'Unable to connect to database management service, ensure the database is running and that there is a working network connection to it.'
35
- end
36
-
37
- def routing_table_registry
38
- @routing_tables
39
- end
40
-
41
- def supports_multi_db?
42
- addresses = @rediscovery.resolve
43
- base_error = Exceptions::ServiceUnavailableException.new("Failed to perform multi-databases feature detection with the following servers: #{addresses}")
44
- addresses.each do |address|
45
- return private_suports_multi_db?(address)
46
- rescue Exceptions::SecurityException
47
- raise
48
- rescue => error
49
- Util::Futures.combine_errors(base_error, error)
50
- end
51
-
52
- raise base_error
53
- end
54
-
55
- private
56
-
57
- def private_suports_multi_db?(address)
58
- conn = @connection_pool.acquire(address)
59
- Messaging::Request::MultiDatabaseUtil.supports_multi_database?(conn)
60
- ensure
61
- conn&.release
62
- end
63
-
64
- def acquire(mode, routing_table, attempt_errors = [])
65
- addresses = addresses_by_mode(mode, routing_table)
66
- address = select_address(mode, addresses)
67
-
68
- unless address
69
- error = Exceptions::SessionExpiredException.new(CONNECTION_ACQUISITION_COMPLETION_EXCEPTION_MESSAGE % [mode, routing_table])
70
- attempt_errors.each(&error.method(:add_suppressed))
71
- @log.error(CONNECTION_ACQUISITION_COMPLETION_FAILURE_MESSAGE)
72
- @log.error(error)
73
- raise error
74
- end
75
-
76
- begin
77
- @connection_pool.acquire(address)
78
- rescue Exceptions::ServiceUnavailableException => error
79
- @log.warn { CONNECTION_ACQUISITION_ATTEMPT_FAILURE_MESSAGE % address }
80
- @log.debug(error)
81
- attempt_errors << error
82
- routing_table.forget(address)
83
- acquire(mode, routing_table, attempt_errors)
84
- end
85
- end
86
-
87
- def addresses_by_mode(mode, routing_table)
88
- case mode
89
- when AccessMode::READ
90
- routing_table.readers
91
- when AccessMode::WRITE
92
- routing_table.writers
93
- else
94
- raise unknown_mode mode
95
- end
96
- end
97
-
98
- def select_address(mode, addresses)
99
- case mode
100
- when AccessMode::READ
101
- @load_balancing_strategy.select_reader(addresses)
102
- when AccessMode::WRITE
103
- @load_balancing_strategy.select_writer(addresses)
104
- else
105
- raise unknown_mode mode
106
- end
107
- end
108
-
109
- def create_routing_tables(connection_pool, rediscovery, settings, clock, logger)
110
- RoutingTableRegistryImpl.new(connection_pool, rediscovery, clock, logger, settings.routing_table_purge_delay)
111
- end
112
-
113
- def create_rediscovery(event_executor_group, initial_router, resolver, settings, clock, logger, domain_name_resolver)
114
- cluster_composition_provider = RoutingProcedureClusterCompositionProvider.new(clock, settings.routing_context)
115
- RediscoveryImpl.new(initial_router, settings, cluster_composition_provider, event_executor_group, resolver, logger, domain_name_resolver)
116
- end
117
-
118
- def unknown_mode(mode)
119
- ArgumentError.new("Mode '#{mode}' is not supported")
120
- end
121
- end
122
- end
123
- end
124
- end
125
- end
@@ -1,13 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
- module Loadbalancing
5
- class RoundRobinArrayIndex < Concurrent::AtomicFixnum
6
- def next(array_length)
7
- (increment - 1) % array_length if array_length.positive?
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,31 +0,0 @@
1
- module Neo4j::Driver
2
- module Internal
3
- module Cluster
4
-
5
- # This implementation of the {@link RoutingProcedureRunner} works with multi database versions of Neo4j calling
6
- # the procedure `dbms.routing.getRoutingTable`
7
- class MultiDatabasesRoutingProcedureRunner < SingleDatabaseRoutingProcedureRunner
8
- DATABASE_NAME = :database
9
- MULTI_DB_GET_ROUTING_TABLE = "CALL dbms.routing.getRoutingTable($%s, $%s)" % [SingleDatabaseRoutingProcedureRunner::ROUTING_CONTEXT, DATABASE_NAME]
10
-
11
- private
12
-
13
- def bookmark_holder(bookmark)
14
- ReadOnlyBookmarkHolder.new(bookmark)
15
- end
16
-
17
- def procedure_query(server_version, database_name)
18
- map = {
19
- SingleDatabaseRoutingProcedureRunner::ROUTING_CONTEXT => @context.to_h,
20
- DATABASE_NAME => database_name.database_name
21
- }
22
- Query.new(MULTI_DB_GET_ROUTING_TABLE, **map)
23
- end
24
-
25
- def connection(connection)
26
- Async::Connection::DirectConnection.new(connection, DatabaseNameUtil::SYSTEM_DATABASE, AccessMode::READ, nil)
27
- end
28
- end
29
- end
30
- end
31
- end