Skip to content

Commit 3742c90

Browse files
author
Mehmet Tokgöz
committed
Handle unregistered nested serializer for compact serialization.
1 parent e780eee commit 3742c90

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

hazelcast/serialization/compact.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ def __init__(self, compact_serializers: typing.List[CompactSerializer]):
4343

4444
def write(self, out: ObjectDataOutput, obj: typing.Any) -> None:
4545
clazz = type(obj)
46-
serializer = self._type_to_serializer[clazz]
46+
serializer = self._type_to_serializer.get(clazz)
47+
if serializer is None:
48+
raise HazelcastSerializationError('No serializer is registered for class {}.'.format(type(obj).__name__))
4749
schema = self._type_to_schema.get(clazz)
4850
if not schema:
4951
schema = CompactStreamSerializer._build_schema(serializer, obj)

tests/integration/backward_compatible/serialization/compact_test.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,26 @@ def get_class(self) -> Nested:
823823
return Nested
824824

825825

826+
class CompactNestedSerializerTest(CompactTestBase):
827+
828+
def test_missing_nested_serializer(self):
829+
serializer = SomeFieldsSerializer.from_kinds(FIELD_KINDS)
830+
fields = {kind.name.lower(): REFERENCE_OBJECTS[kind] for kind in FIELD_KINDS}
831+
832+
config = {
833+
"cluster_name": self.cluster.id,
834+
"compact_serializers": [serializer]
835+
}
836+
837+
client = self.create_client(config)
838+
839+
map_name = random_string()
840+
m = client.get_map(map_name).blocking()
841+
842+
with self.assertRaisesRegex(HazelcastSerializationError, "No serializer is registered for class Nested."):
843+
m.put("key", SomeFields(**fields))
844+
845+
826846
class FieldDefinition:
827847
def __init__(
828848
self,

0 commit comments

Comments
 (0)