@futdevpro/nts-dynamo 1.15.128 → 1.15.130

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.
@@ -27,6 +27,13 @@ export class DyNTS_Errors_DataService<
27
27
  T_ErrorsRecord extends DyFM_Errors<T_Error>
28
28
  > extends DyNTS_DataService<T_ErrorsRecord> implements DyNTS_Errors_ControlService<T_Error, T_ErrorsRecord> {
29
29
 
30
+ /**
31
+ * FR-279 — egy error-rekord max merete (byte), amely folott levagjuk az
32
+ * `additionalContent`-et. A korabbi kod ezt a szamot HAROM helyen ismetelte
33
+ * inline literalkent; nevesitve egy helyen all, es a szerializacio is egyszer fut.
34
+ */
35
+ static readonly MAX_ERROR_RECORD_BYTES: number = 16793000;
36
+
30
37
  debugLog: boolean = false;
31
38
  readonly version: string = DyNTS_global_settings.systemVersion;
32
39
  duplicationCounter: number;
@@ -104,15 +111,33 @@ export class DyNTS_Errors_DataService<
104
111
 
105
112
  errorsRecord.d_error = this.checkErrorIsStringifyableOrResolvable(errorsRecord.d_error, this.issuer) as T_Error;
106
113
 
114
+ // ─── FR-279 (2026-08-06) — EGYSZER szerializalunk, nem haromszor ──────────
115
+ //
116
+ // ⚠️ MERT BUG: ez a blokk KORABBAN akar HAROM teljes `JSON.stringify(errorsRecord)`-ot
117
+ // futtatott EGYETLEN error-rekordra, SZINKRON, a fo szalon — es az ELSO eredmenyet
118
+ // (a "stringify-elheto-e" teszt) EL IS DOBTA. A meret-plafon 16.7 MB, tehat ezek a
119
+ // rekordok tobb-MB-osak lehetnek: haromszoros koltseg, teljesen feleslegesen.
120
+ //
121
+ // MIERT SZAMIT (mert incidens, overseer 2026-08-06): a status-sweep ~30 rendszert
122
+ // pingel; a nem elerhetok 3000 ms-os timeouttal bukanak, es MINDEN bukas egy error-
123
+ // rekordot general (teljes `DyNTS_ApiCall_Params` + stack + additionalContent). A
124
+ // fagyasok elotti log kizarolag ilyen sorokkal van tele:
125
+ // error: "timeout of 3000ms exceeded" / project-statuses.control-services.js:147
126
+ // Az event-loop kozben 10-11 masodpercre megall (elLag max 10469-11123 ms), a heap
127
+ // 2 GB-ra hizik, es a runnerek `next-job` hivasa timeoutol -> a CI megall.
128
+ //
129
+ // A szinkron, tobb-MB-os JSON-szerializacio a fo szalon PONTOSAN ilyen blokkot ad —
130
+ // es a harmadolasa ingyen van: ugyanaz a viselkedes, egy-ket szerializaciobol.
131
+ let serialized: string;
107
132
  try {
108
- JSON.stringify(errorsRecord);
133
+ serialized = JSON.stringify(errorsRecord);
109
134
  } catch (err) {
110
135
  DyFM_Log.error('error data is not stringifyable!');
111
136
 
112
137
  return;
113
138
  }
114
139
 
115
- if (JSON.stringify(errorsRecord).length > 16793000) {
140
+ if (serialized.length > DyNTS_Errors_DataService.MAX_ERROR_RECORD_BYTES) {
116
141
  errorsRecord.additionalContent = {
117
142
  message: 'error data was too big to save, removed additionalContent',
118
143
  };
@@ -121,7 +146,9 @@ export class DyNTS_Errors_DataService<
121
146
  message: 'error data was too big to save, removed additionalContent',
122
147
  };
123
148
 
124
- if (JSON.stringify(errorsRecord).length > 16793000) {
149
+ // Ujra-meres CSAK a levagas utan — es csak akkor, ha egyaltalan tullogtuk a plafont.
150
+ serialized = JSON.stringify(errorsRecord);
151
+ if (serialized.length > DyNTS_Errors_DataService.MAX_ERROR_RECORD_BYTES) {
125
152
  errorsRecord.error.errors = [];
126
153
  }
127
154
  }