aerospike 2.12.0 → 2.13.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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/lib/aerospike.rb +3 -4
  4. data/lib/aerospike/aerospike_exception.rb +7 -1
  5. data/lib/aerospike/atomic/atomic.rb +1 -1
  6. data/lib/aerospike/bin.rb +1 -1
  7. data/lib/aerospike/cdt/list_operation.rb +1 -1
  8. data/lib/aerospike/cdt/map_operation.rb +1 -1
  9. data/lib/aerospike/cdt/map_order.rb +1 -1
  10. data/lib/aerospike/cdt/map_policy.rb +1 -1
  11. data/lib/aerospike/cdt/map_return_type.rb +1 -1
  12. data/lib/aerospike/cdt/map_write_mode.rb +1 -1
  13. data/lib/aerospike/client.rb +9 -9
  14. data/lib/aerospike/cluster.rb +92 -17
  15. data/lib/aerospike/cluster/partition.rb +1 -1
  16. data/lib/aerospike/cluster/partition_parser.rb +169 -0
  17. data/lib/aerospike/command/admin_command.rb +1 -1
  18. data/lib/aerospike/command/batch_direct_command.rb +1 -1
  19. data/lib/aerospike/command/batch_direct_exists_command.rb +1 -1
  20. data/lib/aerospike/command/batch_direct_node.rb +3 -3
  21. data/lib/aerospike/command/batch_index_node.rb +2 -2
  22. data/lib/aerospike/command/batch_item.rb +1 -1
  23. data/lib/aerospike/command/command.rb +21 -4
  24. data/lib/aerospike/command/delete_command.rb +5 -1
  25. data/lib/aerospike/command/execute_command.rb +1 -1
  26. data/lib/aerospike/command/exists_command.rb +5 -1
  27. data/lib/aerospike/command/field_type.rb +2 -1
  28. data/lib/aerospike/command/multi_command.rb +5 -1
  29. data/lib/aerospike/command/operate_command.rb +6 -1
  30. data/lib/aerospike/command/read_command.rb +5 -1
  31. data/lib/aerospike/command/read_header_command.rb +5 -1
  32. data/lib/aerospike/command/roles.rb +1 -1
  33. data/lib/aerospike/command/single_command.rb +9 -3
  34. data/lib/aerospike/command/touch_command.rb +5 -1
  35. data/lib/aerospike/command/unsupported_particle_type_validator.rb +1 -1
  36. data/lib/aerospike/command/write_command.rb +5 -1
  37. data/lib/aerospike/connection/create.rb +1 -1
  38. data/lib/aerospike/features.rb +1 -1
  39. data/lib/aerospike/geo_json.rb +1 -1
  40. data/lib/aerospike/host.rb +1 -1
  41. data/lib/aerospike/info.rb +1 -1
  42. data/lib/aerospike/key.rb +1 -1
  43. data/lib/aerospike/language.rb +1 -1
  44. data/lib/aerospike/node.rb +3 -6
  45. data/lib/aerospike/node/refresh/partitions.rb +6 -15
  46. data/lib/aerospike/node_validator.rb +4 -19
  47. data/lib/aerospike/operation.rb +1 -1
  48. data/lib/aerospike/policy/admin_policy.rb +1 -1
  49. data/lib/aerospike/policy/batch_policy.rb +1 -1
  50. data/lib/aerospike/policy/client_policy.rb +1 -1
  51. data/lib/aerospike/policy/commit_level.rb +1 -1
  52. data/lib/aerospike/policy/consistency_level.rb +1 -1
  53. data/lib/aerospike/policy/generation_policy.rb +1 -1
  54. data/lib/aerospike/policy/operate_policy.rb +1 -1
  55. data/lib/aerospike/policy/policy.rb +12 -3
  56. data/lib/aerospike/policy/priority.rb +1 -1
  57. data/lib/aerospike/policy/query_policy.rb +8 -1
  58. data/lib/aerospike/policy/record_bin_multiplicity.rb +1 -1
  59. data/lib/aerospike/policy/record_exists_action.rb +1 -1
  60. data/lib/aerospike/policy/replica.rb +38 -0
  61. data/lib/aerospike/policy/scan_policy.rb +8 -1
  62. data/lib/aerospike/policy/write_policy.rb +1 -1
  63. data/lib/aerospike/query/filter.rb +1 -1
  64. data/lib/aerospike/query/query_command.rb +10 -1
  65. data/lib/aerospike/query/recordset.rb +1 -1
  66. data/lib/aerospike/query/scan_command.rb +1 -1
  67. data/lib/aerospike/query/statement.rb +1 -1
  68. data/lib/aerospike/query/stream_command.rb +1 -1
  69. data/lib/aerospike/record.rb +1 -1
  70. data/lib/aerospike/result_code.rb +1 -1
  71. data/lib/aerospike/socket/base.rb +1 -1
  72. data/lib/aerospike/task/execute_task.rb +1 -1
  73. data/lib/aerospike/task/index_task.rb +1 -1
  74. data/lib/aerospike/task/task.rb +1 -1
  75. data/lib/aerospike/task/udf_register_task.rb +1 -1
  76. data/lib/aerospike/task/udf_remove_task.rb +1 -1
  77. data/lib/aerospike/ttl.rb +1 -1
  78. data/lib/aerospike/udf.rb +1 -1
  79. data/lib/aerospike/user_role.rb +1 -1
  80. data/lib/aerospike/utils/buffer.rb +1 -1
  81. data/lib/aerospike/utils/packer.rb +1 -1
  82. data/lib/aerospike/utils/pool.rb +1 -1
  83. data/lib/aerospike/utils/unpacker.rb +1 -1
  84. data/lib/aerospike/value/particle_type.rb +1 -1
  85. data/lib/aerospike/value/value.rb +1 -1
  86. data/lib/aerospike/version.rb +1 -1
  87. metadata +6 -6
  88. data/lib/aerospike/cluster/partition_tokenizer_new.rb +0 -130
  89. data/lib/aerospike/cluster/partition_tokenizer_old.rb +0 -135
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -19,13 +19,11 @@
19
19
 
