Loading...
Searching...
No Matches
Data Structures | Macros | Functions
as_node.h File Reference
#include <aerospike/as_atomic.h>
#include <aerospike/as_config.h>
#include <aerospike/as_conn_pool.h>
#include <aerospike/as_error.h>
#include <aerospike/as_event.h>
#include <aerospike/as_latency.h>
#include <aerospike/as_socket.h>
#include <aerospike/as_partition.h>
#include <aerospike/as_queue.h>
#include <aerospike/as_vector.h>
#include <netinet/in.h>
#include <sys/uio.h>
+ Include dependency graph for as_node.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  as_address
 
struct  as_alias
 
struct  as_async_conn_pool
 
struct  as_node
 
struct  as_node_info
 
struct  as_node_metrics
 
struct  as_rack
 
struct  as_racks
 
struct  as_session
 

Macros

#define AS_ADDRESS4_MAX   4
 
#define AS_ADDRESS6_MAX   8
 
#define AS_FEATURES_BATCH_ANY   (1 << 2)
 
#define AS_FEATURES_PARTITION_QUERY   (1 << 3)
 
#define AS_FEATURES_PARTITION_SCAN   (1 << 0)
 
#define AS_FEATURES_QUERY_SHOW   (1 << 1)
 
#define AS_HOSTNAME_SIZE   256
 
#define AS_NODE_NAME_MAX_SIZE   AS_NODE_NAME_SIZE
 
#define AS_NODE_NAME_SIZE   20
 

Functions

static bool as_host_equals (as_host *h1, as_host *h2)
 
void as_node_add_address (as_node *node, struct sockaddr *addr)
 
void as_node_add_alias (as_node *node, const char *hostname, uint16_t port)
 
static void as_node_add_error (as_node *node)
 
void as_node_add_latency (as_node *node, as_latency_type latency_type, uint64_t elapsed)
 
static void as_node_add_timeout (as_node *node)
 
as_status as_node_authenticate_connection (struct as_cluster_s *cluster, uint64_t deadline_ms)
 
void as_node_balance_connections (as_node *node)
 
static void as_node_close_connection (as_node *node, as_socket *sock, as_conn_pool *pool)
 
static void as_node_close_socket (as_node *node, as_socket *sock)
 
as_nodeas_node_create (struct as_cluster_s *cluster, as_node_info *node_info)
 
void as_node_create_min_connections (as_node *node)
 
static void as_node_deactivate (as_node *node)
 
AS_EXTERN void as_node_destroy (as_node *node)
 
void as_node_destroy_metrics (as_node *node)
 
void as_node_enable_metrics (as_node *node, const struct as_metrics_policy_s *policy)
 
static as_addressas_node_get_address (as_node *node)
 
static const char * as_node_get_address_string (as_node *node)
 
as_status as_node_get_connection (as_error *err, as_node *node, uint32_t socket_timeout, uint64_t deadline_ms, as_socket *sock)
 
static uint64_t as_node_get_error_count (as_node *node)
 
static uint64_t as_node_get_timeout_count (as_node *node)
 
bool as_node_has_rack (as_node *node, const char *ns, int rack_id)
 
static void as_node_info_destroy (as_node_info *node_info)
 
static bool as_node_is_active (const as_node *node)
 
static as_nodeas_node_load (as_node **node)
 
static void as_node_put_connection (as_node *node, as_socket *sock)
 
static void as_node_release (as_node *node)
 
void as_node_release_delayed (as_node *node)
 
static void as_node_reserve (as_node *node)
 
void as_node_signal_login (as_node *node)
 
static void as_node_store (as_node **trg, as_node *src)
 
static as_sessionas_session_load (as_session **session)
 
static void as_session_release (as_session *session)
 

Macro Definition Documentation

◆ AS_ADDRESS4_MAX

#define AS_ADDRESS4_MAX   4

Definition at line 61 of file as_node.h.

◆ AS_ADDRESS6_MAX

#define AS_ADDRESS6_MAX   8

Definition at line 62 of file as_node.h.

◆ AS_FEATURES_BATCH_ANY

