2222const EventEmitter = require ( 'events' ) ;
2323const nodbUtil = require ( './util.js' ) ;
2424const util = require ( 'util' ) ;
25+ const PoolStatistics = require ( './poolStatistics.js' ) ;
26+
2527
2628//-----------------------------------------------------------------------------
2729// _checkRequestQueue()
@@ -328,44 +330,7 @@ function logStatistics() {
328330 if ( stats === null ) {
329331 throw new Error ( nodbUtil . getErrorMessage ( 'NJS-083' ) ) ;
330332 }
331-
332- console . log ( '\nPool statistics:' ) ;
333- console . log ( '...gathered at:' , new Date ( stats . gatheredDate ) . toISOString ( ) ) ;
334- console . log ( '...up time (milliseconds):' , stats . upTime ) ;
335- console . log ( '...up time from last reset (milliseconds)' ,
336- stats . upTimeSinceReset ) ;
337- console . log ( '...connection requests:' , stats . connectionRequests ) ;
338- console . log ( '...requests enqueued:' , stats . requestsEnqueued ) ;
339- console . log ( '...requests dequeued:' , stats . requestsDequeued ) ;
340- console . log ( '...requests failed:' , stats . failedRequests ) ;
341- console . log ( '...requests exceeding queueMax:' , stats . rejectedRequests ) ;
342- console . log ( '...requests exceeding queueTimeout:' , stats . requestTimeouts ) ;
343- console . log ( '...current queue length:' , stats . currentQueueLength ) ;
344- console . log ( '...maximum queue length:' , stats . maximumQueueLength ) ;
345- console . log ( '...sum of time in queue (milliseconds):' , stats . timeInQueue ) ;
346- console . log ( '...minimum time in queue (milliseconds):' ,
347- stats . minimumTimeInQueue ) ;
348- console . log ( '...maximum time in queue (milliseconds):' ,
349- stats . maximumTimeInQueue ) ;
350- console . log ( '...average time in queue (milliseconds):' ,
351- stats . averageTimeInQueue ) ;
352- console . log ( '...pool connections in use:' , stats . connectionsInUse ) ;
353- console . log ( '...pool connections open:' , stats . connectionsOpen ) ;
354- console . log ( 'Pool attributes:' ) ;
355- console . log ( '...poolAlias:' , stats . poolAlias ) ;
356- console . log ( '...queueMax:' , stats . queueMax ) ;
357- console . log ( '...queueTimeout (milliseconds):' , stats . queueTimeout ) ;
358- console . log ( '...poolMin:' , stats . poolMin ) ;
359- console . log ( '...poolMax:' , stats . poolMax ) ;
360- console . log ( '...poolIncrement:' , stats . poolIncrement ) ;
361- console . log ( '...poolTimeout (seconds):' , stats . poolTimeout ) ;
362- console . log ( '...poolPingInterval (seconds):' , stats . poolPingInterval ) ;
363- console . log ( '...poolMaxPerShard:' , stats . poolMaxPerShard ) ;
364- console . log ( '...sessionCallback:' , stats . sessionCallback ) ;
365- console . log ( '...stmtCacheSize:' , stats . stmtCacheSize ) ;
366- console . log ( '...sodaMetaDataCache:' , stats . sodaMetaDataCache ) ;
367- console . log ( 'Related environment variables:' ) ;
368- console . log ( '...UV_THREADPOOL_SIZE:' , stats . threadPoolSize ) ;
333+ stats . logStatistics ( ) ;
369334}
370335
371336
@@ -375,54 +340,12 @@ function logStatistics() {
375340// properties
376341//-----------------------------------------------------------------------------
377342function getStatistics ( ) {
378- let averageTimeInQueue ;
379- let stats = { } ;
380-
381- // if the pool is not OPEN, throw appropriate err
382343 this . _checkPoolOpen ( false ) ;
383344
384345 if ( this . _enableStatistics !== true ) {
385346 return null ;
386347 }
387-
388- averageTimeInQueue = 0 ;
389-
390- if ( this . _totalRequestsEnqueued !== 0 ) {
391- averageTimeInQueue = Math . round ( this . _totalTimeInQueue /
392- this . _totalRequestsEnqueued ) ;
393- }
394-
395- stats . gatheredDate = Date . now ( ) ;
396- stats . upTime = stats . gatheredDate - this . _createdDate ;
397- stats . upTimeSinceReset = stats . gatheredDate - this . _timeOfReset ;
398- stats . connectionRequests = this . _totalConnectionRequests ;
399- stats . requestsEnqueued = this . _totalRequestsEnqueued ;
400- stats . requestsDequeued = this . _totalRequestsDequeued ;
401- stats . failedRequests = this . _totalFailedRequests ;
402- stats . rejectedRequests = this . _totalRequestsRejected ;
403- stats . requestTimeouts = this . _totalRequestTimeouts ;
404- stats . maximumQueueLength = this . _maximumQueueLength ;
405- stats . currentQueueLength = this . _connRequestQueue . length ;
406- stats . timeInQueue = this . _totalTimeInQueue ;
407- stats . minimumTimeInQueue = this . _minTimeInQueue ;
408- stats . maximumTimeInQueue = this . _maxTimeInQueue ;
409- stats . averageTimeInQueue = averageTimeInQueue ;
410- stats . connectionsInUse = this . connectionsInUse ;
411- stats . connectionsOpen = this . connectionsOpen ;
412- stats . poolAlias = this . poolAlias ;
413- stats . queueMax = this . queueMax ;
414- stats . queueTimeout = this . queueTimeout ;
415- stats . poolMin = this . poolMin ;
416- stats . poolMax = this . poolMax ;
417- stats . poolIncrement = this . poolIncrement ;
418- stats . poolTimeout = this . poolTimeout ;
419- stats . poolPingInterval = this . poolPingInterval ;
420- stats . poolMaxPerShard = this . poolMaxPerShard ;
421- stats . stmtCacheSize = this . stmtCacheSize ;
422- stats . sodaMetaDataCache = this . sodaMetaDataCache ;
423- stats . threadPoolSize = process . env . UV_THREADPOOL_SIZE ;
424-
425- return stats ;
348+ return new PoolStatistics ( this ) ;
426349}
427350
428351
@@ -467,6 +390,35 @@ function _setup(poolAttrs, poolAlias, oracledb) {
467390 this . _sessionCallback = poolAttrs . sessionCallback ;
468391 }
469392
393+ // Properties - edition, events, externalAuth - values can be set globally
394+ // on oracledb and can be overridden at pool creation time.
395+ if ( typeof poolAttrs . edition !== 'undefined' ) {
396+ this . edition = poolAttrs . edition ;
397+ } else {
398+ this . edition = oracledb . edition ;
399+ }
400+
401+ if ( typeof poolAttrs . events !== 'undefined' ) {
402+ this . events = poolAttrs . events ;
403+ } else {
404+ this . events = oracledb . events ;
405+ }
406+
407+ if ( typeof poolAttrs . externalAuth !== 'undefined' ) {
408+ this . externalAuth = poolAttrs . externalAuth ;
409+ } else {
410+ this . externalAuth = oracledb . externalAuth ;
411+ }
412+
413+ // Properties - homogeneous, user, connectString - are NOT global properties
414+ if ( typeof poolAttrs . homogeneous !== 'undefined' ) {
415+ this . homogeneous = poolAttrs . homogeneous ;
416+ } else {
417+ this . homogeneous = true ;
418+ }
419+ this . user = poolAttrs . user || poolAttrs . userName ;
420+ this . connectString = poolAttrs . connectString || poolAttrs . connectionString ;
421+
470422 // register event handler for when request queue should be checked
471423 this . on ( '_checkRequestQueue' , this . _checkRequestQueue ) ;
472424
0 commit comments