20
20
  module Aerospike
21
21
  class NodeValidator # :nodoc:
22
- VERSION_REGEXP = /(?<v1>\d+)\.(?<v2>\d+)\.(?<v3>\d+).*/.freeze
23
22
 
24
- attr_reader :host, :aliases, :name, :use_new_info, :features, :cluster_name, :tls_options, :conn
23
+ attr_reader :host, :aliases, :name, :features, :cluster_name, :tls_options, :conn
25
24
 
26
25
  def initialize(cluster, host, timeout, cluster_name, tls_options = {})
27
26
  @cluster = cluster
28
- @use_new_info = true
29
27
  @features = Set.new
30
28
  @host = host
31
29
  @cluster_name = cluster_name
@@ -46,7 +44,7 @@ module Aerospike
46
44
  begin
47
45
  conn = Cluster::CreateConnection.(@cluster, Host.new(address, host.port, host.tls_name))
48
46
 
49
- commands = %w[node build features]
47
+ commands = %w[node features]
50
48
  commands << address_command unless is_loopback?(address)
51
49
 
52
50
  info_map = Info.request(conn, *commands)
@@ -58,16 +56,10 @@ module Aerospike
58
56
  if features = info_map['features']
59
57
  @features = features.split(';').to_set
60
58
  end
61
-
62
- # Check new info protocol support for >= 2.6.6 build
63
- if build_version = info_map['build']
64
- v1, v2, v3 = parse_version_string(build_version)
65
- @use_new_info = v1.to_i > 2 || (v1.to_i == 2 && (v2.to_i > 6 || (v2.to_i == 6 && v3.to_i >= 6)))
66
- end
67
59
  end
68
60
 
69
61
  unless is_loopback?(address)
70
- aliases = info_map[address_command].split(',').map { |address| get_alias(*address.split(':')) }
62
+ aliases = info_map[address_command].split(',').map { |addr| get_alias(*addr.split(':')) }
71
63
  end
72
64
  ensure
73
65
  conn.close if conn
@@ -103,12 +95,5 @@ module Aerospike
103
95
  !!((hostname =~ Resolv::IPv4::Regex) || (hostname =~ Resolv::IPv6::Regex))
104
96
  end
105
97
 
106
- def parse_version_string(version)
107
- if v = VERSION_REGEXP.match(version)
108
- return v['v1'], v['v2'], v['v3']
109
- end
110
-
111
- raise Aerospike::Exceptions::Parse.new("Invalid build version string in Info: #{version}")
112
- end
113
98
  end # class
114
99
  end # module
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,4 +1,4 @@
1
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2016-2017 Aerospike, Inc.
2
+ # Copyright 2016-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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.
@@ -15,6 +15,7 @@
15
15
 
16
16
  require 'aerospike/policy/priority'
17
17
  require 'aerospike/policy/consistency_level'
18
+ require 'aerospike/policy/replica'
18
19
 
19
20
 
20
21
  module Aerospike
@@ -23,7 +24,7 @@ module Aerospike
23
24
  class Policy
24
25
 
25
26
  attr_accessor :priority, :timeout, :max_retries, :sleep_between_retries, :consistency_level,
26
- :predexp, :fail_on_filtered_out
27
+ :predexp, :fail_on_filtered_out, :replica
27
28
 
28
29
  def initialize(opt={})
29
30
  # Container object for transaction policy attributes used in all database
@@ -82,7 +83,15 @@ module Aerospike
82
83
  # read operation.
83
84
  @consistency_level = opt[:consistency_level] || Aerospike::ConsistencyLevel::CONSISTENCY_ONE
84
85
 
