QueryPolicy Class

Container object for policy attributes used in query operations.
Inheritance Hierarchy


Namespace:  Aerospike.Client
Assembly:  AerospikeClient (in AerospikeClient.dll) Version: (5.1.1)

public class QueryPolicy : Policy

The QueryPolicy type exposes the following members.


Public methodQueryPolicy
Default constructor.

Set maxRetries for non-aggregation queries with a null filter. All other queries are not retried.

The latest servers support retries on individual data partitions. This feature is useful when a cluster is migrating and partition(s) are missed or incomplete on the first query (with null filter) attempt.

If the first query attempt misses 2 of 4096 partitions, then only those 2 partitions are retried in the next query attempt from the last key digest received for each respective partition. A higher default maxRetries is used because it's wasteful to invalidate all query results because a single partition was missed.

Public methodQueryPolicy(QueryPolicy)
Copy query policy from another query policy.

Public methodSetTimeout
Create a single timeout by setting socketTimeout and totalTimeout to the same value.
(Inherited from Policy.)
Public methodSetTimeouts
Set socketTimeout and totalTimeout. If totalTimeout defined and socketTimeout greater than totalTimeout, set socketTimeout to totalTimeout.
(Inherited from Policy.)

Public fieldcompress
Use zlib compression on command buffers sent to the server and responses received from the server when the buffer size is greater than 128 bytes.

This option will increase cpu and memory usage (for extra compressed buffers), but decrease the size of data sent over the network.

Default: false

(Inherited from Policy.)
Public fieldfailOnClusterChange
Terminate query if cluster is in migration state. If the server supports partition queries or the query filter is null (scan), this field is ignored.

Default: false

Public fieldfailOnFilteredOut
Throw exception if filterExp is defined and that filter evaluates to false (transaction ignored). The AerospikeException will contain result code .

This field is not applicable to batch, scan or query commands.

Default: false

(Inherited from Policy.)
Public fieldCode examplefilterExp
Optional expression filter. If filterExp exists and evaluates to false, the transaction is ignored.

Default: null

(Inherited from Policy.)
Public fieldincludeBinData
Should bin data be retrieved. If false, only record digests (and user keys if stored on the server) are retrieved.

Default: true

Public fieldmaxConcurrentNodes
Maximum number of concurrent requests to server nodes at any point in time. If there are 16 nodes in the cluster and maxConcurrentNodes is 8, then queries will be made to 8 nodes in parallel. When a query completes, a new query will be issued until all 16 nodes have been queried.

Default: 0 (issue requests to all server nodes in parallel)

Public fieldmaxRecords Obsolete.
Approximate number of records to return to client. This number is divided by the number of nodes involved in the query. The actual number of records returned may be less than maxRecords if node record counts are small and unbalanced across nodes.

maxRecords is only supported when query filter is null. maxRecords exists here because query methods will convert into a scan when the query filter is null. maxRecords is ignored when the query contains a filter.

Default: 0 (do not limit record count)

Public fieldmaxRetries
Maximum number of retries before aborting the current transaction. The initial attempt is not counted as a retry.

If maxRetries is exceeded, the transaction will abort with AerospikeExceptionTimeout.

WARNING: Database writes that are not idempotent (such as Add()) should not be retried because the write operation may be performed multiple times if the client timed out previous transaction attempts. It's important to use a distinct WritePolicy for non-idempotent writes which sets maxRetries = 0;

Default for read: 2 (initial attempt + 2 retries = 3 attempts)

Default for write: 0 (no retries)

Default for partition scan or query with null filter: 5 (6 attempts. See ScanPolicy comments.)

No default for legacy scan/query. No retries are allowed for these commands.

(Inherited from Policy.)
Public fieldreadModeAP
Read policy for AP (availability) namespaces.

Default: ONE

(Inherited from Policy.)
Public fieldreadModeSC
Read policy for SC (strong consistency) namespaces.

Default: SESSION

(Inherited from Policy.)
Public fieldrecordParser
Alternate record parser.

Default: Use standard record parser.

(Inherited from Policy.)
Public fieldrecordQueueSize
Number of records to place in queue before blocking. Records received from multiple server nodes will be placed in a queue. A separate thread consumes these records in parallel. If the queue is full, the producer threads will block until records are consumed.

Default: 5000

Public fieldreplica
Replica algorithm used to determine the target node for a single record command. Scan and query are not affected by replica algorithms.


(Inherited from Policy.)
Public fieldsendKey
Send user defined key in addition to hash digest on both reads and writes. If the key is sent on a write, the key will be stored with the record on the server.

Default: false (do not send the user defined key)

(Inherited from Policy.)
Public fieldshortQuery
Is query expected to return less than 100 records. If true, the server will optimize the query for a small record set. This field is ignored for aggregation queries, background queries and server versions < 6.0.

Default: false

Public fieldsleepBetweenRetries
Milliseconds to sleep between retries. Enter zero to skip sleep. This field is ignored when maxRetries is zero. This field is also ignored in async mode.

The sleep only occurs on connection errors and server timeouts which suggest a node is down and the cluster is reforming. The sleep does not occur when the client's socketTimeout expires.

Reads do not have to sleep when a node goes down because the cluster does not shut out reads during cluster reformation. The default for reads is zero.

The default for writes is also zero because writes are not retried by default. Writes need to wait for the cluster to reform when a node goes down. Immediate write retries on node failure have been shown to consistently result in errors. If maxRetries is greater than zero on a write, then sleepBetweenRetries should be set high enough to allow the cluster to reform (>= 3000ms).

Default: 0 (do not sleep between retries)

(Inherited from Policy.)
Public fieldsocketTimeout
Socket idle timeout in milliseconds when processing a database command.

If socketTimeout is zero and totalTimeout is non-zero, then socketTimeout will be set to totalTimeout. If both socketTimeout and totalTimeout are non-zero and socketTimeout > totalTimeout, then socketTimeout will be set to totalTimeout. If both socketTimeout and totalTimeout are zero, then there will be no socket idle limit.

If socketTimeout is not zero and the socket has been idle for at least socketTimeout, both maxRetries and totalTimeout are checked. If maxRetries and totalTimeout are not exceeded, the transaction is retried.

For synchronous methods, socketTimeout is the socket SendTimeout and ReceiveTimeout. For asynchronous methods, the socketTimeout is implemented using the AsyncTimeoutQueue and socketTimeout is only used if totalTimeout is not defined.

Default: 30000ms

(Inherited from Policy.)
Public fieldtotalTimeout
Total transaction timeout in milliseconds.

The totalTimeout is tracked on the client and sent to the server along with the transaction in the wire protocol. The client will most likely timeout first, but the server also has the capability to timeout the transaction.

If totalTimeout is not zero and totalTimeout is reached before the transaction completes, the transaction will abort with AerospikeExceptionTimeout.

If totalTimeout is zero, there will be no total time limit.

Default: 0 (no time limit)

(Inherited from Policy.)
See Also