aerospike 2.27.0 → 2.29.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 +11 -0
- data/lib/aerospike/client.rb +7 -0
- data/lib/aerospike/cluster.rb +9 -8
- data/lib/aerospike/node.rb +12 -1
- data/lib/aerospike/policy/client_policy.rb +21 -1
- data/lib/aerospike/policy/policy.rb +4 -2
- data/lib/aerospike/policy/priority.rb +5 -1
- data/lib/aerospike/policy/scan_policy.rb +8 -3
- data/lib/aerospike/utils/pool.rb +1 -1
- data/lib/aerospike/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5f1927589fab415975f46da19cfc0de4dc00285abe0627f0472d1e8aa27f5c9
|
4
|
+
data.tar.gz: e8245b120f0f78882e6dba592169434372eaa99032b6542167c7a46296c2bff9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3915a6e8d1c82ddf1bdf80b66dcea019270f057b166071a24c1c52419afe9d69aeb97b10210fea58abd011ed4ddef89466823a06fbb807290899f010465314f2
|
7
|
+
data.tar.gz: 54c1776cece8e96ec07c75d0860aa2047f096352b2e329785e29c8317d4df7b856388d8fe4aeb506774fadc4fdee54f5e0eae7696ff294189ad9e54b7fe13c7a
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## [2.29.0] 2023-08-24
|
6
|
+
- **Updates**
|
7
|
+
- [CLIENT-2526] Support for set quota for user defined roles
|
8
|
+
|
9
|
+
## [2.28.0] 2023-06-23
|
10
|
+
- **New Features**
|
11
|
+
- [CLIENT-1432] Support minimum connections in connection pools
|
12
|
+
|
13
|
+
- **Updates**
|
14
|
+
- [CLIENT-1529] Removed Policy.priority, ScanPolicy.scanPercent and ScanPolicy.failOnClusterChange
|
15
|
+
|
5
16
|
## [2.27.0] 2023-05-18
|
6
17
|
- **New Features**
|
7
18
|
- [CLIENT-1176] Support write operations in background query
|
data/lib/aerospike/client.rb
CHANGED
@@ -894,6 +894,13 @@ module Aerospike
|
|
894
894
|
command.revoke_privileges(@cluster, policy, role_name, privileges)
|
895
895
|
end
|
896
896
|
|
897
|
+
# Set or update quota for a role.
|
898
|
+
def set_quotas(role_name, read_quota, write_quota, options = nil)
|
899
|
+
policy = create_policy(options, AdminPolicy, default_admin_policy)
|
900
|
+
command = AdminCommand.new
|
901
|
+
command.set_quotas(@cluster, policy, role_name, read_quota, write_quota)
|
902
|
+
end
|
903
|
+
|
897
904
|
private
|
898
905
|
|
899
906
|
def set_default_policies(policies)
|
data/lib/aerospike/cluster.rb
CHANGED
@@ -23,13 +23,8 @@ require 'aerospike/atomic/atomic'
|
|
23
23
|
|
24
24
|
module Aerospike
|
25
25
|
class Cluster
|
26
|
-
attr_reader :connection_timeout, :connection_queue_size, :user, :password
|
27
|
-
|
28
|
-
attr_reader :cluster_id, :aliases
|
29
|
-
attr_reader :cluster_name
|
30
|
-
attr_reader :client_policy
|
31
|
-
attr_accessor :rack_aware, :rack_id
|
32
|
-
attr_accessor :session_token, :session_expiration
|
26
|
+
attr_reader :connection_timeout, :connection_queue_size, :user, :password, :features, :tls_options, :cluster_id, :aliases, :cluster_name, :client_policy
|
27
|
+
attr_accessor :rack_aware, :rack_id, :session_token, :session_expiration
|
33
28
|
|
34
29
|
def initialize(policy, hosts)
|
35
30
|
@client_policy = policy
|
@@ -63,6 +58,10 @@ module Aerospike
|
|
63
58
|
end
|
64
59
|
|
65
60
|
initialize_tls_host_names(hosts) if tls_enabled?
|
61
|
+
|
62
|
+
if policy.min_connections_per_node > policy.max_connections_per_node
|
63
|
+
raise Aerospike::Exceptions::Aerospike.new(Aerospike::ResultCode::PARAMETER_ERROR, "Invalid policy configuration: Minimum connections per node cannot be greater than maximum connections per node.")
|
64
|
+
end
|
66
65
|
end
|
67
66
|
|
68
67
|
def connect
|
@@ -584,7 +583,9 @@ module Aerospike
|
|
584
583
|
end
|
585
584
|
|
586
585
|
def create_node(nv)
|
587
|
-
::Aerospike::Node.new(self, nv)
|
586
|
+
node = ::Aerospike::Node.new(self, nv)
|
587
|
+
node.fill_connection_pool_up_to(@client_policy.min_connections_per_node)
|
588
|
+
node
|
588
589
|
end
|
589
590
|
|
590
591
|
def create_connection(host)
|
data/lib/aerospike/node.rb
CHANGED
@@ -22,7 +22,7 @@ require 'aerospike/atomic/atomic'
|
|
22
22
|
module Aerospike
|
23
23
|
class Node
|
24
24
|
|
25
|
-
attr_reader :reference_count, :responded, :name, :features, :cluster_name, :partition_generation, :rebalance_generation, :peers_generation, :failures, :cluster, :peers_count, :host
|
25
|
+
attr_reader :reference_count, :responded, :name, :features, :cluster_name, :partition_generation, :rebalance_generation, :peers_generation, :failures, :cluster, :peers_count, :host, :connections
|
26
26
|
|
27
27
|
PARTITIONS = 4096
|
28
28
|
FULL_HEALTH = 100
|
@@ -69,6 +69,17 @@ module Aerospike
|
|
69
69
|
racks[ns] == rack_id
|
70
70
|
end
|
71
71
|
|
72
|
+
def fill_connection_pool_up_to(min_connection_size)
|
73
|
+
current_number_of_connections = @connections.length
|
74
|
+
if min_connection_size > 0
|
75
|
+
while current_number_of_connections < min_connection_size
|
76
|
+
conn = @connections.create
|
77
|
+
@connections.offer(conn)
|
78
|
+
current_number_of_connections += 1
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
72
83
|
# Get a connection to the node. If no cached connection is not available,
|
73
84
|
# a new connection will be created
|
74
85
|
def get_connection(timeout)
|
@@ -23,7 +23,7 @@ module Aerospike
|
|
23
23
|
class ClientPolicy
|
24
24
|
|
25
25
|
attr_accessor :user, :password, :auth_mode
|
26
|
-
attr_accessor :timeout, :connection_queue_size, :fail_if_not_connected, :tend_interval
|
26
|
+
attr_accessor :timeout, :connection_queue_size, :fail_if_not_connected, :tend_interval, :max_connections_per_node, :min_connections_per_node
|
27
27
|
attr_accessor :cluster_name
|
28
28
|
attr_accessor :tls
|
29
29
|
attr_accessor :policies
|
@@ -74,6 +74,26 @@ module Aerospike
|
|
74
74
|
# ClientPolicy#rack_aware, Replica#PREFER_RACK and server rack
|
75
75
|
# configuration must also be set to enable this functionality.
|
76
76
|
@rack_id = opt[:rack_id] || 0
|
77
|
+
|
78
|
+
# Maximum number of synchronous connections allowed per server node. Transactions will go
|
79
|
+
# through retry logic and potentially fail with "ResultCode.NO_MORE_CONNECTIONS" if the maximum
|
80
|
+
# number of connections would be exceeded.
|
81
|
+
# The number of connections used per node depends on concurrent commands in progress
|
82
|
+
# plus sub-commands used for parallel multi-node commands (batch, scan, and query).
|
83
|
+
# One connection will be used for each command.
|
84
|
+
# Default: 100
|
85
|
+
@max_connections_per_node = opt[:max_connections_per_node] || 100
|
86
|
+
|
87
|
+
# MinConnectionsPerNode specifies the minimum number of synchronous connections allowed per server node.
|
88
|
+
# Preallocate min connections on client node creation.
|
89
|
+
# The client will periodically allocate new connections if count falls below min connections.
|
90
|
+
#
|
91
|
+
# Server proto-fd-idle-ms may also need to be increased substantially if min connections are defined.
|
92
|
+
# The proto-fd-idle-ms default directs the server to close connections that are idle for 60 seconds
|
93
|
+
# which can defeat the purpose of keeping connections in reserve for a future burst of activity.
|
94
|
+
#
|
95
|
+
# Default: 0
|
96
|
+
@min_connections_per_node = opt[:min_connections_per_node] || 0
|
77
97
|
end
|
78
98
|
|
79
99
|
def requires_authentication
|
@@ -51,8 +51,10 @@ module Aerospike
|
|
51
51
|
# Default: false
|
52
52
|
@fail_on_filtered_out = opt[:fail_on_filtered_out] || false
|
53
53
|
|
54
|
-
#
|
55
|
-
#
|
54
|
+
# [:nodoc:]
|
55
|
+
# DEPRECATED
|
56
|
+
# The Aerospike server does not support this policy anymore
|
57
|
+
# TODO: Remove for next major release
|
56
58
|
@priority = opt[:priority] || Priority::DEFAULT
|
57
59
|
|
58
60
|
# Set optional predicate expression filters in postfix notation.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# Copyright 2014-
|
2
|
+
# Copyright 2014-2023 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.
|
@@ -13,6 +13,10 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
|
+
|
17
|
+
#[:nodoc:]
|
18
|
+
# DEPRECATED
|
19
|
+
# TODO: Remove this module on the next major release
|
16
20
|
module Aerospike
|
17
21
|
|
18
22
|
module Priority
|
@@ -48,7 +48,10 @@ module Aerospike
|
|
48
48
|
# Default is 100.
|
49
49
|
@scan_percent = opt[:scan_percent] || 100
|
50
50
|
|
51
|
-
#
|
51
|
+
# [:nodoc:]
|
52
|
+
# DEPRECATED
|
53
|
+
# The Aerospike server does not support this policy anymore
|
54
|
+
# TODO: Remove for next major release
|
52
55
|
@concurrent_nodes = opt.fetch(:concurrent_nodes) { true }
|
53
56
|
|
54
57
|
# Indicates if bin data is retrieved. If false, only record digests (and
|
@@ -56,8 +59,10 @@ module Aerospike
|
|
56
59
|
# Default is true.
|
57
60
|
@include_bin_data = opt.fetch(:include_bin_data) { true }
|
58
61
|
|
59
|
-
#
|
60
|
-
#
|
62
|
+
# [:nodoc:]
|
63
|
+
# DEPRECATED
|
64
|
+
# The Aerospike server does not support this policy anymore
|
65
|
+
# TODO: Remove for next major release
|
61
66
|
@fail_on_cluster_change = opt.fetch(:fail_on_cluster_change) { true }
|
62
67
|
|
63
68
|
# Determines network timeout for each attempt.
|
data/lib/aerospike/utils/pool.rb
CHANGED
data/lib/aerospike/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aerospike
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Khosrow Afroozeh
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-08-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: msgpack
|