antietcd 1.0.6 → 1.0.8

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 (3) hide show
  1. package/README.md +28 -0
  2. package/antietcd.js +28 -4
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -27,6 +27,7 @@ Simplistic miniature etcd replacement based on [TinyRaft](https://git.yourcmc.ru
27
27
  - [/v3/lease/grant](#v3-lease-grant)
28
28
  - [/v3/lease/keepalive](#v3-lease-keepalive)
29
29
  - [/v3/lease/revoke or /v3/kv/lease/revoke](#v3-lease-revoke-or-v3-kv-lease-revoke)
30
+ - [/v3/maintenance/status](#v3-maintenance-status)
30
31
  - [Websocket-based watch APIs](#websocket-based-watch-apis)
31
32
  - [HTTP Error Codes](#http-error-codes)
32
33
 
@@ -450,6 +451,33 @@ type LeaseRevokeResponse = {
450
451
  }
451
452
  ```
452
453
 
454
+ ### /v3/maintenance/status
455
+
456
+ Request:
457
+
458
+ ```{}```
459
+
460
+ Response:
461
+
462
+ ```ts
463
+ type MaintenanceStatusResponse = {
464
+ header: {
465
+ member_id?: string,
466
+ revision: number,
467
+ compact_revision: number,
468
+ raft_term?: number,
469
+ },
470
+ version: string,
471
+ cluster?: { [string]: string },
472
+ leader?: string,
473
+ followers?: string[],
474
+ raftTerm?: string,
475
+ raftState?: 'leader'|'follower'|'candidate',
476
+ // dbSize actually reports process memory usage
477
+ dbSize: number,
478
+ }
479
+ ```
480
+
453
481
  ### Websocket-based watch APIs
454
482
 
455
483
  Client-to-server message format:
package/antietcd.js CHANGED
@@ -17,6 +17,8 @@ const AntiPersistence = require('./antipersistence.js');
17
17
  const AntiCluster = require('./anticluster.js');
18
18
  const { runCallbacks, RequestError } = require('./common.js');
19
19
 
20
+ const VERSION = '1.0.8';
21
+
20
22
  class AntiEtcd extends EventEmitter
21
23
  {
22
24
  constructor(cfg)
@@ -181,13 +183,13 @@ class AntiEtcd extends EventEmitter
181
183
  if (e instanceof RequestError)
182
184
  {
183
185
  code = e.code;
184
- reply = e.message;
186
+ reply = e.message+'\n';
185
187
  }
186
188
  else
187
189
  {
188
190
  console.error(e);
189
191
  code = 500;
190
- reply = 'Internal error: '+e.message;
192
+ reply = 'Internal error: '+e.message+'\n';
191
193
  }
192
194
  }
193
195
  try
@@ -329,7 +331,7 @@ class AntiEtcd extends EventEmitter
329
331
  if ((e instanceof RequestError) && e.code == 404)
330
332
  {
331
333
  throw new RequestError(404, 'Supported APIs: /v3/kv/txn, /v3/kv/range, /v3/kv/put, /v3/kv/deleterange, '+
332
- '/v3/lease/grant, /v3/lease/revoke, /v3/kv/lease/revoke, /v3/lease/keepalive');
334
+ '/v3/lease/grant, /v3/lease/revoke, /v3/kv/lease/revoke, /v3/lease/keepalive, /v3/maintenance/status');
333
335
  }
334
336
  else
335
337
  {
@@ -345,7 +347,7 @@ class AntiEtcd extends EventEmitter
345
347
  {
346
348
  throw new RequestError(502, 'Server is stopping');
347
349
  }
348
- if (path !== 'dump' && this.cluster)
350
+ if (this.cluster && path !== 'dump' && path != 'maintenance_status')
349
351
  {
350
352
  const res = await this.cluster.checkRaftState(
351
353
  path,
@@ -476,6 +478,26 @@ class AntiEtcd extends EventEmitter
476
478
  return this.etctree.api_keepalive_lease(data);
477
479
  }
478
480
 
481
+ _handle_maintenance_status(data)
482
+ {
483
+ const raft = this.cluster && this.cluster.raft;
484
+ return {
485
+ header: {
486
+ member_id: this.cfg.node_id || undefined,
487
+ revision: this.etctree.mod_revision,
488
+ compact_revision: this.etctree.compact_revision || 0,
489
+ raft_term: raft && raft.term || undefined,
490
+ },
491
+ version: 'antietcd '+AntiEtcd.VERSION,
492
+ cluster: this.cfg.cluster || undefined,
493
+ leader: raft && raft.leader || undefined,
494
+ followers: raft && raft.followers || undefined,
495
+ raftTerm: raft && raft.term || undefined,
496
+ raftState: raft && raft.state || undefined,
497
+ dbSize: process.memoryUsage().heapUsed,
498
+ };
499
+ }
500
+
479
501
  // eslint-disable-next-line no-unused-vars
480
502
  _handle_dump(data)
481
503
  {
@@ -549,4 +571,6 @@ class AntiEtcd extends EventEmitter
549
571
 
550
572
  AntiEtcd.RequestError = RequestError;
551
573
 
574
+ AntiEtcd.VERSION = VERSION;
575
+
552
576
  module.exports = AntiEtcd;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antietcd",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Simplistic etcd replacement based on TinyRaft",
5
5
  "main": "antietcd.js",
6
6
  "scripts": {