cassandra-driver 3.1.0-java → 3.2.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -27
  3. data/lib/cassandra.rb +1 -1
  4. data/lib/cassandra/address_resolution.rb +1 -1
  5. data/lib/cassandra/address_resolution/policies/ec2_multi_region.rb +1 -1
  6. data/lib/cassandra/address_resolution/policies/none.rb +1 -1
  7. data/lib/cassandra/aggregate.rb +1 -1
  8. data/lib/cassandra/argument.rb +1 -1
  9. data/lib/cassandra/attr_boolean.rb +1 -1
  10. data/lib/cassandra/auth.rb +1 -1
  11. data/lib/cassandra/auth/providers.rb +1 -1
  12. data/lib/cassandra/auth/providers/password.rb +1 -1
  13. data/lib/cassandra/cassandra_logger.rb +1 -1
  14. data/lib/cassandra/cluster.rb +1 -1
  15. data/lib/cassandra/cluster/client.rb +11 -1
  16. data/lib/cassandra/cluster/connection_pool.rb +1 -1
  17. data/lib/cassandra/cluster/connector.rb +1 -1
  18. data/lib/cassandra/cluster/control_connection.rb +21 -8
  19. data/lib/cassandra/cluster/failed_connection.rb +1 -1
  20. data/lib/cassandra/cluster/metadata.rb +1 -1
  21. data/lib/cassandra/cluster/options.rb +1 -1
  22. data/lib/cassandra/cluster/registry.rb +14 -1
  23. data/lib/cassandra/cluster/schema.rb +1 -1
  24. data/lib/cassandra/cluster/schema/cql_type_parser.rb +2 -2
  25. data/lib/cassandra/cluster/schema/fetchers.rb +1 -1
  26. data/lib/cassandra/cluster/schema/fqcn_type_parser.rb +1 -1
  27. data/lib/cassandra/cluster/schema/partitioners.rb +1 -1
  28. data/lib/cassandra/cluster/schema/partitioners/murmur3.rb +1 -1
  29. data/lib/cassandra/cluster/schema/partitioners/ordered.rb +1 -1
  30. data/lib/cassandra/cluster/schema/partitioners/random.rb +1 -1
  31. data/lib/cassandra/cluster/schema/replication_strategies.rb +1 -1
  32. data/lib/cassandra/cluster/schema/replication_strategies/network_topology.rb +1 -1
  33. data/lib/cassandra/cluster/schema/replication_strategies/none.rb +1 -1
  34. data/lib/cassandra/cluster/schema/replication_strategies/simple.rb +1 -1
  35. data/lib/cassandra/column.rb +1 -1
  36. data/lib/cassandra/column_container.rb +1 -1
  37. data/lib/cassandra/compression.rb +1 -1
  38. data/lib/cassandra/compression/compressors/lz4.rb +1 -1
  39. data/lib/cassandra/compression/compressors/snappy.rb +1 -1
  40. data/lib/cassandra/custom_data.rb +1 -1
  41. data/lib/cassandra/driver.rb +1 -1
  42. data/lib/cassandra/errors.rb +1 -1
  43. data/lib/cassandra/execution/info.rb +1 -1
  44. data/lib/cassandra/execution/options.rb +1 -1
  45. data/lib/cassandra/execution/profile.rb +1 -1
  46. data/lib/cassandra/execution/profile_manager.rb +1 -1
  47. data/lib/cassandra/execution/trace.rb +1 -1
  48. data/lib/cassandra/executors.rb +1 -1
  49. data/lib/cassandra/function.rb +1 -1
  50. data/lib/cassandra/function_collection.rb +1 -1
  51. data/lib/cassandra/future.rb +1 -1
  52. data/lib/cassandra/host.rb +1 -1
  53. data/lib/cassandra/index.rb +1 -1
  54. data/lib/cassandra/keyspace.rb +1 -1
  55. data/lib/cassandra/listener.rb +1 -1
  56. data/lib/cassandra/load_balancing.rb +1 -1
  57. data/lib/cassandra/load_balancing/policies.rb +1 -1
  58. data/lib/cassandra/load_balancing/policies/dc_aware_round_robin.rb +1 -1
  59. data/lib/cassandra/load_balancing/policies/round_robin.rb +1 -1
  60. data/lib/cassandra/load_balancing/policies/token_aware.rb +1 -1
  61. data/lib/cassandra/load_balancing/policies/white_list.rb +1 -1
  62. data/lib/cassandra/materialized_view.rb +1 -1
  63. data/lib/cassandra/null_logger.rb +1 -1
  64. data/lib/cassandra/protocol.rb +1 -1
  65. data/lib/cassandra/protocol/coder.rb +1 -1
  66. data/lib/cassandra/protocol/cql_byte_buffer.rb +1 -1
  67. data/lib/cassandra/protocol/cql_protocol_handler.rb +1 -1
  68. data/lib/cassandra/protocol/request.rb +1 -1
  69. data/lib/cassandra/protocol/requests/auth_response_request.rb +1 -1
  70. data/lib/cassandra/protocol/requests/batch_request.rb +1 -1
  71. data/lib/cassandra/protocol/requests/credentials_request.rb +1 -1
  72. data/lib/cassandra/protocol/requests/execute_request.rb +1 -1
  73. data/lib/cassandra/protocol/requests/options_request.rb +1 -1
  74. data/lib/cassandra/protocol/requests/prepare_request.rb +1 -1
  75. data/lib/cassandra/protocol/requests/query_request.rb +1 -1
  76. data/lib/cassandra/protocol/requests/register_request.rb +1 -1
  77. data/lib/cassandra/protocol/requests/startup_request.rb +1 -1
  78. data/lib/cassandra/protocol/requests/void_query_request.rb +1 -1
  79. data/lib/cassandra/protocol/response.rb +1 -1
  80. data/lib/cassandra/protocol/responses/already_exists_error_response.rb +1 -1
  81. data/lib/cassandra/protocol/responses/auth_challenge_response.rb +1 -1
  82. data/lib/cassandra/protocol/responses/auth_success_response.rb +1 -1
  83. data/lib/cassandra/protocol/responses/authenticate_response.rb +1 -1
  84. data/lib/cassandra/protocol/responses/error_response.rb +1 -1
  85. data/lib/cassandra/protocol/responses/event_response.rb +1 -1
  86. data/lib/cassandra/protocol/responses/function_failure_error_response.rb +1 -1
  87. data/lib/cassandra/protocol/responses/prepared_result_response.rb +1 -1
  88. data/lib/cassandra/protocol/responses/raw_rows_result_response.rb +1 -1
  89. data/lib/cassandra/protocol/responses/read_failure_error_response.rb +1 -1
  90. data/lib/cassandra/protocol/responses/read_timeout_error_response.rb +1 -1
  91. data/lib/cassandra/protocol/responses/ready_response.rb +1 -1
  92. data/lib/cassandra/protocol/responses/result_response.rb +1 -1
  93. data/lib/cassandra/protocol/responses/rows_result_response.rb +1 -1
  94. data/lib/cassandra/protocol/responses/schema_change_event_response.rb +1 -1
  95. data/lib/cassandra/protocol/responses/schema_change_result_response.rb +1 -1
  96. data/lib/cassandra/protocol/responses/set_keyspace_result_response.rb +1 -1
  97. data/lib/cassandra/protocol/responses/status_change_event_response.rb +1 -1
  98. data/lib/cassandra/protocol/responses/supported_response.rb +1 -1
  99. data/lib/cassandra/protocol/responses/topology_change_event_response.rb +1 -1
  100. data/lib/cassandra/protocol/responses/unavailable_error_response.rb +1 -1
  101. data/lib/cassandra/protocol/responses/unprepared_error_response.rb +1 -1
  102. data/lib/cassandra/protocol/responses/void_result_response.rb +1 -1
  103. data/lib/cassandra/protocol/responses/write_failure_error_response.rb +1 -1
  104. data/lib/cassandra/protocol/responses/write_timeout_error_response.rb +1 -1
  105. data/lib/cassandra/protocol/v1.rb +1 -1
  106. data/lib/cassandra/protocol/v3.rb +1 -1
  107. data/lib/cassandra/protocol/v4.rb +1 -1
  108. data/lib/cassandra/reconnection.rb +1 -1
  109. data/lib/cassandra/reconnection/policies.rb +1 -1
  110. data/lib/cassandra/reconnection/policies/constant.rb +1 -1
  111. data/lib/cassandra/reconnection/policies/exponential.rb +1 -1
  112. data/lib/cassandra/result.rb +1 -1
  113. data/lib/cassandra/retry.rb +1 -1
  114. data/lib/cassandra/retry/policies.rb +1 -1
  115. data/lib/cassandra/retry/policies/default.rb +1 -1
  116. data/lib/cassandra/retry/policies/downgrading_consistency.rb +1 -1
  117. data/lib/cassandra/retry/policies/fallthrough.rb +1 -1
  118. data/lib/cassandra/session.rb +1 -1
  119. data/lib/cassandra/statement.rb +1 -1
  120. data/lib/cassandra/statements.rb +1 -1
  121. data/lib/cassandra/statements/batch.rb +1 -1
  122. data/lib/cassandra/statements/bound.rb +1 -1
  123. data/lib/cassandra/statements/prepared.rb +1 -1
  124. data/lib/cassandra/statements/simple.rb +1 -1
  125. data/lib/cassandra/statements/void.rb +1 -1
  126. data/lib/cassandra/table.rb +1 -1
  127. data/lib/cassandra/time.rb +1 -1
  128. data/lib/cassandra/time_uuid.rb +1 -1
  129. data/lib/cassandra/timestamp_generator.rb +1 -1
  130. data/lib/cassandra/timestamp_generator/simple.rb +1 -1
  131. data/lib/cassandra/timestamp_generator/ticking_on_duplicate.rb +1 -1
  132. data/lib/cassandra/trigger.rb +1 -1
  133. data/lib/cassandra/tuple.rb +1 -1
  134. data/lib/cassandra/types.rb +1 -1
  135. data/lib/cassandra/udt.rb +1 -1
  136. data/lib/cassandra/util.rb +2 -3
  137. data/lib/cassandra/uuid.rb +1 -1
  138. data/lib/cassandra/uuid/generator.rb +1 -1
  139. data/lib/cassandra/version.rb +2 -2
  140. data/lib/cassandra_murmur3.jar +0 -0
  141. data/lib/datastax/cassandra.rb +1 -1
  142. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac761253a986cd88350b04de1d3ee90bf1f355c3