85
- # Transaction timeout.
86
+
87
+ # Send read commands to the node containing the key's partition replica type.
88
+ # Write commands are not affected by this setting, because all writes are directed
89
+ # to the node containing the key's master partition.
90
+ #
91
+ # Default to sending read commands to the node containing the key's master partition.
92
+ @replica = opt[:replica] || Aerospike::Replica::MASTER;
93
+
94
+ # Transaction timeout.
86
95
  # This timeout is used to set the socket timeout and is also sent to the
87
96
  # server along with the transaction in the wire protocol.
88
97
  # Default to no timeout (0).
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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,4 +1,4 @@
1
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -24,6 +24,7 @@ module Aerospike
24
24
 
25
25
  attr_accessor :include_bin_data
26
26
  attr_accessor :record_queue_size
27
+ attr_accessor :records_per_second
27
28
 
28
29
  def initialize(opt={})
29
30
  super(opt)
@@ -42,6 +43,12 @@ module Aerospike
42
43
  # Default is 5000.
43
44
  @record_queue_size = opt[:record_queue_size] || 5000
44
45
 
46
+ # Limit returned records per second (rps) rate for each server.
47
+ # Will not apply rps limit if records_per_second is zero.
48
+ # Currently only applicable to a query without a defined filter (scan).
49
+ # Default is 0
50
+ @records_per_second = opt[:records_per_second] || 0
51
+
45
52
  self
46
53
  end
47
54
 
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2016-2017 Aerospike, Inc.
2
+ # Copyright 2016-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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.
@@ -0,0 +1,38 @@
1
+ # encoding: utf-8
2
+ # Copyright 2014-2020 Aerospike, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http:#www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ module Aerospike
17
+
18
+ module Replica
19
+
20
+ # Read from node containing key's master partition. This is the default behavior.
21
+ MASTER = 0
22
+
23
+ # Distribute reads across nodes containing key's master and replicated partitions
24
+ # in round-robin fashion.
25
+ MASTER_PROLES = 1
26
+
27
+ # Always try node containing master partition first. If connection fails and
28
+ # Policy#retryOnTimeout is true, try nodes containing prole partition.
29
+ SEQUENCE = 2
30
+
31
+ # Distribute reads across all nodes in cluster in round-robin fashion.
32
+ # This option is useful when the replication factor equals the number
33
+ # of nodes in the cluster and the overhead of requesting proles is not desired.
34
+ RANDOM = 4
35
+
36
+ end # module
37
+
38
+ end # module
@@ -1,4 +1,4 @@
1
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -28,6 +28,7 @@ module Aerospike
28
28
  attr_accessor :fail_on_cluster_change
29
29
  attr_accessor :socket_timeout
30
30
  attr_accessor :record_queue_size
31
+ attr_accessor :records_per_second
31
32
 
32
33
  def initialize(opt={})
33
34
  super(opt)
@@ -59,6 +60,12 @@ module Aerospike
59
60
  # Default is 5000.
60
61
  @record_queue_size = opt[:record_queue_size] || 5000
61
62
 
63
+ # Limit returned records per second (rps) rate for each server.
64
+ # Will not apply rps limit if records_per_second is zero.
65
+ # Currently only applicable to a query without a defined filter (scan).
66
+ # Default is 0
67
+ @records_per_second = opt[:records_per_second] || 0
68
+
62
69
  self
63
70
  end
64
71
 
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
2
+ # Copyright 2014-2020 Aerospike, 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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -82,6 +82,11 @@ module Aerospike
82
82
  fieldCount+=1
83
83
  end
84
84
  else
85
+ if @policy.records_per_second > 0
86
+ @data_offset += 4 + FIELD_HEADER_SIZE
87
+ fieldCount += 1
88
+ end
89
+
85
90
  # Calling query with no filters is more efficiently handled by a primary index scan.
86
91
  # Estimate scan options size.
87
92
  @data_offset += (2 + FIELD_HEADER_SIZE)
@@ -172,6 +177,10 @@ module Aerospike
172
177
  end
173
178
  end
174
179
  else
180
+ if @policy.records_per_second > 0
181
+ write_field_int(@policy.records_per_second, Aerospike::FieldType::RECORDS_PER_SECOND)
182
+ end
183
+
175
184
  # Calling query with no filters is more efficiently handled by a primary index scan.
176
185
  write_field_header(2, Aerospike::FieldType::SCAN_OPTIONS)
177
186
  priority = @policy.priority.ord
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,4 +1,4 @@
1
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -1,4 +1,4 @@
1
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright 2014-2018 Aerospike, Inc.
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.
@@ -1,4 +1,4 @@
1
- # Copyright 2013-2017 Aerospike, Inc.
1
+ # Copyright 2013-2020 Aerospike, Inc.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2016-2017 Aerospike, Inc.
2
+ # Copyright 2016-2020 Aerospike, Inc.
3
3
  #
4
4
  # Portions may be licensed to Aerospike, Inc. under one or more contributor
5
5
  # license agreements.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- # Copyright 2014-2017 Aerospike, Inc.
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.
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- # Copyright 2014-2018 Aerospike, Inc.
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.