@streamr/node 100.0.0-rc.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.
- package/LICENSE +78 -0
- package/README.md +54 -0
- package/bin/broker.ts +36 -0
- package/bin/config-wizard.js +4 -0
- package/bin/config-wizard.ts +17 -0
- package/bin/delete-expired-data.ts +41 -0
- package/bin/entry-point.ts +27 -0
- package/configs/development-1.env.json +68 -0
- package/configs/development-2.env.json +53 -0
- package/configs/development-3.env.json +53 -0
- package/configs/development-prod-resend.env.json +21 -0
- package/configs/docker-1.env.json +72 -0
- package/configs/docker-2.env.json +58 -0
- package/configs/docker-3.env.json +58 -0
- package/configuration.md +38 -0
- package/dist/bin/broker.d.ts +2 -0
- package/dist/bin/broker.js +42 -0
- package/dist/bin/broker.js.map +1 -0
- package/dist/bin/config-wizard.d.ts +2 -0
- package/dist/bin/config-wizard.js +22 -0
- package/dist/bin/config-wizard.js.map +1 -0
- package/dist/bin/delete-expired-data.d.ts +2 -0
- package/dist/bin/delete-expired-data.js +44 -0
- package/dist/bin/delete-expired-data.js.map +1 -0
- package/dist/bin/entry-point.d.ts +2 -0
- package/dist/bin/entry-point.js +28 -0
- package/dist/bin/entry-point.js.map +1 -0
- package/dist/package.json +78 -0
- package/dist/src/Plugin.d.ts +33 -0
- package/dist/src/Plugin.js +43 -0
- package/dist/src/Plugin.js.map +1 -0
- package/dist/src/apiAuthentication.d.ts +4 -0
- package/dist/src/apiAuthentication.js +16 -0
- package/dist/src/apiAuthentication.js.map +1 -0
- package/dist/src/broker.d.ts +8 -0
- package/dist/src/broker.js +69 -0
- package/dist/src/broker.js.map +1 -0
- package/dist/src/config/ConfigWizard.d.ts +5 -0
- package/dist/src/config/ConfigWizard.js +466 -0
- package/dist/src/config/ConfigWizard.js.map +1 -0
- package/dist/src/config/config.d.ts +26 -0
- package/dist/src/config/config.js +92 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/config.schema.json +86 -0
- package/dist/src/config/definitions.schema.json +35 -0
- package/dist/src/config/migration.d.ts +6 -0
- package/dist/src/config/migration.js +210 -0
- package/dist/src/config/migration.js.map +1 -0
- package/dist/src/config/validateConfig.d.ts +4 -0
- package/dist/src/config/validateConfig.js +40 -0
- package/dist/src/config/validateConfig.js.map +1 -0
- package/dist/src/exports.d.ts +3 -0
- package/dist/src/exports.js +6 -0
- package/dist/src/exports.js.map +1 -0
- package/dist/src/helpers/PayloadFormat.d.ts +19 -0
- package/dist/src/helpers/PayloadFormat.js +85 -0
- package/dist/src/helpers/PayloadFormat.js.map +1 -0
- package/dist/src/helpers/applyPluginClientConfigs.d.ts +3 -0
- package/dist/src/helpers/applyPluginClientConfigs.js +29 -0
- package/dist/src/helpers/applyPluginClientConfigs.js.map +1 -0
- package/dist/src/helpers/fetchOrThrow.d.ts +2 -0
- package/dist/src/helpers/fetchOrThrow.js +20 -0
- package/dist/src/helpers/fetchOrThrow.js.map +1 -0
- package/dist/src/helpers/generateMnemonicFromAddress.d.ts +5 -0
- package/dist/src/helpers/generateMnemonicFromAddress.js +16 -0
- package/dist/src/helpers/generateMnemonicFromAddress.js.map +1 -0
- package/dist/src/helpers/multiply.d.ts +1 -0
- package/dist/src/helpers/multiply.js +10 -0
- package/dist/src/helpers/multiply.js.map +1 -0
- package/dist/src/helpers/parser.d.ts +9 -0
- package/dist/src/helpers/parser.js +62 -0
- package/dist/src/helpers/parser.js.map +1 -0
- package/dist/src/helpers/partitions.d.ts +8 -0
- package/dist/src/helpers/partitions.js +32 -0
- package/dist/src/helpers/partitions.js.map +1 -0
- package/dist/src/helpers/weightedSample.d.ts +16 -0
- package/dist/src/helpers/weightedSample.js +35 -0
- package/dist/src/helpers/weightedSample.js.map +1 -0
- package/dist/src/httpServer.d.ts +16 -0
- package/dist/src/httpServer.js +71 -0
- package/dist/src/httpServer.js.map +1 -0
- package/dist/src/pluginRegistry.d.ts +3 -0
- package/dist/src/pluginRegistry.js +35 -0
- package/dist/src/pluginRegistry.js.map +1 -0
- package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.d.ts +12 -0
- package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.js +36 -0
- package/dist/src/plugins/consoleMetrics/ConsoleMetricsPlugin.js.map +1 -0
- package/dist/src/plugins/consoleMetrics/config.schema.json +18 -0
- package/dist/src/plugins/http/HttpPlugin.d.ts +8 -0
- package/dist/src/plugins/http/HttpPlugin.js +23 -0
- package/dist/src/plugins/http/HttpPlugin.js.map +1 -0
- package/dist/src/plugins/http/config.schema.json +12 -0
- package/dist/src/plugins/http/publishEndpoint.d.ts +3 -0
- package/dist/src/plugins/http/publishEndpoint.js +72 -0
- package/dist/src/plugins/http/publishEndpoint.js.map +1 -0
- package/dist/src/plugins/info/InfoPlugin.d.ts +9 -0
- package/dist/src/plugins/info/InfoPlugin.js +31 -0
- package/dist/src/plugins/info/InfoPlugin.js.map +1 -0
- package/dist/src/plugins/info/config.schema.json +12 -0
- package/dist/src/plugins/mqtt/Bridge.d.ts +40 -0
- package/dist/src/plugins/mqtt/Bridge.js +136 -0
- package/dist/src/plugins/mqtt/Bridge.js.map +1 -0
- package/dist/src/plugins/mqtt/MqttPlugin.d.ts +14 -0
- package/dist/src/plugins/mqtt/MqttPlugin.js +30 -0
- package/dist/src/plugins/mqtt/MqttPlugin.js.map +1 -0
- package/dist/src/plugins/mqtt/MqttServer.d.ts +22 -0
- package/dist/src/plugins/mqtt/MqttServer.js +109 -0
- package/dist/src/plugins/mqtt/MqttServer.js.map +1 -0
- package/dist/src/plugins/mqtt/config.schema.json +26 -0
- package/dist/src/plugins/operator/ConsistentHashRing.d.ts +20 -0
- package/dist/src/plugins/operator/ConsistentHashRing.js +64 -0
- package/dist/src/plugins/operator/ConsistentHashRing.js.map +1 -0
- package/dist/src/plugins/operator/ContractFacade.d.ts +80 -0
- package/dist/src/plugins/operator/ContractFacade.js +364 -0
- package/dist/src/plugins/operator/ContractFacade.js.map +1 -0
- package/dist/src/plugins/operator/MaintainTopologyHelper.d.ts +23 -0
- package/dist/src/plugins/operator/MaintainTopologyHelper.js +75 -0
- package/dist/src/plugins/operator/MaintainTopologyHelper.js.map +1 -0
- package/dist/src/plugins/operator/MaintainTopologyService.d.ts +11 -0
- package/dist/src/plugins/operator/MaintainTopologyService.js +57 -0
- package/dist/src/plugins/operator/MaintainTopologyService.js.map +1 -0
- package/dist/src/plugins/operator/OperatorFleetState.d.ts +33 -0
- package/dist/src/plugins/operator/OperatorFleetState.js +112 -0
- package/dist/src/plugins/operator/OperatorFleetState.js.map +1 -0
- package/dist/src/plugins/operator/OperatorPlugin.d.ts +50 -0
- package/dist/src/plugins/operator/OperatorPlugin.js +159 -0
- package/dist/src/plugins/operator/OperatorPlugin.js.map +1 -0
- package/dist/src/plugins/operator/StreamPartAssignments.d.ts +28 -0
- package/dist/src/plugins/operator/StreamPartAssignments.js +104 -0
- package/dist/src/plugins/operator/StreamPartAssignments.js.map +1 -0
- package/dist/src/plugins/operator/announceNodeToContract.d.ts +3 -0
- package/dist/src/plugins/operator/announceNodeToContract.js +39 -0
- package/dist/src/plugins/operator/announceNodeToContract.js.map +1 -0
- package/dist/src/plugins/operator/announceNodeToStream.d.ts +3 -0
- package/dist/src/plugins/operator/announceNodeToStream.js +25 -0
- package/dist/src/plugins/operator/announceNodeToStream.js.map +1 -0
- package/dist/src/plugins/operator/checkOperatorValueBreach.d.ts +2 -0
- package/dist/src/plugins/operator/checkOperatorValueBreach.js +21 -0
- package/dist/src/plugins/operator/checkOperatorValueBreach.js.map +1 -0
- package/dist/src/plugins/operator/closeExpiredFlags.d.ts +3 -0
- package/dist/src/plugins/operator/closeExpiredFlags.js +24 -0
- package/dist/src/plugins/operator/closeExpiredFlags.js.map +1 -0
- package/dist/src/plugins/operator/config.schema.json +152 -0
- package/dist/src/plugins/operator/createIsLeaderFn.d.ts +4 -0
- package/dist/src/plugins/operator/createIsLeaderFn.js +14 -0
- package/dist/src/plugins/operator/createIsLeaderFn.js.map +1 -0
- package/dist/src/plugins/operator/fetchRedundancyFactor.d.ts +2 -0
- package/dist/src/plugins/operator/fetchRedundancyFactor.js +43 -0
- package/dist/src/plugins/operator/fetchRedundancyFactor.js.map +1 -0
- package/dist/src/plugins/operator/formCoordinationStreamId.d.ts +3 -0
- package/dist/src/plugins/operator/formCoordinationStreamId.js +9 -0
- package/dist/src/plugins/operator/formCoordinationStreamId.js.map +1 -0
- package/dist/src/plugins/operator/heartbeatUtils.d.ts +67 -0
- package/dist/src/plugins/operator/heartbeatUtils.js +26 -0
- package/dist/src/plugins/operator/heartbeatUtils.js.map +1 -0
- package/dist/src/plugins/operator/inspectOverTime.d.ts +22 -0
- package/dist/src/plugins/operator/inspectOverTime.js +146 -0
- package/dist/src/plugins/operator/inspectOverTime.js.map +1 -0
- package/dist/src/plugins/operator/inspectRandomNode.d.ts +8 -0
- package/dist/src/plugins/operator/inspectRandomNode.js +44 -0
- package/dist/src/plugins/operator/inspectRandomNode.js.map +1 -0
- package/dist/src/plugins/operator/inspectionUtils.d.ts +23 -0
- package/dist/src/plugins/operator/inspectionUtils.js +120 -0
- package/dist/src/plugins/operator/inspectionUtils.js.map +1 -0
- package/dist/src/plugins/operator/maintainOperatorValue.d.ts +2 -0
- package/dist/src/plugins/operator/maintainOperatorValue.js +21 -0
- package/dist/src/plugins/operator/maintainOperatorValue.js.map +1 -0
- package/dist/src/plugins/operator/reviewSuspectNode.d.ts +24 -0
- package/dist/src/plugins/operator/reviewSuspectNode.js +56 -0
- package/dist/src/plugins/operator/reviewSuspectNode.js.map +1 -0
- package/dist/src/plugins/storage/Batch.d.ts +51 -0
- package/dist/src/plugins/storage/Batch.js +121 -0
- package/dist/src/plugins/storage/Batch.js.map +1 -0
- package/dist/src/plugins/storage/BatchManager.d.ts +27 -0
- package/dist/src/plugins/storage/BatchManager.js +117 -0
- package/dist/src/plugins/storage/BatchManager.js.map +1 -0
- package/dist/src/plugins/storage/Bucket.d.ts +23 -0
- package/dist/src/plugins/storage/Bucket.js +90 -0
- package/dist/src/plugins/storage/Bucket.js.map +1 -0
- package/dist/src/plugins/storage/BucketManager.d.ts +56 -0
- package/dist/src/plugins/storage/BucketManager.js +306 -0
- package/dist/src/plugins/storage/BucketManager.js.map +1 -0
- package/dist/src/plugins/storage/DataQueryFormat.d.ts +10 -0
- package/dist/src/plugins/storage/DataQueryFormat.js +51 -0
- package/dist/src/plugins/storage/DataQueryFormat.js.map +1 -0
- package/dist/src/plugins/storage/DeleteExpiredCmd.d.ts +28 -0
- package/dist/src/plugins/storage/DeleteExpiredCmd.js +155 -0
- package/dist/src/plugins/storage/DeleteExpiredCmd.js.map +1 -0
- package/dist/src/plugins/storage/SetMembershipSynchronizer.d.ts +33 -0
- package/dist/src/plugins/storage/SetMembershipSynchronizer.js +102 -0
- package/dist/src/plugins/storage/SetMembershipSynchronizer.js.map +1 -0
- package/dist/src/plugins/storage/Storage.d.ts +47 -0
- package/dist/src/plugins/storage/Storage.js +459 -0
- package/dist/src/plugins/storage/Storage.js.map +1 -0
- package/dist/src/plugins/storage/StorageConfig.d.ts +43 -0
- package/dist/src/plugins/storage/StorageConfig.js +83 -0
- package/dist/src/plugins/storage/StorageConfig.js.map +1 -0
- package/dist/src/plugins/storage/StorageEventListener.d.ts +17 -0
- package/dist/src/plugins/storage/StorageEventListener.js +46 -0
- package/dist/src/plugins/storage/StorageEventListener.js.map +1 -0
- package/dist/src/plugins/storage/StoragePlugin.d.ts +32 -0
- package/dist/src/plugins/storage/StoragePlugin.js +103 -0
- package/dist/src/plugins/storage/StoragePlugin.js.map +1 -0
- package/dist/src/plugins/storage/StoragePoller.d.ts +15 -0
- package/dist/src/plugins/storage/StoragePoller.js +47 -0
- package/dist/src/plugins/storage/StoragePoller.js.map +1 -0
- package/dist/src/plugins/storage/config.schema.json +88 -0
- package/dist/src/plugins/storage/dataMetadataEndpoint.d.ts +3 -0
- package/dist/src/plugins/storage/dataMetadataEndpoint.js +35 -0
- package/dist/src/plugins/storage/dataMetadataEndpoint.js.map +1 -0
- package/dist/src/plugins/storage/dataQueryEndpoint.d.ts +6 -0
- package/dist/src/plugins/storage/dataQueryEndpoint.js +181 -0
- package/dist/src/plugins/storage/dataQueryEndpoint.js.map +1 -0
- package/dist/src/plugins/storage/storageConfigEndpoint.d.ts +3 -0
- package/dist/src/plugins/storage/storageConfigEndpoint.js +31 -0
- package/dist/src/plugins/storage/storageConfigEndpoint.js.map +1 -0
- package/dist/src/plugins/subscriber/SubscriberPlugin.d.ts +16 -0
- package/dist/src/plugins/subscriber/SubscriberPlugin.js +22 -0
- package/dist/src/plugins/subscriber/SubscriberPlugin.js.map +1 -0
- package/dist/src/plugins/subscriber/config.schema.json +31 -0
- package/dist/src/plugins/websocket/Connection.d.ts +9 -0
- package/dist/src/plugins/websocket/Connection.js +45 -0
- package/dist/src/plugins/websocket/Connection.js.map +1 -0
- package/dist/src/plugins/websocket/PublishConnection.d.ts +12 -0
- package/dist/src/plugins/websocket/PublishConnection.js +46 -0
- package/dist/src/plugins/websocket/PublishConnection.js.map +1 -0
- package/dist/src/plugins/websocket/SubscribeConnection.d.ts +13 -0
- package/dist/src/plugins/websocket/SubscribeConnection.js +50 -0
- package/dist/src/plugins/websocket/SubscribeConnection.js.map +1 -0
- package/dist/src/plugins/websocket/WebsocketPlugin.d.ts +19 -0
- package/dist/src/plugins/websocket/WebsocketPlugin.js +26 -0
- package/dist/src/plugins/websocket/WebsocketPlugin.js.map +1 -0
- package/dist/src/plugins/websocket/WebsocketServer.d.ts +16 -0
- package/dist/src/plugins/websocket/WebsocketServer.js +132 -0
- package/dist/src/plugins/websocket/WebsocketServer.js.map +1 -0
- package/dist/src/plugins/websocket/config.schema.json +51 -0
- package/package.json +78 -0
- package/plugins.md +318 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Bucket = void 0;
|
|
4
|
+
class Bucket {
|
|
5
|
+
id;
|
|
6
|
+
streamId;
|
|
7
|
+
partition;
|
|
8
|
+
size;
|
|
9
|
+
records;
|
|
10
|
+
dateCreate;
|
|
11
|
+
maxSize;
|
|
12
|
+
maxRecordCount;
|
|
13
|
+
keepAliveSeconds;
|
|
14
|
+
ttl;
|
|
15
|
+
stored;
|
|
16
|
+
constructor(id, streamId, partition, size, records, dateCreate, maxSize, maxRecordCount, keepAliveSeconds) {
|
|
17
|
+
if (!id || !id.length) {
|
|
18
|
+
throw new TypeError('id must be not empty string');
|
|
19
|
+
}
|
|
20
|
+
if (!streamId || !streamId.length) {
|
|
21
|
+
throw new TypeError('streamId must be not empty string');
|
|
22
|
+
}
|
|
23
|
+
if (partition < 0) {
|
|
24
|
+
throw new TypeError('partition must be >= 0');
|
|
25
|
+
}
|
|
26
|
+
if (size < 0) {
|
|
27
|
+
throw new TypeError('size must be => 0');
|
|
28
|
+
}
|
|
29
|
+
if (records < 0) {
|
|
30
|
+
throw new TypeError('records must be => 0');
|
|
31
|
+
}
|
|
32
|
+
if (!(dateCreate instanceof Date)) {
|
|
33
|
+
throw new TypeError('dateCreate must be instance of Date');
|
|
34
|
+
}
|
|
35
|
+
if (maxSize <= 0) {
|
|
36
|
+
throw new TypeError('maxSize must be > 0');
|
|
37
|
+
}
|
|
38
|
+
if (maxRecordCount <= 0) {
|
|
39
|
+
throw new TypeError('maxRecordCount must be > 0');
|
|
40
|
+
}
|
|
41
|
+
if (keepAliveSeconds <= 0) {
|
|
42
|
+
throw new Error('keepAliveSeconds must be > 0');
|
|
43
|
+
}
|
|
44
|
+
this.id = id;
|
|
45
|
+
this.streamId = streamId;
|
|
46
|
+
this.partition = partition;
|
|
47
|
+
this.size = size;
|
|
48
|
+
this.records = records;
|
|
49
|
+
this.dateCreate = dateCreate;
|
|
50
|
+
this.maxSize = maxSize;
|
|
51
|
+
this.maxRecordCount = maxRecordCount;
|
|
52
|
+
this.keepAliveSeconds = keepAliveSeconds;
|
|
53
|
+
this.ttl = new Date();
|
|
54
|
+
this.stored = false;
|
|
55
|
+
this.updateTTL();
|
|
56
|
+
}
|
|
57
|
+
isStored() {
|
|
58
|
+
return this.stored;
|
|
59
|
+
}
|
|
60
|
+
setStored() {
|
|
61
|
+
this.stored = true;
|
|
62
|
+
}
|
|
63
|
+
checkSize(percentDeduction = 0) {
|
|
64
|
+
const maxPercentSize = (this.maxSize * (100 - percentDeduction)) / 100;
|
|
65
|
+
const maxRecordCount = (this.maxRecordCount * (100 - percentDeduction)) / 100;
|
|
66
|
+
return this.size >= maxPercentSize || this.records >= maxRecordCount;
|
|
67
|
+
}
|
|
68
|
+
isAlmostFull(percentDeduction = 30) {
|
|
69
|
+
return this.checkSize(percentDeduction);
|
|
70
|
+
}
|
|
71
|
+
getId() {
|
|
72
|
+
return this.id;
|
|
73
|
+
}
|
|
74
|
+
incrementBucket(size) {
|
|
75
|
+
this.size += size;
|
|
76
|
+
this.records += 1;
|
|
77
|
+
this.stored = false;
|
|
78
|
+
this.updateTTL();
|
|
79
|
+
}
|
|
80
|
+
updateTTL() {
|
|
81
|
+
this.ttl = new Date();
|
|
82
|
+
this.ttl.setSeconds(this.ttl.getSeconds() + this.keepAliveSeconds);
|
|
83
|
+
}
|
|
84
|
+
isAlive() {
|
|
85
|
+
const now = new Date();
|
|
86
|
+
return this.ttl >= now;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.Bucket = Bucket;
|
|
90
|
+
//# sourceMappingURL=Bucket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bucket.js","sourceRoot":"","sources":["../../../../src/plugins/storage/Bucket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Client } from 'cassandra-driver';
|
|
2
|
+
import Heap from 'heap';
|
|
3
|
+
import { Bucket, BucketId } from './Bucket';
|
|
4
|
+
type StreamPartKey = string;
|
|
5
|
+
interface StreamPartState {
|
|
6
|
+
streamId: string;
|
|
7
|
+
partition: number;
|
|
8
|
+
buckets: Heap<Bucket>;
|
|
9
|
+
minTimestamp?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface BucketManagerOptions {
|
|
12
|
+
checkFullBucketsTimeout: number;
|
|
13
|
+
storeBucketsTimeout: number;
|
|
14
|
+
maxBucketSize: number;
|
|
15
|
+
maxBucketRecords: number;
|
|
16
|
+
bucketKeepAliveSeconds: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class BucketManager {
|
|
19
|
+
opts: BucketManagerOptions;
|
|
20
|
+
streamParts: Record<StreamPartKey, StreamPartState>;
|
|
21
|
+
buckets: Record<BucketId, Bucket>;
|
|
22
|
+
cassandraClient: Client;
|
|
23
|
+
private checkFullBucketsTimeout?;
|
|
24
|
+
private storeBucketsTimeout?;
|
|
25
|
+
constructor(cassandraClient: Client, opts?: Partial<BucketManagerOptions>);
|
|
26
|
+
getBucketId(streamId: string, partition: number, timestamp: number): string | undefined;
|
|
27
|
+
incrementBucket(bucketId: BucketId, size: number): void;
|
|
28
|
+
private getLatestInMemoryBucket;
|
|
29
|
+
private findBucketId;
|
|
30
|
+
private checkFullBuckets;
|
|
31
|
+
/**
|
|
32
|
+
* Get buckets by timestamp range or all known from some timestamp or all buckets before some timestamp
|
|
33
|
+
*
|
|
34
|
+
* @param streamId
|
|
35
|
+
* @param partition
|
|
36
|
+
* @param fromTimestamp
|
|
37
|
+
* @param toTimestamp
|
|
38
|
+
* @returns {Promise<[]>}
|
|
39
|
+
*/
|
|
40
|
+
getBucketsByTimestamp(streamId: string, partition: number, fromTimestamp?: number | undefined, toTimestamp?: number | undefined): Promise<Bucket[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Get latest N buckets or get latest N buckets before some date (to check buckets in the past)
|
|
43
|
+
*
|
|
44
|
+
* @param streamId
|
|
45
|
+
* @param partition
|
|
46
|
+
* @param limit
|
|
47
|
+
* @param timestamp
|
|
48
|
+
* @returns {Promise<[]>}
|
|
49
|
+
*/
|
|
50
|
+
getLastBuckets(streamId: string, partition: number, limit?: number, timestamp?: number | undefined): Promise<Bucket[]>;
|
|
51
|
+
private getBucketsFromDatabase;
|
|
52
|
+
stop(): void;
|
|
53
|
+
private storeBuckets;
|
|
54
|
+
private removeBucket;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BucketManager = void 0;
|
|
7
|
+
const heap_1 = __importDefault(require("heap"));
|
|
8
|
+
const cassandra_driver_1 = require("cassandra-driver");
|
|
9
|
+
const utils_1 = require("@streamr/utils");
|
|
10
|
+
const Bucket_1 = require("./Bucket");
|
|
11
|
+
const utils_2 = require("@streamr/utils");
|
|
12
|
+
const { TimeUuid } = cassandra_driver_1.types;
|
|
13
|
+
const logger = new utils_1.Logger(module);
|
|
14
|
+
const toKey = (streamId, partition) => `${streamId}-${partition}`;
|
|
15
|
+
const instantiateNewHeap = () => new heap_1.default((a, b) => {
|
|
16
|
+
// @ts-expect-error TODO is dateCreate a Date object or a number?
|
|
17
|
+
return b.dateCreate - a.dateCreate;
|
|
18
|
+
});
|
|
19
|
+
class BucketManager {
|
|
20
|
+
opts;
|
|
21
|
+
streamParts;
|
|
22
|
+
buckets;
|
|
23
|
+
cassandraClient;
|
|
24
|
+
checkFullBucketsTimeout;
|
|
25
|
+
storeBucketsTimeout;
|
|
26
|
+
constructor(cassandraClient, opts = {}) {
|
|
27
|
+
const defaultOptions = {
|
|
28
|
+
checkFullBucketsTimeout: 1000,
|
|
29
|
+
storeBucketsTimeout: 500,
|
|
30
|
+
maxBucketSize: 1024 * 1024 * 100,
|
|
31
|
+
maxBucketRecords: 500 * 1000,
|
|
32
|
+
bucketKeepAliveSeconds: 60
|
|
33
|
+
};
|
|
34
|
+
this.opts = (0, utils_2.merge)(defaultOptions, opts);
|
|
35
|
+
this.streamParts = Object.create(null);
|
|
36
|
+
this.buckets = Object.create(null);
|
|
37
|
+
this.cassandraClient = cassandraClient;
|
|
38
|
+
this.checkFullBucketsTimeout = undefined;
|
|
39
|
+
this.storeBucketsTimeout = undefined;
|
|
40
|
+
this.checkFullBuckets();
|
|
41
|
+
this.storeBuckets();
|
|
42
|
+
}
|
|
43
|
+
getBucketId(streamId, partition, timestamp) {
|
|
44
|
+
let bucketId;
|
|
45
|
+
const key = toKey(streamId, partition);
|
|
46
|
+
if (this.streamParts[key]) {
|
|
47
|
+
logger.trace('Found stream', { key });
|
|
48
|
+
bucketId = this.findBucketId(key, timestamp);
|
|
49
|
+
if (!bucketId) {
|
|
50
|
+
const stream = this.streamParts[key];
|
|
51
|
+
stream.minTimestamp = stream.minTimestamp !== undefined ? Math.min(stream.minTimestamp, timestamp) : timestamp;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
logger.trace('Create new (stream not found)', { key });
|
|
56
|
+
this.streamParts[key] = {
|
|
57
|
+
streamId,
|
|
58
|
+
partition,
|
|
59
|
+
buckets: instantiateNewHeap(),
|
|
60
|
+
minTimestamp: timestamp
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return bucketId;
|
|
64
|
+
}
|
|
65
|
+
incrementBucket(bucketId, size) {
|
|
66
|
+
const bucket = this.buckets[bucketId];
|
|
67
|
+
if (bucket) {
|
|
68
|
+
bucket.incrementBucket(size);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
logger.warn('Failed to increment bucket (bucket not found)', { bucketId });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
getLatestInMemoryBucket(key) {
|
|
75
|
+
const stream = this.streamParts[key];
|
|
76
|
+
if (stream) {
|
|
77
|
+
return stream.buckets.peek();
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
findBucketId(key, timestamp) {
|
|
82
|
+
let bucketId;
|
|
83
|
+
logger.trace('Check stream in state', {
|
|
84
|
+
key,
|
|
85
|
+
timestamp
|
|
86
|
+
});
|
|
87
|
+
const stream = this.streamParts[key];
|
|
88
|
+
if (stream) {
|
|
89
|
+
const latestBucket = this.getLatestInMemoryBucket(key);
|
|
90
|
+
if (latestBucket) {
|
|
91
|
+
// latest bucket is younger than timestamp
|
|
92
|
+
if (!latestBucket.isAlmostFull() && latestBucket.dateCreate <= new Date(timestamp)) {
|
|
93
|
+
bucketId = latestBucket.getId();
|
|
94
|
+
// timestamp is in the past
|
|
95
|
+
}
|
|
96
|
+
else if (latestBucket.dateCreate > new Date(timestamp)) {
|
|
97
|
+
const currentBuckets = stream.buckets.toArray();
|
|
98
|
+
// remove latest
|
|
99
|
+
currentBuckets.shift();
|
|
100
|
+
for (const currentBucket of currentBuckets) {
|
|
101
|
+
if (currentBucket.dateCreate <= new Date(timestamp)) {
|
|
102
|
+
bucketId = currentBucket.getId();
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return bucketId;
|
|
110
|
+
}
|
|
111
|
+
async checkFullBuckets() {
|
|
112
|
+
const streamIds = Object.keys(this.streamParts);
|
|
113
|
+
for (const streamIdKey of streamIds) {
|
|
114
|
+
const stream = this.streamParts[streamIdKey];
|
|
115
|
+
const { streamId, partition } = stream;
|
|
116
|
+
const { minTimestamp } = stream;
|
|
117
|
+
// minTimestamp is undefined if all buckets are found
|
|
118
|
+
if (minTimestamp === undefined) {
|
|
119
|
+
// eslint-disable-next-line no-continue
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
let insertNewBucket = false;
|
|
123
|
+
// helper function
|
|
124
|
+
const checkFoundBuckets = (foundBuckets) => {
|
|
125
|
+
const foundBucket = foundBuckets.length ? foundBuckets[0] : undefined;
|
|
126
|
+
if (foundBucket && !(foundBucket.getId() in this.buckets)) {
|
|
127
|
+
stream.buckets.push(foundBucket);
|
|
128
|
+
this.buckets[foundBucket.getId()] = foundBucket;
|
|
129
|
+
stream.minTimestamp = undefined;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
insertNewBucket = true;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
// check in memory
|
|
136
|
+
const key = toKey(streamId, partition);
|
|
137
|
+
const latestBucket = this.getLatestInMemoryBucket(key);
|
|
138
|
+
if (latestBucket) {
|
|
139
|
+
// if latest is full or almost full - create new bucket
|
|
140
|
+
insertNewBucket = latestBucket.isAlmostFull();
|
|
141
|
+
}
|
|
142
|
+
// if latest is not found or it's full => try to find latest in database
|
|
143
|
+
if (!latestBucket || latestBucket.isAlmostFull()) {
|
|
144
|
+
// eslint-disable-next-line no-await-in-loop
|
|
145
|
+
const foundBuckets = await this.getLastBuckets(streamId, partition, 1);
|
|
146
|
+
checkFoundBuckets(foundBuckets);
|
|
147
|
+
}
|
|
148
|
+
// check in database that we have bucket for minTimestamp
|
|
149
|
+
if (!insertNewBucket && !this.findBucketId(key, minTimestamp)) {
|
|
150
|
+
// eslint-disable-next-line no-await-in-loop
|
|
151
|
+
const foundBuckets = await this.getLastBuckets(streamId, partition, 1, minTimestamp);
|
|
152
|
+
checkFoundBuckets(foundBuckets);
|
|
153
|
+
}
|
|
154
|
+
if (insertNewBucket) {
|
|
155
|
+
logger.trace('Create new bucket (existing bucket for timestamp not found)', { minTimestamp });
|
|
156
|
+
// we create first in memory, so don't wait for database, then _storeBuckets inserts bucket into database
|
|
157
|
+
const newBucket = new Bucket_1.Bucket(TimeUuid.fromDate(new Date(minTimestamp)).toString(), streamId, partition, 0, 0, new Date(minTimestamp), this.opts.maxBucketSize, this.opts.maxBucketRecords, this.opts.bucketKeepAliveSeconds);
|
|
158
|
+
stream.buckets.push(newBucket);
|
|
159
|
+
this.buckets[newBucket.getId()] = newBucket;
|
|
160
|
+
// eslint-disable-next-line require-atomic-updates
|
|
161
|
+
stream.minTimestamp = undefined;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
this.checkFullBucketsTimeout = setTimeout(() => this.checkFullBuckets(), this.opts.checkFullBucketsTimeout);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get buckets by timestamp range or all known from some timestamp or all buckets before some timestamp
|
|
168
|
+
*
|
|
169
|
+
* @param streamId
|
|
170
|
+
* @param partition
|
|
171
|
+
* @param fromTimestamp
|
|
172
|
+
* @param toTimestamp
|
|
173
|
+
* @returns {Promise<[]>}
|
|
174
|
+
*/
|
|
175
|
+
async getBucketsByTimestamp(streamId, partition, fromTimestamp = undefined, toTimestamp = undefined) {
|
|
176
|
+
const getExplicitFirst = () => {
|
|
177
|
+
// if fromTimestamp is defined, the first data point are in a some earlier bucket
|
|
178
|
+
// (bucket.dateCreated<=fromTimestamp as data within one millisecond won't be divided to multiple buckets)
|
|
179
|
+
const QUERY = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC LIMIT 1';
|
|
180
|
+
const params = [streamId, partition, fromTimestamp];
|
|
181
|
+
return this.getBucketsFromDatabase(QUERY, params, streamId, partition);
|
|
182
|
+
};
|
|
183
|
+
const getRest = () => {
|
|
184
|
+
/* eslint-disable max-len */
|
|
185
|
+
const GET_LAST_BUCKETS_RANGE_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create > ? AND date_create <= ? ORDER BY date_create DESC';
|
|
186
|
+
const GET_LAST_BUCKETS_FROM_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create > ? ORDER BY date_create DESC';
|
|
187
|
+
const GET_LAST_BUCKETS_TO_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC';
|
|
188
|
+
let query;
|
|
189
|
+
let params;
|
|
190
|
+
if (fromTimestamp !== undefined && toTimestamp !== undefined) {
|
|
191
|
+
query = GET_LAST_BUCKETS_RANGE_TIMESTAMP;
|
|
192
|
+
params = [streamId, partition, fromTimestamp, toTimestamp];
|
|
193
|
+
}
|
|
194
|
+
else if (fromTimestamp !== undefined && toTimestamp === undefined) {
|
|
195
|
+
query = GET_LAST_BUCKETS_FROM_TIMESTAMP;
|
|
196
|
+
params = [streamId, partition, fromTimestamp];
|
|
197
|
+
}
|
|
198
|
+
else if (fromTimestamp === undefined && toTimestamp !== undefined) {
|
|
199
|
+
query = GET_LAST_BUCKETS_TO_TIMESTAMP;
|
|
200
|
+
params = [streamId, partition, toTimestamp];
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
throw new TypeError(`Not correct combination of fromTimestamp (${fromTimestamp}) and toTimestamp (${toTimestamp})`);
|
|
204
|
+
}
|
|
205
|
+
return this.getBucketsFromDatabase(query, params, streamId, partition);
|
|
206
|
+
};
|
|
207
|
+
if (fromTimestamp !== undefined) {
|
|
208
|
+
return Promise.all([getExplicitFirst(), getRest()])
|
|
209
|
+
.then(([first, rest]) => rest.concat(first));
|
|
210
|
+
}
|
|
211
|
+
else { // eslint-disable-line no-else-return
|
|
212
|
+
return getRest();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get latest N buckets or get latest N buckets before some date (to check buckets in the past)
|
|
217
|
+
*
|
|
218
|
+
* @param streamId
|
|
219
|
+
* @param partition
|
|
220
|
+
* @param limit
|
|
221
|
+
* @param timestamp
|
|
222
|
+
* @returns {Promise<[]>}
|
|
223
|
+
*/
|
|
224
|
+
async getLastBuckets(streamId, partition, limit = 1, timestamp = undefined) {
|
|
225
|
+
const GET_LAST_BUCKETS = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? ORDER BY date_create DESC LIMIT ?';
|
|
226
|
+
const GET_LAST_BUCKETS_TIMESTAMP = 'SELECT * FROM bucket WHERE stream_id = ? and partition = ? AND date_create <= ? ORDER BY date_create DESC LIMIT ?';
|
|
227
|
+
let query;
|
|
228
|
+
let params;
|
|
229
|
+
if (timestamp) {
|
|
230
|
+
query = GET_LAST_BUCKETS_TIMESTAMP;
|
|
231
|
+
params = [streamId, partition, timestamp, limit];
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
query = GET_LAST_BUCKETS;
|
|
235
|
+
params = [streamId, partition, limit];
|
|
236
|
+
}
|
|
237
|
+
return this.getBucketsFromDatabase(query, params, streamId, partition);
|
|
238
|
+
}
|
|
239
|
+
async getBucketsFromDatabase(query, params, streamId, partition) {
|
|
240
|
+
const buckets = [];
|
|
241
|
+
const resultSet = await this.cassandraClient.execute(query, params, {
|
|
242
|
+
prepare: true,
|
|
243
|
+
});
|
|
244
|
+
resultSet.rows.forEach((row) => {
|
|
245
|
+
const { id, records, size, date_create: dateCreate } = row;
|
|
246
|
+
const bucket = new Bucket_1.Bucket(id.toString(), streamId, partition, size, records, new Date(dateCreate), this.opts.maxBucketSize, this.opts.maxBucketRecords, this.opts.bucketKeepAliveSeconds);
|
|
247
|
+
buckets.push(bucket);
|
|
248
|
+
});
|
|
249
|
+
return buckets;
|
|
250
|
+
}
|
|
251
|
+
stop() {
|
|
252
|
+
clearInterval(this.checkFullBucketsTimeout);
|
|
253
|
+
clearInterval(this.storeBucketsTimeout);
|
|
254
|
+
}
|
|
255
|
+
async storeBuckets() {
|
|
256
|
+
// for non-existing buckets UPDATE works as INSERT
|
|
257
|
+
const UPDATE_BUCKET = 'UPDATE bucket SET size = ?, records = ?, id = ? WHERE stream_id = ? AND partition = ? AND date_create = ?';
|
|
258
|
+
const notStoredBuckets = Object.values(this.buckets).filter((bucket) => !bucket.isStored());
|
|
259
|
+
const results = await Promise.allSettled(notStoredBuckets.map(async (bucket) => {
|
|
260
|
+
const { id, size, records, streamId, partition, dateCreate } = bucket;
|
|
261
|
+
const params = [size, records, id, streamId, partition, dateCreate];
|
|
262
|
+
await this.cassandraClient.execute(UPDATE_BUCKET, params, {
|
|
263
|
+
prepare: true
|
|
264
|
+
});
|
|
265
|
+
return {
|
|
266
|
+
bucket,
|
|
267
|
+
records
|
|
268
|
+
};
|
|
269
|
+
}));
|
|
270
|
+
results.forEach((result) => {
|
|
271
|
+
if (result.status === 'fulfilled') {
|
|
272
|
+
const { bucket: storedBucket, records } = result.value;
|
|
273
|
+
if (storedBucket.records === records) {
|
|
274
|
+
storedBucket.setStored();
|
|
275
|
+
}
|
|
276
|
+
if (!storedBucket.isAlive() && storedBucket.isStored()) {
|
|
277
|
+
this.removeBucket(storedBucket.getId(), storedBucket.streamId, storedBucket.partition);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
const bucketsToRemove = Object.values(this.buckets).filter((bucket) => bucket.isStored() && !bucket.isAlive());
|
|
282
|
+
bucketsToRemove.forEach((bucket) => this.removeBucket(bucket.getId(), bucket.streamId, bucket.partition));
|
|
283
|
+
this.storeBucketsTimeout = setTimeout(() => this.storeBuckets(), this.opts.storeBucketsTimeout);
|
|
284
|
+
}
|
|
285
|
+
removeBucket(bucketId, streamId, partition) {
|
|
286
|
+
delete this.buckets[bucketId];
|
|
287
|
+
const key = toKey(streamId, partition);
|
|
288
|
+
const stream = this.streamParts[key];
|
|
289
|
+
if (stream) {
|
|
290
|
+
const currentBuckets = stream.buckets.toArray();
|
|
291
|
+
for (let i = 0; i < currentBuckets.length; i++) {
|
|
292
|
+
if (currentBuckets[i].getId() === bucketId) {
|
|
293
|
+
delete currentBuckets[i];
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// after removing we need to rebuild heap
|
|
298
|
+
stream.buckets = instantiateNewHeap();
|
|
299
|
+
currentBuckets.forEach((bucket) => {
|
|
300
|
+
stream.buckets.push(bucket);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
exports.BucketManager = BucketManager;
|
|
306
|
+
//# sourceMappingURL=BucketManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BucketManager.js","sourceRoot":"","sources":["../../../../src/plugins/storage/BucketManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StreamMessage } from '@streamr/protocol';
|
|
2
|
+
export interface Format {
|
|
3
|
+
formatMessage: ((bytes: Uint8Array) => string) | ((bytes: Uint8Array) => Uint8Array);
|
|
4
|
+
contentType: string;
|
|
5
|
+
delimiter?: string;
|
|
6
|
+
header?: string;
|
|
7
|
+
footer?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const toObject: (msg: StreamMessage) => any;
|
|
10
|
+
export declare const getFormat: (id: string | undefined) => Format | undefined;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFormat = exports.toObject = void 0;
|
|
4
|
+
const trackerless_network_1 = require("@streamr/trackerless-network");
|
|
5
|
+
const utils_1 = require("@streamr/utils");
|
|
6
|
+
const createJsonFormat = (formatMessage) => {
|
|
7
|
+
return {
|
|
8
|
+
formatMessage,
|
|
9
|
+
contentType: 'application/json',
|
|
10
|
+
delimiter: ',',
|
|
11
|
+
header: '[',
|
|
12
|
+
footer: ']'
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
const createBinaryFormat = (formatMessage) => {
|
|
16
|
+
return {
|
|
17
|
+
formatMessage,
|
|
18
|
+
contentType: 'application/octet-stream'
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
const toObject = (msg) => {
|
|
22
|
+
const parsedContent = msg.getParsedContent();
|
|
23
|
+
const result = {
|
|
24
|
+
streamId: msg.getStreamId(),
|
|
25
|
+
streamPartition: msg.getStreamPartition(),
|
|
26
|
+
timestamp: msg.getTimestamp(),
|
|
27
|
+
sequenceNumber: msg.getSequenceNumber(),
|
|
28
|
+
publisherId: msg.getPublisherId(),
|
|
29
|
+
msgChainId: msg.getMsgChainId(),
|
|
30
|
+
messageType: msg.messageType,
|
|
31
|
+
contentType: msg.contentType,
|
|
32
|
+
encryptionType: msg.encryptionType,
|
|
33
|
+
content: parsedContent instanceof Uint8Array ? (0, utils_1.binaryToHex)(parsedContent) : parsedContent,
|
|
34
|
+
signature: (0, utils_1.binaryToHex)(msg.signature),
|
|
35
|
+
};
|
|
36
|
+
if (msg.groupKeyId !== undefined) {
|
|
37
|
+
result.groupKeyId = msg.groupKeyId;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
exports.toObject = toObject;
|
|
42
|
+
const FORMATS = {
|
|
43
|
+
'object': createJsonFormat((bytes) => JSON.stringify((0, exports.toObject)((0, trackerless_network_1.convertBytesToStreamMessage)(bytes)))),
|
|
44
|
+
'raw': createBinaryFormat(utils_1.toLengthPrefixedFrame)
|
|
45
|
+
};
|
|
46
|
+
const getFormat = (id) => {
|
|
47
|
+
const key = id ?? 'object';
|
|
48
|
+
return FORMATS[key];
|
|
49
|
+
};
|
|
50
|
+
exports.getFormat = getFormat;
|
|
51
|
+
//# sourceMappingURL=DataQueryFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataQueryFormat.js","sourceRoot":"","sources":["../../../../src/plugins/storage/DataQueryFormat.ts"],"names":[],"mappings":";;;AACA,sEAA0E;AAC1E,0CAAmE;AAUnE,MAAM,gBAAgB,GAAG,CAAC,aAA4C,EAAU,EAAE;IAC9E,OAAO;QACH,aAAa;QACb,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;KACd,CAAA;AACL,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,aAAgD,EAAU,EAAE;IACpF,OAAO;QACH,aAAa;QACb,WAAW,EAAE,0BAA0B;KAC1C,CAAA;AACL,CAAC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAO,EAAE;IAChD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC5C,MAAM,MAAM,GAAQ;QAChB,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE;QAC3B,eAAe,EAAE,GAAG,CAAC,kBAAkB,EAAE;QACzC,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE;QAC7B,cAAc,EAAE,GAAG,CAAC,iBAAiB,EAAE;QACvC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE;QACjC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE;QAC/B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,OAAO,EAAE,aAAa,YAAY,UAAU,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa;QACzF,SAAS,EAAE,IAAA,mBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;KACxC,CAAA;IACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;IACtC,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAnBY,QAAA,QAAQ,YAmBpB;AAED,MAAM,OAAO,GAA2B;IACpC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAC,IAAA,iDAA2B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/G,KAAK,EAAE,kBAAkB,CAAC,6BAAqB,CAAC;CACnD,CAAA;AAEM,MAAM,SAAS,GAAG,CAAC,EAAsB,EAAsB,EAAE;IACpE,MAAM,GAAG,GAAG,EAAE,IAAI,QAAQ,CAAA;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA;AAHY,QAAA,SAAS,aAGrB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Client } from 'cassandra-driver';
|
|
2
|
+
import { Limit } from 'p-limit';
|
|
3
|
+
import { StreamrClient } from '@streamr/sdk';
|
|
4
|
+
interface Options {
|
|
5
|
+
streamrBaseUrl: string;
|
|
6
|
+
cassandraUsername: string;
|
|
7
|
+
cassandraPassword: string;
|
|
8
|
+
cassandraHosts: string[];
|
|
9
|
+
cassandraDatacenter: string;
|
|
10
|
+
cassandraKeyspace: string;
|
|
11
|
+
bucketLimit?: number;
|
|
12
|
+
dryRun?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class DeleteExpiredCmd {
|
|
15
|
+
streamrBaseUrl: string;
|
|
16
|
+
dryRun: boolean;
|
|
17
|
+
bucketLimit: number;
|
|
18
|
+
cassandraClient: Client;
|
|
19
|
+
limit: Limit;
|
|
20
|
+
constructor({ streamrBaseUrl, cassandraUsername, cassandraPassword, cassandraHosts, cassandraDatacenter, cassandraKeyspace, bucketLimit, dryRun }: Options);
|
|
21
|
+
run(client: StreamrClient): Promise<void>;
|
|
22
|
+
private getStreams;
|
|
23
|
+
private fetchStreamsInfo;
|
|
24
|
+
private getPotentiallyExpiredBuckets;
|
|
25
|
+
private filterExpiredBuckets;
|
|
26
|
+
private deleteExpired;
|
|
27
|
+
}
|
|
28
|
+
export {};
|