Patchwork D12593: rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite

login
register
mail settings
Submitter phabricator
Date April 28, 2022, 3:16 p.m.
Message ID <differential-rev-PHID-DREV-dyjupvq5jacmqwqhypgr-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/50940/
State New
Headers show

Comments

phabricator - April 28, 2022, 3:16 p.m.
Alphare created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This was picked up by @aalekseyev when doing unrelated debugging.
  
  The Rust implementation was never resetting this counter, so a brand new file
  would carry over the old counter.
  
  As I write this, my counter is a supposed 7389089 unused bytes for a total of
  170978 bytes in the data file. Feel free to post your own high score.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D12593

AFFECTED FILES
  tests/test-dirstate.t

CHANGE DETAILS




To: Alphare, #hg-reviewers
Cc: mercurial-patches, aalekseyev, mercurial-devel

Patch

diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
--- a/tests/test-dirstate.t
+++ b/tests/test-dirstate.t
@@ -166,6 +166,23 @@ 
    *1 (re)
   $ dirstate_uuid_has_not_changed
 
+Unused bytes counter is non-0 when appending
+  $ touch file
+  $ hg add file
+  $ current_uid=$(find_dirstate_uuid)
+
+Trigger a rust/rhg run which updates the unused bytes value
+  $ hg st
+  M dir2/f
+  A file
+  $ dirstate_uuid_has_not_changed
+
+  $ hg debugstate --docket | grep unused
+  number of unused bytes: 0 (no-rust no-rhg !)
+  number of unused bytes: [1-9]\d* (re) (rhg no-rust !)
+  number of unused bytes: [1-9]\d* (re) (rust no-rhg !)
+  number of unused bytes: [1-9]\d* (re) (rust rhg !)
+
 Delete most of the dirstate to trigger a non-append
   $ hg rm dir/a dir/b dir/c dir/d
   $ dirstate_data_files | wc -l
@@ -173,5 +190,12 @@ 
   $ dirstate_uuid_has_not_changed also-if-python
   [1]
 
+Check that unused bytes counter is reset when creating a new docket
+
+  $ hg debugstate --docket | grep unused
+  number of unused bytes: 0 (no-rust !)
+  number of unused bytes: [1-9]\d* (re) (rust known-bad-output !)
+
+#endif
+
   $ cd ..
-#endif