aerospike 2.9.1 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +50 -4
- data/README.md +1 -1
- data/lib/aerospike.rb +17 -4
- data/lib/aerospike/aerospike_exception.rb +7 -1
- data/lib/aerospike/atomic/atomic.rb +1 -1
- data/lib/aerospike/bin.rb +1 -1
- data/lib/aerospike/cdt/list_operation.rb +1 -1
- data/lib/aerospike/cdt/map_operation.rb +1 -1
- data/lib/aerospike/cdt/map_order.rb +1 -1
- data/lib/aerospike/cdt/map_policy.rb +1 -1
- data/lib/aerospike/cdt/map_return_type.rb +1 -1
- data/lib/aerospike/cdt/map_write_mode.rb +1 -1
- data/lib/aerospike/client.rb +31 -17
- data/lib/aerospike/cluster.rb +139 -17
- data/lib/aerospike/cluster/partition.rb +1 -1
- data/lib/aerospike/cluster/partition_parser.rb +169 -0
- data/lib/aerospike/cluster/rack_parser.rb +117 -0
- data/lib/aerospike/command/admin_command.rb +1 -1
- data/lib/aerospike/command/batch_direct_command.rb +2 -1
- data/lib/aerospike/command/batch_direct_exists_command.rb +1 -1
- data/lib/aerospike/command/batch_direct_node.rb +3 -3
- data/lib/aerospike/command/batch_index_command.rb +11 -2
- data/lib/aerospike/command/batch_index_node.rb +2 -2
- data/lib/aerospike/command/batch_item.rb +1 -1
- data/lib/aerospike/command/command.rb +157 -11
- data/lib/aerospike/command/delete_command.rb +21 -5
- data/lib/aerospike/command/execute_command.rb +1 -1
- data/lib/aerospike/command/exists_command.rb +21 -5
- data/lib/aerospike/command/field_type.rb +3 -1
- data/lib/aerospike/command/multi_command.rb +55 -5
- data/lib/aerospike/command/operate_command.rb +6 -1
- data/lib/aerospike/command/read_command.rb +63 -20
- data/lib/aerospike/command/read_header_command.rb +18 -6
- data/lib/aerospike/command/roles.rb +1 -1
- data/lib/aerospike/command/single_command.rb +9 -3
- data/lib/aerospike/command/touch_command.rb +48 -4
- data/lib/aerospike/command/unsupported_particle_type_validator.rb +1 -1
- data/lib/aerospike/command/write_command.rb +13 -4
- data/lib/aerospike/connection/create.rb +1 -1
- data/lib/aerospike/features.rb +3 -1
- data/lib/aerospike/geo_json.rb +70 -1
- data/lib/aerospike/host.rb +1 -1
- data/lib/aerospike/info.rb +1 -1
- data/lib/aerospike/key.rb +1 -1
- data/lib/aerospike/language.rb +1 -1
- data/lib/aerospike/node.rb +21 -7
- data/lib/aerospike/node/rebalance.rb +50 -0
- data/lib/aerospike/node/refresh/info.rb +4 -1
- data/lib/aerospike/node/refresh/partitions.rb +6 -15
- data/lib/aerospike/node/refresh/racks.rb +47 -0
- data/lib/aerospike/node/refresh/reset.rb +1 -0
- data/lib/aerospike/node/verify/rebalance_generation.rb +43 -0
- data/lib/aerospike/node_validator.rb +45 -40
- data/lib/aerospike/operation.rb +6 -1
- data/lib/aerospike/policy/admin_policy.rb +1 -1
- data/lib/aerospike/policy/batch_policy.rb +1 -1
- data/lib/aerospike/policy/client_policy.rb +16 -1
- data/lib/aerospike/policy/commit_level.rb +1 -1
- data/lib/aerospike/policy/consistency_level.rb +1 -1
- data/lib/aerospike/policy/generation_policy.rb +1 -1
- data/lib/aerospike/policy/operate_policy.rb +1 -1
- data/lib/aerospike/policy/policy.rb +64 -2
- data/lib/aerospike/policy/priority.rb +1 -1
- data/lib/aerospike/policy/query_policy.rb +8 -1
- data/lib/aerospike/policy/record_bin_multiplicity.rb +1 -1
- data/lib/aerospike/policy/record_exists_action.rb +1 -1
- data/lib/aerospike/policy/replica.rb +45 -0
- data/lib/aerospike/policy/scan_policy.rb +8 -1
- data/lib/aerospike/policy/write_policy.rb +1 -1
- data/lib/aerospike/query/filter.rb +1 -1
- data/lib/aerospike/query/pred_exp.rb +192 -0
- data/lib/aerospike/query/pred_exp/and_or.rb +32 -0
- data/lib/aerospike/query/pred_exp/geo_json_value.rb +41 -0
- data/lib/aerospike/query/pred_exp/integer_value.rb +32 -0
- data/lib/aerospike/query/pred_exp/op.rb +27 -0
- data/lib/aerospike/query/pred_exp/regex.rb +32 -0
- data/lib/aerospike/query/pred_exp/regex_flags.rb +23 -0
- data/lib/aerospike/query/pred_exp/string_value.rb +29 -0
- data/lib/aerospike/query/query_command.rb +27 -1
- data/lib/aerospike/query/recordset.rb +5 -5
- data/lib/aerospike/query/scan_command.rb +1 -1
- data/lib/aerospike/query/statement.rb +12 -3
- data/lib/aerospike/query/stream_command.rb +1 -1
- data/lib/aerospike/record.rb +1 -1
- data/lib/aerospike/result_code.rb +13 -7
- data/lib/aerospike/socket/base.rb +4 -3
- data/lib/aerospike/task/execute_task.rb +1 -1
- data/lib/aerospike/task/index_task.rb +1 -1
- data/lib/aerospike/task/task.rb +1 -1
- data/lib/aerospike/task/udf_register_task.rb +1 -1
- data/lib/aerospike/task/udf_remove_task.rb +1 -1
- data/lib/aerospike/ttl.rb +1 -1
- data/lib/aerospike/udf.rb +1 -1
- data/lib/aerospike/user_role.rb +1 -1
- data/lib/aerospike/utils/buffer.rb +14 -4
- data/lib/aerospike/utils/packer.rb +1 -1
- data/lib/aerospike/utils/pool.rb +1 -1
- data/lib/aerospike/utils/unpacker.rb +7 -2
- data/lib/aerospike/value/particle_type.rb +1 -1
- data/lib/aerospike/value/value.rb +59 -29
- data/lib/aerospike/version.rb +1 -1
- metadata +19 -8
- data/lib/aerospike/cluster/partition_tokenizer_new.rb +0 -130
- data/lib/aerospike/cluster/partition_tokenizer_old.rb +0 -135
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
3
3
|
#
|
4
4
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
5
5
|
# license agreements.
|
@@ -33,6 +33,10 @@ module Aerospike
|
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
36
|
+
def get_node
|
37
|
+
@cluster.master_node(@partition)
|
38
|
+
end
|
39
|
+
|
36
40
|
def write_buffer
|
37
41
|
set_delete(@policy, @key)
|
38
42
|
end
|
@@ -43,13 +47,25 @@ module Aerospike
|
|
43
47
|
|
44
48
|
result_code = @data_buffer.read(13).ord & 0xFF
|
45
49
|
|
46
|
-
if
|
47
|
-
|
50
|
+
if result_code == 0
|
51
|
+
@existed = true
|
52
|
+
return
|
48
53
|
end
|
49
54
|
|
50
|
-
|
55
|
+
if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR
|
56
|
+
@existed = false
|
57
|
+
return
|
58
|
+
end
|
59
|
+
|
60
|
+
if result_code == Aerospike::ResultCode::FILTERED_OUT
|
61
|
+
if @policy.fail_on_filtered_out
|
62
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
63
|
+
end
|
64
|
+
@existed = true
|
65
|
+
return
|
66
|
+
end
|
51
67
|
|
52
|
-
|
68
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
53
69
|
end
|
54
70
|
|
55
71
|
end # class
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
3
3
|
#
|
4
4
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
5
5
|
# license agreements.
|
@@ -33,6 +33,10 @@ module Aerospike
|
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
36
|
+
def get_node
|
37
|
+
@cluster.read_node(@partition, @policy.replica, @sequence)
|
38
|
+
end
|
39
|
+
|
36
40
|
def write_buffer
|
37
41
|
set_exists(@policy, @key)
|
38
42
|
end
|
@@ -43,13 +47,25 @@ module Aerospike
|
|
43
47
|
|
44
48
|
result_code = @data_buffer.read(13).ord & 0xFF
|
45
49
|
|
46
|
-
if
|
47
|
-
|
50
|
+
if result_code == 0
|
51
|
+
@exists = true
|
52
|
+
return
|
48
53
|
end
|
49
54
|
|
50
|
-
|
55
|
+
if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR
|
56
|
+
@exists = false
|
57
|
+
return
|
58
|
+
end
|
59
|
+
|
60
|
+
if result_code == Aerospike::ResultCode::FILTERED_OUT
|
61
|
+
if @policy.fail_on_filtered_out
|
62
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
63
|
+
end
|
64
|
+
@exists = true
|
65
|
+
return
|
66
|
+
end
|
51
67
|
|
52
|
-
|
68
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
53
69
|
end
|
54
70
|
|
55
71
|
end # class
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2014-
|
1
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
2
2
|
#
|
3
3
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
4
4
|
# license agreements.
|
@@ -31,6 +31,7 @@ module Aerospike
|
|
31
31
|
TRAN_ID = 7 # user supplied transaction id, which is simply passed back
|
32
32
|
SCAN_OPTIONS = 8
|
33
33
|
SCAN_TIMEOUT = 9
|
34
|
+
RECORDS_PER_SECOND = 10
|
34
35
|
INDEX_NAME = 21
|
35
36
|
INDEX_RANGE = 22
|
36
37
|
INDEX_FILTER = 23
|
@@ -43,6 +44,7 @@ module Aerospike
|
|
43
44
|
UDF_OP = 33
|
44
45
|
QUERY_BINLIST = 40
|
45
46
|
BATCH_INDEX = 41
|
47
|
+
PREDEXP = 43
|
46
48
|
|
47
49
|
end # module
|
48
50
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2014-
|
1
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
2
2
|
#
|
3
3
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
4
4
|
# license agreements.
|
@@ -29,21 +29,57 @@ module Aerospike
|
|
29
29
|
@valid = true
|
30
30
|
@mutex = Mutex.new
|
31
31
|
|
32
|
+
@compressed_data_buffer = nil
|
33
|
+
@compressed_data_offset = nil
|
34
|
+
|
32
35
|
self
|
33
36
|
end
|
34
37
|
|
38
|
+
def get_node
|
39
|
+
@node
|
40
|
+
end
|
41
|
+
|
35
42
|
def parse_result
|
36
43
|
# Read socket into receive buffer one record at a time. Do not read entire receive size
|
37
44
|
# because the receive buffer would be too big.
|
38
45
|
status = true
|
39
46
|
|
40
47
|
while status
|
48
|
+
@data_offset = 0
|
49
|
+
@compressed_data_buffer = nil
|
50
|
+
|
41
51
|
# Read header.
|
42
52
|
read_bytes(8)
|
43
53
|
|
44
54
|
size = @data_buffer.read_int64(0)
|
45
55
|
receive_size = size & 0xFFFFFFFFFFFF
|
46
56
|
|
57
|
+
# inflate if compressed
|
58
|
+
compressed_sz = compressed_size
|
59
|
+
if compressed_sz
|
60
|
+
begin
|
61
|
+
# read compressed msg header
|
62
|
+
@conn.read(@data_buffer, 8)
|
63
|
+
|
64
|
+
# read compressed message
|
65
|
+
@conn.read(@data_buffer, compressed_sz - 8)
|
66
|
+
|
67
|
+
# inflate the results
|
68
|
+
# TODO: reuse the current buffer
|
69
|
+
uncompressed = Zlib::inflate(@data_buffer.buf)
|
70
|
+
receive_size = uncompressed.size - 8
|
71
|
+
|
72
|
+
@compressed_data_buffer = Buffer.new(-1, uncompressed)
|
73
|
+
@compressed_data_offset = 0
|
74
|
+
|
75
|
+
# waste the first 8 header bytes
|
76
|
+
@compressed_data_buffer.eat!(8)
|
77
|
+
rescue => e
|
78
|
+
Aerospike.logger.error("parse result error: #{e}")
|
79
|
+
raise e
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
47
83
|
if receive_size > 0
|
48
84
|
status = parse_group(receive_size)
|
49
85
|
else
|
@@ -59,10 +95,13 @@ module Aerospike
|
|
59
95
|
read_bytes(MSG_REMAINING_HEADER_SIZE)
|
60
96
|
result_code = @data_buffer.read(5).ord & 0xFF
|
61
97
|
|
62
|
-
# The only valid server return codes are "ok"
|
98
|
+
# The only valid server return codes are "ok", "not found" and "filtered out".
|
63
99
|
# If other return codes are received, then abort the batch.
|
64
|
-
if result_code != 0
|
65
|
-
|
100
|
+
if result_code != 0
|
101
|
+
if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR || result_code == Aerospike::ResultCode::FILTERED_OUT
|
102
|
+
else
|
103
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
104
|
+
end
|
66
105
|
end
|
67
106
|
|
68
107
|
# If cmd is the end marker of the response, do not proceed further
|
@@ -150,7 +189,13 @@ module Aerospike
|
|
150
189
|
@data_buffer = Buffer.new(length)
|
151
190
|
end
|
152
191
|
|
153
|
-
|
192
|
+
if compressed?
|
193
|
+
@data_buffer.write_binary(@compressed_data_buffer.buf[@compressed_data_offset...@compressed_data_offset+length], 0)
|
194
|
+
@compressed_data_offset += length
|
195
|
+
else
|
196
|
+
@conn.read(@data_buffer, length)
|
197
|
+
end
|
198
|
+
|
154
199
|
@data_offset += length
|
155
200
|
end
|
156
201
|
|
@@ -169,6 +214,11 @@ module Aerospike
|
|
169
214
|
res
|
170
215
|
end
|
171
216
|
|
217
|
+
def compressed?
|
218
|
+
@compressed_data_buffer != nil
|
219
|
+
end
|
220
|
+
|
221
|
+
|
172
222
|
end # class
|
173
223
|
|
174
224
|
end # module
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
3
3
|
#
|
4
4
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
5
5
|
# license agreements.
|
@@ -28,6 +28,11 @@ module Aerospike
|
|
28
28
|
@operations = operations
|
29
29
|
end
|
30
30
|
|
31
|
+
def get_node
|
32
|
+
@cluster.master_node(@partition)
|
33
|
+
end
|
34
|
+
|
35
|
+
|
31
36
|
def write_bins
|
32
37
|
@operations.select{|op| op.op_type == Aerospike::Operation::WRITE}.map(&:bin).compact
|
33
38
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright 2014-
|
3
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
4
4
|
#
|
5
5
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
6
6
|
# license agreements.
|
@@ -15,6 +15,8 @@
|
|
15
15
|
# License for the specific language governing permissions and limitations under
|
16
16
|
# the License.
|
17
17
|
|
18
|
+
require 'zlib'
|
19
|
+
|
18
20
|
require 'aerospike/record'
|
19
21
|
|
20
22
|
require 'aerospike/command/single_command'
|
@@ -39,6 +41,10 @@ module Aerospike
|
|
39
41
|
self
|
40
42
|
end
|
41
43
|
|
44
|
+
def get_node
|
45
|
+
@cluster.read_node(@partition, @policy.replica, @sequence)
|
46
|
+
end
|
47
|
+
|
42
48
|
def write_buffer
|
43
49
|
set_read(@policy, @key, @bin_names)
|
44
50
|
end
|
@@ -46,12 +52,40 @@ module Aerospike
|
|
46
52
|
def parse_result
|
47
53
|
# Read header.
|
48
54
|
begin
|
49
|
-
@conn.read(@data_buffer,
|
55
|
+
@conn.read(@data_buffer, 8)
|
50
56
|
rescue => e
|
51
57
|
Aerospike.logger.error("parse result error: #{e}")
|
52
58
|
raise e
|
53
59
|
end
|
54
60
|
|
61
|
+
# inflate if compressed
|
62
|
+
compressed_sz = compressed_size
|
63
|
+
if compressed_sz
|
64
|
+
begin
|
65
|
+
# waste 8 size bytes
|
66
|
+
@conn.read(@data_buffer, 8)
|
67
|
+
|
68
|
+
# read compressed message
|
69
|
+
@conn.read(@data_buffer, compressed_sz - 8)
|
70
|
+
|
71
|
+
# inflate the results
|
72
|
+
# TODO: reuse the current buffer
|
73
|
+
uncompressed = Zlib::inflate(@data_buffer.buf)
|
74
|
+
|
75
|
+
@data_buffer = Buffer.new(-1, uncompressed)
|
76
|
+
rescue => e
|
77
|
+
Aerospike.logger.error("parse result error: #{e}")
|
78
|
+
raise e
|
79
|
+
end
|
80
|
+
else
|
81
|
+
begin
|
82
|
+
bytes_read = @conn.read(@data_buffer, MSG_TOTAL_HEADER_SIZE - 8, 8)
|
83
|
+
rescue => e
|
84
|
+
Aerospike.logger.error("parse result error: #{e}")
|
85
|
+
raise e
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
55
89
|
# A number of these are commented out because we just don't care enough to read
|
56
90
|
# that section of the header. If we do care, uncomment and check!
|
57
91
|
sz = @data_buffer.read_int64(0)
|
@@ -64,7 +98,9 @@ module Aerospike
|
|
64
98
|
receive_size = (sz & 0xFFFFFFFFFFFF) - header_length
|
65
99
|
|
66
100
|
# Read remaining message bytes.
|
67
|
-
if
|
101
|
+
if compressed_sz
|
102
|
+
@data_buffer.eat!(MSG_TOTAL_HEADER_SIZE)
|
103
|
+
elsif receive_size > 0
|
68
104
|
size_buffer_sz(receive_size)
|
69
105
|
|
70
106
|
begin
|
@@ -76,29 +112,36 @@ module Aerospike
|
|
76
112
|
|
77
113
|
end
|
78
114
|
|
79
|
-
if result_code
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
begin
|
84
|
-
@record = parse_record(op_count, field_count, generation, expiration)
|
85
|
-
handle_udf_error(result_code)
|
86
|
-
rescue => e
|
87
|
-
Aerospike.logger.error("UDF execution error: #{e}")
|
88
|
-
raise e
|
89
|
-
end
|
90
|
-
|
115
|
+
if result_code == 0
|
116
|
+
if op_count == 0
|
117
|
+
@record = Record.new(@node, @key, nil, generation, expiration)
|
118
|
+
return
|
91
119
|
end
|
92
|
-
|
93
|
-
|
120
|
+
|
121
|
+
@record = parse_record(op_count, field_count, generation, expiration)
|
122
|
+
return
|
94
123
|
end
|
95
124
|
|
96
|
-
if
|
97
|
-
|
125
|
+
return nil if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR
|
126
|
+
|
127
|
+
if result_code == Aerospike::ResultCode::FILTERED_OUT
|
128
|
+
if @policy.fail_on_filtered_out
|
129
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
130
|
+
end
|
98
131
|
return
|
99
132
|
end
|
100
133
|
|
101
|
-
|
134
|
+
if result_code == Aerospike::ResultCode::UDF_BAD_RESPONSE
|
135
|
+
begin
|
136
|
+
@record = parse_record(op_count, field_count, generation, expiration)
|
137
|
+
handle_udf_error(result_code)
|
138
|
+
rescue => e
|
139
|
+
Aerospike.logger.error("UDF execution error: #{e}")
|
140
|
+
raise e
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
102
145
|
end
|
103
146
|
|
104
147
|
def handle_udf_error(result_code)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
3
3
|
#
|
4
4
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
5
5
|
# license agreements.
|
@@ -33,6 +33,10 @@ module Aerospike
|
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
36
|
+
def get_node
|
37
|
+
@cluster.read_node(@partition, @policy.replica, @sequence)
|
38
|
+
end
|
39
|
+
|
36
40
|
def write_buffer
|
37
41
|
set_read_header(@policy, @key)
|
38
42
|
end
|
@@ -47,15 +51,23 @@ module Aerospike
|
|
47
51
|
generation = @data_buffer.read_int32(14)
|
48
52
|
expiration = @data_buffer.read_int32(18)
|
49
53
|
@record = Record.new(@node, @key, nil, generation, expiration)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR
|
58
|
+
@record = nil
|
59
|
+
return
|
60
|
+
end
|
61
|
+
|
62
|
+
if result_code == Aerospike::ResultCode::FILTERED_OUT
|
63
|
+
@record = nil
|
64
|
+
if @policy.fail_on_filtered_out
|
54
65
|
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
55
66
|
end
|
67
|
+
return
|
56
68
|
end
|
57
69
|
|
58
|
-
|
70
|
+
raise Aerospike::Exceptions::Aerospike.new(result_code)
|
59
71
|
end
|
60
72
|
|
61
73
|
end # class
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2014-
|
1
|
+
# Copyright 2014-2020 Aerospike, Inc.
|
2
2
|
#
|
3
3
|
# Portions may be licensed to Aerospike, Inc. under one or more contributor
|
4
4
|
# license agreements.
|
@@ -27,12 +27,18 @@ module Aerospike
|
|
27
27
|
@cluster = cluster
|
28
28
|
@key = key
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
@partition = Partition.new_by_key(key)
|
31
|
+
|
32
|
+
super()
|
32
33
|
end
|
33
34
|
|
34
35
|
protected
|
35
36
|
|
37
|
+
def get_node
|
38
|
+
# abstract method
|
39
|
+
raise Aerospike::Exceptions::InvalidNode
|
40
|
+
end
|
41
|
+
|
36
42
|
def empty_socket
|
37
43
|
# There should not be any more bytes.
|
38
44
|
# Empty the socket to be safe.
|