#define AS_FEATURES_BATCH_ANY   (1 << 2)

Definition at line 58 of file as_node.h.

◆ AS_FEATURES_PARTITION_QUERY

#define AS_FEATURES_PARTITION_QUERY   (1 << 3)

Definition at line 59 of file as_node.h.

◆ AS_FEATURES_PARTITION_SCAN

#define AS_FEATURES_PARTITION_SCAN   (1 << 0)

Definition at line 56 of file as_node.h.

◆ AS_FEATURES_QUERY_SHOW

#define AS_FEATURES_QUERY_SHOW   (1 << 1)

Definition at line 57 of file as_node.h.

◆ AS_HOSTNAME_SIZE

#define AS_HOSTNAME_SIZE   256

Maximum size (including NULL byte) of a hostname.

Definition at line 46 of file as_node.h.

◆ AS_NODE_NAME_MAX_SIZE

#define AS_NODE_NAME_MAX_SIZE   AS_NODE_NAME_SIZE

Definition at line 54 of file as_node.h.

◆ AS_NODE_NAME_SIZE

#define AS_NODE_NAME_SIZE   20

Maximum size of node name

Definition at line 51 of file as_node.h.

Function Documentation

◆ as_host_equals()

static bool as_host_equals ( as_host * h1,
as_host * h2 )
inlinestaticprivate

Are hosts equal.

Definition at line 642 of file as_node.h.

References as_host::name, and as_host::port.

◆ as_node_add_address()

void as_node_add_address ( as_node * node,
struct sockaddr * addr )
private

Add socket address to node addresses.

◆ as_node_add_alias()

void as_node_add_alias ( as_node * node,
const char * hostname,
uint16_t port )
private

Add hostname to node aliases.

◆ as_node_add_error()

static void as_node_add_error ( as_node * node)
inlinestatic

Increment transaction error count. If the error is retryable, multiple errors per transaction may occur.

Definition at line 702 of file as_node.h.

References as_incr_uint64, and as_node::error_count.

◆ as_node_add_latency()

void as_node_add_latency ( as_node * node,
as_latency_type latency_type,
uint64_t elapsed )
private

Record latency of type latency_type for node

◆ as_node_add_timeout()

static void as_node_add_timeout ( as_node * node)
inlinestatic

Increment transaction timeout count. If the timeout is retryable (ie socketTimeout), multiple timeouts per transaction may occur.

Definition at line 721 of file as_node.h.

References as_incr_uint64, and as_node::timeout_count.

◆ as_node_authenticate_connection()

as_status as_node_authenticate_connection ( struct as_cluster_s * cluster,
uint64_t deadline_ms )
private

Attempt to authenticate given current cluster's user and password.

◆ as_node_balance_connections()

void as_node_balance_connections ( as_node * node)
private

Balance sync connections.

◆ as_node_close_connection()

static void as_node_close_connection ( as_node * node,
as_socket * sock,
as_conn_pool * pool )
inlinestaticprivate

Close a node's connection and update node/pool statistics.

Definition at line 593 of file as_node.h.

References as_conn_pool_decr(), as_incr_uint32, as_socket_close(), and as_node::sync_conns_closed.

◆ as_node_close_socket()

static void as_node_close_socket ( as_node * node,
as_socket * sock )
inlinestaticprivate

Close a node's connection and update node statistics.

Definition at line 605 of file as_node.h.

References as_incr_uint32, as_socket_close(), and as_node::sync_conns_closed.

◆ as_node_create()

as_node * as_node_create ( struct as_cluster_s * cluster,
as_node_info * node_info )
private

Create new cluster node.

◆ as_node_create_min_connections()

void as_node_create_min_connections ( as_node * node)
private

Create configured minimum number of connections.

◆ as_node_deactivate()

static void as_node_deactivate ( as_node * node)
inlinestaticprivate

Set node to inactive.

Definition at line 486 of file as_node.h.

References as_node::active, and as_store_uint8_rls.

◆ as_node_destroy()

AS_EXTERN void as_node_destroy ( as_node * node)
private

Close all connections in pool and free resources.

