Class SessionPool Stay organized with collections Save and categorize content based on your preferences.
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 >SessionPoolPackage
@google-cloud/spanner!Constructors
(constructor)(database, options)
constructor(database:Database,options?:SessionPoolOptions);Constructs a new instance of theSessionPool class
| Type | Name | Description |
|---|---|---|
| Database | database | The DB instance. |
| SessionPoolOptions | options | Configuration options. |
Properties
_acquires
_acquires:PQueue;| Type | Description |
|---|---|
| PQueue |
_evictHandle
_evictHandle:NodeJS.Timer;| Type | Description |
|---|---|
| NodeJS.Timer |
_inventory
_inventory:SessionInventory;| Type | Description |
|---|---|
| SessionInventory |
_numInProcessPrepare
_numInProcessPrepare:number;| Type | Description |
|---|---|
| number |
_onClose
_onClose:Promise<void>;| Type | Description |
|---|---|
| Promise<void> |
_pending
_pending:number;| Type | Description |
|---|---|
| number |
_pendingPrepare
_pendingPrepare:number;| Type | Description |
|---|---|
| number |
_pingHandle
_pingHandle:NodeJS.Timer;| Type | Description |
|---|---|
| NodeJS.Timer |
_requests
_requests:PQueue;| Type | Description |
|---|---|
| PQueue |
_traces
_traces:Map<string,trace.StackFrame[]>;| Type | Description |
|---|---|
| Map<string, trace.StackFrame[]> |
_waiters
_waiters:Waiters;| Type | Description |
|---|---|
| Waiters |
available
getavailable():number;Total number of available sessions. {number}
| Type | Description |
|---|---|
| number |
borrowed
getborrowed():number;Total number of borrowed sessions. {number}
| Type | Description |
|---|---|
| number |
currentWriteFraction
getcurrentWriteFraction():number;Current fraction of write-prepared sessions in the pool. {number}
| Type | Description |
|---|---|
| number |
database
database:Database;| Type | Description |
|---|---|
| Database |
isFull
getisFull():boolean;Flag to determine if Pool is full. {boolean}
| Type | Description |
|---|---|
| boolean |
isOpen
isOpen:boolean;| Type | Description |
|---|---|
| boolean |
numReadWaiters
getnumReadWaiters():number;Current number of waiters for a read-only session. {number}
| Type | Description |
|---|---|
| number |
numWriteWaiters
getnumWriteWaiters():number;Current number of waiters for a read/write session. {number}
| Type | Description |
|---|---|
| number |
options
options:SessionPoolOptions;| Type | Description |
|---|---|
| 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}
| Type | Description |
|---|---|
| number |
reads
getreads():number;Total number of read sessions. {number}
| Type | Description |
|---|---|
| number |
size
getsize():number;Total size of pool. {number}
| Type | Description |
|---|---|
| number |
totalPending
gettotalPending():number;Number of sessions being created or prepared for a read/write transaction. {number}
| Type | Description |
|---|---|
| number |
totalWaiters
gettotalWaiters():number;Sum of read and write waiters. {number}
| Type | Description |
|---|---|
| number |
writes
getwrites():number;Total number of write sessions. {number}
| Type | Description |
|---|---|
| number |
Methods
_acquire(type)
_acquire(type:types):Promise<Session>;Attempts to borrow a session from the pool.
| Type | Name | Description |
|---|---|---|
| types | type | The desired type to borrow. |
| Type | Description |
|---|---|
| Promise<Session> | {Promise |
_borrow(session)
_borrow(session:Session):void;Moves a session into the borrowed group.
| Type | Name | Description |
|---|---|---|
| Session | session | The session object. |
| Type | Description |
|---|---|
| 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.
| Type | Name | Description |
|---|---|---|
| types | type | The desired session type. {Session} |
| Type | Description |
|---|---|
| Session |
_borrowNextAvailableSession(type)
_borrowNextAvailableSession(type:types):Session;Grabs the next available session.
| Type | Name | Description |
|---|---|---|
| types | type | The desired session type. |
| Type | Description |
|---|---|
| Session | {Promise |
_createSession(type)
_createSession(type:types):Promise<void>;Attempts to create a single session of a certain type.
| Type | Name | Description |
|---|---|---|
| types | type | The desired type to create. |
| Type | Description |
|---|---|
| Promise<void> | {Promise} |
_createSessions({ reads, writes, })
_createSessions({reads,writes,}:CreateSessionsOptions):Promise<void>;Batch creates sessions and prepares any necessary transactions.
| Type | Name | Description |
|---|---|---|
| CreateSessionsOptions | { reads, writes, } |
| Type | Description |
|---|---|
| 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
| Type | Name | Description |
|---|---|---|
| Session | session | The session to delete. |
| Type | Description |
|---|---|
| Promise<void> | {Promise} |
_evictIdleSessions()
_evictIdleSessions():void;Deletes idle sessions that exceed the maxIdle configuration.
| Type | Description |
|---|---|
| void |
_fill()
_fill():Promise<void>;Fills the pool with the minimum number of sessions.
{Promise}
| Type | Description |
|---|---|
| Promise<void> |
_getIdleSessions()
_getIdleSessions():Session[];Retrieves a list of all the idle sessions.
| Type | Description |
|---|---|
| Session[] | {Session[]} |
_getLeaks()
_getLeaks():string[];Returns stack traces for sessions that have not been released.
{string[]}
| Type | Description |
|---|---|
| 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.
| Type | Name | Description |
|---|---|---|
| types | type | The desired session type. |
| number | startTime | Timestamp to use when determining timeouts. |
| Type | Description |
|---|---|
| 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.
| Type | Name | Description |
|---|---|---|
| types | type | The type of session. |
| Type | Description |
|---|---|
| boolean |
_isValidSession(session)
_isValidSession(session:Session):boolean;Checks to see whether or not session is expired.
| Type | Name | Description |
|---|---|---|
| Session | session | The session to check. |
| Type | Description |
|---|---|
| boolean | {boolean} |
_ping(session)
_ping(session:Session):Promise<void>;Pings an individual session.
| Type | Name | Description |
|---|---|---|
| Session | session | The session to ping. |
| Type | Description |
|---|---|
| Promise<void> | {Promise} |
_pingIdleSessions()
_pingIdleSessions():Promise<void>;Makes a keep alive request to all the idle sessions.
| Type | Description |
|---|---|
| Promise<void> | {Promise} |
_prepareTransaction(session)
_prepareTransaction(session:Session):Promise<void>;Creates a transaction for a session.
| Type | Name | Description |
|---|---|---|
| Session | session | The session object. |
| Type | Description |
|---|---|
| Promise<void> | {Promise} |
_release(session)
_release(session:Session):void;Releases a session back into the pool.
SessionPool#available SessionPool#readonly-available SessionPool#readwrite-available
| Type | Name | Description |
|---|---|---|
| Session | session | The session object. |
| Type | Description |
|---|---|
| void |
_startHouseKeeping()
_startHouseKeeping():void;Starts housekeeping (pinging/evicting) of idle sessions.
| Type | Description |
|---|---|
| void |
_stopHouseKeeping()
_stopHouseKeeping():void;Stops housekeeping.
| Type | Description |
|---|---|
| void |
close(callback)
close(callback:SessionPoolCloseCallback):void;Closes and the pool.
SessionPool#close
| Type | Name | Description |
|---|---|---|
| SessionPoolCloseCallback | callback | The callback function. |
| Type | Description |
|---|---|
| void |
formatTrace(frames)
staticformatTrace(frames:trace.StackFrame[]):string;Formats stack trace objects into Node-like stack trace.
| Type | Name | Description |
|---|---|---|
| trace.StackFrame[] | frames |
| Type | Description |
|---|---|
| string |
getReadSession(callback)
getReadSession(callback:GetReadSessionCallback):void;Retrieve a read session.
| Type | Name | Description |
|---|---|---|
| GetReadSessionCallback | callback | The callback function. |
| Type | Description |
|---|---|
| void |
getWriteSession(callback)
getWriteSession(callback:GetWriteSessionCallback):void;Retrieve a read/write session.
| Type | Name | Description |
|---|---|---|
| GetWriteSessionCallback | callback | The callback function. |
| Type | Description |
|---|---|
| void |
open()
open():void;Opens the pool, filling it to the configured number of read and write sessions.
SessionPool#open {Promise}
| Type | Description |
|---|---|
| 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.
| Type | Name | Description |
|---|---|---|
| Session | session | The session to release. |
| Type | Description |
|---|---|
| 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.