jinaga-server 3.7.4 → 3.8.0

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.
Files changed (39) hide show
  1. package/.claude/skills/degrees-of-freedom/.openskills.json +7 -0
  2. package/.claude/skills/degrees-of-freedom/SKILL.md +18 -0
  3. package/.claude/skills/degrees-of-freedom/degrees-of-freedom-constitution.md +142 -0
  4. package/.claude/skills/night-shift-setup/.openskills.json +7 -0
  5. package/.claude/skills/night-shift-setup/SKILL.md +95 -0
  6. package/.claude/skills/night-shift-setup/configuring-a-repository.md +111 -0
  7. package/.claude/skills/night-shift-setup/creating-the-log.md +59 -0
  8. package/.claude/skills/night-shift-setup/creating-the-routines.md +80 -0
  9. package/.claude/skills/night-shift-setup/log-model.factual +971 -0
  10. package/.claude/skills/night-shift-worker/.openskills.json +7 -0
  11. package/.claude/skills/night-shift-worker/SKILL.md +199 -0
  12. package/.claude/skills/night-shift-worker/night-shift-log.md +72 -0
  13. package/.claude/skills/night-shift-worker/scripts/register-stack.sh +173 -0
  14. package/.claude/skills/night-shift-worker/stacking.md +57 -0
  15. package/.claude/skills/night-shift-worker/verifying-a-merged-fix.md +16 -0
  16. package/.claude/skills/refining-issues/.openskills.json +7 -0
  17. package/.claude/skills/refining-issues/SKILL.md +327 -0
  18. package/.claude/skills/refining-issues/references/worked-example.md +234 -0
  19. package/.github/workflows/main.yml +2 -2
  20. package/.night-shift/config.md +84 -0
  21. package/.night-shift/skills.md +17 -0
  22. package/README.md +21 -0
  23. package/dist/http/router.js +207 -80
  24. package/dist/http/router.js.map +1 -1
  25. package/dist/http/stream.d.ts +0 -1
  26. package/dist/http/stream.js +6 -17
  27. package/dist/http/stream.js.map +1 -1
  28. package/dist/jinaga-server.js +74 -7
  29. package/dist/jinaga-server.js.map +1 -1
  30. package/integration-test/jinaga-test/package-lock.json +4 -4
  31. package/integration-test/jinaga-test/package.json +1 -1
  32. package/package.json +2 -2
  33. package/src/http/router.ts +249 -99
  34. package/src/http/stream.ts +21 -36
  35. package/src/jinaga-server.ts +92 -4
  36. package/test/http/errorStatusMappingSpec.ts +351 -0
  37. package/test/http/streamLogVolumeSpec.ts +284 -0
  38. package/test/jinaga-server/poolConfigurationSpec.ts +147 -0
  39. package/test/jinaga-server/tracePoolSpec.ts +368 -0
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Stream = void 0;
4
+ // This class logs nothing on its success path. A stream's lifetime is reported
5
+ // once by the request that opened it (see getOrStream in router.ts), and a line
6
+ // per feed, per replayed item, or per done handler says the same thing again
7
+ // once per unit of traffic. Issue #192: those per-item lines were 11.9% of a
8
+ // 2.8-million-line production log. Failures still log, because a failed handler
9
+ // is an event an operator cannot reconstruct from the summary.
4
10
  class Stream {
5
11
  constructor() {
6
12
  this.queue = [];
7
13
  this.handlers = [];
8
14
  this.doneHandlers = [];
9
15
  this.closed = false;
10
- this.feedCount = 0;
11
16
  this.streamId = Math.random().toString(36).substring(2, 10);
12
- console.log(`[Stream:${this.streamId}] Created new stream`);
13
17
  }
14
18
  next(handler) {
15
19
  if (this.closed) {
@@ -17,13 +21,10 @@ class Stream {
17
21
  return this;
18
22
  }
19
23
  this.handlers.push(handler);
20
- const queueLength = this.queue.length;
21
- console.log(`[Stream:${this.streamId}] Added handler - Total handlers: ${this.handlers.length}, Queued items: ${queueLength}`);
22
24
  // Replay queued data to new handler
23
25
  this.queue.forEach((data, index) => {
24
26
  try {
25
27
  handler(data);
26
- console.log(`[Stream:${this.streamId}] Replayed queued item ${index + 1}/${queueLength} to new handler`);
27
28
  }
28
29
  catch (error) {
29
30
  console.error(`[Stream:${this.streamId}] Error replaying queued item ${index + 1}: ${error}`);
@@ -43,7 +44,6 @@ class Stream {
43
44
  return this;
44
45
  }
45
46
  this.doneHandlers.push(handler);
46
- console.log(`[Stream:${this.streamId}] Added done handler - Total done handlers: ${this.doneHandlers.length}`);
47
47
  return this;
48
48
  }
49
49
  close() {
@@ -51,14 +51,11 @@ class Stream {
51
51
  console.warn(`[Stream:${this.streamId}] Attempted to close already closed stream`);
52
52
  return;
53
53
  }
54
- console.log(`[Stream:${this.streamId}] CLOSING stream - Handlers: ${this.handlers.length}, Done handlers: ${this.doneHandlers.length}, Queue: ${this.queue.length}, Feed count: ${this.feedCount}`);
55
54
  this.closed = true;
56
55
  // Execute done handlers
57
- const doneHandlerCount = this.doneHandlers.length;
58
56
  this.doneHandlers.forEach((handler, index) => {
59
57
  try {
60
58
  handler();
61
- console.log(`[Stream:${this.streamId}] Executed done handler ${index + 1}/${doneHandlerCount}`);
62
59
  }
63
60
  catch (error) {
64
61
  console.error(`[Stream:${this.streamId}] Error in done handler ${index + 1}: ${error}`);
@@ -68,7 +65,6 @@ class Stream {
68
65
  this.queue = [];
69
66
  this.handlers = [];
70
67
  this.doneHandlers = [];
71
- console.log(`[Stream:${this.streamId}] Stream closed and cleaned up`);
72
68
  }
73
69
  feed(data) {
74
70
  const feedStart = Date.now();
@@ -76,30 +72,23 @@ class Stream {
76
72
  console.warn(`[Stream:${this.streamId}] Attempted to feed data to closed stream - Data type: ${typeof data}`);
77
73
  return;
78
74
  }
79
- this.feedCount++;
80
75
  const handlerCount = this.handlers.length;
81
- console.log(`[Stream:${this.streamId}] FEEDING data - Feed #${this.feedCount}, Handlers: ${handlerCount}, Queue size before: ${this.queue.length}`);
82
76
  this.queue.push(data);
83
77
  // Notify all handlers
84
- let successCount = 0;
85
- let errorCount = 0;
86
78
  this.handlers.forEach((handler, index) => {
87
79
  try {
88
80
  const handlerStart = Date.now();
89
81
  handler(data);
90
82
  const handlerDuration = Date.now() - handlerStart;
91
- successCount++;
92
83
  if (handlerDuration > 50) {
93
84
  console.warn(`[Stream:${this.streamId}] SLOW handler - Handler ${index + 1}/${handlerCount}, Duration: ${handlerDuration}ms`);
94
85
  }
95
86
  }
96
87
  catch (error) {
97
- errorCount++;
98
88
  console.error(`[Stream:${this.streamId}] ERROR in handler ${index + 1}/${handlerCount}: ${error}`);
99
89
  }
100
90
  });
101
91
  const totalDuration = Date.now() - feedStart;
102
- console.log(`[Stream:${this.streamId}] Feed complete - Success: ${successCount}, Errors: ${errorCount}, Queue size after: ${this.queue.length}, Duration: ${totalDuration}ms`);
103
92
  if (totalDuration > 100) {
104
93
  console.warn(`[Stream:${this.streamId}] SLOW feed operation - Duration: ${totalDuration}ms`);
105
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/http/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/http/stream.ts"],"names":[],"mappings":"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"}
@@ -168,19 +168,61 @@ function getPool(uriOrPool, pools) {
168
168
  return uriOrPool;
169
169
  }
170
170
  }
171
+ // The settings of a pool that this server builds for itself, each named by the
172
+ // environment variable that sets it. A pool the caller supplies is used as
173
+ // given, so none of these applies to it.
174
+ const poolSettingDeclarations = {
175
+ // A pool of zero connections can serve nothing, so one is the minimum.
176
+ max: { variable: "POSTGRES_POOL_MAX", defaultValue: 10, minimum: 1 },
177
+ idleTimeoutMillis: { variable: "POSTGRES_IDLE_TIMEOUT_MILLIS", defaultValue: 30000, minimum: 0 },
178
+ // Zero means wait forever for a connection to come free.
179
+ connectionTimeoutMillis: { variable: "POSTGRES_CONNECTION_TIMEOUT_MILLIS", defaultValue: 0, minimum: 0 }
180
+ };
181
+ // The one rule by which every pool setting is read from the environment. An
182
+ // absent or empty variable takes the default; anything that is not an integer
183
+ // at or above the setting's minimum is refused rather than resolved, so the
184
+ // environment either names a pool that can be built or no pool at all.
185
+ function readPoolSetting({ variable, defaultValue, minimum }) {
186
+ const value = process.env[variable];
187
+ if (value === undefined || value.trim() === '') {
188
+ return defaultValue;
189
+ }
190
+ const parsed = /^\d+$/.test(value.trim()) ? parseInt(value.trim(), 10) : NaN;
191
+ if (isNaN(parsed) || parsed < minimum) {
192
+ throw new Error(`The environment variable ${variable} is set to ${JSON.stringify(value)}, which is not an integer of at least ${minimum}.`);
193
+ }
194
+ return parsed;
195
+ }
196
+ function readPoolSettings() {
197
+ return {
198
+ max: readPoolSetting(poolSettingDeclarations.max),
199
+ idleTimeoutMillis: readPoolSetting(poolSettingDeclarations.idleTimeoutMillis),
200
+ connectionTimeoutMillis: readPoolSetting(poolSettingDeclarations.connectionTimeoutMillis)
201
+ };
202
+ }
171
203
  function createPool(postgresUri) {
172
- const postgresPool = new pg_1.Pool({
173
- connectionString: postgresUri,
174
- idleTimeoutMillis: process.env.POSTGRES_IDLE_TIMEOUT_MILLIS ?
175
- parseInt(process.env.POSTGRES_IDLE_TIMEOUT_MILLIS) :
176
- 30000,
177
- });
204
+ const settings = readPoolSettings();
205
+ const postgresPool = new pg_1.Pool(Object.assign({ connectionString: postgresUri }, settings));
206
+ jinaga_1.Trace.info(`Postgres pool created with max ${settings.max}, idleTimeoutMillis ${settings.idleTimeoutMillis}, connectionTimeoutMillis ${settings.connectionTimeoutMillis}`);
178
207
  tracePool(postgresPool);
179
208
  return postgresPool;
180
209
  }
210
+ const poolWindowMilliseconds = 10000;
181
211
  function tracePool(postgresPool) {
212
+ var _a;
213
+ // Pool pressure is reported once per window of time rather than once per
214
+ // checkout, so the output rate no longer follows the acquire rate and no
215
+ // longer peaks when the pool is saturated. The window carries the largest
216
+ // waiting count it saw, so a spike that comes and goes inside one window
217
+ // still appears in the log.
218
+ let acquiredInWindow = false;
219
+ let peakWaiting = 0;
182
220
  postgresPool.on('acquire', (client) => {
183
- jinaga_1.Trace.metric('Postgres acquired', poolMetrics());
221
+ acquiredInWindow = true;
222
+ observeWaiting();
223
+ });
224
+ postgresPool.on('release', (err, client) => {
225
+ observeWaiting();
184
226
  });
185
227
  postgresPool.on('connect', (client) => {
186
228
  jinaga_1.Trace.metric('Postgres connected', poolMetrics());
@@ -191,6 +233,31 @@ function tracePool(postgresPool) {
191
233
  postgresPool.on('error', (err, client) => {
192
234
  jinaga_1.Trace.error(err);
193
235
  });
236
+ // The window closes on a timer so that a storm which stops in the middle
237
+ // of a window still reports its peak. The timer is unreferenced, so it
238
+ // does not hold the process open, and it stops once the pool has ended.
239
+ const windowTimer = setInterval(closeWindow, poolWindowMilliseconds);
240
+ (_a = windowTimer.unref) === null || _a === void 0 ? void 0 : _a.call(windowTimer);
241
+ function observeWaiting() {
242
+ if (postgresPool.waitingCount > peakWaiting) {
243
+ peakWaiting = postgresPool.waitingCount;
244
+ }
245
+ }
246
+ function closeWindow() {
247
+ if (postgresPool.ended) {
248
+ clearInterval(windowTimer);
249
+ return;
250
+ }
251
+ if (acquiredInWindow) {
252
+ const metrics = poolMetrics();
253
+ jinaga_1.Trace.metric('Postgres pool', Object.assign(Object.assign({}, metrics), { peakWaiting }));
254
+ if (peakWaiting > 0) {
255
+ jinaga_1.Trace.warn(`Postgres pool saturated: ${peakWaiting} waiting at peak, ${metrics.waiting} waiting of ${metrics.total} at window close.`);
256
+ }
257
+ }
258
+ acquiredInWindow = false;
259
+ peakWaiting = 0;
260
+ }
194
261
  function poolMetrics() {
195
262
  return {
196
263
  total: postgresPool.totalCount,
@@ -1 +1 @@
1
- {"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@
14
14
  "express": "^4.21.2",
15
15
  "jest": "^29.7.0",
16
16
  "jest-compact-reporter": "^1.2.9",
17
- "jinaga": "^6.8.3",
17
+ "jinaga": "^6.14.0",
18
18
  "node-forge": "^1.3.0",
19
19
  "pg": "^8.13.1"
20
20
  },
@@ -3195,9 +3195,9 @@
3195
3195
  }
3196
3196
  },
3197
3197
  "node_modules/jinaga": {
3198
- "version": "6.8.3",
3199
- "resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.8.3.tgz",
3200
- "integrity": "sha512-v3dvRQKlXj++uT9D/AxFfRIeKwzitqYAs9Fxx5Q+wbCyYM+wHv4eRH9qCRcOIjv/jnl8iO/3vGGFZz+z2eMQgw==",
3198
+ "version": "6.14.0",
3199
+ "resolved": "https://registry.npmjs.org/jinaga/-/jinaga-6.14.0.tgz",
3200
+ "integrity": "sha512-5Ip8MZfIazv+pDDdRDmj/zWQE1wuMtEi3BCHH+vRHCZfO4nC3VDUQrqkM5VOdkQxjRisokmiSLs5ZOtHXAc5qQ==",
3201
3201
  "license": "MIT",
3202
3202
  "dependencies": {
3203
3203
  "@stablelib/base64": "^1.0.1",
@@ -19,7 +19,7 @@
19
19
  "express": "^4.21.2",
20
20
  "jest": "^29.7.0",
21
21
  "jest-compact-reporter": "^1.2.9",
22
- "jinaga": "^6.8.3",
22
+ "jinaga": "^6.14.0",
23
23
  "node-forge": "^1.3.0",
24
24
  "pg": "^8.13.1"
25
25
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinaga-server",
3
- "version": "3.7.4",
3
+ "version": "3.8.0",
4
4
  "description": "Data management for web and mobile applications.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,7 +49,7 @@
49
49
  "dependencies": {
50
50
  "csv-stringify": "^6.6.0",
51
51
  "express": "^4.21.2",
52
- "jinaga": "^6.11.1",
52
+ "jinaga": "^6.14.0",
53
53
  "pg": "^8.13.1"
54
54
  }
55
55
  }