This is an automated email from the ASF dual-hosted git repository.
roryqi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-uniffle.git
The following commit(s) were added to refs/heads/master by this push:
new c58110ff [Improvement] Make codec to be a singleton. (#840)
c58110ff is described below
commit c58110ff91768a7acccf228ee98607a4ad2d4a0a
Author: tobehardest <[email protected]>
AuthorDate: Tue Apr 25 17:48:06 2023 +0800
[Improvement] Make codec to be a singleton. (#840)
### What changes were proposed in this pull request?
Codec will be created for many times. We should make codec to be a
singleton. I make codec to be a singleton.
### Why are the changes needed?
Fix: #389
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
UT
Co-authored-by: tobehardest <[email protected]>
---
.../java/org/apache/uniffle/common/compression/Codec.java | 8 ++++----
.../java/org/apache/uniffle/common/compression/Lz4Codec.java | 8 ++++++++
.../java/org/apache/uniffle/common/compression/NoOpCodec.java | 8 ++++++++
.../org/apache/uniffle/common/compression/SnappyCodec.java | 9 +++++++++
.../java/org/apache/uniffle/common/compression/ZstdCodec.java | 11 ++++++++---
5 files changed, 37 insertions(+), 7 deletions(-)
diff --git
a/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
b/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
index 511cdd09..ac45a325 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/Codec.java
@@ -30,14 +30,14 @@ public abstract class Codec {
Type type = rssConf.get(COMPRESSION_TYPE);
switch (type) {
case ZSTD:
- return new ZstdCodec(rssConf.get(ZSTD_COMPRESSION_LEVEL));
+ return ZstdCodec.getInstance(rssConf.get(ZSTD_COMPRESSION_LEVEL));
case SNAPPY:
- return new SnappyCodec();
+ return SnappyCodec.getInstance();
case NOOP:
- return new NoOpCodec();
+ return NoOpCodec.getInstance();
case LZ4:
default:
- return new Lz4Codec();
+ return Lz4Codec.getInstance();
}
}
diff --git
a/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
b/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
index d1fccb37..0f604bae 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/Lz4Codec.java
@@ -27,6 +27,14 @@ public class Lz4Codec extends Codec {
private LZ4Factory lz4Factory;
+ private static class LazyHolder {
+ static final Lz4Codec INSTANCE = new Lz4Codec();
+ }
+
+ public static Lz4Codec getInstance() {
+ return LazyHolder.INSTANCE;
+ }
+
public Lz4Codec() {
this.lz4Factory = LZ4Factory.fastestInstance();
}
diff --git
a/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
b/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
index 40f508b8..4cd111a3 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/NoOpCodec.java
@@ -21,6 +21,14 @@ import java.nio.ByteBuffer;
public class NoOpCodec extends Codec {
+ private static class LazyHolder {
+ static final NoOpCodec INSTANCE = new NoOpCodec();
+ }
+
+ public static NoOpCodec getInstance() {
+ return LazyHolder.INSTANCE;
+ }
+
@Override
public void decompress(ByteBuffer src, int uncompressedLen, ByteBuffer dest,
int destOffset) {
dest.put(src);
diff --git
a/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
b/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
index 0e9a57c2..8474a824 100644
---
a/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
+++
b/common/src/main/java/org/apache/uniffle/common/compression/SnappyCodec.java
@@ -25,6 +25,15 @@ import org.xerial.snappy.Snappy;
import org.apache.uniffle.common.exception.RssException;
public class SnappyCodec extends Codec {
+
+ private static class LazyHolder {
+ static final SnappyCodec INSTANCE = new SnappyCodec();
+ }
+
+ public static SnappyCodec getInstance() {
+ return LazyHolder.INSTANCE;
+ }
+
@Override
public void decompress(ByteBuffer src, int uncompressedLen, ByteBuffer dest,
int destOffset) {
try {
diff --git
a/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
b/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
index 0f507e16..34987ecd 100644
--- a/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
+++ b/common/src/main/java/org/apache/uniffle/common/compression/ZstdCodec.java
@@ -28,10 +28,15 @@ import org.apache.uniffle.common.exception.RssException;
public class ZstdCodec extends Codec {
private static final Logger LOGGER =
LoggerFactory.getLogger(ZstdCodec.class);
- private final int compressionLevel;
+ private int compressionLevel;
- public ZstdCodec(int level) {
- this.compressionLevel = level;
+ private static class LazyHolder {
+ static final ZstdCodec INSTANCE = new ZstdCodec();
+ }
+
+ public static ZstdCodec getInstance(int level) {
+ LazyHolder.INSTANCE.compressionLevel = level;
+ return LazyHolder.INSTANCE;
}
@Override