◆ as_node_destroy_metrics()

void as_node_destroy_metrics ( as_node * node)
private

Destroy node metrics.

◆ as_node_enable_metrics()

void as_node_enable_metrics ( as_node * node,
const struct as_metrics_policy_s * policy )
private

Enable metrics at the node level

◆ as_node_get_address()

static as_address * as_node_get_address ( as_node * node)
inlinestatic

Get primary socket address.

Definition at line 560 of file as_node.h.

References as_node::address_index, and as_node::addresses.

◆ as_node_get_address_string()

static const char * as_node_get_address_string ( as_node * node)
inlinestatic

Get socket address as a string.

Definition at line 569 of file as_node.h.

References as_node::address_index, as_node::addresses, and as_address::name.

◆ as_node_get_connection()

as_status as_node_get_connection ( as_error * err,
as_node * node,
uint32_t socket_timeout,
uint64_t deadline_ms,
as_socket * sock )
private

Get a connection to the given node from pool and validate. Return 0 on success.

◆ as_node_get_error_count()

static uint64_t as_node_get_error_count ( as_node * node)
inlinestatic

Return transaction error count. The value is cumulative and not reset per metrics interval.

Definition at line 692 of file as_node.h.

References as_load_uint64, and as_node::error_count.

◆ as_node_get_timeout_count()

static uint64_t as_node_get_timeout_count ( as_node * node)
inlinestatic

Return transaction timeout count. The value is cumulative and not reset per metrics interval.

Definition at line 711 of file as_node.h.

References as_load_uint64, and as_node::timeout_count.

◆ as_node_has_rack()

bool as_node_has_rack ( as_node * node,
const char * ns,
int rack_id )
private

Does node contain rack.

◆ as_node_info_destroy()

static void as_node_info_destroy ( as_node_info * node_info)
inlinestaticprivate

Destroy node_info contents.

Definition at line 652 of file as_node.h.

References as_socket_close(), as_node_info::session, and as_node_info::socket.

◆ as_node_is_active()

static bool as_node_is_active ( const as_node * node)
inlinestaticprivate

Check if node is active from a transaction thread.

Definition at line 476 of file as_node.h.

References as_node::active, and as_load_uint8_acq.

◆ as_node_load()

static as_node * as_node_load ( as_node ** node)
inlinestaticprivate

Read volatile node.

Definition at line 497 of file as_node.h.

References as_load_ptr.

◆ as_node_put_connection()

static void as_node_put_connection ( as_node * node,
as_socket * sock )
inlinestaticprivate

Put connection back into pool.

Definition at line 616 of file as_node.h.

References as_conn_pool_push_head(), as_node_close_connection(), as_socket::last_used, and as_socket::pool.

◆ as_node_release()

static void as_node_release ( as_node * node)
inlinestaticprivate

Release existing cluster node.

Definition at line 527 of file as_node.h.

References as_aaf_uint32_rls, as_fence_acq, as_node_destroy(), and as_node::ref_count.

◆ as_node_release_delayed()

void as_node_release_delayed ( as_node * node)
private

Release node on next cluster tend iteration.

◆ as_node_reserve()

static void as_node_reserve ( as_node * node)
inlinestaticprivate

Reserve existing cluster node.

Definition at line 507 of file as_node.h.

References as_incr_uint32, and as_node::ref_count.

◆ as_node_signal_login()

void as_node_signal_login ( as_node * node)
private

Tell tend thread to perform another node login.

◆ as_node_store()

static void as_node_store ( as_node ** trg,
as_node * src )
inlinestaticprivate

Set volatile node.

Definition at line 517 of file as_node.h.

References as_store_ptr_rls.

◆ as_session_load()

static as_session * as_session_load ( as_session ** session)
inlinestaticprivate

Volatile read session pointer.

Definition at line 731 of file as_node.h.

References as_load_ptr.

◆ as_session_release()

static void as_session_release ( as_session * session)
inlinestaticprivate

Release existing session.

Definition at line 741 of file as_node.h.

References as_aaf_uint32_rls, and as_session::ref_count.