Skip to content

Commit 76ebd9a

Browse files
committed
forgot to run spotless
1 parent 0daaa54 commit 76ebd9a

File tree

2 files changed

+26
-44
lines changed

2 files changed

+26
-44
lines changed

lang/java/avro/src/main/java/org/apache/avro/generic/GenericDatumReader.java

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.nio.ByteBuffer;
2323
import java.util.Collection;
2424
import java.util.HashMap;
25+
import java.util.IdentityHashMap;
2526
import java.util.Map;
2627
import java.util.concurrent.ConcurrentHashMap;
2728
import java.util.function.Function;
@@ -504,38 +505,9 @@ protected Class findStringClass(Schema schema) {
504505
}
505506
}
506507

507-
/**
508-
* This class is used to reproduce part of IdentityHashMap in ConcurrentHashMap
509-
* code.
510-
*/
511-
private static final class IdentitySchemaKey {
512-
private final Schema schema;
513-
514-
private final int hashcode;
515-
516-
public IdentitySchemaKey(Schema schema) {
517-
this.schema = schema;
518-
this.hashcode = System.identityHashCode(schema);
519-
}
520-
521-
@Override
522-
public int hashCode() {
523-
return this.hashcode;
524-
}
525-
526-
@Override
527-
public boolean equals(Object obj) {
528-
if (!(obj instanceof GenericDatumReader.IdentitySchemaKey)) {
529-
return false;
530-
}
531-
IdentitySchemaKey key = (IdentitySchemaKey) obj;
532-
return this == key || this.schema == key.schema;
533-
}
534-
}
535-
536508
// VisibleForTesting
537509
static class ReaderCache {
538-
private final Map<IdentitySchemaKey, Class> stringClassCache = new ConcurrentHashMap<>();
510+
private volatile Map<Schema, Class> stringClassCache = new IdentityHashMap<>();
539511

540512
private final Map<Class, Function<String, Object>> stringCtorCache = new ConcurrentHashMap<>();
541513

@@ -569,8 +541,14 @@ private Function<String, Object> buildFunction(Class c) {
569541
}
570542

571543
public Class getStringClass(final Schema s) {
572-
final IdentitySchemaKey key = new IdentitySchemaKey(s);
573-
return this.stringClassCache.computeIfAbsent(key, (IdentitySchemaKey k) -> this.findStringClass.apply(k.schema));
544+
var type = stringClassCache.get(s);
545+
if (type == null) {
546+
type = this.findStringClass.apply(s);
547+
var repalcement = new IdentityHashMap<>(stringClassCache);
548+
repalcement.put(s, type);
549+
stringClassCache = repalcement;
550+
}
551+
return type;
574552
}
575553
}
576554

lang/java/avro/src/test/java/org/apache/avro/reflect/TestCustomEncoderSchemaChanges.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,32 @@
3333

3434
public class TestCustomEncoderSchemaChanges {
3535

36-
private static final Schema SCHEMA1 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
37-
false, Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.STRING), null, null)));
36+
private static final Schema SCHEMA1 = Schema.createRecord("R1", null,
37+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
38+
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.STRING), null, null)));
3839

39-
private static final Schema SCHEMA2 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
40-
false, Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.STRING), null, null),
40+
private static final Schema SCHEMA2 = Schema.createRecord("R1", null,
41+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
42+
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.STRING), null, null),
4143
new Schema.Field("v2", Schema.create(Schema.Type.STRING), null, null)));
4244

43-
private static final Schema SCHEMA3 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
44-
false,
45+
private static final Schema SCHEMA3 = Schema.createRecord("R1", null,
46+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
4547
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.STRING), null, null),
4648
new Schema.Field("v2", Schema.create(Schema.Type.STRING), null, null),
4749
new Schema.Field("v3", Schema.create(Schema.Type.STRING), null, null)));
4850

49-
private static final Schema SCHEMA_INT1 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
50-
false, Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.INT), null, null)));
51+
private static final Schema SCHEMA_INT1 = Schema.createRecord("R1", null,
52+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
53+
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.INT), null, null)));
5154

52-
private static final Schema SCHEMA_INT2 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
53-
false, Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.INT), null, null),
55+
private static final Schema SCHEMA_INT2 = Schema.createRecord("R1", null,
56+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
57+
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.INT), null, null),
5458
new Schema.Field("v2", Schema.create(Schema.Type.INT), null, null)));
5559

56-
private static final Schema SCHEMA_INT3 = Schema.createRecord("R1", null, "org.apache.avro.reflect.TestCustomEncoderSchemaChanges",
57-
false,
60+
private static final Schema SCHEMA_INT3 = Schema.createRecord("R1", null,
61+
"org.apache.avro.reflect.TestCustomEncoderSchemaChanges", false,
5862
Arrays.asList(new Schema.Field("v1", Schema.create(Schema.Type.INT), null, null),
5963
new Schema.Field("v2", Schema.create(Schema.Type.INT), null, null),
6064
new Schema.Field("v3", Schema.create(Schema.Type.INT), null, null)));

0 commit comments

Comments
 (0)