Skip to content

Conversation

@copybara-service
Copy link

Move string field hasbit setter to public mutable_* method.

The internal_set method is used internally in CopyFrom/MergeFrom, which already handle hasbits, making the hasbit setters here redundant.

@copybara-service copybara-service bot force-pushed the test_790240548 branch 2 times, most recently from e2bcbb1 to bf04760 Compare August 9, 2025 05:48
The _internal_set_ method is used internally in CopyFrom/MergeFrom, which already handle hasbits, making the hasbit setters here redundant.

PiperOrigin-RevId: 792909628
@copybara-service copybara-service bot merged commit 5d8a95b into main Aug 9, 2025
@copybara-service copybara-service bot deleted the test_790240548 branch August 9, 2025 06:39
copybara-service bot pushed a commit that referenced this pull request Nov 4, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

PiperOrigin-RevId: 828033634
copybara-service bot pushed a commit that referenced this pull request Nov 5, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828033634
copybara-service bot pushed a commit that referenced this pull request Nov 5, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828033634
copybara-service bot pushed a commit that referenced this pull request Nov 5, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828299368
copybara-service bot pushed a commit that referenced this pull request Nov 5, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828236584
zhangskz pushed a commit that referenced this pull request Nov 12, 2025
`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828299368
zhangskz added a commit that referenced this pull request Nov 12, 2025
* Fix `Any` hasbit consistency issue in OSS.

`Any` `value` field is a `bytes` field in OSS, and since cl/792909628 (#22956), `_internal_mutable_*()` accessors for string fields don't set hasbits. This can cause the hasbit to be missing for the `value` field of `Any` after calling `PackFrom`, which will serialize incorrectly.

This change also includes fixes to `any_test`, which failed to catch this bug. We got unlucky, and every test which checked a roundtrip `PackFrom` -> `UnpackTo` for an `Any` field reused the same `Any` object, calling `MessageLite::ParseFromString` (which `Clear()`s it) on the same object. However, `Clear()` skips string fields whose hasbits are not set. This meant the `string value` field of the `Any` was not cleared, since its hasbit had not been properly set by `PackFrom`. So even though the `Any` value skipped serializing its value, the reused `Any` object still contained the expected `string value` serialization of the submessage, and `UnpackTo` worked correctly.

The culprit change was adopted in release 33.0, so it will need to be patched to this version.

See #24258.

Fixes #24258

PiperOrigin-RevId: 828299368

* update staleness

* Upgrade setup-php to speed up PHP tests

This build has become a severe bottleneck in our CI.  To avoid this in the future, always use whatever pre-install version is on the mac runners.  The linux tests will cover specific versions of PHP still.

PiperOrigin-RevId: 818864695

---------

Co-authored-by: Clayton Knittel <cknittel@google.com>
Co-authored-by: Mike Kruskal <mkruskal@google.com>
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.

1 participant