4
- data.tar.gz: 6c9bbff04510173fd06518c7592d7c326534b081
3
+ metadata.gz: f73c580eafef3df755cad4c93c0cba0c5859d192
4
+ data.tar.gz: f2f5f7836ffeddda6b138619be8173e984594803
5
5
  SHA512:
6
- metadata.gz: ddf9b426f9f3e2934f1dc705657af049472ef68474ce1458a80d3a5e7a33b07b75fa34ab27bfb71617e2f4b111f8c774ca96e45c98b495e0cf06cc25606d3757
7
- data.tar.gz: 526e8a7fae76a17635ecadc369b62f1a175aef694a9d0d8488262e90722de6363f8243081e0e5d18c4b6c05305932c59bbf3b369511cce1fbef91746f25ebff4
6
+ metadata.gz: f958c3a621623e81e78bf304068e39655477f57a57e4ebb83781b2c682b86834e2cc85564a90453847e7493c3c1e005c9431002084c96d64e16f0ed83ea9aed2
7
+ data.tar.gz: e0a08e87fa96ff6d5f4d1cfad42d34b264da43d2431703ae6389e884bd83548a6db5e70d04ca756c1456eb7b7a3662bdd4cd17fbcd366a38ee81a4c1e5f398ec
data/README.md CHANGED
@@ -9,11 +9,14 @@ version [here](http://docs.datastax.com/en/developer/ruby-driver/latest).*
9
9
  A Ruby client driver for Apache Cassandra. This driver works exclusively with
10
10
  the Cassandra Query Language version 3 (CQL3) and Cassandra's native protocol.
11
11
 
12
+ Use the [Ruby DSE driver](https://github.com/datastax/ruby-dse-driver.git) for
13
+ better compatibility and support for DataStax Enterprise.
14
+
12
15
  - Code: https://github.com/datastax/ruby-driver
13
16
  - Docs: http://docs.datastax.com/en/developer/ruby-driver
14
17
  - Jira: https://datastax-oss.atlassian.net/browse/RUBY
15
18
  - Mailing List: https://groups.google.com/a/lists.datastax.com/forum/#!forum/ruby-driver-user
16
- - IRC: #datastax-drivers on [irc.freenode.net](http://freenode.net>)
19
+ - Slack: `#datastax-drivers` channel at https://academy.datastax.com/slack
17
20
  - Twitter: Follow the latest news about DataStax Drivers - [@stamhankar999](http://twitter.com/stamhankar999), [@avalanche123](http://twitter.com/avalanche123), [@al3xandru](https://twitter.com/al3xandru)
18
21
 
19
22
  This driver is based on [the cql-rb gem](https://github.com/iconara/cql-rb) by [Theo Hultberg](https://github.com/iconara) and we added support for:
@@ -33,14 +36,13 @@ This driver is based on [the cql-rb gem](https://github.com/iconara/cql-rb) by [
33
36
 
34
37
  This driver works exclusively with the Cassandra Query Language v3 (CQL3) and Cassandra's native protocol. The current version works with:
35
38
 
36
- * Apache Cassandra versions 1.2, 2.0, 2.1, 2.2, and 3.x
37
- * DataStax Enterprise 4.0 and above.
38
- * Ruby (MRI) 2.2, 2.3
39
- * JRuby 1.7
39
+ * Apache Cassandra versions 2.1, 2.2, and 3.x
40
+ * DataStax Enterprise 4.8 and above. However, the [Ruby DSE driver](https://github.com/datastax/ruby-dse-driver.git) provides more features and is recommended for use with DataStax Enterprise.
41
+ * Ruby (MRI) 2.2, 2.3, 2.4
42
+ * JRuby 1.7, 9k
40
43
 
41
- __Note__: JRuby 1.6 is not officially supported, although 1.6.8 should work. Rubinius is not supported.
42
- MRI 2.0, 2.1, and JRuby 9k are not officially supported, but they should work. 1.9.3 is deprecated
43
- and is likely to break in the release following 3.0.
44
+ __Note__: Rubinius is not supported. MRI 2.0, and 2.1 are not officially supported, but they should work. MRI 1.9.3 is deprecated
45
+ and may break in any release after 3.0.
44
46
 
45
47
  ## Feedback Requested
46
48
 
@@ -98,9 +100,18 @@ __Note__: if you want to use compression you should also install [snappy](http:/
98
100
 
99
101
  Some of the new features added to the driver have unfortunately led to changes in the original cql-rb API.
100
102
  In the examples directory, you can find [an example of how to wrap the ruby driver to achieve almost complete
101
- interface parity with cql-rb](https://github.com/datastax/ruby-driver/blob/v3.1.0/examples/cql-rb-wrapper.rb)
103
+ interface parity with cql-rb](https://github.com/datastax/ruby-driver/blob/v3.2.0/examples/cql-rb-wrapper.rb)
102
104
  to assist you with gradual upgrade.
103
105
 
106
+ If you are upgrading to DataStax Enterprise, use the [Ruby DSE driver](https://github.com/datastax/ruby-dse-driver.git)
107
+ for more features and better compatibility.
108
+
109
+ ## What's new in v3.2
110
+ This minor release adds support for MRI 2.4.x and also contains a few miscellaneous defect fixes.
111
+
112
+ See the [changelog](https://github.com/datastax/ruby-driver/blob/v3.2.0/CHANGELOG.md) for more information on all
113
+ changes in this version and past versions.
114
+
104
115
  ## What's new in v3.1
105
116
 
106
117
  This minor release introduces features and fixes around resiliency, schema metadata, usability, and performance. One
@@ -110,9 +121,6 @@ Execution profiles allow you to group various execution options into a 'profile'
110
121
  profile at execution time. Get the scoop
111
122
  [here](http://docs.datastax.com/en/developer/ruby-driver/3.1/features/basics/execution_profiles).
112
123
 
113
- See the [changelog](https://github.com/datastax/ruby-driver/blob/v3.1.0/CHANGELOG.md) for more information on all
114
- changes in this version and past versions.
115
-
116
124
  ## What's new in v3.0
117
125
 
118
126
  ### Features:
@@ -159,16 +167,6 @@ batch.add(query, arguments: {p1: 'val1'})
159
167
  Specify a positive value (or nil for unlimited) for `max_remote_hosts_to_use` when initializing the policy to allow remote node use.
160
168
  * Unspecified variables in statements previously resulted in an exception. Now they are essentially ignored or treated as null.
161
169
 
162
- ### Bug Fixes:
163
-
164
- * [[RUBY-120](https://datastax-oss.atlassian.net/browse/RUBY-120)] Tuples and UDTs can be used in sets and hash keys.
165
- * [[RUBY-143](https://datastax-oss.atlassian.net/browse/RUBY-143)] Retry querying system table for metadata of new hosts when prior attempts fail, ultimately enabling use of new hosts.
166
- * [[RUBY-150](https://datastax-oss.atlassian.net/browse/RUBY-150)] Fixed a protocol decoding error that occurred when multiple messages are available in a stream.
167
- * [[RUBY-151](https://datastax-oss.atlassian.net/browse/RUBY-151)] Decode incomplete UDTs properly.
168
- * [[RUBY-155](https://datastax-oss.atlassian.net/browse/RUBY-155)] Request timeout timer should not include request queuing time.
169
- * [[RUBY-161](https://datastax-oss.atlassian.net/browse/RUBY-161)] Protocol version negotiation in mixed version clusters should not fall back to v1 unless it is truly warranted.
170
- * [[RUBY-214](https://datastax-oss.atlassian.net/browse/RUBY-214)] Ensure client timestamps have microsecond precision in JRuby. Previously, some row updates would get lost in high transaction environments.
171
-
172
170
  ## Code examples
173
171
 
174
172
  The DataStax Ruby Driver uses the awesome [Cucumber Framework](http://cukes.info/) for
@@ -179,7 +177,7 @@ examples in the `features/` directory.
179
177
  ## Running tests
180
178
 
181
179
  If you don't feel like reading through the following instructions on how to run
182
- ruby-driver tests, feel free to [check out .travis.yml for the entire build code](https://github.com/datastax/ruby-driver/blob/v3.1.0/.travis.yml).
180
+ ruby-driver tests, feel free to [check out .travis.yml for the entire build code](https://github.com/datastax/ruby-driver/blob/v3.2.0/.travis.yml).
183
181
 
184
182
  * Check out the driver codebase and install test dependencies:
185
183
 
@@ -197,13 +195,13 @@ bundle install --without docs
197
195
  CASSANDRA_VERSION=3.1.1 bundle exec cucumber # runs end-to-end tests (or bundle exec rake cucumber)
198
196
  CASSANDRA_VERSION=3.0.0 bundle exec rspec # runs unit tests (or bundle exec rake rspec)
199
197
  CASSANDRA_VERSION=2.1.12 bundle exec rake integration # run integration tests
200
- CASSANDRA_VERSION=2.0.17 bundle exec rake test # run both as well as integration tests
198
+ CASSANDRA_VERSION=2.1.12 bundle exec rake test # run both as well as integration tests
201
199
  ```
202
200
 
203
201
  ## Changelog & versioning
204
202
 
205
203
  Check out the [releases on GitHub](https://github.com/datastax/ruby-driver/releases) and
206
- [changelog](https://github.com/datastax/ruby-driver/blob/v3.1.0/CHANGELOG.md). Version
204
+ [changelog](https://github.com/datastax/ruby-driver/blob/v3.2.0/CHANGELOG.md). Version
207
205
  numbering follows the [semantic versioning](http://semver.org/) scheme.
208
206
 
209
207
  Private and experimental APIs, defined as whatever is not in the
@@ -223,7 +221,6 @@ the release.
223
221
 
224
222
  * Specifying a `protocol_version` option of 1 or 2 in cluster options will fail with a
225
223
  `NoHostsAvailable` error rather than a `ProtocolError` against Cassandra node versions 3.0-3.4.
226
- * JRuby 1.6 is not officially supported, although 1.6.8 should work.
227
224
  * Because the driver reactor is using `IO.select`, the maximum number of tcp connections allowed is 1024.
228
225
  * Because the driver uses `IO#write_nonblock`, Windows is not supported.
229
226
 
@@ -245,7 +242,7 @@ Driver for Apache Cassandra will continue on this project, while
245
242
 
246
243
  ## Copyright
247
244
 
248
- Copyright 2013-2016 DataStax, Inc.
245
+ Copyright 2013-2017 DataStax, Inc.
249
246
 
250
247
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
251
248
  except in compliance with the License. You may obtain a copy of the License at
data/lib/cassandra.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright 2013-2016 DataStax, Inc.
2
+ # Copyright 2013-2017 DataStax, Inc.
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
5
5
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -106,6 +106,16 @@ module Cassandra
106
106
 
107
107
  failed_connections = connections.reject(&:connected?)
108
108
 
109
+ # convert Cassandra::Protocol::CqlProtocolHandler to something with a real host
110
+ failed_connections.map! do |c|
111
+ if c.host.is_a?(String)
112
+ host = @registry.each_host.detect { |h| h.ip.to_s == c.host } || raise("Unable to find host #{c.host}")
113
+ FailedConnection.new(c.error, host)
114
+ else
115
+ c
116
+ end
117
+ end
118
+
109
119
  if failed_connections.size == connections.size
110
120
  errors = {}
111
121
  connections.each {|c| errors[c.host] = c.error unless c.error.nil?}
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -225,12 +225,11 @@ module Cassandra
225
225
  else
226
226
  case event.change
227
227
  when 'UP'
228
- address = event.address
229
-
228
+ address = @address_resolver.resolve(event.address)
230
229
  if @registry.has_host?(address)
231
230
  @registry.host_up(address)
232
231
  else
233
- refresh_host_async_maybe_retry(address)
232
+ refresh_host_async_maybe_retry(event.address)
234
233
  refresh_schema_async_wrapper
235
234
  end
236
235
  when 'DOWN'
@@ -238,14 +237,14 @@ module Cassandra
238
237
  # logic in connector.rb to call host_down when all connections to a node are lost,
239
238
  # so that covers the requirement.
240
239
  when 'NEW_NODE'
241
- address = event.address
240
+ address = @address_resolver.resolve(event.address)
242
241
 
243
242
  unless @registry.has_host?(address)
244
- refresh_host_async_maybe_retry(address)
243
+ refresh_host_async_maybe_retry(event.address)
245
244
  refresh_schema_async_wrapper
246
245
  end
247
246
  when 'REMOVED_NODE'
248
- @registry.host_lost(event.address)
247
+ @registry.host_lost(@address_resolver.resolve(event.address))
249
248
  refresh_schema_async_wrapper
250
249
  end
251
250
  end
@@ -480,7 +479,7 @@ module Cassandra
480
479
  raise Errors::InternalError, "Unable to fetch connected host's metadata" if local.empty?
481
480
 
482
481
  data = local.first
483
- @registry.host_found(IPAddr.new(connection.host), data)
482
+ @registry.host_found(@address_resolver.resolve(IPAddr.new(connection.host)), data)
484
483
  @metadata.update(data)
485
484
 
486
485
  @logger.info("Completed refreshing connected host's metadata")
@@ -516,6 +515,9 @@ module Cassandra
516
515
  end
517
516
  end
518
517
 
518
+ # @param address [IPAddr] address node address, as reported from a C* event. Thus it is *not* resolved
519
+ # relative to the client, but rather is the address that other nodes would use to communicate with
520
+ # this node.
519
521
  def refresh_host_async_maybe_retry(address)
520
522
  synchronize do
521
523
  return Ione::Future.resolved if @refreshing_hosts || @refreshing_host[address]
@@ -539,6 +541,9 @@ module Cassandra
539
541
  end
540
542
  end
541
543
 
544
+ # @param address [IPAddr] address node address, as reported from a C* event. Thus it is *not* resolved
545
+ # relative to the client, but rather is the address that other nodes would use to communicate with
546
+ # this node.
542
547
  def refresh_host_async_retry(address, error, schedule)
543
548
  timeout = schedule.next
544
549
  @logger.info("Failed to refresh host #{address} (#{error.class.name}: " \
@@ -560,6 +565,9 @@ module Cassandra
560
565
  end
561
566
  end
562
567
 
568
+ # @param address [IPAddr] address node address, as reported from a C* event. Thus it is *not* resolved
569
+ # relative to the client, but rather is the address that other nodes would use to communicate with
570
+ # this node.
563
571
  def refresh_host_async(address)
564
572
  connection = @connection
565
573
  return Ione::Future.failed(Errors::ClientError.new('Not connected')) if connection.nil?
@@ -581,6 +589,11 @@ module Cassandra
581
589
  raise Errors::InternalError, "Unable to find host metadata: #{ip}" if rows.empty?
582
590
 
583
591
  @logger.info("Completed refreshing host metadata: #{ip}")
592
+ address = if ip == connection.host
593
+ @address_resolver.resolve(address)
594
+ else
595
+ peer_ip(rows.first, connection.host)
596
+ end
584
597
  @registry.host_found(address, rows.first)
585
598
 
586
599
  self
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  #--
4
- # Copyright 2013-2016 DataStax, Inc.
4
+ # Copyright 2013-2017 DataStax, Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -60,14 +60,18 @@ module Cassandra
60
60
  end
61
61
  alias hosts each_host
62
62
 
63
+ # @param address [IPAddr] resolved address of the node
63
64
  def host(address)
64
65
  @hosts[address.to_s]
65
66
  end
66
67
 
68
+ # @param address [IPAddr] resolved address of the node
67
69
  def has_host?(address)
68
70
  @hosts.key?(address.to_s)
69
71
  end
70
72
 
73
+ # @param address [IPAddr] resolved address of the node
74
+ # @param data [Hash<String, String>] attributes of the host, typically a row from system.local or system.peers.
71
75
  def host_found(address, data = {})
72
76
  ip = address.to_s
73
77
  host = @hosts[ip]
@@ -108,6 +112,7 @@ module Cassandra
108
112
  self
109
113
  end
110
114
 
115
+ # @param address [IPAddr] resolved address of the node
111
116
  def host_down(address)
112
117
  ip = address.to_s
113
118
  host = @hosts[ip]
@@ -125,6 +130,7 @@ module Cassandra
125
130
  self
126
131
  end
127
132
 
133
+ # @param address [IPAddr] resolved address of the node
128
134
  def host_up(address)
129
135
  ip = address.to_s
130
136
  host = @hosts[ip]
@@ -142,6 +148,7 @@ module Cassandra
142
148
  self
143
149
  end
144
150
 
151
+ # @param address [IPAddr] resolved address of the node
145
152
  def host_lost(address)
146
153
  ip = address.to_s
147
154
  host = nil
@@ -161,6 +168,8 @@ module Cassandra
161
168
 
162
169
  private
163
170
 
171
+ # @param ip [String] resolved address of the node
172
+ # @param data [Hash<String, String>] attributes of the host, typically a row from system.local or system.peers.
164
173
  def create_host(ip, data)
165
174
  Host.new(ip,
166
175
  data['host_id'],
@@ -173,6 +182,7 @@ module Cassandra
173
182
  data['listen_address'])
174
183
  end
175
184
 
185
+ # @param ip [Host] host that is found to be up.
176
186
  def toggle_up(host)
177
187
  host = Host.new(host.ip,
178
188
  host.id,
@@ -194,6 +204,7 @@ module Cassandra
194
204
  host
195
205
  end
196
206
 
207
+ # @param ip [Host] host that is found to be down.
197
208
  def toggle_down(host)
198
209
  host = Host.new(host.ip,
199
210
  host.id,
@@ -215,6 +226,7 @@ module Cassandra
215
226
  host
216
227
  end
217
228
 
229
+ # @param ip [Host] host that is lost.
218
230
  def notify_lost(host)
219
231
  if host.up?
220
232
  @logger.debug("Host #{host.ip} is down and lost")
@@ -251,6 +263,7 @@ module Cassandra
251
263
  end
252
264
  end
253
265
 
266
+ # @param ip [Host] host that is found.
254
267
  def notify_found(host)
255
268
  @logger.debug("Host #{host.ip} is found and up")
256
269
  @listeners.each do |listener|