Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update api-go and sdk-go to allow invalid UTF-8 in protos #5476

Merged
merged 5 commits into from
Mar 1, 2024

Conversation

tdeebswihart
Copy link
Contributor

@tdeebswihart tdeebswihart commented Mar 1, 2024

What changed?

I've upgraded the version of our Go API in order to allow invalid UTF-8 data in our proto strings.

Please review 5cf9790 only

Why?

The version of gogo/protobuf we used allowed invalid UTF-8 in strings which is a violation of the proto3 spec. We were unaware of this until our new google/protobuf based structs began failing to deserialize data we'd used previously

How did you test it?

I added a new end-to-end test to verify that we can create, describe, and delete a namespace that contains invalid UTF-8 in multiple attributes

Potential risks

This is lower risk than commits prior to this as temporal DBs may already contain invalid UTF-8 data

Documentation

Is hotfix candidate?

Yes: this will be going out as part of our 1.23.0 release. In fact, the release is blocked on it!

@tdeebswihart tdeebswihart requested a review from a team as a code owner March 1, 2024 19:21
@tdeebswihart tdeebswihart marked this pull request as draft March 1, 2024 19:22
@tdeebswihart tdeebswihart force-pushed the tds/invalid-utf8-in-protos branch 2 times, most recently from 35fb960 to 17140dd Compare March 1, 2024 20:49
@tdeebswihart tdeebswihart marked this pull request as ready for review March 1, 2024 20:59
go.mod Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
tests/namespace_delete.go Outdated Show resolved Hide resolved
@tdeebswihart tdeebswihart force-pushed the tds/invalid-utf8-in-protos branch from 17140dd to 833c784 Compare March 1, 2024 21:35
@tdeebswihart tdeebswihart requested a review from dnr March 1, 2024 21:36
@tdeebswihart tdeebswihart force-pushed the tds/invalid-utf8-in-protos branch from e45ce6b to 3332965 Compare March 1, 2024 22:04
tdeebswihart added a commit to temporalio/sdk-go that referenced this pull request Mar 1, 2024
…1408)

## What was changed

This PR adds an integration test to validate that we allow invalid UTF-8 data in strings.

## Testing

You will need to run the server locally as of temporalio/temporal#5476, then execute the integration tests.

This test has been manually verified as passing on SDK version 1.25.0 and server version 1.22.5, so we should remain compatible with our pre-google/protobuf behavior
Copy link
Member

@dnr dnr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one comment on makefile

Makefile Outdated Show resolved Hide resolved
@tdeebswihart tdeebswihart force-pushed the tds/invalid-utf8-in-protos branch from 3332965 to 5229241 Compare March 1, 2024 23:01
tdeebswihart and others added 5 commits March 1, 2024 15:03
The version of gogo/protobuf we used allowed invalid UTF-8 in strings
which is a violation of the proto3 spec. We were unaware of this until
our new google/protobuf based structs began failing to deserialize data
we'd used previously
Co-authored-by: David Reiss <david@temporal.io>
@tdeebswihart tdeebswihart force-pushed the tds/invalid-utf8-in-protos branch from ba2768a to eb63688 Compare March 1, 2024 23:03
@tdeebswihart tdeebswihart enabled auto-merge (squash) March 1, 2024 23:03
@tdeebswihart tdeebswihart merged commit 049334a into main Mar 1, 2024
43 checks passed
@tdeebswihart tdeebswihart deleted the tds/invalid-utf8-in-protos branch March 1, 2024 23:21
tdeebswihart added a commit that referenced this pull request Mar 1, 2024
I've upgraded the version of our Go API in order to allow invalid UTF-8
data in our proto strings.

Please review
5cf9790
only

The version of gogo/protobuf we used allowed invalid UTF-8 in strings
which is a violation of the proto3 spec. We were unaware of this until
our new google/protobuf based structs began failing to deserialize data
we'd used previously

I added a new end-to-end test to verify that we can create, describe,
and delete a namespace that contains invalid UTF-8 in multiple
attributes

This is lower risk than commits prior to this as temporal DBs may
already contain invalid UTF-8 data

I adjusted our docs to mention this behavior and the `protolegacy` tag

Yes: this will be going out as part of our 1.23.0 release. In fact, the
release is blocked on it!

---------

Co-authored-by: David Reiss <david@temporal.io>
stephanos pushed a commit to stephanos/temporal that referenced this pull request Mar 21, 2024
…#5476)

I've upgraded the version of our Go API in order to allow invalid UTF-8
data in our proto strings.

Please review
temporalio@5cf9790
only

The version of gogo/protobuf we used allowed invalid UTF-8 in strings
which is a violation of the proto3 spec. We were unaware of this until
our new google/protobuf based structs began failing to deserialize data
we'd used previously

I added a new end-to-end test to verify that we can create, describe,
and delete a namespace that contains invalid UTF-8 in multiple
attributes

This is lower risk than commits prior to this as temporal DBs may
already contain invalid UTF-8 data

I adjusted our docs to mention this behavior and the `protolegacy` tag

Yes: this will be going out as part of our 1.23.0 release. In fact, the
release is blocked on it!

---------

Co-authored-by: David Reiss <david@temporal.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants