@futdevpro/nts-dynamo 1.15.47 → 1.15.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { DyFM_RelativeDate, DyFM_ServerStatus, DyFM_Error, DyFM_Error_Statistics, DyFM_Errors, DyFM_ServerConnectionCheckResult } from '@futdevpro/fsm-dynamo';
2
2
  import { Subscription } from 'rxjs';
3
+ import * as mongoose from 'mongoose';
3
4
  import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
4
5
  import { DyNTS_Errors_ControlService } from '../errors/errors.control-service';
5
6
  import { DyNTS_ServerStatusSnapshot_ControlService } from './server-status-snapshot.control-service';
@@ -10,6 +11,22 @@ export interface DyNTS_ServerConnection {
10
11
  accessible?: boolean;
11
12
  lastCheck?: Date;
12
13
  }
14
+ /**
15
+ * A readiness-probe ({@link DyNTS_ServerStatus_ControlService.checkDbReadiness}) eredménye.
16
+ * `ready=true` CSAK ha a DB-connection él (readyState=1) ÉS a valós ping round-trip sikerült.
17
+ */
18
+ export interface DyNTS_DbReadiness {
19
+ /** ready: a DB elérhető (readyState=1 + sikeres ping). Erre adjon az endpoint 200-at, különben 503-at. */
20
+ ready: boolean;
21
+ /** mongoose connection.readyState: 0=disconnected, 1=connected, 2=connecting, 3=disconnecting. */
22
+ dbReadyState: number;
23
+ /** Sikerült-e a valós DB ping round-trip (csak readyState=1-nél próbáljuk). */
24
+ dbPingOk: boolean;
25
+ /** A szerver uptime ms-ban. */
26
+ uptime: number;
27
+ /** A szerver verziója. */
28
+ serverVersion: string;
29
+ }
13
30
  export declare abstract class DyNTS_ServerStatus_ControlService<T_ServerStatus extends DyFM_ServerStatus, T_Error extends DyFM_Error, T_Errors extends DyFM_Errors<T_Error>, T_Errors_ControlService extends DyNTS_Errors_ControlService<T_Error, T_Errors>, T_ServerStatusSnapshot extends DyFM_ServerStatus, T_ServerStatusSnapshot_ControlService extends DyNTS_ServerStatusSnapshot_ControlService<T_ServerStatusSnapshot>> extends DyNTS_SingletonService {
14
31
  protected abstract getErrorControlService?(set?: {
15
32
  data?: T_Errors;
@@ -35,6 +52,19 @@ export declare abstract class DyNTS_ServerStatus_ControlService<T_ServerStatus e
35
52
  protected constructor();
36
53
  getServerStatus(issuer: string, clientVersion?: string): Promise<DyFM_ServerStatus>;
37
54
  checkServerConnections(issuer: string): Promise<DyFM_ServerConnectionCheckResult>;
55
+ /**
56
+ * A mongoose default-connection. Külön metódus = teszt-seam (spy-jal felülírható, hogy a
57
+ * {@link checkDbReadiness} DB nélkül is tesztelhető legyen).
58
+ */
59
+ protected getMongooseConnection(): mongoose.Connection;
60
+ /**
61
+ * Readiness-probe: a `/health` (liveness — "a process fut + kiszolgál") MELLETT a DB-elérhetőséget
62
+ * ellenőrzi. A readyState (mongoose driver-állapot) + egy valós `ping` round-trip → így a "connected
63
+ * de a DB nem válaszol" eset is kibukik. **Sosem dob** (a probe-nak determinisztikusan kell válaszolnia);
64
+ * hiba esetén `ready=false`. Az endpoint 503-at adjon, ha nem ready → az orchestrátor (k8s/docker/LB)
65
+ * ne irányítson forgalmat a DB-vesztett instance-ra.
66
+ */
67
+ checkDbReadiness(): Promise<DyNTS_DbReadiness>;
38
68
  getErrorStatistics(range: DyFM_RelativeDate, issuer: string): Promise<DyFM_Error_Statistics>;
39
69
  protected getVersionNumeric(version: string): number;
40
70
  protected clientVersionIsLatest(clientVersion: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"server-status.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"AAEA,OAAO,EACU,iBAAiB,EAAa,iBAAiB,EAC9D,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAG9C,gCAAgC,EAGjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAS,MAAM,MAAM,CAAC;AAG3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAErG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,8BAAsB,iCAAiC,CACrD,cAAc,SAAS,iBAAiB,EACxC,OAAO,SAAS,UAAU,EAC1B,QAAQ,SAAS,WAAW,CAAC,OAAO,CAAC,EACrC,uBAAuB,SAAS,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9E,sBAAsB,SAAS,iBAAiB,EAChD,qCAAqC,SAAS,yCAAyC,CAAC,sBAAsB,CAAC,CAC/G,SAAQ,sBAAsB;IAE9B,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CACxC,GAAG,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,uBAAuB;IAE1B,SAAS,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CACvD,GAAG,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,cAAc,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,qCAAqC;IAExC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAc;IAEzC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAA0C;IAC1F,IAAI,aAAa,IAAI,MAAM,CAA2B;IACtD,IAAI,oBAAoB,IAAI,MAAM,CAAuC;IAEzE,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC9C,IAAI,mBAAmB,IAAI,MAAM,CAAsC;IACvE,IAAI,0BAA0B,IAAI,MAAM,CAA6C;IAErF,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,CAAC;IACvE,SAAS,CAAC,2BAA2B,SAAe;IAEpD,SAAkB,mBAAmB,0BAA0B;IAE/D,QAAQ,CAAC,gBAAgB,SAAY;IACrC,QAAQ,EAAE,YAAY,CAAC;IAEvB,SAAS;IA8BH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6BnF,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAoCjF,kBAAkB,CACtB,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IA+FjC,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAUpD,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IA4B/D,SAAS,CAAC,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,IAAI;cAO3E,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAiB/E"}
1
+ {"version":3,"file":"server-status.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DyNTS_ServerStatus_ControlService = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
6
  const rxjs_1 = require("rxjs");
7
+ const mongoose = tslib_1.__importStar(require("mongoose"));
6
8
  const package_json_1 = require("../../../../package.json");
7
9
  const singleton_service_1 = require("../../../_services/base/singleton.service");
8
10
  const global_settings_const_1 = require("../../../_collections/global-settings.const");
@@ -97,6 +99,44 @@ class DyNTS_ServerStatus_ControlService extends singleton_service_1.DyNTS_Single
97
99
  });
98
100
  }
99
101
  }
102
+ /**
103
+ * A mongoose default-connection. Külön metódus = teszt-seam (spy-jal felülírható, hogy a
104
+ * {@link checkDbReadiness} DB nélkül is tesztelhető legyen).
105
+ */
106
+ getMongooseConnection() {
107
+ return mongoose.connection;
108
+ }
109
+ /**
110
+ * Readiness-probe: a `/health` (liveness — "a process fut + kiszolgál") MELLETT a DB-elérhetőséget
111
+ * ellenőrzi. A readyState (mongoose driver-állapot) + egy valós `ping` round-trip → így a "connected
112
+ * de a DB nem válaszol" eset is kibukik. **Sosem dob** (a probe-nak determinisztikusan kell válaszolnia);
113
+ * hiba esetén `ready=false`. Az endpoint 503-at adjon, ha nem ready → az orchestrátor (k8s/docker/LB)
114
+ * ne irányítson forgalmat a DB-vesztett instance-ra.
115
+ */
116
+ async checkDbReadiness() {
117
+ let dbReadyState = 0;
118
+ let dbPingOk = false;
119
+ try {
120
+ const connection = this.getMongooseConnection();
121
+ // readyState: 0=disconnected, 1=connected, 2=connecting, 3=disconnecting
122
+ dbReadyState = connection?.readyState ?? 0;
123
+ if (dbReadyState === 1) {
124
+ await connection.db?.admin().ping();
125
+ dbPingOk = true;
126
+ }
127
+ }
128
+ catch (error) {
129
+ fsm_dynamo_1.DyFM_Log.warn('(checkDbReadiness) DB readiness check failed', error);
130
+ dbPingOk = false;
131
+ }
132
+ return {
133
+ ready: dbReadyState === 1 && dbPingOk,
134
+ dbReadyState: dbReadyState,
135
+ dbPingOk: dbPingOk,
136
+ uptime: +new Date() - +this.up,
137
+ serverVersion: this.serverVersion,
138
+ };
139
+ }
100
140
  async getErrorStatistics(range, issuer) {
101
141
  try {
102
142
  const error_DS = this.getErrorControlService({ issuer: issuer });
@@ -1 +1 @@
1
- {"version":3,"file":"server-status.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-status.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-status.controller.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAwC,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AAEtG,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAGrG;;;;;;;;;;;;GAYG;AACH,8BAAsB,6BAA6B,CACjD,cAAc,SAAS,iBAAiB,EACxC,OAAO,SAAS,UAAU,EAC1B,QAAQ,SAAS,WAAW,CAAC,OAAO,CAAC,EACrC,uBAAuB,SAAS,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9E,sBAAsB,SAAS,iBAAiB,EAChD,qCAAqC,SAAS,yCAAyC,CAAC,sBAAsB,CAAC,EAC/G,6BAA6B,SAAS,iCAAiC,CACrE,cAAc,EACd,OAAO,EACP,QAAQ,EACR,uBAAuB,EACvB,sBAAsB,EACtB,qCAAqC,CACtC,CACD,SAAQ,gBAAgB;IAMxB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAGrE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,CAAM;IAErE,cAAc,IAAI,IAAI;CA8EvB"}
1
+ {"version":3,"file":"server-status.controller.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAwC,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AAEtG,OAAO,EAAqB,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACvG,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAGrG;;;;;;;;;;;;GAYG;AACH,8BAAsB,6BAA6B,CACjD,cAAc,SAAS,iBAAiB,EACxC,OAAO,SAAS,UAAU,EAC1B,QAAQ,SAAS,WAAW,CAAC,OAAO,CAAC,EACrC,uBAAuB,SAAS,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9E,sBAAsB,SAAS,iBAAiB,EAChD,qCAAqC,SAAS,yCAAyC,CAAC,sBAAsB,CAAC,EAC/G,6BAA6B,SAAS,iCAAiC,CACrE,cAAc,EACd,OAAO,EACP,QAAQ,EACR,uBAAuB,EACvB,sBAAsB,EACtB,qCAAqC,CACtC,CACD,SAAQ,gBAAgB;IAMxB,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAGrE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,CAAM;IAErE,cAAc,IAAI,IAAI;CA6FvB"}
@@ -56,6 +56,19 @@ class DyNTS_ServerStatus_Controller extends controller_service_1.DyNTS_Controlle
56
56
  },
57
57
  ],
58
58
  }),
