Class SessionPool

Class used to manage connections to Spanner.

**You don't need to use this class directly, connections will be handled for you.**

{EventEmitter}

Inheritance

EventEmitter > SessionPool

Package

@google-cloud/spanner!

Constructors

(constructor)(database, options)

constructor(database: Database, options?: SessionPoolOptions);

Constructs a new instance of the SessionPool class

Parameters
TypeNameDescription
Databasedatabase

The DB instance.

SessionPoolOptionsoptions

Configuration options.

Properties

_acquires

_acquires: PQueue;
Property Value
TypeDescription
PQueue

_evictHandle

_evictHandle: NodeJS.Timer;
Property Value
TypeDescription
NodeJS.Timer

_inventory

_inventory: SessionInventory;
Property Value
TypeDescription
SessionInventory

_numInProcessPrepare

_numInProcessPrepare: number;
Property Value
TypeDescription
number

_onClose

_onClose: Promise<void>;
Property Value
TypeDescription
Promise<void>

_pending

_pending: number;
Property Value
TypeDescription
number

_pendingPrepare

_pendingPrepare: number;
Property Value
TypeDescription
number

_pingHandle

_pingHandle: NodeJS.Timer;
Property Value
TypeDescription
NodeJS.Timer

_requests

_requests: PQueue;
Property Value
TypeDescription
PQueue

_traces

_traces: Map<string, trace.StackFrame[]>;
Property Value
TypeDescription
Map<string, trace.StackFrame[]>

_waiters

_waiters: Waiters;
Property Value
TypeDescription
Waiters

available

get available(): number;

Total number of available sessions. {number}

Property Value
TypeDescription
number

borrowed

get borrowed(): number;

Total number of borrowed sessions. {number}

Property Value
TypeDescription
number

currentWriteFraction

get currentWriteFraction(): number;

Current fraction of write-prepared sessions in the pool. {number}

Property Value
TypeDescription
number

database

database: Database;
Property Value
TypeDescription
Database

isFull

get isFull(): boolean;

Flag to determine if Pool is full. {boolean}

Property Value
TypeDescription
boolean

isOpen

isOpen: boolean;
Property Value
TypeDescription
boolean

numReadWaiters

get numReadWaiters(): number;

Current number of waiters for a read-only session. {number}

Property Value
TypeDescription
number

numWriteWaiters

get numWriteWaiters(): number;

Current number of waiters for a read/write session. {number}

Property Value
TypeDescription
number

options

options: SessionPoolOptions;
Property Value
TypeDescription
SessionPoolOptions

pendingPrepare

get pendingPrepare(): number;

Number of sessions currently being prepared for a read/write transaction before being released into the pool. This number does not include the number of sessions being prepared for a read/write transaction that have already been checked out of the pool. {number}

Property Value
TypeDescription
number

reads

get reads(): number;

Total number of read sessions. {number}

Property Value
TypeDescription
number

size

get size(): number;

Total size of pool. {number}

Property Value
TypeDescription
number

totalPending

get totalPending(): number;

Number of sessions being created or prepared for a read/write transaction. {number}

Property Value
TypeDescription
number

totalWaiters

get totalWaiters(): number;

Sum of read and write waiters. {number}

Property Value
TypeDescription
number

writes

get writes(): number;

Total number of write sessions. {number}

Property Value
TypeDescription
number

Methods

_acquire(type)

_acquire(type: types): Promise<Session>;

Attempts to borrow a session from the pool.

Parameter
TypeNameDescription
typestype

The desired type to borrow.

Returns
TypeDescription
Promise<Session>

