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.
- package/README.md +28 -0
- package/antietcd.js +28 -4
- 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' &&
|
|
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;
|