-
Notifications
You must be signed in to change notification settings - Fork 61
Closed
Labels
Milestone
Description
Error:
TypeError: Cannot read property 'getClass' of undefined
at CompactStreamSerializer.writeObject (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/CompactStreamSerializer.js:104:41)
at /home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/DefaultCompactWriter.js:103:36
at DefaultCompactWriter.writeVariableSizeField (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/DefaultCompactWriter.js:278:13)
at DefaultCompactWriter.writeCompact (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/DefaultCompactWriter.js:102:21)
at MainDTOSerializer.write (/home/serkan/forked/hazelcast-nodejs-client/test/integration/backward_compatible/parallel/serialization/compact/CompactUtil.js:1295:20)
at CompactStreamSerializer.writeSchemaAndObject (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/CompactStreamSerializer.js:99:27)
at CompactStreamSerializer.writeObject (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/CompactStreamSerializer.js:112:14)
at CompactStreamSerializer.write (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/compact/CompactStreamSerializer.js:69:18)
at SerializationServiceV1.toData (/home/serkan/forked/hazelcast-nodejs-client/lib/serialization/SerializationService.js:82:20)
at MapProxy.toData (/home/serkan/forked/hazelcast-nodejs-client/lib/proxy/BaseProxy.js:129:42)
To reproduce:
Put the following file in test/unit/serialization/compact and run it. Since InnerDTO is a nested compact CompactStreamSerializer is used without checking if it is compact serializable or not, and serializer variable here becomes undefined. As a fix, we should check if there is a serializer explicitly before that line.
'use strict';
const {Client} = require('../../../../lib');
const {
createMainDTO,
MainDTOSerializer,
NamedDTOSerializer,
} = require('../../../integration/backward_compatible/parallel/serialization/compact/CompactUtil');
async function main() {
const serializers = [new MainDTOSerializer(), new NamedDTOSerializer()];
const client = await Client.newHazelcastClient({
serialization: {
compact: {
serializers
}
}
});
const map = await client.getMap('test');
const mainDTO = createMainDTO();
await map.set('1', mainDTO);
console.log((await map.get('1')));
await client.shutdown();
}
main().catch(err => {
console.error(err);
process.exit(1);
});