Add more verbosity for panic inside summaries_for_anchors_with_payloads (#50940)

We are seeing the timestamp comparison fail in an unexpected way, e.g.
https://zed-dev.sentry.io/issues/7293482758/events/c7f7eab3f8f2463f879d4889a80d623e,
where it seems like `text::Anchor::is_max` should be returning true but
it apparently isn't. Add some more information when this panic happens
to understand what's going on.

Release Notes:

- N/A

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
This commit is contained in:
Cole MillerandPiotr Osiewicz authored and GitHub committed 2026-03-06 15:03:21 +00:00
1 parent f69ab1d04e
commit 2d0bd7cd04
2 files changed
+13 -4

No files matched your search

+2 -2
View File
@@ -15,8 +15,8 @@ pub struct Anchor {
// we store the replica id and sequence number of the timestamp inline
// to avoid the alignment of our fields from increasing the size of this struct
// This saves 8 bytes, by allowing replica id, value and bias to occupy the padding
timestamp_replica_id: clock::ReplicaId,
timestamp_value: clock::Seq,
pub(crate) timestamp_replica_id: clock::ReplicaId,
pub(crate) timestamp_value: clock::Seq,
/// The byte offset into the text inserted in the operation
/// at `timestamp`.
+11 -2
View File
@@ -2379,13 +2379,22 @@ impl BufferSnapshot {
anchor
);
};
// TODO verbose debug because we are seeing is_max return false unexpectedly,
// remove this once that is understood and fixed
assert_eq!(
insertion.timestamp,
anchor.timestamp(),
"invalid insertion for buffer {}@{:?} and anchor {:?}",
"invalid insertion for buffer {}@{:?}. anchor: {:?}, {:?}, {:?}, {:?}, {:?}. timestamp: {:?}, offset: {:?}, bias: {:?}",
self.remote_id(),
self.version,
anchor
anchor.timestamp_replica_id,
anchor.timestamp_value,
anchor.offset,
anchor.bias,
anchor.buffer_id,
anchor.timestamp() == clock::Lamport::MAX,
anchor.offset == u32::MAX,
anchor.bias == Bias::Right,
);
fragment_cursor.seek_forward(&Some(&insertion.fragment_id), Bias::Left);