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 theSessionPool 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

getavailable():number;

Total number of available sessions. {number}

Property Value
TypeDescription
number

borrowed

getborrowed():number;

Total number of borrowed sessions. {number}

Property Value
TypeDescription
number

currentWriteFraction

getcurrentWriteFraction():number;

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

Property Value
TypeDescription
number

database

database:Database;
Property Value
TypeDescription
Database

isFull

getisFull():boolean;

Flag to determine if Pool is full. {boolean}

Property Value
TypeDescription
boolean

isOpen

isOpen:boolean;
Property Value
TypeDescription
boolean

numReadWaiters

getnumReadWaiters():number;

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

Property Value
TypeDescription
number

numWriteWaiters

getnumWriteWaiters():number;

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

Property Value
TypeDescription
number

options

options:SessionPoolOptions;
Property Value
TypeDescription
SessionPoolOptions

pendingPrepare

getpendingPrepare():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

getreads():number;

Total number of read sessions. {number}

Property Value
TypeDescription
number

size

getsize():number;

Total size of pool. {number}

Property Value
TypeDescription
number

totalPending

gettotalPending():number;

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

Property Value
TypeDescription
number

totalWaiters

gettotalWaiters():number;

Sum of read and write waiters. {number}

Property Value
TypeDescription
number

writes

getwrites():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)

staticformatTrace(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

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-10-30 UTC.