Module: Riak::Client::FeatureDetection
- Included in:
- ProtobuffsBackend, SecondaryIndex
- Defined in:
- lib/riak/client/feature_detection.rb
Overview
Methods that can be used to determine whether certain features are supported by the Riak node to which the client backend is connected.
Backends must implement the “get_server_version” method, returning a string representing the Riak node’s version. This is implemented on HTTP using the stats resource, and on Protocol Buffers using the RpbGetServerInfoReq message.
Constant Summary collapse
- VERSION =
Constants representing Riak versions
{ 1 => Gem::Version.new("1.0.0"), 1.1 => Gem::Version.new("1.1.0"), 1.2 => Gem::Version.new("1.2.0"), 1.3 => Gem::Version.new("1.3.0"), 1.4 => Gem::Version.new("1.4.0") }.freeze
Instance Method Summary collapse
-
#get_server_version ⇒ String
abstract
The version of the Riak node.
-
#http_props_clearable? ⇒ true, false
Whether bucket properties can be cleared (reset to defaults) over HTTP.
-
#index_pagination? ⇒ true, false
Whether secondary indexes support pagination.
-
#index_return_terms? ⇒ true, false
Whether secondary indexes support return_terms.
-
#index_streaming? ⇒ true, false
Whether secondary indexes support streaming.
-
#key_object_bucket_timeouts? ⇒ true, false
Whether timeouts are accepted for object CRUD, key listing, and bucket listing.
-
#mapred_phaseless? ⇒ true, false
Whether MapReduce requests can be submitted without phases.
-
#pb_conditionals? ⇒ true, false
Whether conditional fetch/store semantics are supported over Protocol Buffers.
-
#pb_head? ⇒ true, false
Whether partial-fetches (vclock and metadata only) are supported over Protocol Buffers.
-
#pb_indexes? ⇒ true, false
Whether secondary index queries are supported over Protocol Buffers.
-
#pb_search? ⇒ true, false
Whether search queries are supported over Protocol Buffers.
-
#quorum_controls? ⇒ true, false
Whether additional quorums and FSM controls are available, e.g.
-
#server_version ⇒ Gem::Version
The version of the Riak node to which this backend is connected.
-
#tombstone_vclocks? ⇒ true, false
Whether “not found” responses might include vclocks.
Instance Method Details
#get_server_version ⇒ String
Returns the version of the Riak node.
23 24 25 |
# File 'lib/riak/client/feature_detection.rb', line 23 def get_server_version raise NotImplementedError end |
#http_props_clearable? ⇒ true, false
Returns whether bucket properties can be cleared (reset to defaults) over HTTP.
78 79 80 |
# File 'lib/riak/client/feature_detection.rb', line 78 def http_props_clearable? at_least? VERSION[1.3] end |
#index_pagination? ⇒ true, false
Returns whether secondary indexes support pagination.
84 85 86 |
# File 'lib/riak/client/feature_detection.rb', line 84 def index_pagination? at_least? VERSION[1.4] end |
#index_return_terms? ⇒ true, false
Whether secondary indexes support return_terms
90 91 92 |
# File 'lib/riak/client/feature_detection.rb', line 90 def index_return_terms? at_least? VERSION[1.4] end |
#index_streaming? ⇒ true, false
Returns whether secondary indexes support streaming.
96 97 98 |
# File 'lib/riak/client/feature_detection.rb', line 96 def index_streaming? at_least? VERSION[1.4] end |
#key_object_bucket_timeouts? ⇒ true, false
Returns whether timeouts are accepted for object CRUD, key listing, and bucket listing.
102 103 104 |
# File 'lib/riak/client/feature_detection.rb', line 102 def key_object_bucket_timeouts? at_least? VERSION[1.4] end |
#mapred_phaseless? ⇒ true, false
Returns whether MapReduce requests can be submitted without phases.
35 36 37 |
# File 'lib/riak/client/feature_detection.rb', line 35 def mapred_phaseless? at_least? VERSION[1.1] end |
#pb_conditionals? ⇒ true, false
Returns whether conditional fetch/store semantics are supported over Protocol Buffers.
53 54 55 |
# File 'lib/riak/client/feature_detection.rb', line 53 def pb_conditionals? at_least? VERSION[1] end |
#pb_head? ⇒ true, false
Returns whether partial-fetches (vclock and metadata only) are supported over Protocol Buffers.
72 73 74 |
# File 'lib/riak/client/feature_detection.rb', line 72 def pb_head? at_least? VERSION[1] end |
#pb_indexes? ⇒ true, false
Returns whether secondary index queries are supported over Protocol Buffers.
41 42 43 |
# File 'lib/riak/client/feature_detection.rb', line 41 def pb_indexes? at_least? VERSION[1.2] end |
#pb_search? ⇒ true, false
Returns whether search queries are supported over Protocol Buffers.
47 48 49 |
# File 'lib/riak/client/feature_detection.rb', line 47 def pb_search? at_least? VERSION[1.2] end |
#quorum_controls? ⇒ true, false
Returns whether additional quorums and FSM controls are available, e.g. primary quorums, basic_quorum, notfound_ok.
60 61 62 |
# File 'lib/riak/client/feature_detection.rb', line 60 def quorum_controls? at_least? VERSION[1] end |
#server_version ⇒ Gem::Version
Returns the version of the Riak node to which this backend is connected.
29 30 31 |
# File 'lib/riak/client/feature_detection.rb', line 29 def server_version @server_version ||= Gem::Version.new(get_server_version.split("-").first) end |
#tombstone_vclocks? ⇒ true, false
Returns whether “not found” responses might include vclocks.
66 67 68 |
# File 'lib/riak/client/feature_detection.rb', line 66 def tombstone_vclocks? at_least? VERSION[1] end |