@toa.io/extensions.stash 1.0.0-alpha.313 → 1.0.0-alpha.314

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.stash",
3
- "version": "1.0.0-alpha.313",
3
+ "version": "1.0.0-alpha.314",
4
4
  "type": "module",
5
5
  "description": "Toa Stash",
6
6
  "author": "temich <tema.gurtovoy@gmail.com>",
@@ -25,8 +25,8 @@
25
25
  "!**/.env*"
26
26
  ],
27
27
  "dependencies": {
28
- "@toa.io/core": "1.0.0-alpha.312",
29
- "@toa.io/definitions": "1.0.0-alpha.313",
28
+ "@toa.io/core": "1.0.0-alpha.314",
29
+ "@toa.io/definitions": "1.0.0-alpha.314",
30
30
  "@toa.io/generic": "1.0.0-alpha.311",
31
31
  "@toa.io/pointer": "1.0.0-alpha.311",
32
32
  "ioredis": "6.0.0",
@@ -36,5 +36,5 @@
36
36
  "scripts": {
37
37
  "transpile": "tsc"
38
38
  },
39
- "gitHead": "7da3b2627ceeefd1fa19d5c8851be88d928523b6"
39
+ "gitHead": "4b7c0f4468e6fa89f95a69f43fed85c648fb033d"
40
40
  }
@@ -5,6 +5,12 @@ export declare class Connection extends Connector {
5
5
  readonly locator: Locator;
6
6
  constructor(locator: Locator);
7
7
  protected open(): Promise<void>;
8
+ /**
9
+ * The client reconnects on its own and reports every attempt that fails, so an outage is said
10
+ * once, and so is its end. A client with nothing listening for its errors prints each of them
11
+ * past the logs, as unhandled.
12
+ */
13
+ private watch;
8
14
  protected close(): Promise<void>;
9
15
  private resolveURL;
10
16
  }
@@ -21,10 +21,36 @@ export class Connection extends Connector {
21
21
  protocol: 3,
22
22
  replyMapping: 'resp3'
23
23
  };
24
- this.redis = new Redis(await this.resolveURL(), options);
25
- await this.redis.connect();
24
+ const redis = new Redis(await this.resolveURL(), options);
25
+ this.redis = redis;
26
+ this.watch(redis);
27
+ await redis.connect();
26
28
  console.info('Stash connected to redis', { host: this.redis.options.host });
27
29
  }
30
+ /**
31
+ * The client reconnects on its own and reports every attempt that fails, so an outage is said
32
+ * once, and so is its end. A client with nothing listening for its errors prints each of them
33
+ * past the logs, as unhandled.
34
+ */
35
+ watch(redis) {
36
+ let lost = false;
37
+ // ioredis leaves `message` empty on a refused connection, where the code is the whole story
38
+ redis.on('error', (error) => {
39
+ if (lost)
40
+ return;
41
+ lost = true;
42
+ console.warn('Stash is unreachable', {
43
+ host: redis.options.host,
44
+ error: error.code ?? error.message
45
+ });
46
+ });
47
+ redis.on('ready', () => {
48
+ if (!lost)
49
+ return;
50
+ lost = false;
51
+ console.info('Stash reconnected', { host: redis.options.host });
52
+ });
53
+ }
28
54
  async close() {
29
55
  this.redis?.disconnect();
30
56
  this.redis = null;
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../source/Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,sCAAsC,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,OAAO,UAAW,SAAQ,SAAS;IAChC,KAAK,GAAiB,IAAI,CAAA;IACjB,OAAO,CAAS;IAEhC,YAAmB,OAAgB;QACjC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,0FAA0F;QAC1F,MAAM,SAAS,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;QAE1F,MAAM,OAAO,GAAiB;YAC5B,SAAS;YACT,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,OAAO;SACtB,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAE1B,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7E,CAAC;IAEkB,KAAK,CAAC,KAAK;QAC5B,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACzC,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,0FAA0F;QAC1F,4DAA4D;QAC5D,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG;YAAE,OAAO,yBAAyB,CAAA;QAExE,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAEzC,wFAAwF;QACxF,iFAAiF;QACjF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAEpF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../source/Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,sCAAsC,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,OAAO,UAAW,SAAQ,SAAS;IAChC,KAAK,GAAiB,IAAI,CAAA;IACjB,OAAO,CAAS;IAEhC,YAAmB,OAAgB;QACjC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,0FAA0F;QAC1F,MAAM,SAAS,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAA;QAE1F,MAAM,OAAO,GAAiB;YAC5B,SAAS;YACT,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,OAAO;SACtB,CAAA;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAA;QAEzD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEjB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;QAErB,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,KAAY;QACxB,IAAI,IAAI,GAAG,KAAK,CAAA;QAEhB,4FAA4F;QAC5F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACjD,IAAI,IAAI;gBAAE,OAAM;YAEhB,IAAI,GAAG,IAAI,CAAA;YAEX,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBACnC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBACxB,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO;aACnC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,OAAM;YAEjB,IAAI,GAAG,KAAK,CAAA;YAEZ,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEkB,KAAK,CAAC,KAAK;QAC5B,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QAEjB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACzC,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,0FAA0F;QAC1F,4DAA4D;QAC5D,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG;YAAE,OAAO,yBAAyB,CAAA;QAExE,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAEzC,wFAAwF;QACxF,iFAAiF;QACjF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAEpF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;CACF"}