{Promise

_borrow(session)

_borrow(session: Session): void;

Moves a session into the borrowed group.

Parameter
TypeNameDescription
Sessionsession

The session object.

Returns
TypeDescription
void

_borrowFrom(type)

_borrowFrom(type: types): Session;

Borrows the first session from specific group. This method may only be called if the inventory actually contains a session of the desired type.

Parameter
TypeNameDescription
typestype

The desired session type. {Session}

Returns
TypeDescription
Session

_borrowNextAvailableSession(type)

_borrowNextAvailableSession(type: types): Session;

Grabs the next available session.

Parameter
TypeNameDescription
typestype

The desired session type.

Returns
TypeDescription
Session

{Promise

_createSession(type)

_createSession(type: types): Promise<void>;

Attempts to create a single session of a certain type.

Parameter
TypeNameDescription
typestype

The desired type to create.

Returns
TypeDescription
Promise<void>

{Promise}

_createSessions({ reads, writes, })

_createSessions({ reads, writes, }: CreateSessionsOptions): Promise<void>;

Batch creates sessions and prepares any necessary transactions.

Parameter
TypeNameDescription
CreateSessionsOptions{ reads, writes, }
Returns
TypeDescription
Promise<void>

{Promise} SessionPool#createError

_destroy(session)

_destroy(session: Session): Promise<void>;

Attempts to delete a session, optionally creating a new one of the same type if the pool is still open and we're under the configured min value.

SessoinPool#error

Parameter
TypeNameDescription
Sessionsession

The session to delete.

Returns
TypeDescription
Promise<void>

{Promise}

_evictIdleSessions()

_evictIdleSessions(): void;

Deletes idle sessions that exceed the maxIdle configuration.

Returns
TypeDescription
void

_fill()

_fill(): Promise<void>;

Fills the pool with the minimum number of sessions.

{Promise}

Returns
TypeDescription
Promise<void>

_getIdleSessions()

_getIdleSessions(): Session[];

Retrieves a list of all the idle sessions.

Returns
TypeDescription
Session[]

{Session[]}

_getLeaks()

_getLeaks(): string[];

Returns stack traces for sessions that have not been released.

{string[]}

Returns
TypeDescription
string[]

_getSession(type, startTime)

_getSession(type: types, startTime: number): Promise<Session>;

Attempts to get a session of a specific type. If the type is unavailable it may try to use a different type.

Parameters
TypeNameDescription
typestype

The desired session type.

numberstartTime

Timestamp to use when determining timeouts.

Returns
TypeDescription
Promise<Session>

{Promise

_hasSessionUsableFor(type)

_hasSessionUsableFor(type: types): boolean;

Returns true if the pool has a session that is usable for the specified type, i.e. if a read-only session is requested, it returns true if the pool has a read-only or a read/write session. If a read/write session is requested, the method only returns true if the pool has a read/write session available.

Parameter
TypeNameDescription
typestype

The type of session.

Returns
TypeDescription
boolean

_isValidSession(session)

_isValidSession(session: Session): boolean;

Checks to see whether or not session is expired.

Parameter
TypeNameDescription
Sessionsession

The session to check.

Returns
TypeDescription
boolean

{boolean}

_ping(session)

_ping(session: Session): Promise<void>;

Pings an individual session.

Parameter
TypeNameDescription
Sessionsession

The session to ping.

Returns
TypeDescription
Promise<void>

{Promise}

_pingIdleSessions()

_pingIdleSessions(): Promise<void>;

Makes a keep alive request to all the idle sessions.

Returns
TypeDescription
Promise<void>

{Promise}

_prepareTransaction(session)

_prepareTransaction(session: Session): Promise<void>;

Creates a transaction for a session.

Parameter
TypeNameDescription
Sessionsession

The session object.

Returns
TypeDescription
Promise<void>

{Promise}

_release(session)

_release(session: Session): void;

Releases a session back into the pool.

SessionPool#available SessionPool#readonly-available SessionPool#readwrite-available

Parameter
TypeNameDescription
Sessionsession

The session object.

Returns
TypeDescription
void

_startHouseKeeping()

_startHouseKeeping(): void;

Starts housekeeping (pinging/evicting) of idle sessions.

Returns
TypeDescription
void

_stopHouseKeeping()

_stopHouseKeeping(): void;

Stops housekeeping.

Returns
TypeDescription
void

close(callback)

close(callback: SessionPoolCloseCallback): void;

Closes and the pool.

SessionPool#close

Parameter
TypeNameDescription
SessionPoolCloseCallbackcallback

The callback function.

Returns
TypeDescription
void

formatTrace(frames)

static formatTrace(frames: trace.StackFrame[]): string;

Formats stack trace objects into Node-like stack trace.

Parameter
TypeNameDescription
trace.StackFrame[]frames
Returns
TypeDescription
string

getReadSession(callback)

getReadSession(callback: GetReadSessionCallback): void;

Retrieve a read session.

Parameter
TypeNameDescription
GetReadSessionCallbackcallback

The callback function.

Returns
TypeDescription
void

getWriteSession(callback)

getWriteSession(callback: GetWriteSessionCallback): void;

Retrieve a read/write session.

Parameter
TypeNameDescription
GetWriteSessionCallbackcallback

The callback function.

Returns
TypeDescription
void

open()

open(): void;

Opens the pool, filling it to the configured number of read and write sessions.

SessionPool#open {Promise}

Returns
TypeDescription
void

release(session)

release(session: Session): void;

Releases session back into the pool. If the session is a write session it will also prepare a new transaction before releasing it.

Parameter
TypeNameDescription
Sessionsession

The session to release.

Returns
TypeDescription
void