59
+ // Readiness-probe: a /health-tel (liveness) szemben a DB-elérhetőséget is ellenőrzi.
60
+ // Public (mint a /health) — orchestrátor/LB hívja; 503 ha a DB nem ready → no traffic.
61
+ new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
62
+ name: 'getServerReadiness',
63
+ type: fsm_dynamo_1.DyFM_HttpCallType.get,
64
+ endpoint: '/readiness',
65
+ tasks: [
66
+ async (req, res, issuer) => {
67
+ const readiness = await this.server_CS.checkDbReadiness();
68
+ res.status(readiness.ready ? 200 : 503).send(readiness);
69
+ },
70
+ ],
71
+ }),
59
72
  new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
60
73
  name: 'getServerStatusForClient',
61
74
  type: fsm_dynamo_1.DyFM_HttpCallType.get,
@@ -1 +1 @@
1
- {"version":3,"file":"server-status.controller.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.controller.ts"],"names":[],"mappings":";;;AAGA,sDAAyH;AAEzH,oFAA+E;AAC/E,iHAAsG;AACtG,uFAAoF;AAKpF;;;;;;;;;;;;GAYG;AACH,MAAsB,6BAepB,SAAQ,qCAAgB;IAQxB,mEAAmE;IAChD,mBAAmB,GAA4B,EAAE,CAAC;IAErE,cAAc;QACZ;;;;;YAKI;QAEJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,MAAM,IAAI,uBAAU,CAAC;gBACnB,OAAO,EAAE,iEAAiE;gBAC1E,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QAEnD,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,qDAAqB,CAAC;gBACxB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,8BAAiB,CAAC,GAAG;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,MAAc,EAAiB,EAAE;wBACnE,GAAG,CAAC,IAAI,CACN,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAC7C,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;YAEF,IAAI,qDAAqB,CAAC;gBACxB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,8BAAiB,CAAC,GAAG;gBAC3B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,MAAc,EAAiB,EAAE;wBACnE,GAAG,CAAC,IAAI,CACN,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAC7C,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;YAEF,IAAI,qDAAqB,CAAC;gBACxB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,8BAAiB,CAAC,GAAG;gBAC3B,QAAQ,EAAE,kBAAkB;gBAC5B,KAAK,EAAE;oBACL,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,MAAc,EAAiB,EAAE;wBAEnE,GAAG,CAAC,IAAI,CACN,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CACjE,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;YAEF,IAAI,qDAAqB,CAAC;gBACxB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,8BAAiB,CAAC,GAAG;gBAC3B,QAAQ,EAAE,0BAA0B;gBACpC,KAAK,EAAE;oBACL,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,MAAc,EAAkB,EAAE;wBAEpE,GAAG,CAAC,IAAI,CACN,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CACrC,GAAG,CAAC,MAAM,CAAC,KAA0B,EACrC,MAAM,CACP,CACF,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC;YAEF,GAAG,IAAI,CAAC,mBAAmB;SAC5B,CAAC;IACJ,CAAC;CACF;AAxGD,sEAwGC"}
1
+ {"version":3,"file":"server-status.controller.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.controller.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.47",
3
+ "version": "01.15.48",
4
4
  "description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "server-package",
@@ -493,6 +493,58 @@ describe('| DyNTS_ServerStatus_ControlService', () => {
493
493
  });
494
494
  });
