1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "document_db_flush_config.h"
#include <vespa/searchcore/proton/attribute/attribute_usage_filter_config.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/time.h>
#include <memory>
namespace proton {
class DocumentDBPruneConfig
{
private:
vespalib::duration _delay;
vespalib::duration _interval;
vespalib::duration _age;
public:
DocumentDBPruneConfig() noexcept;
DocumentDBPruneConfig(vespalib::duration interval, vespalib::duration age) noexcept;
bool operator==(const DocumentDBPruneConfig &rhs) const noexcept;
vespalib::duration getDelay() const noexcept { return _delay; }
vespalib::duration getInterval() const noexcept { return _interval; }
vespalib::duration getAge() const noexcept { return _age; }
};
using DocumentDBPruneRemovedDocumentsConfig = DocumentDBPruneConfig;
class DocumentDBHeartBeatConfig
{
private:
vespalib::duration _interval;
public:
DocumentDBHeartBeatConfig() noexcept;
DocumentDBHeartBeatConfig(vespalib::duration interval) noexcept;
bool operator==(const DocumentDBHeartBeatConfig &rhs) const noexcept;
vespalib::duration getInterval() const noexcept { return _interval; }
};
class DocumentDBLidSpaceCompactionConfig
{
private:
vespalib::duration _delay;
vespalib::duration _interval;
uint32_t _allowedLidBloat;
double _allowedLidBloatFactor;
double _remove_batch_block_rate;
double _remove_block_rate;
bool _disabled;
public:
DocumentDBLidSpaceCompactionConfig() noexcept;
DocumentDBLidSpaceCompactionConfig(vespalib::duration interval,
uint32_t allowedLidBloat,
double allowwedLidBloatFactor,
double remove_batch_block_rate,
double remove_block_rate,
bool disabled) noexcept;
static DocumentDBLidSpaceCompactionConfig createDisabled() noexcept;
bool operator==(const DocumentDBLidSpaceCompactionConfig &rhs) const noexcept;
vespalib::duration getDelay() const noexcept { return _delay; }
vespalib::duration getInterval() const noexcept { return _interval; }
uint32_t getAllowedLidBloat() const noexcept { return _allowedLidBloat; }
double getAllowedLidBloatFactor() const noexcept { return _allowedLidBloatFactor; }
double get_remove_batch_block_rate() const noexcept { return _remove_batch_block_rate; }
double get_remove_block_rate() const noexcept { return _remove_block_rate; }
bool isDisabled() const noexcept { return _disabled; }
};
class BlockableMaintenanceJobConfig {
private:
double _resourceLimitFactor;
uint32_t _maxOutstandingMoveOps;
public:
BlockableMaintenanceJobConfig() noexcept;
BlockableMaintenanceJobConfig(double resourceLimitFactor,
uint32_t maxOutstandingMoveOps) noexcept;
bool operator==(const BlockableMaintenanceJobConfig &rhs) const noexcept;
double getResourceLimitFactor() const noexcept { return _resourceLimitFactor; }
uint32_t getMaxOutstandingMoveOps() const noexcept { return _maxOutstandingMoveOps; }
};
class BucketMoveConfig {
public:
BucketMoveConfig() noexcept;
BucketMoveConfig(uint32_t _maxDocsToMovePerBucket) noexcept;
bool operator==(const BucketMoveConfig &rhs) const noexcept;
uint32_t getMaxDocsToMovePerBucket() const noexcept { return _maxDocsToMovePerBucket; }
private:
uint32_t _maxDocsToMovePerBucket;
};
class DocumentDBMaintenanceConfig
{
public:
using SP = std::shared_ptr<DocumentDBMaintenanceConfig>;
private:
DocumentDBPruneConfig _pruneRemovedDocuments;
DocumentDBHeartBeatConfig _heartBeat;
vespalib::duration _visibilityDelay;
DocumentDBLidSpaceCompactionConfig _lidSpaceCompaction;
AttributeUsageFilterConfig _attributeUsageFilterConfig;
vespalib::duration _attributeUsageSampleInterval;
BlockableMaintenanceJobConfig _blockableJobConfig;
DocumentDBFlushConfig _flushConfig;
BucketMoveConfig _bucketMoveConfig;
public:
DocumentDBMaintenanceConfig() noexcept;
DocumentDBMaintenanceConfig(const DocumentDBPruneConfig &pruneRemovedDocuments,
const DocumentDBHeartBeatConfig &heartBeat,
vespalib::duration visibilityDelay,
const DocumentDBLidSpaceCompactionConfig &lidSpaceCompaction,
const AttributeUsageFilterConfig &attributeUsageFilterConfig,
vespalib::duration attributeUsageSampleInterval,
const BlockableMaintenanceJobConfig &blockableJobConfig,
const DocumentDBFlushConfig &flushConfig,
const BucketMoveConfig & bucketMoveconfig) noexcept;
DocumentDBMaintenanceConfig(const DocumentDBMaintenanceConfig &) = delete;
DocumentDBMaintenanceConfig & operator = (const DocumentDBMaintenanceConfig &) = delete;
~DocumentDBMaintenanceConfig();
bool
operator==(const DocumentDBMaintenanceConfig &rhs) const noexcept ;
const DocumentDBPruneConfig &getPruneRemovedDocumentsConfig() const noexcept {
return _pruneRemovedDocuments;
}
const DocumentDBHeartBeatConfig &getHeartBeatConfig() const noexcept {
return _heartBeat;
}
vespalib::duration getVisibilityDelay() const noexcept { return _visibilityDelay; }
const DocumentDBLidSpaceCompactionConfig &getLidSpaceCompactionConfig() const noexcept {
return _lidSpaceCompaction;
}
const AttributeUsageFilterConfig &getAttributeUsageFilterConfig() const noexcept {
return _attributeUsageFilterConfig;
}
vespalib::duration getAttributeUsageSampleInterval() const noexcept {
return _attributeUsageSampleInterval;
}
const BlockableMaintenanceJobConfig &getBlockableJobConfig() const noexcept {
return _blockableJobConfig;
}
const DocumentDBFlushConfig &getFlushConfig() const noexcept { return _flushConfig; }
const BucketMoveConfig & getBucketMoveConfig() const noexcept { return _bucketMoveConfig; }
};
} // namespace proton
|