cassandra-driver 3.1.0-java → 3.2.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 (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|