495
495
 
496
+ describe('| checkDbReadiness', () => {
497
+ it('| should be ready when connected (readyState=1) and ping succeeds', async () => {
498
+ const fakeConnection = {
499
+ readyState: 1,
500
+ db: { admin: () => ({ ping: async () => ({ ok: 1 }) }) },
501
+ };
502
+ spyOn(service as any, 'getMongooseConnection').and.returnValue(fakeConnection);
503
+
504
+ const result = await service.checkDbReadiness();
505
+
506
+ expect(result.ready).toBe(true);
507
+ expect(result.dbReadyState).toBe(1);
508
+ expect(result.dbPingOk).toBe(true);
509
+ expect(result.serverVersion).toBe(service.serverVersion);
510
+ expect(result.uptime).toBeGreaterThanOrEqual(0);
511
+ });
512
+
513
+ it('| should NOT be ready when disconnected (readyState=0) — no ping attempted', async () => {
514
+ const fakeConnection = { readyState: 0, db: undefined };
515
+ spyOn(service as any, 'getMongooseConnection').and.returnValue(fakeConnection);
516
+
517
+ const result = await service.checkDbReadiness();
518
+
519
+ expect(result.ready).toBe(false);
520
+ expect(result.dbReadyState).toBe(0);
521
+ expect(result.dbPingOk).toBe(false);
522
+ });
523
+
524
+ it('| should NOT be ready when connected but ping fails (DB unresponsive)', async () => {
525
+ const fakeConnection = {
526
+ readyState: 1,
527
+ db: { admin: () => ({ ping: async () => { throw new Error('no pong'); } }) },
528
+ };
529
+ spyOn(service as any, 'getMongooseConnection').and.returnValue(fakeConnection);
530
+
531
+ const result = await service.checkDbReadiness();
532
+
533
+ expect(result.ready).toBe(false);
534
+ expect(result.dbReadyState).toBe(1);
535
+ expect(result.dbPingOk).toBe(false);
536
+ });
537
+
538
+ it('| should never throw — returns not-ready on internal error', async () => {
539
+ spyOn(service as any, 'getMongooseConnection').and.throwError(new Error('boom'));
540
+
541
+ const result = await service.checkDbReadiness();
542
+
543
+ expect(result.ready).toBe(false);
544
+ expect(result.dbReadyState).toBe(0);
545
+ });
546
+ });
547
+
496
548
  describe('| getServerStatusSnapshot', () => {
497
549
  it('| should return server status snapshot', async () => {
498
550
  const mockStatus: TestServerStatus = new TestServerStatus({
@@ -10,6 +10,7 @@ import {
10
10
  DyFM_Array
11
11
  } from '@futdevpro/fsm-dynamo';
12
12
  import { Subscription, timer } from 'rxjs';
13
+ import * as mongoose from 'mongoose';
13
14
 
14
15
  import { version as _serverVersion } from '../../../../package.json';
15
16
  import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
@@ -26,6 +27,23 @@ export interface DyNTS_ServerConnection {
26
27
  lastCheck?: Date,
27
28
  }
28
29
 
30
+ /**
31
+ * A readiness-probe ({@link DyNTS_ServerStatus_ControlService.checkDbReadiness}) eredménye.
32
+ * `ready=true` CSAK ha a DB-connection él (readyState=1) ÉS a valós ping round-trip sikerült.
33
+ */
34
+ export interface DyNTS_DbReadiness {
35
+ /** ready: a DB elérhető (readyState=1 + sikeres ping). Erre adjon az endpoint 200-at, különben 503-at. */
36
+ ready: boolean;
37
+ /** mongoose connection.readyState: 0=disconnected, 1=connected, 2=connecting, 3=disconnecting. */
38
+ dbReadyState: number;
39
+ /** Sikerült-e a valós DB ping round-trip (csak readyState=1-nél próbáljuk). */
40
+ dbPingOk: boolean;
41
+ /** A szerver uptime ms-ban. */
42
+ uptime: number;
43
+ /** A szerver verziója. */
44
+ serverVersion: string;
45
+ }
46
+
29
47
  export abstract class DyNTS_ServerStatus_ControlService<
30
48
  T_ServerStatus extends DyFM_ServerStatus,
31
49
  T_Error extends DyFM_Error,
@@ -157,6 +175,48 @@ export abstract class DyNTS_ServerStatus_ControlService<
157
175
  }
158
176
  }
159
177
 
178
+ /**
179
+ * A mongoose default-connection. Külön metódus = teszt-seam (spy-jal felülírható, hogy a
180
+ * {@link checkDbReadiness} DB nélkül is tesztelhető legyen).
181
+ */
182
+ protected getMongooseConnection(): mongoose.Connection {
183
+ return mongoose.connection;
184
+ }
185
+
186
+ /**
187
+ * Readiness-probe: a `/health` (liveness — "a process fut + kiszolgál") MELLETT a DB-elérhetőséget
188
+ * ellenőrzi. A readyState (mongoose driver-állapot) + egy valós `ping` round-trip → így a "connected
189
+ * de a DB nem válaszol" eset is kibukik. **Sosem dob** (a probe-nak determinisztikusan kell válaszolnia);
190
+ * hiba esetén `ready=false`. Az endpoint 503-at adjon, ha nem ready → az orchestrátor (k8s/docker/LB)
191
+ * ne irányítson forgalmat a DB-vesztett instance-ra.
192
+ */
193
+ async checkDbReadiness(): Promise<DyNTS_DbReadiness> {
194
+ let dbReadyState: number = 0;
195
+ let dbPingOk: boolean = false;
196
+
197
+ try {
198
+ const connection: mongoose.Connection = this.getMongooseConnection();
199
+ // readyState: 0=disconnected, 1=connected, 2=connecting, 3=disconnecting
200
+ dbReadyState = connection?.readyState ?? 0;
201
+
202
+ if (dbReadyState === 1) {
203
+ await connection.db?.admin().ping();
204
+ dbPingOk = true;
205
+ }
206
+ } catch (error) {
207
+ DyFM_Log.warn('(checkDbReadiness) DB readiness check failed', error);
208
+ dbPingOk = false;
209
+ }
210
+
211
+ return {
212
+ ready: dbReadyState === 1 && dbPingOk,
213
+ dbReadyState: dbReadyState,
214
+ dbPingOk: dbPingOk,
215
+ uptime: +new Date() - +this.up,
216
+ serverVersion: this.serverVersion,
217
+ };
218
+ }
219
+
160
220
  async getErrorStatistics(
161
221
  range: DyFM_RelativeDate,
162
222
  issuer: string
@@ -6,7 +6,7 @@ import { DyNTS_Errors_ControlService } from '../errors/errors.control-service';
6
6
  import { DyNTS_Controller } from '../../../_services/route/controller.service';
7
7
  import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
8
8
  import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
9
- import { DyNTS_ServerStatus_ControlService } from './server-status.control-service';
9
+ import { DyNTS_DbReadiness, DyNTS_ServerStatus_ControlService } from './server-status.control-service';
10
10
  import { DyNTS_ServerStatusSnapshot_ControlService } from './server-status-snapshot.control-service';
11
11
 
12
12
 
@@ -93,6 +93,21 @@ export abstract class DyNTS_ServerStatus_Controller<
93
93
  ],
94
94
  }),
95
95
 
96
+ // Readiness-probe: a /health-tel (liveness) szemben a DB-elérhetőséget is ellenőrzi.
97
+ // Public (mint a /health) — orchestrátor/LB hívja; 503 ha a DB nem ready → no traffic.
98
+ new DyNTS_Endpoint_Params({
99
+ name: 'getServerReadiness',
100
+ type: DyFM_HttpCallType.get,
101
+ endpoint: '/readiness',
102
+ tasks: [
103
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
104
+ const readiness: DyNTS_DbReadiness = await this.server_CS.checkDbReadiness();
105
+
106
+ res.status(readiness.ready ? 200 : 503).send(readiness);
107
+ },
108
+ ],
109
+ }),
110
+
96
111
  new DyNTS_Endpoint_Params({
97
112
  name: 'getServerStatusForClient',
98
113
  type: DyFM_HttpCallType.get,