From c27c2df3dfac89db12083d6c93d9613e4aeaad51 Mon Sep 17 00:00:00 2001 From: Robert Ross Date: Sun, 2 Feb 2025 12:20:44 -0500 Subject: [PATCH 1/2] Ignore unknown fields on proto messages --- lib/temporal/connection/converter/payload/proto_json.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/temporal/connection/converter/payload/proto_json.rb b/lib/temporal/connection/converter/payload/proto_json.rb index cdbc36f9..dda3a5f2 100644 --- a/lib/temporal/connection/converter/payload/proto_json.rb +++ b/lib/temporal/connection/converter/payload/proto_json.rb @@ -15,7 +15,7 @@ def from_payload(payload) # TODO: Add error handling. message_type = payload.metadata['messageType'] descriptor = Google::Protobuf::DescriptorPool.generated_pool.lookup(message_type) - descriptor.msgclass.decode_json(payload.data) + descriptor.msgclass.decode_json(payload.data, ignore_unknown_fields: true) end def to_payload(data) From 3ac71a040d342fd2712dd998cacd0571810dd5f6 Mon Sep 17 00:00:00 2001 From: Robert Ross Date: Sun, 2 Feb 2025 12:35:24 -0500 Subject: [PATCH 2/2] Verify with spec --- .../converter/payload/proto_json_spec.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spec/unit/lib/temporal/connection/converter/payload/proto_json_spec.rb b/spec/unit/lib/temporal/connection/converter/payload/proto_json_spec.rb index 589c921f..ac293670 100644 --- a/spec/unit/lib/temporal/connection/converter/payload/proto_json_spec.rb +++ b/spec/unit/lib/temporal/connection/converter/payload/proto_json_spec.rb @@ -29,4 +29,18 @@ expect(subject.to_payload(input)).to be nil end + + describe ".from_payload" do + it "ignores unknown fields" do + payload = Temporalio::Api::Common::V1::Payload.new( + metadata: { + 'encoding' => described_class::ENCODING, + 'messageType' => Temporalio::Api::Common::V1::Payload.descriptor.name, + }, + data: { 'unknown' => 'field' }.to_json.b, + ) + + expect(subject.from_payload(payload)).to be_instance_of(Temporalio::Api::Common::V1::Payload) + end + end end