You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GET /sitemap.xml aborts on any identity that has soft-deleted a post in a channel.
The sitemap query returns the deleted post's tombstone, whose header content is blank, and
the render throws on it.
Root cause — three things line up:
A soft delete writes a tombstone (DriveStorageServiceBase.WriteDeletedFileHeader, :1817-1859) that keeps FileType/UserDate but sets AppData.Content = "" and Payloads = null. So it still matches FileType = [PostFileType] and sorts among live
posts.
FileQueryParams.FileState defaults to null and QueryBatch.cs:335 only filters on
it when set — so batch queries return tombstones unless the caller opts out. FollowerService.cs:392, PeerOutgoingTransferService.cs:232 and V2DriveBatchFileWriteOperationsController.cs:79 all pass FileState.Active; the
three queries in HomebaseChannelContentService (GetChannelPosts, GetChannelPostIds, QueryBatchFirstFile) do not.
DriveQueryServiceBase.cs:412-419 detects FileState.Deleted, logs Creating Client File Header for deleted file, and falls through — the code that
would build a deleted header is commented out.
GetChannelPostIds (HomebaseChannelContentService.cs:158-159) then calls Deserialize<PostContent>(""), gets JsonException, and the whole render aborts.
Evidence: every occurrence traced (2026-08-30, 2026-09-01) has the deleted-file
debug line for the same file, under the same correlation id, immediately before the public-posts channel is processed. On bleeding-edge two more identities fail the same
way after their own deleted-file lines. Same tombstone causes #1699 via a different
throw site (Payloads == null).
Optionally wrap the per-post deserialize in GetChannelPostIds in a try/catch that
logs the FileId and skips that post.
Withdrawn: the earlier suggestion to fall back to the default payload. A tombstone
has Payloads = null; it would throw on the next line.
Decide what DriveQueryServiceBase.cs:412-419 should do — restore the deleted-header
path or remove the dead branch. Today the log claims one thing and the code does another.
Occurrences: 11 on production, 2026-08-29..09-01, one identity, caller anonymous.
Maintained by logmeister. This body is revised in place as evidence changes, so it does
not contradict itself — see the comments for the changelog. Identity domains redacted.
GET /sitemap.xmlaborts on any identity that has soft-deleted a post in a channel.The sitemap query returns the deleted post's tombstone, whose header content is blank, and
the render throws on it.
Root cause — three things line up:
DriveStorageServiceBase.WriteDeletedFileHeader,:1817-1859) that keepsFileType/UserDatebut setsAppData.Content = ""andPayloads = null. So it still matchesFileType = [PostFileType]and sorts among liveposts.
FileQueryParams.FileStatedefaults to null andQueryBatch.cs:335only filters onit when set — so batch queries return tombstones unless the caller opts out.
FollowerService.cs:392,PeerOutgoingTransferService.cs:232andV2DriveBatchFileWriteOperationsController.cs:79all passFileState.Active; thethree queries in
HomebaseChannelContentService(GetChannelPosts,GetChannelPostIds,QueryBatchFirstFile) do not.DriveQueryServiceBase.cs:412-419detectsFileState.Deleted, logsCreating Client File Header for deleted file, and falls through — the code thatwould build a deleted header is commented out.
GetChannelPostIds(HomebaseChannelContentService.cs:158-159) then callsDeserialize<PostContent>(""), getsJsonException, and the whole render aborts.Evidence: every occurrence traced (2026-08-30, 2026-09-01) has the deleted-file
debug line for the same file, under the same correlation id, immediately before the
public-postschannel is processed. On bleeding-edge two more identities fail the sameway after their own deleted-file lines. Same tombstone causes #1699 via a different
throw site (
Payloads == null).Suggested fix
FileState = [FileState.Active]to the threeFileQueryParamsV1inHomebaseChannelContentService. Fixes this and [logmeister] ParsePostFile throws on a soft-deleted post's null Payloads (channel preview, post preview, SSR channel page) #1699; also stopsGetChannels/GetChannelDrivefrom picking a deleted channel-definition file.GetChannelPostIdsin a try/catch thatlogs the
FileIdand skips that post.has
Payloads = null; it would throw on the next line.DriveQueryServiceBase.cs:412-419should do — restore the deleted-headerpath or remove the dead branch. Today the log claims one thing and the code does another.
Occurrences: 11 on production, 2026-08-29..09-01, one identity, caller
anonymous.Maintained by logmeister. This body is revised in place as evidence changes, so it does
not contradict itself — see the comments for the changelog. Identity domains redacted.
logmeister-fp: 1c83b513