Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
FWIW: I ran into this today. This is the right behavior, but it's clear we have R2 persistence issues when doing a lot of concurrent reads & writes. |
|
Looks like these are legitimate errors.... @kptdobe I'd be curious what you could find out about |
|
This one has the gzip content encoding. Looks like a post migration leftover. I cannot find the corresponding page in the legacy R2 bucket (your account) but considering it is an "unpublished" page, I assume it is a page that was there during the migration. I fixed the content encoding for this file. |
# 1.0.0 (2025-12-04) ### Bug Fixes * add IMS offline token validation ([#109](#109)) ([ba7f961](ba7f961)) * add more tests for getObject ([#148](#148)) ([7055d3c](7055d3c)) * add semantic release ([#213](#213)) ([86b608d](86b608d)) * build ([51c6255](51c6255)) * consistently use 'syncadmin' (no intercaps) ([#198](#198)) ([3197624](3197624)) * CopySource needs to be encoded ([#210](#210)) ([1ab3fc8](1ab3fc8)) * do not respond a 404 on error ([#184](#184)) ([b1d10c8](b1d10c8)) * error when copying a file that exists ([#185](#185)) ([7215387](7215387)) * get handler returns undefined ([#168](#168)) ([aa55ce5](aa55ce5)) * last modified header for source ([#145](#145)) ([edf1de1](edf1de1)) * non-https links in docs ([#190](#190)) ([661db82](661db82)) * only invalidate collab for html documents ([#167](#167)) ([71e6a1c](71e6a1c)), closes [#166](#166) * persist creds ([d5dfed1](d5dfed1)) * pin s3 client version due to problems with DOMParser ([#201](#201)) ([1f93628](1f93628)) * preserve content type when copying ([#182](#182)) ([4e83525](4e83525)) * put/post to source responds with hlx.page / hlx.live ([#209](#209)) ([0415ef4](0415ef4)) * versioning timestamp for version and document itself ([#144](#144)) ([a384662](a384662)) * **versionsource:** "delegate" permission check to api ([#179](#179)) ([04b17f2](04b17f2)) * when catching exceptions don't rely on $metadata being set ([#170](#170)) ([5e121f0](5e121f0)), closes [#169](#169) ### Features * add a restore point if body is empty ([#173](#173)) ([65cbf32](65cbf32)) * add HTTP conditional request support (If-Match, If-None-Match) ([#187](#187)) ([190afd8](190afd8)) * do not create a version for binaries ([#211](#211)) ([92ea28a](92ea28a)) * handle bad requests ([#204](#204)) ([5ae63c5](5ae63c5)) * handle bad requests ([#214](#214)) ([be0dc49](be0dc49)), closes [#204](#204) [#212](#212) * no version for binaries ([dd98406](dd98406)) * preserve content type in versions ([#177](#177)) ([5182cd5](5182cd5)) * return last modified for source based on timestamp ([#142](#142)) ([2b3454b](2b3454b)) * send shared secret to collab ([#202](#202)) ([6636423](6636423)) ### Reverts * Revert "feat: handle bad requests ([#204](#204))" ([#212](#212)) ([306fcb5](306fcb5)) * Revert "Fine grained access control ([#108](#108))" ([#118](#118)) ([68918ca](68918ca)) * Revert "fix: last modified header for source ([#145](#145))" ([#147](#147)) ([20b1a61](20b1a61)) * Revert "fix: versioning timestamp for version and document itself ([#144](#144))" ([#146](#146)) ([f626da7](f626da7)) * Revert "Revert "fix: last modified header for source"" ([#149](#149)) ([767629c](767629c)), closes [#145](#145) [#147](#147)
# 1.0.0 (2025-12-04) ### Bug Fixes * add IMS offline token validation ([#109](#109)) ([ba7f961](ba7f961)) * add more tests for getObject ([#148](#148)) ([7055d3c](7055d3c)) * add semantic release ([#213](#213)) ([86b608d](86b608d)) * build ([51c6255](51c6255)) * consistently use 'syncadmin' (no intercaps) ([#198](#198)) ([3197624](3197624)) * CopySource needs to be encoded ([#210](#210)) ([1ab3fc8](1ab3fc8)) * do not respond a 404 on error ([#184](#184)) ([b1d10c8](b1d10c8)) * error when copying a file that exists ([#185](#185)) ([7215387](7215387)) * get handler returns undefined ([#168](#168)) ([aa55ce5](aa55ce5)) * last modified header for source ([#145](#145)) ([edf1de1](edf1de1)) * non-https links in docs ([#190](#190)) ([661db82](661db82)) * only invalidate collab for html documents ([#167](#167)) ([71e6a1c](71e6a1c)), closes [#166](#166) * persist creds ([d5dfed1](d5dfed1)) * pin s3 client version due to problems with DOMParser ([#201](#201)) ([1f93628](1f93628)) * preserve content type when copying ([#182](#182)) ([4e83525](4e83525)) * put/post to source responds with hlx.page / hlx.live ([#209](#209)) ([0415ef4](0415ef4)) * versioning timestamp for version and document itself ([#144](#144)) ([a384662](a384662)) * **versionsource:** "delegate" permission check to api ([#179](#179)) ([04b17f2](04b17f2)) * when catching exceptions don't rely on $metadata being set ([#170](#170)) ([5e121f0](5e121f0)), closes [#169](#169) ### Features * add a restore point if body is empty ([#173](#173)) ([65cbf32](65cbf32)) * add HTTP conditional request support (If-Match, If-None-Match) ([#187](#187)) ([190afd8](190afd8)) * do not create a version for binaries ([#211](#211)) ([92ea28a](92ea28a)) * handle bad requests ([#204](#204)) ([5ae63c5](5ae63c5)) * handle bad requests ([#214](#214)) ([be0dc49](be0dc49)), closes [#204](#204) [#212](#212) * no version for binaries ([dd98406](dd98406)) * preserve content type in versions ([#177](#177)) ([5182cd5](5182cd5)) * return last modified for source based on timestamp ([#142](#142)) ([2b3454b](2b3454b)) * send shared secret to collab ([#202](#202)) ([6636423](6636423)) ### Reverts * Revert "feat: handle bad requests ([#204](#204))" ([#212](#212)) ([306fcb5](306fcb5)) * Revert "Fine grained access control ([#108](#108))" ([#118](#118)) ([68918ca](68918ca)) * Revert "fix: last modified header for source ([#145](#145))" ([#147](#147)) ([20b1a61](20b1a61)) * Revert "fix: versioning timestamp for version and document itself ([#144](#144))" ([#146](#146)) ([f626da7](f626da7)) * Revert "Revert "fix: last modified header for source"" ([#149](#149)) ([767629c](767629c)), closes [#145](#145) [#147](#147)
# 1.0.0 (2025-12-04) ### Bug Fixes * add IMS offline token validation ([#109](#109)) ([ba7f961](ba7f961)) * add more tests for getObject ([#148](#148)) ([7055d3c](7055d3c)) * add semantic release ([#213](#213)) ([86b608d](86b608d)) * build ([51c6255](51c6255)) * consistently use 'syncadmin' (no intercaps) ([#198](#198)) ([3197624](3197624)) * CopySource needs to be encoded ([#210](#210)) ([1ab3fc8](1ab3fc8)) * do not respond a 404 on error ([#184](#184)) ([b1d10c8](b1d10c8)) * error when copying a file that exists ([#185](#185)) ([7215387](7215387)) * get handler returns undefined ([#168](#168)) ([aa55ce5](aa55ce5)) * last modified header for source ([#145](#145)) ([edf1de1](edf1de1)) * non-https links in docs ([#190](#190)) ([661db82](661db82)) * only invalidate collab for html documents ([#167](#167)) ([71e6a1c](71e6a1c)), closes [#166](#166) * persist creds ([d5dfed1](d5dfed1)) * pin s3 client version due to problems with DOMParser ([#201](#201)) ([1f93628](1f93628)) * preserve content type when copying ([#182](#182)) ([4e83525](4e83525)) * put/post to source responds with hlx.page / hlx.live ([#209](#209)) ([0415ef4](0415ef4)) * trigger release ([3c35bb4](3c35bb4)) * versioning timestamp for version and document itself ([#144](#144)) ([a384662](a384662)) * **versionsource:** "delegate" permission check to api ([#179](#179)) ([04b17f2](04b17f2)) * when catching exceptions don't rely on $metadata being set ([#170](#170)) ([5e121f0](5e121f0)), closes [#169](#169) ### Features * add a restore point if body is empty ([#173](#173)) ([65cbf32](65cbf32)) * add HTTP conditional request support (If-Match, If-None-Match) ([#187](#187)) ([190afd8](190afd8)) * do not create a version for binaries ([#211](#211)) ([92ea28a](92ea28a)) * handle bad requests ([#204](#204)) ([5ae63c5](5ae63c5)) * handle bad requests ([#214](#214)) ([be0dc49](be0dc49)), closes [#204](#204) [#212](#212) * no version for binaries ([dd98406](dd98406)) * preserve content type in versions ([#177](#177)) ([5182cd5](5182cd5)) * return last modified for source based on timestamp ([#142](#142)) ([2b3454b](2b3454b)) * send shared secret to collab ([#202](#202)) ([6636423](6636423)) ### Reverts * Revert "feat: handle bad requests ([#204](#204))" ([#212](#212)) ([306fcb5](306fcb5)) * Revert "Fine grained access control ([#108](#108))" ([#118](#118)) ([68918ca](68918ca)) * Revert "fix: last modified header for source ([#145](#145))" ([#147](#147)) ([20b1a61](20b1a61)) * Revert "fix: versioning timestamp for version and document itself ([#144](#144))" ([#146](#146)) ([f626da7](f626da7)) * Revert "Revert "fix: last modified header for source"" ([#149](#149)) ([767629c](767629c)), closes [#145](#145) [#147](#147)

I've found out that some documents are emptied when da-admin returns a 404.
This is a very rare case. In the logs, I clearly a sequence:
null(i.e. "empty"): https://github.com/adobe/da-collab/blob/main/src/shareddoc.js#L209-L211I cannot reproduce the problem but looking at the code, only option is that the S3 get command fails AND does not have a
httpStatusCode. Probably micro temporary glitch somewhere. In any case, I think this is wrong to respond a 404 in the case, it should an error like 500.I am also adding a console log for this exact specific case to trace it later.
I have tested the fix together with collab and this stop emptying the document.