• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

apache / iotdb / #9614

pending completion
#9614

push

travis_ci

web-flow
Fix default label when no tag (#10568)

78964 of 164811 relevant lines covered (47.91%)

0.48 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.66
/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonDescriptor.java
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one
3
 * or more contributor license agreements.  See the NOTICE file
4
 * distributed with this work for additional information
5
 * regarding copyright ownership.  The ASF licenses this file
6
 * to you under the Apache License, Version 2.0 (the
7
 * "License"); you may not use this file except in compliance
8
 * with the License.  You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19

20
package org.apache.iotdb.commons.conf;
21

22
import org.apache.iotdb.commons.enums.HandleSystemErrorStrategy;
23
import org.apache.iotdb.commons.exception.BadNodeUrlException;
24
import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
25
import org.apache.iotdb.commons.utils.NodeUrlUtils;
26
import org.apache.iotdb.confignode.rpc.thrift.TGlobalConfig;
27

28
import org.slf4j.Logger;
29
import org.slf4j.LoggerFactory;
30

31
import java.io.File;
32
import java.util.Properties;
33

34
public class CommonDescriptor {
35

36
  private static final Logger LOGGER = LoggerFactory.getLogger(CommonDescriptor.class);
1✔
37

38
  private final CommonConfig config = new CommonConfig();
1✔
39

40
  private CommonDescriptor() {}
1✔
41

42
  public static CommonDescriptor getInstance() {
43
    return CommonDescriptorHolder.INSTANCE;
1✔
44
  }
45

46
  private static class CommonDescriptorHolder {
47

48
    private static final CommonDescriptor INSTANCE = new CommonDescriptor();
1✔
49

50
    private CommonDescriptorHolder() {
51
      // empty constructor
52
    }
53
  }
54

55
  public CommonConfig getConfig() {
56
    return config;
1✔
57
  }
58

59
  public void initCommonConfigDir(String systemDir) {
60
    config.setUserFolder(systemDir + File.separator + "users");
1✔
61
    config.setRoleFolder(systemDir + File.separator + "roles");
1✔
62
    config.setProcedureWalFolder(systemDir + File.separator + "procedure");
1✔
63
  }
1✔
64

65
  public void loadCommonProps(Properties properties) {
66
    config.setAuthorizerProvider(
1✔
67
        properties.getProperty("authorizer_provider_class", config.getAuthorizerProvider()).trim());
1✔
68
    // if using org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer, openID_url is needed.
69
    config.setOpenIdProviderUrl(
1✔
70
        properties.getProperty("openID_url", config.getOpenIdProviderUrl()).trim());
1✔
71
    config.setEncryptDecryptProvider(
1✔
72
        properties
73
            .getProperty(
1✔
74
                "iotdb_server_encrypt_decrypt_provider", config.getEncryptDecryptProvider())
1✔
75
            .trim());
1✔
76

77
    config.setEncryptDecryptProviderParameter(
1✔
78
        properties.getProperty(
1✔
79
            "iotdb_server_encrypt_decrypt_provider_parameter",
80
            config.getEncryptDecryptProviderParameter()));
1✔
81

82
    String[] tierTTLStr = new String[config.getTierTTLInMs().length];
1✔
83
    for (int i = 0; i < tierTTLStr.length; ++i) {
1✔
84
      tierTTLStr[i] = String.valueOf(config.getTierTTLInMs()[i]);
1✔
85
    }
86
    tierTTLStr =
1✔
87
        properties
88
            .getProperty("default_ttl_in_ms", String.join(IoTDBConstant.TIER_SEPARATOR, tierTTLStr))
1✔
89
            .split(IoTDBConstant.TIER_SEPARATOR);
1✔
90
    long[] tierTTL = new long[tierTTLStr.length];
1✔
91
    for (int i = 0; i < tierTTL.length; ++i) {
1✔
92
      tierTTL[i] = Long.parseLong(tierTTLStr[i]);
1✔
93
      if (tierTTL[i] < 0) {
1✔
94
        tierTTL[i] = Long.MAX_VALUE;
×
95
      }
96
    }
97
    config.setTierTTLInMs(tierTTL);
1✔
98

99
    config.setSyncDir(properties.getProperty("dn_sync_dir", config.getSyncDir()).trim());
1✔
100

101
    config.setWalDirs(
1✔
102
        properties
103
            .getProperty("dn_wal_dirs", String.join(",", config.getWalDirs()))
1✔
104
            .trim()
1✔
105
            .split(","));
1✔
106

107
    config.setRpcThriftCompressionEnabled(
1✔
108
        Boolean.parseBoolean(
1✔
109
            properties
110
                .getProperty(
1✔
111
                    "cn_rpc_thrift_compression_enable",
112
                    String.valueOf(config.isRpcThriftCompressionEnabled()))
1✔
113
                .trim()));
1✔
114

115
    config.setConnectionTimeoutInMS(
1✔
116
        Integer.parseInt(
1✔
117
            properties
118
                .getProperty(
1✔
119
                    "cn_connection_timeout_ms", String.valueOf(config.getConnectionTimeoutInMS()))
1✔
120
                .trim()));
1✔
121

122
    config.setSelectorNumOfClientManager(
1✔
123
        Integer.parseInt(
1✔
124
            properties
125
                .getProperty(
1✔
126
                    "cn_selector_thread_nums_of_client_manager",
127
                    String.valueOf(config.getSelectorNumOfClientManager()))
1✔
128
                .trim()));
1✔
129

130
    config.setCoreClientNumForEachNode(
1✔
131
        Integer.parseInt(
1✔
132
            properties
133
                .getProperty(
1✔
134
                    "cn_core_client_count_for_each_node_in_client_manager",
135
                    String.valueOf(config.getCoreClientNumForEachNode()))
1✔
136
                .trim()));
1✔
137

138
    config.setMaxClientNumForEachNode(
1✔
139
        Integer.parseInt(
1✔
140
            properties
141
                .getProperty(
1✔
142
                    "cn_max_client_count_for_each_node_in_client_manager",
143
                    String.valueOf(config.getMaxClientNumForEachNode()))
1✔
144
                .trim()));
1✔
145

146
    config.setConnectionTimeoutInMS(
1✔
147
        Integer.parseInt(
1✔
148
            properties
149
                .getProperty(
1✔
150
                    "dn_connection_timeout_ms", String.valueOf(config.getConnectionTimeoutInMS()))
1✔
151
                .trim()));
1✔
152

153
    config.setRpcThriftCompressionEnabled(
1✔
154
        Boolean.parseBoolean(
1✔
155
            properties
156
                .getProperty(
1✔
157
                    "dn_rpc_thrift_compression_enable",
158
                    String.valueOf(config.isRpcThriftCompressionEnabled()))
1✔
159
                .trim()));
1✔
160

161
    config.setSelectorNumOfClientManager(
1✔
162
        Integer.parseInt(
1✔
163
            properties
164
                .getProperty(
1✔
165
                    "dn_selector_thread_nums_of_client_manager",
166
                    String.valueOf(config.getSelectorNumOfClientManager()))
1✔
167
                .trim()));
1✔
168

169
    config.setCoreClientNumForEachNode(
1✔
170
        Integer.parseInt(
1✔
171
            properties
172
                .getProperty(
1✔
173
                    "dn_core_client_count_for_each_node_in_client_manager",
174
                    String.valueOf(config.getCoreClientNumForEachNode()))
1✔
175
                .trim()));
1✔
176

177
    config.setMaxClientNumForEachNode(
1✔
178
        Integer.parseInt(
1✔
179
            properties
180
                .getProperty(
1✔
181
                    "dn_max_client_count_for_each_node_in_client_manager",
182
                    String.valueOf(config.getMaxClientNumForEachNode()))
1✔
183
                .trim()));
1✔
184

185
    config.setHandleSystemErrorStrategy(
1✔
186
        HandleSystemErrorStrategy.valueOf(
1✔
187
            properties
188
                .getProperty(
1✔
189
                    "handle_system_error", String.valueOf(config.getHandleSystemErrorStrategy()))
1✔
190
                .trim()));
1✔
191

192
    config.setDiskSpaceWarningThreshold(
1✔
193
        Double.parseDouble(
1✔
194
            properties
195
                .getProperty(
1✔
196
                    "disk_space_warning_threshold",
197
                    String.valueOf(config.getDiskSpaceWarningThreshold()))
1✔
198
                .trim()));
1✔
199

200
    config.setTimestampPrecision(
1✔
201
        properties.getProperty("timestamp_precision", config.getTimestampPrecision()).trim());
1✔
202

203
    String endPointUrl =
1✔
204
        properties.getProperty(
1✔
205
            "target_ml_node_endpoint",
206
            NodeUrlUtils.convertTEndPointUrl(config.getTargetMLNodeEndPoint()));
1✔
207

208
    loadPipeProps(properties);
1✔
209
    try {
210
      config.setTargetMLNodeEndPoint(NodeUrlUtils.parseTEndPointUrl(endPointUrl));
1✔
211
    } catch (BadNodeUrlException e) {
×
212
      LOGGER.warn(
×
213
          "Illegal target MLNode endpoint url format in config file: {}, use default configuration.",
214
          endPointUrl);
215
    }
1✔
216

217
    config.setSchemaEngineMode(
1✔
218
        properties.getProperty("schema_engine_mode", String.valueOf(config.getSchemaEngineMode())));
1✔
219

220
    config.setLastCacheEnable(
1✔
221
        Boolean.parseBoolean(
1✔
222
            properties.getProperty(
1✔
223
                "enable_last_cache", Boolean.toString(config.isLastCacheEnable()))));
1✔
224
    if (config.getSchemaEngineMode().equals("Rocksdb_based")) {
1✔
225
      config.setLastCacheEnable(false);
×
226
    }
227

228
    config.setTagAttributeTotalSize(
1✔
229
        Integer.parseInt(
1✔
230
            properties.getProperty(
1✔
231
                "tag_attribute_total_size", String.valueOf(config.getTagAttributeTotalSize()))));
1✔
232

233
    config.setTimePartitionInterval(
1✔
234
        Long.parseLong(
1✔
235
            properties.getProperty(
1✔
236
                "time_partition_interval", String.valueOf(config.getTimePartitionInterval()))));
1✔
237
  }
1✔
238

239
  private void loadPipeProps(Properties properties) {
240
    config.setPipeHardlinkTsFileDirName(
1✔
241
        properties.getProperty(
1✔
242
            "pipe_hardlink_tsfile_dir_name", config.getPipeHardlinkTsFileDirName()));
1✔
243
    config.setPipeDataStructureTabletRowSize(
1✔
244
        Integer.parseInt(
1✔
245
            properties.getProperty(
1✔
246
                "pipe_data_structure_tablet_row_size",
247
                String.valueOf(config.getPipeDataStructureTabletRowSize()))));
1✔
248

249
    config.setPipeSubtaskExecutorMaxThreadNum(
1✔
250
        Integer.parseInt(
1✔
251
            properties.getProperty(
1✔
252
                "pipe_subtask_executor_max_thread_num",
253
                Integer.toString(config.getPipeSubtaskExecutorMaxThreadNum()))));
1✔
254
    if (config.getPipeSubtaskExecutorMaxThreadNum() <= 0) {
1✔
255
      config.setPipeSubtaskExecutorMaxThreadNum(5);
×
256
    }
257
    config.setPipeSubtaskExecutorBasicCheckPointIntervalByConsumedEventCount(
1✔
258
        Integer.parseInt(
1✔
259
            properties.getProperty(
1✔
260
                "pipe_subtask_executor_basic_check_point_interval_by_consumed_event_count",
261
                String.valueOf(
1✔
262
                    config.getPipeSubtaskExecutorBasicCheckPointIntervalByConsumedEventCount()))));
1✔
263
    config.setPipeSubtaskExecutorBasicCheckPointIntervalByTimeDuration(
1✔
264
        Long.parseLong(
1✔
265
            properties.getProperty(
1✔
266
                "pipe_subtask_executor_basic_check_point_interval_by_time_duration",
267
                String.valueOf(
1✔
268
                    config.getPipeSubtaskExecutorBasicCheckPointIntervalByTimeDuration()))));
1✔
269
    config.setPipeSubtaskExecutorPendingQueueMaxBlockingTimeMs(
1✔
270
        Long.parseLong(
1✔
271
            properties.getProperty(
1✔
272
                "pipe_subtask_executor_pending_queue_max_blocking_time_ms",
273
                String.valueOf(config.getPipeSubtaskExecutorPendingQueueMaxBlockingTimeMs()))));
1✔
274

275
    config.setPipeExtractorAssignerDisruptorRingBufferSize(
1✔
276
        Integer.parseInt(
1✔
277
            properties.getProperty(
1✔
278
                "pipe_extractor_assigner_disruptor_ring_buffer_size",
279
                String.valueOf(config.getPipeExtractorAssignerDisruptorRingBufferSize()))));
1✔
280
    config.setPipeExtractorMatcherCacheSize(
1✔
281
        Integer.parseInt(
1✔
282
            properties.getProperty(
1✔
283
                "pipe_extractor_matcher_cache_size",
284
                String.valueOf(config.getPipeExtractorMatcherCacheSize()))));
1✔
285
    config.setPipeExtractorPendingQueueCapacity(
1✔
286
        Integer.parseInt(
1✔
287
            properties.getProperty(
1✔
288
                "pipe_extractor_pending_queue_capacity",
289
                String.valueOf(config.getPipeExtractorPendingQueueCapacity()))));
1✔
290
    config.setPipeExtractorPendingQueueTabletLimit(
1✔
291
        Integer.parseInt(
1✔
292
            properties.getProperty(
1✔
293
                "pipe_extractor_pending_queue_tablet_limit",
294
                String.valueOf(config.getPipeExtractorPendingQueueTabletLimit()))));
1✔
295

296
    config.setPipeConnectorReadFileBufferSize(
1✔
297
        Integer.parseInt(
1✔
298
            properties.getProperty(
1✔
299
                "pipe_connector_read_file_buffer_size",
300
                String.valueOf(config.getPipeConnectorReadFileBufferSize()))));
1✔
301
    config.setPipeConnectorRetryIntervalMs(
1✔
302
        Long.parseLong(
1✔
303
            properties.getProperty(
1✔
304
                "pipe_connector_retry_interval_ms",
305
                String.valueOf(config.getPipeConnectorRetryIntervalMs()))));
1✔
306
    config.setPipeConnectorPendingQueueSize(
1✔
307
        Integer.parseInt(
1✔
308
            properties.getProperty(
1✔
309
                "pipe_connector_pending_queue_size",
310
                String.valueOf(config.getPipeConnectorPendingQueueSize()))));
1✔
311

312
    config.setSeperatedPipeHeartbeatEnabled(
1✔
313
        Boolean.parseBoolean(
1✔
314
            properties.getProperty(
1✔
315
                "pipe_heartbeat_seperated_mode_enabled",
316
                String.valueOf(config.isSeperatedPipeHeartbeatEnabled()))));
1✔
317
    config.setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
1✔
318
        Integer.parseInt(
1✔
319
            properties.getProperty(
1✔
320
                "pipe_heartbeat_interval_seconds_for_collecting_pipe_meta",
321
                String.valueOf(config.getPipeHeartbeatIntervalSecondsForCollectingPipeMeta()))));
1✔
322
    config.setPipeMetaSyncerInitialSyncDelayMinutes(
1✔
323
        Long.parseLong(
1✔
324
            properties.getProperty(
1✔
325
                "pipe_meta_syncer_initial_sync_delay_minutes",
326
                String.valueOf(config.getPipeMetaSyncerInitialSyncDelayMinutes()))));
1✔
327
    config.setPipeMetaSyncerSyncIntervalMinutes(
1✔
328
        Long.parseLong(
1✔
329
            properties.getProperty(
1✔
330
                "pipe_meta_syncer_sync_interval_minutes",
331
                String.valueOf(config.getPipeMetaSyncerSyncIntervalMinutes()))));
1✔
332
  }
1✔
333

334
  public void loadGlobalConfig(TGlobalConfig globalConfig) {
335
    config.setTimePartitionInterval(
×
336
        CommonDateTimeUtils.convertMilliTimeWithPrecision(
×
337
            globalConfig.timePartitionInterval, config.getTimestampPrecision()));
×
338
    config.setTimestampPrecision(globalConfig.timestampPrecision);
×
339
    config.setSchemaEngineMode(globalConfig.schemaEngineMode);
×
340
    config.setTagAttributeTotalSize(globalConfig.tagAttributeTotalSize);
×
341
    config.setDiskSpaceWarningThreshold(globalConfig.getDiskSpaceWarningThreshold());
×
342
  }
×
343
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc