Skip to content

Commit 11b5df7

Browse files
AnonHxyJason918
authored andcommitted
[improve][client] Refactor SchemaHash to reduce call of hashFunction in SchemaHash (#17948)
(cherry picked from commit 2b5b92c)
1 parent 58dfefc commit 11b5df7

24 files changed

+147
-110
lines changed

pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ public SchemaInfo getSchemaInfo() {
436436
}
437437

438438
public SchemaHash getSchemaHash() {
439-
return schemaHash == null ? SchemaHash.of(new byte[0], null) : schemaHash;
439+
return schemaHash == null ? SchemaHash.empty() : schemaHash;
440440
}
441441

442442
public void setSchemaInfoForReplicator(SchemaInfo schemaInfo) {

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/BooleanSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class BooleanSchema extends AbstractSchema<Boolean> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Boolean")
37-
.setType(SchemaType.BOOLEAN)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Boolean")
37+
.type(SchemaType.BOOLEAN)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new BooleanSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/ByteBufSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public class ByteBufSchema extends AbstractSchema<ByteBuf> {
3333
private static final SchemaInfo SCHEMA_INFO;
3434

3535
static {
36-
SCHEMA_INFO = new SchemaInfoImpl()
37-
.setName("ByteBuf")
38-
.setType(SchemaType.BYTES)
39-
.setSchema(new byte[0]);
36+
SCHEMA_INFO = SchemaInfoImpl.builder()
37+
.name("ByteBuf")
38+
.type(SchemaType.BYTES)
39+
.schema(new byte[0]).build();
4040
INSTANCE = new ByteBufSchema();
4141
}
4242

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/ByteBufferSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class ByteBufferSchema extends AbstractSchema<ByteBuffer> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("ByteBuffer")
37-
.setType(SchemaType.BYTES)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("ByteBuffer")
37+
.type(SchemaType.BYTES)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new ByteBufferSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/ByteSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class ByteSchema extends AbstractSchema<Byte> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("INT8")
37-
.setType(SchemaType.INT8)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("INT8")
37+
.type(SchemaType.INT8)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new ByteSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/BytesSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public class BytesSchema extends AbstractSchema<byte[]> {
3131
private static final SchemaInfo SCHEMA_INFO;
3232

3333
static {
34-
SCHEMA_INFO = new SchemaInfoImpl()
35-
.setName("Bytes")
36-
.setType(SchemaType.BYTES)
37-
.setSchema(new byte[0]);
34+
SCHEMA_INFO = SchemaInfoImpl.builder()
35+
.name("Bytes")
36+
.type(SchemaType.BYTES)
37+
.schema(new byte[0]).build();
3838
INSTANCE = new BytesSchema();
3939
}
4040

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/DateSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class DateSchema extends AbstractSchema<Date> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Date")
37-
.setType(SchemaType.DATE)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Date")
37+
.type(SchemaType.DATE)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new DateSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/DoubleSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class DoubleSchema extends AbstractSchema<Double> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Double")
37-
.setType(SchemaType.DOUBLE)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Double")
37+
.type(SchemaType.DOUBLE)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new DoubleSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/FloatSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class FloatSchema extends AbstractSchema<Float> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Float")
37-
.setType(SchemaType.FLOAT)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Float")
37+
.type(SchemaType.FLOAT)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new FloatSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/InstantSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public class InstantSchema extends AbstractSchema<Instant> {
3333
private static final SchemaInfo SCHEMA_INFO;
3434

3535
static {
36-
SCHEMA_INFO = new SchemaInfoImpl()
37-
.setName("Instant")
38-
.setType(SchemaType.INSTANT)
39-
.setSchema(new byte[0]);
36+
SCHEMA_INFO = SchemaInfoImpl.builder()
37+
.name("Instant")
38+
.type(SchemaType.INSTANT)
39+
.schema(new byte[0]).build();
4040
INSTANCE = new InstantSchema();
4141
}
4242

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/IntSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class IntSchema extends AbstractSchema<Integer> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("INT32")
37-
.setType(SchemaType.INT32)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("INT32")
37+
.type(SchemaType.INT32)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new IntSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/JSONSchema.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,12 @@ public SchemaInfo getBackwardsCompatibleJsonSchemaInfo() {
7171
ObjectMapper objectMapper = new ObjectMapper();
7272
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(objectMapper);
7373
JsonSchema jsonBackwardsCompatibleSchema = schemaGen.generateSchema(pojo);
74-
backwardsCompatibleSchemaInfo = new SchemaInfoImpl()
75-
.setName("")
76-
.setProperties(schemaInfo.getProperties())
77-
.setType(SchemaType.JSON)
78-
.setSchema(objectMapper.writeValueAsBytes(jsonBackwardsCompatibleSchema));
74+
backwardsCompatibleSchemaInfo = SchemaInfoImpl.builder()
75+
.name("")
76+
.properties(schemaInfo.getProperties())
77+
.type(SchemaType.JSON)
78+
.schema(objectMapper.writeValueAsBytes(jsonBackwardsCompatibleSchema))
79+
.build();
7980
} catch (JsonProcessingException ex) {
8081
throw new RuntimeException(ex);
8182
}

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/LocalDateSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class LocalDateSchema extends AbstractSchema<LocalDate> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("LocalDate")
37-
.setType(SchemaType.LOCAL_DATE)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("LocalDate")
37+
.type(SchemaType.LOCAL_DATE)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new LocalDateSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/LocalDateTimeSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ public class LocalDateTimeSchema extends AbstractSchema<LocalDateTime> {
3636
public static final String DELIMITER = ":";
3737

3838
static {
39-
SCHEMA_INFO = new SchemaInfoImpl()
40-
.setName("LocalDateTime")
41-
.setType(SchemaType.LOCAL_DATE_TIME)
42-
.setSchema(new byte[0]);
39+
SCHEMA_INFO = SchemaInfoImpl.builder()
40+
.name("LocalDateTime")
41+
.type(SchemaType.LOCAL_DATE_TIME)
42+
.schema(new byte[0]).build();
4343
INSTANCE = new LocalDateTimeSchema();
4444
}
4545

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/LocalTimeSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class LocalTimeSchema extends AbstractSchema<LocalTime> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("LocalTime")
37-
.setType(SchemaType.LOCAL_TIME)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("LocalTime")
37+
.type(SchemaType.LOCAL_TIME)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new LocalTimeSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/LongSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class LongSchema extends AbstractSchema<Long> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("INT64")
37-
.setType(SchemaType.INT64)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("INT64")
37+
.type(SchemaType.INT64)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new LongSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/ShortSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class ShortSchema extends AbstractSchema<Short> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("INT16")
37-
.setType(SchemaType.INT16)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("INT16")
37+
.type(SchemaType.INT16)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new ShortSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/StringSchema.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ public class StringSchema extends AbstractSchema<String> {
4343
// Ensure the ordering of the static initialization
4444
CHARSET_KEY = "__charset";
4545
DEFAULT_CHARSET = StandardCharsets.UTF_8;
46-
DEFAULT_SCHEMA_INFO = new SchemaInfoImpl()
47-
.setName("String")
48-
.setType(SchemaType.STRING)
49-
.setSchema(new byte[0]);
46+
DEFAULT_SCHEMA_INFO = SchemaInfoImpl.builder()
47+
.name("String")
48+
.type(SchemaType.STRING)
49+
.schema(new byte[0]).build();
5050

5151
UTF8 = new StringSchema(StandardCharsets.UTF_8);
5252
}
@@ -84,11 +84,12 @@ public StringSchema(Charset charset) {
8484
this.charset = charset;
8585
Map<String, String> properties = new HashMap<>();
8686
properties.put(CHARSET_KEY, charset.name());
87-
this.schemaInfo = new SchemaInfoImpl()
88-
.setName(DEFAULT_SCHEMA_INFO.getName())
89-
.setType(SchemaType.STRING)
90-
.setSchema(DEFAULT_SCHEMA_INFO.getSchema())
91-
.setProperties(properties);
87+
this.schemaInfo = SchemaInfoImpl.builder()
88+
.name(DEFAULT_SCHEMA_INFO.getName())
89+
.type(SchemaType.STRING)
90+
.schema(DEFAULT_SCHEMA_INFO.getSchema())
91+
.properties(properties)
92+
.build();
9293
}
9394

9495
public byte[] encode(String message) {

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/TimeSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class TimeSchema extends AbstractSchema<Time> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Time")
37-
.setType(SchemaType.TIME)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Time")
37+
.type(SchemaType.TIME)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new TimeSchema();
4040
}
4141

pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/TimestampSchema.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public class TimestampSchema extends AbstractSchema<Timestamp> {
3232
private static final SchemaInfo SCHEMA_INFO;
3333

3434
static {
35-
SCHEMA_INFO = new SchemaInfoImpl()
36-
.setName("Timestamp")
37-
.setType(SchemaType.TIMESTAMP)
38-
.setSchema(new byte[0]);
35+
SCHEMA_INFO = SchemaInfoImpl.builder()
36+
.name("Timestamp")
37+
.type(SchemaType.TIMESTAMP)
38+
.schema(new byte[0]).build();
3939
INSTANCE = new TimestampSchema();
4040
}
4141

pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/KeyValueSchemaInfoTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,11 @@ public void testKeyValueSchemaInfoBackwardCompatibility() {
170170
KeyValueEncodingType.SEPARATED
171171
);
172172

173-
SchemaInfo oldSchemaInfo = new SchemaInfoImpl()
174-
.setName("")
175-
.setType(SchemaType.KEY_VALUE)
176-
.setSchema(kvSchema.getSchemaInfo().getSchema())
177-
.setProperties(Collections.emptyMap());
173+
SchemaInfo oldSchemaInfo = SchemaInfoImpl.builder()
174+
.name("")
175+
.type(SchemaType.KEY_VALUE)
176+
.schema(kvSchema.getSchemaInfo().getSchema())
177+
.properties(Collections.emptyMap()).build();
178178

179179
assertEquals(
180180
DefaultImplementation.getDefaultImplementation().decodeKeyValueEncodingType(oldSchemaInfo),

pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/StringSchemaTest.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ public void testAsciiCharset() {
8686

8787
@Test
8888
public void testSchemaInfoWithoutCharset() {
89-
SchemaInfo si = new SchemaInfoImpl()
90-
.setName("test-schema-info-without-charset")
91-
.setType(SchemaType.STRING)
92-
.setSchema(new byte[0])
93-
.setProperties(Collections.emptyMap());
89+
SchemaInfo si = SchemaInfoImpl.builder()
90+
.name("test-schema-info-without-charset")
91+
.type(SchemaType.STRING)
92+
.schema(new byte[0])
93+
.properties(Collections.emptyMap()).build();
9494
StringSchema schema = StringSchema.fromSchemaInfo(si);
9595

9696
String myString = "my string for test";
@@ -121,11 +121,11 @@ public Object[][] charsets() {
121121
public void testSchemaInfoWithCharset(Charset charset) {
122122
Map<String, String> properties = new HashMap<>();
123123
properties.put(StringSchema.CHARSET_KEY, charset.name());
124-
SchemaInfo si = new SchemaInfoImpl()
125-
.setName("test-schema-info-without-charset")
126-
.setType(SchemaType.STRING)
127-
.setSchema(new byte[0])
128-
.setProperties(properties);
124+
SchemaInfo si = SchemaInfoImpl.builder()
125+
.name("test-schema-info-without-charset")
126+
.type(SchemaType.STRING)
127+
.schema(new byte[0])
128+
.properties(properties).build();
129129
StringSchema schema = StringSchema.fromSchemaInfo(si);
130130

131131
String myString = "my string for test";

0 commit comments

Comments
 (0)