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

apache / iotdb / #9867

18 Aug 2023 06:05AM UTC coverage: 48.003% (-0.08%) from 48.081%
#9867

push

travis_ci

web-flow
[To rel/1.2] [IOTDB-6115] Fix Limit & Offset push down doesn't take effect while there exist null value

103 of 103 new or added lines in 23 files covered. (100.0%)

79802 of 166243 relevant lines covered (48.0%)

0.48 hits per line

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

94.86
/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
    config.setDatabaseLimitThreshold(
1✔
238
        Integer.parseInt(
1✔
239
            properties.getProperty(
1✔
240
                "database_limit_threshold", String.valueOf(config.getDatabaseLimitThreshold()))));
1✔
241
  }
1✔
242

243
  private void loadPipeProps(Properties properties) {
244
    config.setPipeHardlinkBaseDirName(
1✔
245
        properties.getProperty("pipe_hardlink_base_dir_name", config.getPipeHardlinkBaseDirName()));
1✔
246
    config.setPipeHardlinkTsFileDirName(
1✔
247
        properties.getProperty(
1✔
248
            "pipe_hardlink_tsfile_dir_name", config.getPipeHardlinkTsFileDirName()));
1✔
249
    config.setPipeHardlinkWALDirName(
1✔
250
        properties.getProperty("pipe_hardlink_wal_dir_name", config.getPipeHardlinkWALDirName()));
1✔
251
    config.setPipeHardLinkWALEnabled(
1✔
252
        Boolean.parseBoolean(
1✔
253
            properties.getProperty(
1✔
254
                "pipe_hardlink_wal_enabled",
255
                Boolean.toString(config.getPipeHardLinkWALEnabled()))));
1✔
256

257
    config.setPipeDataStructureTabletRowSize(
1✔
258
        Integer.parseInt(
1✔
259
            properties.getProperty(
1✔
260
                "pipe_data_structure_tablet_row_size",
261
                String.valueOf(config.getPipeDataStructureTabletRowSize()))));
1✔
262

263
    config.setPipeSubtaskExecutorMaxThreadNum(
1✔
264
        Integer.parseInt(
1✔
265
            properties.getProperty(
1✔
266
                "pipe_subtask_executor_max_thread_num",
267
                Integer.toString(config.getPipeSubtaskExecutorMaxThreadNum()))));
1✔
268
    if (config.getPipeSubtaskExecutorMaxThreadNum() <= 0) {
1✔
269
      config.setPipeSubtaskExecutorMaxThreadNum(5);
×
270
    }
271
    config.setPipeSubtaskExecutorBasicCheckPointIntervalByConsumedEventCount(
1✔
272
        Integer.parseInt(
1✔
273
            properties.getProperty(
1✔
274
                "pipe_subtask_executor_basic_check_point_interval_by_consumed_event_count",
275
                String.valueOf(
1✔
276
                    config.getPipeSubtaskExecutorBasicCheckPointIntervalByConsumedEventCount()))));
1✔
277
    config.setPipeSubtaskExecutorBasicCheckPointIntervalByTimeDuration(
1✔
278
        Long.parseLong(
1✔
279
            properties.getProperty(
1✔
280
                "pipe_subtask_executor_basic_check_point_interval_by_time_duration",
281
                String.valueOf(
1✔
282
                    config.getPipeSubtaskExecutorBasicCheckPointIntervalByTimeDuration()))));
1✔
283
    config.setPipeSubtaskExecutorPendingQueueMaxBlockingTimeMs(
1✔
284
        Long.parseLong(
1✔
285
            properties.getProperty(
1✔
286
                "pipe_subtask_executor_pending_queue_max_blocking_time_ms",
287
                String.valueOf(config.getPipeSubtaskExecutorPendingQueueMaxBlockingTimeMs()))));
1✔
288

289
    config.setPipeExtractorAssignerDisruptorRingBufferSize(
1✔
290
        Integer.parseInt(
1✔
291
            properties.getProperty(
1✔
292
                "pipe_extractor_assigner_disruptor_ring_buffer_size",
293
                String.valueOf(config.getPipeExtractorAssignerDisruptorRingBufferSize()))));
1✔
294
    config.setPipeExtractorMatcherCacheSize(
1✔
295
        Integer.parseInt(
1✔
296
            properties.getProperty(
1✔
297
                "pipe_extractor_matcher_cache_size",
298
                String.valueOf(config.getPipeExtractorMatcherCacheSize()))));
1✔
299
    config.setPipeExtractorPendingQueueCapacity(
1✔
300
        Integer.parseInt(
1✔
301
            properties.getProperty(
1✔
302
                "pipe_extractor_pending_queue_capacity",
303
                String.valueOf(config.getPipeExtractorPendingQueueCapacity()))));
1✔
304
    config.setPipeExtractorPendingQueueTabletLimit(
1✔
305
        Integer.parseInt(
1✔
306
            properties.getProperty(
1✔
307
                "pipe_extractor_pending_queue_tablet_limit",
308
                String.valueOf(config.getPipeExtractorPendingQueueTabletLimit()))));
1✔
309

310
    config.setPipeConnectorTimeoutMs(
1✔
311
        Long.parseLong(
1✔
312
            properties.getProperty(
1✔
313
                "pipe_connector_timeout_ms", String.valueOf(config.getPipeConnectorTimeoutMs()))));
1✔
314
    config.setPipeConnectorReadFileBufferSize(
1✔
315
        Integer.parseInt(
1✔
316
            properties.getProperty(
1✔
317
                "pipe_connector_read_file_buffer_size",
318
                String.valueOf(config.getPipeConnectorReadFileBufferSize()))));
1✔
319
    config.setPipeConnectorRetryIntervalMs(
1✔
320
        Long.parseLong(
1✔
321
            properties.getProperty(
1✔
322
                "pipe_connector_retry_interval_ms",
323
                String.valueOf(config.getPipeConnectorRetryIntervalMs()))));
1✔
324
    config.setPipeConnectorPendingQueueSize(
1✔
325
        Integer.parseInt(
1✔
326
            properties.getProperty(
1✔
327
                "pipe_connector_pending_queue_size",
328
                String.valueOf(config.getPipeConnectorPendingQueueSize()))));
1✔
329
    config.setPipeConnectorRPCThriftCompressionEnabled(
1✔
330
        Boolean.parseBoolean(
1✔
331
            properties.getProperty(
1✔
332
                "pipe_connector_rpc_thrift_compression_enabled",
333
                String.valueOf(config.isPipeConnectorRPCThriftCompressionEnabled()))));
1✔
334

335
    config.setPipeAsyncConnectorSelectorNumber(
1✔
336
        Integer.parseInt(
1✔
337
            properties.getProperty(
1✔
338
                "pipe_async_connector_selector_number",
339
                String.valueOf(config.getPipeAsyncConnectorSelectorNumber()))));
1✔
340
    config.setPipeAsyncConnectorCoreClientNumber(
1✔
341
        Integer.parseInt(
1✔
342
            properties.getProperty(
1✔
343
                "pipe_async_connector_core_client_number",
344
                String.valueOf(config.getPipeAsyncConnectorCoreClientNumber()))));
1✔
345
    config.setPipeAsyncConnectorMaxClientNumber(
1✔
346
        Integer.parseInt(
1✔
347
            properties.getProperty(
1✔
348
                "pipe_async_connector_max_client_number",
349
                String.valueOf(config.getPipeAsyncConnectorMaxClientNumber()))));
1✔
350

351
    config.setSeperatedPipeHeartbeatEnabled(
1✔
352
        Boolean.parseBoolean(
1✔
353
            properties.getProperty(
1✔
354
                "pipe_heartbeat_seperated_mode_enabled",
355
                String.valueOf(config.isSeperatedPipeHeartbeatEnabled()))));
1✔
356
    config.setPipeHeartbeatIntervalSecondsForCollectingPipeMeta(
1✔
357
        Integer.parseInt(
1✔
358
            properties.getProperty(
1✔
359
                "pipe_heartbeat_interval_seconds_for_collecting_pipe_meta",
360
                String.valueOf(config.getPipeHeartbeatIntervalSecondsForCollectingPipeMeta()))));
1✔
361
    config.setPipeMetaSyncerInitialSyncDelayMinutes(
1✔
362
        Long.parseLong(
1✔
363
            properties.getProperty(
1✔
364
                "pipe_meta_syncer_initial_sync_delay_minutes",
365
                String.valueOf(config.getPipeMetaSyncerInitialSyncDelayMinutes()))));
1✔
366
    config.setPipeMetaSyncerSyncIntervalMinutes(
1✔
367
        Long.parseLong(
1✔
368
            properties.getProperty(
1✔
369
                "pipe_meta_syncer_sync_interval_minutes",
370
                String.valueOf(config.getPipeMetaSyncerSyncIntervalMinutes()))));
1✔
371
    config.setPipeMetaSyncerAutoRestartPipeCheckIntervalRound(
1✔
372
        Long.parseLong(
1✔
373
            properties.getProperty(
1✔
374
                "pipe_meta_syncer_auto_restart_pipe_check_interval_round",
375
                String.valueOf(config.getPipeMetaSyncerAutoRestartPipeCheckIntervalRound()))));
1✔
376
    config.setPipeAutoRestartEnabled(
1✔
377
        Boolean.parseBoolean(
1✔
378
            properties.getProperty(
1✔
379
                "pipe_auto_restart_enabled", String.valueOf(config.getPipeAutoRestartEnabled()))));
1✔
380

381
    config.setPipeAirGapReceiverEnabled(
1✔
382
        Boolean.parseBoolean(
1✔
383
            properties.getProperty(
1✔
384
                "pipe_air_gap_receiver_enabled",
385
                Boolean.toString(config.getPipeAirGapReceiverEnabled()))));
1✔
386
    config.setPipeAirGapReceiverPort(
1✔
387
        Integer.parseInt(
1✔
388
            properties.getProperty(
1✔
389
                "pipe_air_gap_receiver_port",
390
                Integer.toString(config.getPipeAirGapReceiverPort()))));
1✔
391
  }
1✔
392

393
  public void loadGlobalConfig(TGlobalConfig globalConfig) {
394
    config.setTimePartitionInterval(
×
395
        CommonDateTimeUtils.convertMilliTimeWithPrecision(
×
396
            globalConfig.timePartitionInterval, config.getTimestampPrecision()));
×
397
    config.setTimestampPrecision(globalConfig.timestampPrecision);
×
398
    config.setSchemaEngineMode(globalConfig.schemaEngineMode);
×
399
    config.setTagAttributeTotalSize(globalConfig.tagAttributeTotalSize);
×
400
    config.setDiskSpaceWarningThreshold(globalConfig.getDiskSpaceWarningThreshold());
×
401
  }
×
402
}
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