This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch iotdb
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/iotdb by this push:
new ef59b25e encrypt thread safety (#278)
ef59b25e is described below
commit ef59b25e24481370dfe3f23e60e2438b4165d890
Author: jintao zhu <[email protected]>
AuthorDate: Thu Oct 31 11:22:05 2024 +0800
encrypt thread safety (#278)
* encrypt thread safety
* simplify duplicate codes
---------
Co-authored-by: zhujt <[email protected]>
(cherry picked from commit 64a9d8ab88fb18a4508e0f9fc67f448004227a73)
---
.../apache/tsfile/encrypt/EncryptParameter.java | 38 +++++++++++++++++
.../org/apache/tsfile/encrypt/EncryptUtils.java | 30 +++++++++-----
.../java/org/apache/tsfile/encrypt/IDecryptor.java | 21 ++++++++++
.../java/org/apache/tsfile/encrypt/IEncryptor.java | 21 ++++++++++
.../tsfile/file/metadata/TsFileMetadata.java | 15 ++-----
.../apache/tsfile/read/TsFileSequenceReader.java | 15 +++----
.../apache/tsfile/read/UnClosedTsFileReader.java | 14 +++----
.../java/org/apache/tsfile/read/common/Chunk.java | 20 ++++-----
.../read/controller/CachedChunkLoaderImpl.java | 4 +-
.../reader/chunk/AbstractAlignedChunkReader.java | 8 ++--
.../tsfile/read/reader/chunk/ChunkReader.java | 7 ++--
.../tsfile/read/reader/page/LazyLoadPageData.java | 10 +++--
.../java/org/apache/tsfile/write/TsFileWriter.java | 9 +++--
.../write/chunk/AlignedChunkGroupWriterImpl.java | 16 ++++----
.../tsfile/write/chunk/AlignedChunkWriterImpl.java | 47 +++++++++++-----------
.../apache/tsfile/write/chunk/ChunkWriterImpl.java | 19 ++++-----
.../chunk/NonAlignedChunkGroupWriterImpl.java | 14 +++----
.../apache/tsfile/write/chunk/TimeChunkWriter.java | 15 +++----
.../tsfile/write/chunk/ValueChunkWriter.java | 14 +++----
.../org/apache/tsfile/write/page/PageWriter.java | 20 +++++----
.../apache/tsfile/write/page/TimePageWriter.java | 11 +++--
.../apache/tsfile/write/page/ValuePageWriter.java | 14 ++++---
.../tsfile/read/UnClosedTsFileReaderTest.java | 3 +-
23 files changed, 246 insertions(+), 139 deletions(-)
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptParameter.java
b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptParameter.java
new file mode 100644
index 00000000..f7adb522
--- /dev/null
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptParameter.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tsfile.encrypt;
+
+public class EncryptParameter {
+
+ private final String type;
+ private final byte[] key;
+
+ public EncryptParameter(String type, byte[] key) {
+ this.type = type;
+ this.key = key;
+ }
+
+ public byte[] getKey() {
+ return key;
+ }
+
+ public String getType() {
+ return type;
+ }
+}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
index 034eb40c..b9bcf601 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/EncryptUtils.java
@@ -39,11 +39,7 @@ public class EncryptUtils {
public static String normalKeyStr = getNormalKeyStr();
- public static IEncrypt encrypt = getEncrypt();
-
- public static IEncryptor encryptor = encrypt.getEncryptor();
-
- public static IDecryptor decryptor = encrypt.getDecryptor();
+ public static EncryptParameter encryptParam = getEncryptParameter();
public static String getEncryptKeyFromPath(String path) {
if (path == null) {
@@ -148,15 +144,19 @@ public class EncryptUtils {
}
}
- public static IEncrypt getEncrypt() {
+ public static EncryptParameter getEncryptParameter() {
+ return getEncryptParameter(TSFileDescriptor.getInstance().getConfig());
+ }
+
+ public static EncryptParameter getEncryptParameter(TSFileConfig conf) {
String encryptType;
byte[] dataEncryptKey;
- if (TSFileDescriptor.getInstance().getConfig().getEncryptFlag()) {
- encryptType =
TSFileDescriptor.getInstance().getConfig().getEncryptType();
+ if (conf.getEncryptFlag()) {
+ encryptType = conf.getEncryptType();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update("IoTDB is the best".getBytes());
-
md.update(TSFileDescriptor.getInstance().getConfig().getEncryptKey().getBytes());
+ md.update(conf.getEncryptKey().getBytes());
dataEncryptKey = md.digest();
} catch (Exception e) {
throw new EncryptException(
@@ -166,10 +166,22 @@ public class EncryptUtils {
encryptType = "org.apache.tsfile.encrypt.UNENCRYPTED";
dataEncryptKey = null;
}
+ return new EncryptParameter(encryptType, dataEncryptKey);
+ }
+
+ public static IEncrypt getEncrypt() {
+ return getEncrypt(TSFileDescriptor.getInstance().getConfig());
+ }
+
+ public static IEncrypt getEncrypt(String encryptType, byte[] dataEncryptKey)
{
try {
+ if (IEncrypt.encryptMap.containsKey(encryptType)) {
+ return ((IEncrypt)
IEncrypt.encryptMap.get(encryptType).newInstance(dataEncryptKey));
+ }
Class<?> encryptTypeClass = Class.forName(encryptType);
java.lang.reflect.Constructor<?> constructor =
encryptTypeClass.getDeclaredConstructor(byte[].class);
+ IEncrypt.encryptMap.put(encryptType, constructor);
return ((IEncrypt) constructor.newInstance(dataEncryptKey));
} catch (ClassNotFoundException e) {
throw new EncryptException("Get encryptor class failed: " + encryptType,
e);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IDecryptor.java
b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IDecryptor.java
index a7be7b73..36b90897 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IDecryptor.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IDecryptor.java
@@ -51,6 +51,27 @@ public interface IDecryptor {
}
}
+ static IDecryptor getDecryptor(EncryptParameter encryptParam) {
+ String type = encryptParam.getType();
+ byte[] key = encryptParam.getKey();
+ try {
+ if (IEncrypt.encryptMap.containsKey(type)) {
+ return ((IEncrypt)
IEncrypt.encryptMap.get(type).newInstance(key)).getDecryptor();
+ }
+ Class<?> encryptClass = Class.forName(type);
+ java.lang.reflect.Constructor<?> constructor =
+ encryptClass.getDeclaredConstructor(byte[].class);
+ IEncrypt.encryptMap.put(type, constructor);
+ return ((IEncrypt) constructor.newInstance(key)).getDecryptor();
+ } catch (ClassNotFoundException e) {
+ throw new EncryptException("Get decryptor class failed: " + type, e);
+ } catch (NoSuchMethodException e) {
+ throw new EncryptException("Get constructor for decryptor failed: " +
type, e);
+ } catch (InvocationTargetException | InstantiationException |
IllegalAccessException e) {
+ throw new EncryptException("New decryptor instance failed: " + type, e);
+ }
+ }
+
byte[] decrypt(byte[] data);
byte[] decrypt(byte[] data, int offset, int size);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IEncryptor.java
b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IEncryptor.java
index d26ab9dc..b80d2579 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IEncryptor.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encrypt/IEncryptor.java
@@ -51,6 +51,27 @@ public interface IEncryptor {
}
}
+ static IEncryptor getEncryptor(EncryptParameter encryptParam) {
+ String type = encryptParam.getType();
+ byte[] key = encryptParam.getKey();
+ try {
+ if (IEncrypt.encryptMap.containsKey(type)) {
+ return ((IEncrypt)
IEncrypt.encryptMap.get(type).newInstance(key)).getEncryptor();
+ }
+ Class<?> encryptClass = Class.forName(type);
+ java.lang.reflect.Constructor<?> constructor =
+ encryptClass.getDeclaredConstructor(byte[].class);
+ IEncrypt.encryptMap.put(type, constructor);
+ return ((IEncrypt) constructor.newInstance(key)).getEncryptor();
+ } catch (ClassNotFoundException e) {
+ throw new EncryptException("Get encryptor class failed: " + type, e);
+ } catch (NoSuchMethodException e) {
+ throw new EncryptException("Get constructor for encryptor failed: " +
type, e);
+ } catch (InvocationTargetException | InstantiationException |
IllegalAccessException e) {
+ throw new EncryptException("New encryptor instance failed: " + type, e);
+ }
+ }
+
byte[] encrypt(byte[] data);
byte[] encrypt(byte[] data, int offset, int size);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TsFileMetadata.java
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TsFileMetadata.java
index e57c9cff..e6c56688 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TsFileMetadata.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TsFileMetadata.java
@@ -21,9 +21,9 @@ package org.apache.tsfile.file.metadata;
import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.compatibility.DeserializeConfig;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IDecryptor;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.exception.encrypt.EncryptException;
import org.apache.tsfile.utils.BloomFilter;
import org.apache.tsfile.utils.ReadWriteForEncodingUtils;
@@ -162,18 +162,11 @@ public class TsFileMetadata {
return fileMetaData;
}
- public IEncryptor getIEncryptor() {
+ public EncryptParameter getEncryptParam() {
if (dataEncryptKey == null) {
- return IEncryptor.getEncryptor("org.apache.tsfile.encrypt.UNENCRYPTED",
null);
+ return new EncryptParameter("org.apache.tsfile.encrypt.UNENCRYPTED",
null);
}
- return IEncryptor.getEncryptor(encryptType, dataEncryptKey);
- }
-
- public IDecryptor getIDecryptor() {
- if (dataEncryptKey == null) {
- return IDecryptor.getDecryptor("org.apache.tsfile.encrypt.UNENCRYPTED",
null);
- }
- return IDecryptor.getDecryptor(encryptType, dataEncryptKey);
+ return new EncryptParameter(encryptType, dataEncryptKey);
}
public void addProperty(String key, String value) {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
index e341363b..817078a1 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
@@ -26,6 +26,7 @@ import org.apache.tsfile.compatibility.CompatibilityUtils;
import org.apache.tsfile.compatibility.DeserializeConfig;
import org.apache.tsfile.compress.IUnCompressor;
import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.enums.TSDataType;
@@ -376,14 +377,14 @@ public class TsFileSequenceReader implements
AutoCloseable {
* @return the decryptor for the TsFile
* @throws IOException if an I/O error occurs while reading the file metadata
*/
- public IDecryptor getDecryptor() throws IOException {
+ public EncryptParameter getEncryptParam() throws IOException {
try {
readFileMetadata();
} catch (Exception e) {
logger.error("Something error happened while reading file metadata of
file {}", file, e);
- return EncryptUtils.encrypt.getDecryptor();
+ return EncryptUtils.encryptParam;
}
- return tsFileMetaData.getIDecryptor();
+ return tsFileMetaData.getEncryptParam();
}
/**
@@ -1583,7 +1584,7 @@ public class TsFileSequenceReader implements
AutoCloseable {
try {
ChunkHeader header = readChunkHeader(offset);
ByteBuffer buffer = readChunk(offset + header.getSerializedSize(),
header.getDataSize());
- return new Chunk(header, buffer, getDecryptor());
+ return new Chunk(header, buffer, getEncryptParam());
} catch (StopReadTsFileByInterruptException e) {
throw e;
} catch (Throwable t) {
@@ -1609,7 +1610,7 @@ public class TsFileSequenceReader implements
AutoCloseable {
buffer,
metaData.getDeleteIntervalList(),
metaData.getStatistics(),
- getDecryptor());
+ getEncryptParam());
} catch (StopReadTsFileByInterruptException e) {
throw e;
} catch (Throwable t) {
@@ -1635,7 +1636,7 @@ public class TsFileSequenceReader implements
AutoCloseable {
buffer,
chunkCacheKey.getDeleteIntervalList(),
chunkCacheKey.getStatistics(),
- getDecryptor());
+ getEncryptParam());
}
/**
@@ -1707,7 +1708,7 @@ public class TsFileSequenceReader implements
AutoCloseable {
public ByteBuffer readPage(PageHeader header, CompressionType type) throws
IOException {
ByteBuffer buffer = readData(-1, header.getCompressedSize());
- IDecryptor decryptor = getDecryptor();
+ IDecryptor decryptor = IDecryptor.getDecryptor(getEncryptParam());
if (header.getUncompressedSize() == 0) {
return buffer;
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
index 930bfcc2..817f0f46 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/UnClosedTsFileReader.java
@@ -19,8 +19,8 @@
package org.apache.tsfile.read;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.exception.NotImplementedException;
import org.apache.tsfile.file.metadata.TsFileMetadata;
@@ -29,16 +29,16 @@ import java.io.IOException;
/** A class for reading unclosed tsfile. */
public class UnClosedTsFileReader extends TsFileSequenceReader {
- private IDecryptor decryptor;
+ private EncryptParameter encryptParam;
public UnClosedTsFileReader(String file) throws IOException {
super(file, false);
- decryptor = EncryptUtils.decryptor;
+ encryptParam = EncryptUtils.encryptParam;
}
- public UnClosedTsFileReader(String file, IDecryptor decryptor) throws
IOException {
+ public UnClosedTsFileReader(String file, EncryptParameter decryptParam)
throws IOException {
super(file, false);
- this.decryptor = decryptor;
+ this.encryptParam = encryptParam;
}
/** unclosed file has no tail magic data. */
@@ -54,7 +54,7 @@ public class UnClosedTsFileReader extends
TsFileSequenceReader {
}
@Override
- public IDecryptor getDecryptor() {
- return decryptor;
+ public EncryptParameter getEncryptParam() {
+ return encryptParam;
}
}
diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
index e338ae06..b72c0085 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
@@ -19,8 +19,8 @@
package org.apache.tsfile.read.common;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.file.MetaMarker;
import org.apache.tsfile.file.header.ChunkHeader;
import org.apache.tsfile.file.metadata.statistics.Statistics;
@@ -46,7 +46,7 @@ public class Chunk {
private ByteBuffer chunkData;
private Statistics chunkStatistic;
- private IDecryptor decryptor;
+ private EncryptParameter encryptParam;
/** A list of deleted intervals. */
private List<TimeRange> deleteIntervalList;
@@ -60,7 +60,7 @@ public class Chunk {
this.chunkData = buffer;
this.deleteIntervalList = deleteIntervalList;
this.chunkStatistic = chunkStatistic;
- this.decryptor = EncryptUtils.encrypt.getDecryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
public Chunk(
@@ -68,28 +68,28 @@ public class Chunk {
ByteBuffer buffer,
List<TimeRange> deleteIntervalList,
Statistics chunkStatistic,
- IDecryptor decryptor) {
+ EncryptParameter encryptParam) {
this.chunkHeader = header;
this.chunkData = buffer;
this.deleteIntervalList = deleteIntervalList;
this.chunkStatistic = chunkStatistic;
- this.decryptor = decryptor;
+ this.encryptParam = encryptParam;
}
public Chunk(ChunkHeader header, ByteBuffer buffer) {
this.chunkHeader = header;
this.chunkData = buffer;
- this.decryptor = EncryptUtils.encrypt.getDecryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
- public Chunk(ChunkHeader header, ByteBuffer buffer, IDecryptor decryptor) {
+ public Chunk(ChunkHeader header, ByteBuffer buffer, EncryptParameter
encryptParam) {
this.chunkHeader = header;
this.chunkData = buffer;
- this.decryptor = decryptor;
+ this.encryptParam = encryptParam;
}
- public IDecryptor getDecryptor() {
- return decryptor;
+ public EncryptParameter getEncryptParam() {
+ return encryptParam;
}
public ChunkHeader getHeader() {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/controller/CachedChunkLoaderImpl.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/controller/CachedChunkLoaderImpl.java
index 9ba86913..92925ea8 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/controller/CachedChunkLoaderImpl.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/controller/CachedChunkLoaderImpl.java
@@ -74,7 +74,7 @@ public class CachedChunkLoaderImpl implements IChunkLoader {
chunk.getData().duplicate(),
chunkMetaData.getDeleteIntervalList(),
chunkMetaData.getStatistics(),
- reader.getDecryptor());
+ reader.getEncryptParam());
}
@Override
@@ -92,7 +92,7 @@ public class CachedChunkLoaderImpl implements IChunkLoader {
chunk.getData().duplicate(),
chunkMetaData.getDeleteIntervalList(),
chunkMetaData.getStatistics(),
- reader.getDecryptor()),
+ reader.getEncryptParam()),
globalTimeFilter);
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/AbstractAlignedChunkReader.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/AbstractAlignedChunkReader.java
index 165367e2..220f9582 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/AbstractAlignedChunkReader.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/AbstractAlignedChunkReader.java
@@ -21,6 +21,7 @@ package org.apache.tsfile.read.reader.chunk;
import org.apache.tsfile.compress.IUnCompressor;
import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.MetaMarker;
@@ -52,7 +53,7 @@ public abstract class AbstractAlignedChunkReader extends
AbstractChunkReader {
// deleted intervals of all the sub sensors
private final List<List<TimeRange>> valueDeleteIntervalsList = new
ArrayList<>();
- private final IDecryptor decrytor;
+ private final EncryptParameter encryptParam;
@SuppressWarnings("unchecked")
AbstractAlignedChunkReader(
@@ -71,7 +72,7 @@ public abstract class AbstractAlignedChunkReader extends
AbstractChunkReader {
valueChunkStatisticsList.add(chunk == null ? null :
chunk.getChunkStatistic());
});
- this.decrytor = timeChunk.getDecryptor();
+ this.encryptParam = timeChunk.getEncryptParam();
initAllPageReaders(timeChunk.getChunkStatistic(),
valueChunkStatisticsList);
}
@@ -179,6 +180,7 @@ public abstract class AbstractAlignedChunkReader extends
AbstractChunkReader {
private AbstractAlignedPageReader constructAlignedPageReader(
PageHeader timePageHeader, List<PageHeader> rawValuePageHeaderList)
throws IOException {
+ IDecryptor decrytor = IDecryptor.getDecryptor(encryptParam);
ByteBuffer timePageData =
ChunkReader.deserializePageData(
timePageHeader, timeChunkDataBuffer, timeChunkHeader, decrytor);
@@ -222,7 +224,7 @@ public abstract class AbstractAlignedChunkReader extends
AbstractChunkReader {
valueChunkDataBufferList.get(i).array(),
currentPagePosition,
IUnCompressor.getUnCompressor(valueChunkHeader.getCompressionType()),
- decrytor);
+ encryptParam);
valueDataTypeList.add(valueChunkHeader.getDataType());
valueDecoderList.add(
Decoder.getDecoderByType(
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/ChunkReader.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/ChunkReader.java
index 0a76e2d9..3dd5aacd 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/ChunkReader.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/chunk/ChunkReader.java
@@ -21,6 +21,7 @@ package org.apache.tsfile.read.reader.chunk;
import org.apache.tsfile.compress.IUnCompressor;
import org.apache.tsfile.encoding.decoder.Decoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.file.MetaMarker;
import org.apache.tsfile.file.header.ChunkHeader;
@@ -44,7 +45,7 @@ public class ChunkReader extends AbstractChunkReader {
private final ByteBuffer chunkDataBuffer;
private final List<TimeRange> deleteIntervalList;
- private final IDecryptor decryptor;
+ private final EncryptParameter encryptParam;
@SuppressWarnings("unchecked")
public ChunkReader(Chunk chunk, long readStopTime, Filter queryFilter) {
@@ -52,7 +53,7 @@ public class ChunkReader extends AbstractChunkReader {
this.chunkHeader = chunk.getHeader();
this.chunkDataBuffer = chunk.getData();
this.deleteIntervalList = chunk.getDeleteIntervalList();
- this.decryptor = chunk.getDecryptor();
+ this.encryptParam = chunk.getEncryptParam();
initAllPageReaders(chunk.getChunkStatistic());
}
@@ -138,7 +139,7 @@ public class ChunkReader extends AbstractChunkReader {
new PageReader(
pageHeader,
new LazyLoadPageData(
- chunkDataBuffer.array(), currentPagePosition, unCompressor,
decryptor),
+ chunkDataBuffer.array(), currentPagePosition, unCompressor,
encryptParam),
chunkHeader.getDataType(),
Decoder.getDecoderByType(chunkHeader.getEncodingType(),
chunkHeader.getDataType()),
defaultTimeDecoder,
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
index 301d4f0d..6021e40f 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/LazyLoadPageData.java
@@ -20,6 +20,7 @@
package org.apache.tsfile.read.reader.page;
import org.apache.tsfile.compress.IUnCompressor;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IDecryptor;
import org.apache.tsfile.file.header.PageHeader;
@@ -35,26 +36,27 @@ public class LazyLoadPageData {
private final IUnCompressor unCompressor;
- private final IDecryptor decryptor;
+ private final EncryptParameter encryptParam;
public LazyLoadPageData(byte[] data, int offset, IUnCompressor unCompressor)
{
this.chunkData = data;
this.pageDataOffset = offset;
this.unCompressor = unCompressor;
- this.decryptor = EncryptUtils.encrypt.getDecryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
public LazyLoadPageData(
- byte[] data, int offset, IUnCompressor unCompressor, IDecryptor
decryptor) {
+ byte[] data, int offset, IUnCompressor unCompressor, EncryptParameter
encryptParam) {
this.chunkData = data;
this.pageDataOffset = offset;
this.unCompressor = unCompressor;
- this.decryptor = decryptor;
+ this.encryptParam = encryptParam;
}
public ByteBuffer uncompressPageData(PageHeader pageHeader) throws
IOException {
int compressedPageBodyLength = pageHeader.getCompressedSize();
byte[] uncompressedPageData = new byte[pageHeader.getUncompressedSize()];
+ IDecryptor decryptor = IDecryptor.getDecryptor(encryptParam);
byte[] decryptedPageData =
decryptor.decrypt(chunkData, pageDataOffset, compressedPageBodyLength);
try {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
index 532b01b9..9bff4b86 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
@@ -20,6 +20,7 @@ package org.apache.tsfile.write;
import org.apache.tsfile.common.conf.TSFileConfig;
import org.apache.tsfile.common.conf.TSFileDescriptor;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.exception.encrypt.EncryptException;
import org.apache.tsfile.exception.write.ConflictDataTypeException;
@@ -72,7 +73,7 @@ public class TsFileWriter implements AutoCloseable {
/** IO writer of this TsFile. */
private final TsFileIOWriter fileWriter;
- private IEncryptor encryptor;
+ private EncryptParameter encryptParam;
private final int pageSize;
private long recordCount = 0;
@@ -205,7 +206,7 @@ public class TsFileWriter implements AutoCloseable {
encryptKey = null;
dataEncryptKey = null;
}
- this.encryptor = IEncryptor.getEncryptor(encryptType, dataEncryptKey);
+ this.encryptParam = new EncryptParameter(encryptType, dataEncryptKey);
if (encryptKey != null) {
StringBuilder valueStr = new StringBuilder();
@@ -474,13 +475,13 @@ public class TsFileWriter implements AutoCloseable {
IChunkGroupWriter groupWriter = groupWriters.get(deviceId);
if (groupWriter == null) {
if (isAligned) {
- groupWriter = new AlignedChunkGroupWriterImpl(deviceId, encryptor);
+ groupWriter = new AlignedChunkGroupWriterImpl(deviceId, encryptParam);
if (!isUnseq) { // Sequence File
((AlignedChunkGroupWriterImpl) groupWriter)
.setLastTime(alignedDeviceLastTimeMap.getOrDefault(deviceId,
-1L));
}
} else {
- groupWriter = new NonAlignedChunkGroupWriterImpl(deviceId, encryptor);
+ groupWriter = new NonAlignedChunkGroupWriterImpl(deviceId,
encryptParam);
if (!isUnseq) { // Sequence File
((NonAlignedChunkGroupWriterImpl) groupWriter)
.setLastTimeMap(
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
index 0c3bb701..cfc42043 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
@@ -22,8 +22,8 @@ import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.common.constant.TsFileConstant;
import org.apache.tsfile.encoding.encoder.Encoder;
import org.apache.tsfile.encoding.encoder.TSEncodingBuilder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.WriteProcessException;
import org.apache.tsfile.file.metadata.IDeviceID;
@@ -60,7 +60,7 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
private final TimeChunkWriter timeChunkWriter;
- private final IEncryptor encryptor;
+ private final EncryptParameter encryprParam;
private long lastTime = -1;
@@ -72,11 +72,13 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
TSDataType timeType =
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
Encoder encoder =
TSEncodingBuilder.getEncodingBuilder(tsEncoding).getEncoder(timeType);
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
- timeChunkWriter = new TimeChunkWriter(timeMeasurementId, compressionType,
tsEncoding, encoder);
+ this.encryprParam = EncryptUtils.encryptParam;
+ timeChunkWriter =
+ new TimeChunkWriter(
+ timeMeasurementId, compressionType, tsEncoding, encoder,
this.encryprParam);
}
- public AlignedChunkGroupWriterImpl(IDeviceID deviceId, IEncryptor encryptor)
{
+ public AlignedChunkGroupWriterImpl(IDeviceID deviceId, EncryptParameter
encryptParam) {
this.deviceId = deviceId;
String timeMeasurementId = "";
CompressionType compressionType =
TSFileDescriptor.getInstance().getConfig().getCompressor();
@@ -84,10 +86,10 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
TSDataType timeType =
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
Encoder encoder =
TSEncodingBuilder.getEncodingBuilder(tsEncoding).getEncoder(timeType);
- this.encryptor = encryptor;
+ this.encryprParam = encryptParam;
timeChunkWriter =
new TimeChunkWriter(
- timeMeasurementId, compressionType, tsEncoding, encoder,
this.encryptor);
+ timeMeasurementId, compressionType, tsEncoding, encoder,
this.encryprParam);
}
@Override
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
index 96385f33..a858e4a3 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
@@ -22,8 +22,8 @@ import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.encoding.encoder.Encoder;
import org.apache.tsfile.encoding.encoder.TSEncodingBuilder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.PageException;
import org.apache.tsfile.file.header.PageHeader;
@@ -48,7 +48,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter {
protected List<ValueChunkWriter> valueChunkWriterList;
protected int valueIndex;
- protected IEncryptor encryptor;
+ protected EncryptParameter encryptParam;
// Used for batch writing
protected long remainingPointsNumber;
@@ -57,14 +57,14 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
// TestOnly
public AlignedChunkWriterImpl(VectorMeasurementSchema schema) {
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
timeChunkWriter =
new TimeChunkWriter(
schema.getMeasurementId(),
schema.getCompressor(),
schema.getTimeTSEncoding(),
schema.getTimeEncoder(),
- this.encryptor);
+ this.encryptParam);
List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
List<TSDataType> valueTSDataTypeList =
schema.getSubMeasurementsTSDataTypeList();
@@ -80,22 +80,22 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
valueTSDataTypeList.get(i),
valueTSEncodingList.get(i),
valueEncoderList.get(i),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
this.remainingPointsNumber =
timeChunkWriter.getRemainingPointNumberForCurrentPage();
}
- public AlignedChunkWriterImpl(VectorMeasurementSchema schema, IEncryptor
encryptor) {
- this.encryptor = encryptor;
+ public AlignedChunkWriterImpl(VectorMeasurementSchema schema,
EncryptParameter encryptParam) {
+ this.encryptParam = encryptParam;
timeChunkWriter =
new TimeChunkWriter(
schema.getMeasurementId(),
schema.getCompressor(),
schema.getTimeTSEncoding(),
schema.getTimeEncoder(),
- this.encryptor);
+ this.encryptParam);
List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
List<TSDataType> valueTSDataTypeList =
schema.getSubMeasurementsTSDataTypeList();
@@ -111,7 +111,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
valueTSDataTypeList.get(i),
valueTSEncodingList.get(i),
valueEncoderList.get(i),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
@@ -127,14 +127,14 @@ public class AlignedChunkWriterImpl implements
IChunkWriter {
*/
public AlignedChunkWriterImpl(
IMeasurementSchema timeSchema, List<IMeasurementSchema> valueSchemaList)
{
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
timeChunkWriter =
new TimeChunkWriter(
timeSchema.getMeasurementId(),
timeSchema.getCompressor(),
timeSchema.getEncodingType(),
timeSchema.getTimeEncoder(),
- this.encryptor);
+ this.encryptParam);
valueChunkWriterList = new ArrayList<>(valueSchemaList.size());
for (int i = 0; i < valueSchemaList.size(); i++) {
@@ -145,7 +145,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
valueSchemaList.get(i).getType(),
valueSchemaList.get(i).getEncodingType(),
valueSchemaList.get(i).getValueEncoder(),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
@@ -155,15 +155,15 @@ public class AlignedChunkWriterImpl implements
IChunkWriter {
public AlignedChunkWriterImpl(
IMeasurementSchema timeSchema,
List<IMeasurementSchema> valueSchemaList,
- IEncryptor encryptor) {
- this.encryptor = encryptor;
+ EncryptParameter encryptParam) {
+ this.encryptParam = encryptParam;
timeChunkWriter =
new TimeChunkWriter(
timeSchema.getMeasurementId(),
timeSchema.getCompressor(),
timeSchema.getEncodingType(),
timeSchema.getTimeEncoder(),
- this.encryptor);
+ this.encryptParam);
valueChunkWriterList = new ArrayList<>(valueSchemaList.size());
for (int i = 0; i < valueSchemaList.size(); i++) {
@@ -174,7 +174,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
valueSchemaList.get(i).getType(),
valueSchemaList.get(i).getEncodingType(),
valueSchemaList.get(i).getValueEncoder(),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
@@ -189,7 +189,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
* @param schemaList value schema list
*/
public AlignedChunkWriterImpl(List<IMeasurementSchema> schemaList) {
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
TSEncoding timeEncoding =
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
TSDataType timeType =
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
@@ -200,7 +200,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
timeCompression,
timeEncoding,
TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType),
- this.encryptor);
+ this.encryptParam);
valueChunkWriterList = new ArrayList<>(schemaList.size());
for (int i = 0; i < schemaList.size(); i++) {
@@ -211,7 +211,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
schemaList.get(i).getType(),
schemaList.get(i).getEncodingType(),
schemaList.get(i).getValueEncoder(),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
@@ -219,8 +219,9 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
this.remainingPointsNumber =
timeChunkWriter.getRemainingPointNumberForCurrentPage();
}
- public AlignedChunkWriterImpl(List<IMeasurementSchema> schemaList,
IEncryptor encryptor) {
- this.encryptor = encryptor;
+ public AlignedChunkWriterImpl(
+ List<IMeasurementSchema> schemaList, EncryptParameter encryptParam) {
+ this.encryptParam = encryptParam;
TSEncoding timeEncoding =
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
TSDataType timeType =
TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
@@ -231,7 +232,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
timeCompression,
timeEncoding,
TSEncodingBuilder.getEncodingBuilder(timeEncoding).getEncoder(timeType),
- this.encryptor);
+ this.encryptParam);
valueChunkWriterList = new ArrayList<>(schemaList.size());
for (int i = 0; i < schemaList.size(); i++) {
@@ -242,7 +243,7 @@ public class AlignedChunkWriterImpl implements IChunkWriter
{
schemaList.get(i).getType(),
schemaList.get(i).getEncodingType(),
schemaList.get(i).getValueEncoder(),
- this.encryptor));
+ this.encryptParam));
}
this.valueIndex = 0;
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
index 09fa15f2..c886872b 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
@@ -21,8 +21,8 @@ package org.apache.tsfile.write.chunk;
import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.SDTEncoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.PageException;
import org.apache.tsfile.file.header.ChunkHeader;
@@ -52,7 +52,7 @@ public class ChunkWriterImpl implements IChunkWriter {
private final ICompressor compressor;
- private final IEncryptor encryptor;
+ private final EncryptParameter encryptParam;
/** all pages of this chunk. */
private final PublicBAOS pageBuffer;
@@ -103,7 +103,7 @@ public class ChunkWriterImpl implements IChunkWriter {
public ChunkWriterImpl(IMeasurementSchema schema) {
this.measurementSchema = schema;
this.compressor = ICompressor.getCompressor(schema.getCompressor());
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
@@ -115,7 +115,7 @@ public class ChunkWriterImpl implements IChunkWriter {
// init statistics for this chunk and page
this.statistics = Statistics.getStatsByType(measurementSchema.getType());
- this.pageWriter = new PageWriter(measurementSchema, encryptor);
+ this.pageWriter = new PageWriter(measurementSchema, encryptParam);
this.pageWriter.setTimeEncoder(measurementSchema.getTimeEncoder());
this.pageWriter.setValueEncoder(measurementSchema.getValueEncoder());
@@ -124,10 +124,10 @@ public class ChunkWriterImpl implements IChunkWriter {
checkSdtEncoding();
}
- public ChunkWriterImpl(IMeasurementSchema schema, IEncryptor encryptor) {
+ public ChunkWriterImpl(IMeasurementSchema schema, EncryptParameter
encryptParam) {
this.measurementSchema = schema;
this.compressor = ICompressor.getCompressor(schema.getCompressor());
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
@@ -139,7 +139,7 @@ public class ChunkWriterImpl implements IChunkWriter {
// init statistics for this chunk and page
this.statistics = Statistics.getStatsByType(measurementSchema.getType());
- this.pageWriter = new PageWriter(measurementSchema, encryptor);
+ this.pageWriter = new PageWriter(measurementSchema, this.encryptParam);
this.pageWriter.setTimeEncoder(measurementSchema.getTimeEncoder());
this.pageWriter.setValueEncoder(measurementSchema.getValueEncoder());
@@ -153,8 +153,9 @@ public class ChunkWriterImpl implements IChunkWriter {
this.isMerging = isMerging;
}
- public ChunkWriterImpl(IMeasurementSchema schema, boolean isMerging,
IEncryptor encryptor) {
- this(schema, encryptor);
+ public ChunkWriterImpl(
+ IMeasurementSchema schema, boolean isMerging, EncryptParameter
encryptParam) {
+ this(schema, encryptParam);
this.isMerging = isMerging;
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
index c719dd83..197f165e 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
@@ -19,8 +19,8 @@
package org.apache.tsfile.write.chunk;
import org.apache.tsfile.common.constant.TsFileConstant;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.WriteProcessException;
import org.apache.tsfile.file.metadata.IDeviceID;
@@ -53,25 +53,25 @@ public class NonAlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
/** Map(measurementID, ChunkWriterImpl). Aligned measurementId is empty. */
private final Map<String, ChunkWriterImpl> chunkWriters = new
LinkedHashMap<>();
- private IEncryptor encryptor;
+ private EncryptParameter encryptParam;
// measurementId -> lastTime
private Map<String, Long> lastTimeMap = new HashMap<>();
public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId) {
this.deviceId = deviceId;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
- public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId, IEncryptor
encryptor) {
+ public NonAlignedChunkGroupWriterImpl(IDeviceID deviceId, EncryptParameter
encryptParam) {
this.deviceId = deviceId;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
}
@Override
public void tryToAddSeriesWriter(IMeasurementSchema schema) {
if (!chunkWriters.containsKey(schema.getMeasurementId())) {
- this.chunkWriters.put(schema.getMeasurementId(), new
ChunkWriterImpl(schema, encryptor));
+ this.chunkWriters.put(schema.getMeasurementId(), new
ChunkWriterImpl(schema, encryptParam));
}
}
@@ -79,7 +79,7 @@ public class NonAlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
public void tryToAddSeriesWriter(List<IMeasurementSchema> schemas) {
for (IMeasurementSchema schema : schemas) {
if (!chunkWriters.containsKey(schema.getMeasurementId())) {
- this.chunkWriters.put(schema.getMeasurementId(), new
ChunkWriterImpl(schema, encryptor));
+ this.chunkWriters.put(schema.getMeasurementId(), new
ChunkWriterImpl(schema, encryptParam));
}
}
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
index 32e6fbe1..c4181f51 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/TimeChunkWriter.java
@@ -22,8 +22,8 @@ import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.common.constant.TsFileConstant;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.PageException;
import org.apache.tsfile.file.header.ChunkHeader;
@@ -55,7 +55,7 @@ public class TimeChunkWriter {
private CompressionType compressionType;
- private IEncryptor encryptor;
+ private EncryptParameter encryptParam;
/** all pages of this chunk. */
private PublicBAOS pageBuffer;
@@ -94,7 +94,7 @@ public class TimeChunkWriter {
this.measurementId = measurementId;
this.encodingType = encodingType;
this.compressionType = compressionType;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
@@ -107,7 +107,8 @@ public class TimeChunkWriter {
this.statistics = new TimeStatistics();
this.pageWriter =
- new TimePageWriter(timeEncoder,
ICompressor.getCompressor(compressionType), this.encryptor);
+ new TimePageWriter(
+ timeEncoder, ICompressor.getCompressor(compressionType),
this.encryptParam);
}
public TimeChunkWriter(
@@ -115,11 +116,11 @@ public class TimeChunkWriter {
CompressionType compressionType,
TSEncoding encodingType,
Encoder timeEncoder,
- IEncryptor encryptor) {
+ EncryptParameter encryptParam) {
this.measurementId = measurementId;
this.encodingType = encodingType;
this.compressionType = compressionType;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
@@ -132,7 +133,7 @@ public class TimeChunkWriter {
this.statistics = new TimeStatistics();
this.pageWriter =
- new TimePageWriter(timeEncoder,
ICompressor.getCompressor(compressionType), encryptor);
+ new TimePageWriter(timeEncoder,
ICompressor.getCompressor(compressionType), encryptParam);
}
public void write(long time) {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
index 87f5b635..3a3ccfa8 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
@@ -22,8 +22,8 @@ import org.apache.tsfile.common.conf.TSFileDescriptor;
import org.apache.tsfile.common.constant.TsFileConstant;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
-import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.PageException;
import org.apache.tsfile.file.header.ChunkHeader;
@@ -58,7 +58,7 @@ public class ValueChunkWriter {
private final CompressionType compressionType;
- private final IEncryptor encryptor;
+ private final EncryptParameter encryptParam;
/** all pages of this chunk. */
private final PublicBAOS pageBuffer;
@@ -97,7 +97,7 @@ public class ValueChunkWriter {
this.encodingType = encodingType;
this.dataType = dataType;
this.compressionType = compressionType;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
this.maxNumberOfPointsInPage =
@@ -109,7 +109,7 @@ public class ValueChunkWriter {
this.pageWriter =
new ValuePageWriter(
- valueEncoder, ICompressor.getCompressor(compressionType),
dataType, this.encryptor);
+ valueEncoder, ICompressor.getCompressor(compressionType),
dataType, this.encryptParam);
}
public ValueChunkWriter(
@@ -118,12 +118,12 @@ public class ValueChunkWriter {
TSDataType dataType,
TSEncoding encodingType,
Encoder valueEncoder,
- IEncryptor encryptor) {
+ EncryptParameter encryptParam) {
this.measurementId = measurementId;
this.encodingType = encodingType;
this.dataType = dataType;
this.compressionType = compressionType;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
this.pageBuffer = new PublicBAOS();
this.pageSizeThreshold =
TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
this.maxNumberOfPointsInPage =
@@ -135,7 +135,7 @@ public class ValueChunkWriter {
this.pageWriter =
new ValuePageWriter(
- valueEncoder, ICompressor.getCompressor(compressionType),
dataType, encryptor);
+ valueEncoder, ICompressor.getCompressor(compressionType),
dataType, this.encryptParam);
}
public void write(long time, long value, boolean isNull) {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
index 75ebbd66..87740430 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/PageWriter.java
@@ -20,6 +20,7 @@ package org.apache.tsfile.write.page;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
@@ -50,7 +51,7 @@ public class PageWriter {
private ICompressor compressor;
- private IEncryptor encryptor;
+ private EncryptParameter encryptParam;
// time
private Encoder timeEncoder;
@@ -73,6 +74,7 @@ public class PageWriter {
this(measurementSchema.getTimeEncoder(),
measurementSchema.getValueEncoder());
this.statistics = Statistics.getStatsByType(measurementSchema.getType());
this.compressor =
ICompressor.getCompressor(measurementSchema.getCompressor());
+ this.encryptParam = EncryptUtils.encryptParam;
}
private PageWriter(Encoder timeEncoder, Encoder valueEncoder) {
@@ -80,25 +82,25 @@ public class PageWriter {
this.valueOut = new PublicBAOS();
this.timeEncoder = timeEncoder;
this.valueEncoder = valueEncoder;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
- public PageWriter(IEncryptor encryptor) {
- this(null, null, encryptor);
+ public PageWriter(EncryptParameter encryptParam) {
+ this(null, null, encryptParam);
}
- public PageWriter(IMeasurementSchema measurementSchema, IEncryptor
encryptor) {
- this(measurementSchema.getTimeEncoder(),
measurementSchema.getValueEncoder(), encryptor);
+ public PageWriter(IMeasurementSchema measurementSchema, EncryptParameter
encryptParam) {
+ this(measurementSchema.getTimeEncoder(),
measurementSchema.getValueEncoder(), encryptParam);
this.statistics = Statistics.getStatsByType(measurementSchema.getType());
this.compressor =
ICompressor.getCompressor(measurementSchema.getCompressor());
}
- private PageWriter(Encoder timeEncoder, Encoder valueEncoder, IEncryptor
encryptor) {
+ private PageWriter(Encoder timeEncoder, Encoder valueEncoder,
EncryptParameter encryptParam) {
this.timeOut = new PublicBAOS();
this.valueOut = new PublicBAOS();
this.timeEncoder = timeEncoder;
this.valueEncoder = valueEncoder;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
}
/** write a time value pair into encoder */
@@ -265,6 +267,8 @@ public class PageWriter {
statistics.serialize(pageBuffer);
}
+ IEncryptor encryptor = IEncryptor.getEncryptor(encryptParam);
+
// write page content to temp PBAOS
logger.trace("start to flush a page data into buffer, buffer position {}
", pageBuffer.size());
if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
index 3b45b403..b83743ef 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/page/TimePageWriter.java
@@ -20,6 +20,7 @@ package org.apache.tsfile.write.page;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -46,7 +47,7 @@ public class TimePageWriter {
private final ICompressor compressor;
- private final IEncryptor encryptor;
+ private final EncryptParameter encryptParam;
// time
private Encoder timeEncoder;
@@ -63,15 +64,16 @@ public class TimePageWriter {
this.timeEncoder = timeEncoder;
this.statistics = new TimeStatistics();
this.compressor = compressor;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
- public TimePageWriter(Encoder timeEncoder, ICompressor compressor,
IEncryptor encryptor) {
+ public TimePageWriter(
+ Encoder timeEncoder, ICompressor compressor, EncryptParameter
encryptParam) {
this.timeOut = new PublicBAOS();
this.timeEncoder = timeEncoder;
this.statistics = new TimeStatistics();
this.compressor = compressor;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
}
/** write a time into encoder */
@@ -151,6 +153,7 @@ public class TimePageWriter {
// write page content to temp PBAOS
logger.trace(
"start to flush a time page data into buffer, buffer position {} ",
pageBuffer.size());
+ IEncryptor encryptor = IEncryptor.getEncryptor(encryptParam);
if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
if (encryptor.getEncryptionType().equals(EncryptionType.UNENCRYPTED)) {
try (WritableByteChannel channel = Channels.newChannel(pageBuffer)) {
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
index 629ed51b..6199171a 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/write/page/ValuePageWriter.java
@@ -20,6 +20,7 @@ package org.apache.tsfile.write.page;
import org.apache.tsfile.compress.ICompressor;
import org.apache.tsfile.encoding.encoder.Encoder;
+import org.apache.tsfile.encrypt.EncryptParameter;
import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.encrypt.IEncryptor;
import org.apache.tsfile.enums.TSDataType;
@@ -48,7 +49,7 @@ public class ValuePageWriter {
private final ICompressor compressor;
- private final IEncryptor encryptor;
+ private final EncryptParameter encryptParam;
// value
private Encoder valueEncoder;
@@ -76,11 +77,14 @@ public class ValuePageWriter {
this.valueEncoder = valueEncoder;
this.statistics = Statistics.getStatsByType(dataType);
this.compressor = compressor;
- this.encryptor = EncryptUtils.encrypt.getEncryptor();
+ this.encryptParam = EncryptUtils.encryptParam;
}
public ValuePageWriter(
- Encoder valueEncoder, ICompressor compressor, TSDataType dataType,
IEncryptor encryptor) {
+ Encoder valueEncoder,
+ ICompressor compressor,
+ TSDataType dataType,
+ EncryptParameter encryptParam) {
this.valueOut = new PublicBAOS();
this.bitmap = 0;
this.size = 0;
@@ -88,7 +92,7 @@ public class ValuePageWriter {
this.valueEncoder = valueEncoder;
this.statistics = Statistics.getStatsByType(dataType);
this.compressor = compressor;
- this.encryptor = encryptor;
+ this.encryptParam = encryptParam;
}
/** write a time value pair into encoder */
@@ -306,7 +310,7 @@ public class ValuePageWriter {
ReadWriteForEncodingUtils.writeUnsignedVarInt(compressedSize,
pageBuffer);
statistics.serialize(pageBuffer);
}
-
+ IEncryptor encryptor = IEncryptor.getEncryptor(encryptParam);
// write page content to temp PBAOS
logger.trace("start to flush a page data into buffer, buffer position {}
", pageBuffer.size());
if (compressor.getType().equals(CompressionType.UNCOMPRESSED)) {
diff --git
a/java/tsfile/src/test/java/org/apache/tsfile/read/UnClosedTsFileReaderTest.java
b/java/tsfile/src/test/java/org/apache/tsfile/read/UnClosedTsFileReaderTest.java
index cc022fbc..62dc9bda 100644
---
a/java/tsfile/src/test/java/org/apache/tsfile/read/UnClosedTsFileReaderTest.java
+++
b/java/tsfile/src/test/java/org/apache/tsfile/read/UnClosedTsFileReaderTest.java
@@ -20,7 +20,6 @@
package org.apache.tsfile.read;
import org.apache.tsfile.constant.TestConstant;
-import org.apache.tsfile.encrypt.EncryptUtils;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.ChunkMetadata;
import org.apache.tsfile.file.metadata.IDeviceID.Factory;
@@ -48,7 +47,7 @@ public class UnClosedTsFileReaderTest {
TsFileIOWriter writer = new TsFileIOWriter(file);
writer.startChunkGroup(Factory.DEFAULT_FACTORY.create("root.sg1.d1"));
ChunkWriterImpl chunkWriter =
- new ChunkWriterImpl(new MeasurementSchema("s1", TSDataType.INT64),
EncryptUtils.encryptor);
+ new ChunkWriterImpl(new MeasurementSchema("s1", TSDataType.INT64));
chunkWriter.write(1, 1L);
chunkWriter.write(2, 2L);
chunkWriter.write(3, 3L);