|  | 
 | 
Created on 2009-11-09.00:26:52 by quick, last changed 2010-06-15.21:30:57 by admin. 
 |
 
  | File name | Uploaded | Type | Edit | Remove |  
  | t.tar.gz | mornfall,
   2009-11-09.17:20:44 | application/x-compressed-tar |  |  |  
 
  
   | msg9215 (view) | Author: quick | Date: 2009-11-09.00:26:49 |  |  
   | Recently upgraded from darcs 2.2.0 to darcs 2.3.1... and can no longer work 
with one of my repos.
$ /Programs/Darcs/2.3.1/bin/darcs w --debug
/Mount/Work/per_dtest/_darcs/prefs/sources
Beginning identifying repository .
Done identifying repository .
/Mount/Work/per_dtest/_darcs/prefs/sources
Identified darcs-1 repo: /Mount/Work/per_dtest
darcs: Codec.Compression.Zlib: premature end of compressed stream
$
strace makes it look like the following file is at fault:
$ file _darcs/pristine.hashed/* | grep empty
_darcs/pristine.hashed/
da39a3ee5e6b4b0d3255bfef95601890afd80709:                                    
empty
$ time /Programs/Darcs/2.2.0/bin/darcs check
The repository is consistent!                                        
                                                                     
real    0m32.775s
user    0m27.049s
sys     0m1.278s
$ time /Programs/Darcs/2.3.1/bin/darcs check
The repository is consistent!                                        
                                                                     
real    0m38.155s
user    0m33.945s
sys     0m1.910s
$
And as check implies, a repair does nothing because it believes the repository 
is OK.  If I remove the above file from the pristine.hashed, both 2.2.0 and 
2.3.1 checks still report consistency and 2.3.1 whatsnew works.  I'm very 
hesitant to continue in this mode though...
Unfortunately, I cannot supply this repository for testing. |  
   | msg9224 (view) | Author: kowey | Date: 2009-11-09.14:34:22 |  |  
   | This looks pretty urgent.  Kevin: is there any way you could use this
information to boil this down to a minimal test case?
If you do succeed, have a look at http://wiki.darcs.net/Development/RegressionTests
Meanwhile, Petr: this may be one for you to look at as well |  
   | msg9225 (view) | Author: mornfall | Date: 2009-11-09.17:20:44 |  |  
   | Doesn't seem to be very disturbing. This is just another wart on the current
pristine format, in that all files are compressed, *but* the empty ones are
not. It should be easy to work around, and it should also be safe to remove the
file from pristine and then run repair, which would probably remove that bad
file (new darcs versions create empty files as 0000000000-
da39a3ee5e6b4b0d3255bfef95601890afd80709 -- and the former contains valid gzip
header and an empty compressed file -- the latter is truly empty and disturbs
pristine reading that hashed-storage does).
It won't be very easy to write a testcase for this though, since current darcs
shouldn't produce these files in pristine anymore (or so I'd hope). Anyway, I
have manually produced a repository that exhibits this issue, let me attach it. Attachments |  
   | msg9226 (view) | Author: mornfall | Date: 2009-11-09.17:22:36 |  |  
   | Oh, a workaround on the user side would be to say:
gzip -c /dev/null >
_darcs/pristine.hashed/da39a3ee5e6b4b0d3255bfef95601890afd80709
in the repository. That's perfectly safe thing to do and fixes the problem with
the repo. |  
   | msg9227 (view) | Author: kowey | Date: 2009-11-09.17:28:37 |  |  
   | Great! [silly darcs]
Glad to hear it only *looks* scary but is really quite benign.
Could we turn this into a regression test, then?  One way might just be to ship
the tarball with the tests/ directory (there's a subdir for that).  Another,
probably better way would be to reproduce the manual steps. |  
   | msg9243 (view) | Author: quick | Date: 2009-11-14.05:10:12 |  |  
   | I'm not really able to create an good test for this because I'm not sure how 
the blank patchfile got introduced... as Petr said, it was probably an earlier 
wart that no longer exists.
I did some more testing though, this time with the darcs dev repo:
* The initial "darcs w" still has the same complaint:
darcs: Codec.Compression.Zlib: premature end of compressed stream
* Running a darcs repair generates the following:
Fixing pristine tree...
Hash mismatch(es)!
d1/d2/d3/d5
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d6
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d7/d8
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d7
    index: 8cf6f36c44d48bdc81f3db9baf8841c1f90bb76dbad9491f261ad695b9755a29
  working: 359f732f818c662b2100a3f750d081614c7c09fa156d8b3d8f105b77eebc547f
d1/d2/d3/d9/d10/d11
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d9/d10
    index: b44d23331f93827466a9a729c04c4720c19b0253ac30a496601ae53559fde62f
  working: 331a518d77a3ea90735f2fd373ba1f2f1360cf68cd5d0ee054d65359c3af3acf
d1/d2/d3/d9
    index: 1e2cc2e0b7c3a17f68f940a6302d5b82811a86653eb648c341501c2d77c3ff24
  working: 46afb29074741bdb07a57c94643b8d3136ab6ef7a8e49291e4f8e0a5dc9c63b5
d1/d2/d3
    index: 72b12a2afc0d640844ada9ace736bebc606e0f03a52254cad42694188d1d81c0
  working: cc911d26941d0263ea57cf250736f372baf66fcf5648311204544a21f002b210
d1/d2/d4/pts
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d4
    index: d38e79bda677b5c30531f7bd10c4b76b4741065b7f847528894bdcf5eed75e90
  working: a0f77e053b9c1fe6519af6ab095d24010d20b8bb2ef8c774cfd58ea116d6c9cb
d1/d2
    index: f2a59061486f35a2f6b4914f951c0c1cce337fa64552819bfc43a83e58b06102
  working: 7987eb8eef0533e1863025255a257227b7e8ff140579d43d1f9e8429124b065b
d1
    index: 04114f9904852dadbd32b9f85629ff96618b6a198012dc403f3972d788dc6309
  working: 83c85ecccb6cebbd152419623acf7a8333360109570e069984580a817dd3e9c8
Bad index discarded.
$
* The good news is that this seemed to address the empty file problem: a "darcs 
w" now returns "No changes" as expected.
* However, the hash errors remain:
$ darcs check
The repository is consistent!
Hash mismatch(es)!
d1/d2/d3/d5
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d6
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d7/d8
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d7
    index: 8cf6f36c44d48bdc81f3db9baf8841c1f90bb76dbad9491f261ad695b9755a29
  working: 359f732f818c662b2100a3f750d081614c7c09fa156d8b3d8f105b77eebc547f
d1/d2/d3/d9/d10/d11
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d3/d9/d10
    index: b44d23331f93827466a9a729c04c4720c19b0253ac30a496601ae53559fde62f
  working: 331a518d77a3ea90735f2fd373ba1f2f1360cf68cd5d0ee054d65359c3af3acf
d1/d2/d3/d9
    index: 1e2cc2e0b7c3a17f68f940a6302d5b82811a86653eb648c341501c2d77c3ff24
  working: 46afb29074741bdb07a57c94643b8d3136ab6ef7a8e49291e4f8e0a5dc9c63b5
d1/d2/d3
    index: 72b12a2afc0d640844ada9ace736bebc606e0f03a52254cad42694188d1d81c0
  working: cc911d26941d0263ea57cf250736f372baf66fcf5648311204544a21f002b210
d1/d2/d4/pts
    index: 0000000000000000000000000000000000000000000000000000000000000000
  working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
d1/d2/d4
    index: d38e79bda677b5c30531f7bd10c4b76b4741065b7f847528894bdcf5eed75e90
  working: a0f77e053b9c1fe6519af6ab095d24010d20b8bb2ef8c774cfd58ea116d6c9cb
d1/d2
    index: f2a59061486f35a2f6b4914f951c0c1cce337fa64552819bfc43a83e58b06102
  working: 7987eb8eef0533e1863025255a257227b7e8ff140579d43d1f9e8429124b065b
d1
    index: 04114f9904852dadbd32b9f85629ff96618b6a198012dc403f3972d788dc6309
  working: 83c85ecccb6cebbd152419623acf7a8333360109570e069984580a817dd3e9c8
Bad index.
$
And the above is persistent.  So... is it safe to use this latest darcs with 
this repo? |  
   | msg9261 (view) | Author: mornfall | Date: 2009-11-14.12:15:37 |  |  
   | That's quite interesting. It *should* be safe, although it probably causes a
small dent in the performance. It's however still something to worry about. Can
you share a tarball of the failing repository? |  
   | msg9277 (view) | Author: quick | Date: 2009-11-14.17:59:51 |  |  
   | Sorry, can't share this one: it's from work (the annoying day job thing).  I'd 
be glad to run any analysis tools or anything on it and report back the 
results, but I can't pass along the repository itself.  Unfortunately, this 
hasn't seemed to occur in any of my personal repos. |  
   | msg9467 (view) | Author: kowey | Date: 2009-11-23.13:48:02 |  |  
   | Kevin: thanks for your continuing work in ferreting this out.  Would it be
possible to send the repository to just Petr  and not the whole team?  Perhaps
that would be less day-job sensitive? |  
   | msg9471 (view) | Author: mornfall | Date: 2009-11-23.23:56:57 |  |  
   | Just a quick note that I have reproduced it and it is mostly harmless -- the 
problem is that empty directories do not get a hash in the index, but they do get 
a hash when doing the check, and that constitutes a mismatch. I'll look into 
fixing the problem... |  
   | msg9856 (view) | Author: mornfall | Date: 2010-01-19.01:18:25 |  |  
   | Fixed. Also confirmed by Trent. |  
   | msg9858 (view) | Author: twb | Date: 2010-01-19.01:35:49 |  |  
   | [Eric: I hope this is the right ticket!]
Kevin Quick wrote:
> Hash mismatch(es)!
> d1/d2/d3/d5
>     index: 0000000000000000000000000000000000000000000000000000000000000000
>   working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Here's the minimal test:
    $ PATH=~/.cabal/bin-x86_64:$PATH with-temp-dir bash -c 'darcs --version; darcs --exact-version | sed /]/q; darcs init; mkdir d; darcs rec -qlamd; darcs check'
    with-temp-dir: entering directory `/tmp/with-temp-dir.9Sfr21'
    2.3.1 (+ 426 patches)
    darcs compiled on Jan 10 2010, at 14:41:15
    Context:
    [Resolve issue1720:  Fix cabal haddock problem.
    Dave Love <fx@gnu.org>**20100106162322
     Ignore-this: 1521b3a742711ac3ee979efc765f6b61
    ]
    Finished recording patch 'd'
    The repository is consistent!
    Hash mismatch(es)!
    d
        index: 0000000000000000000000000000000000000000000000000000000000000000
      working: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    Bad index.
    with-temp-dir: leaving directory `/tmp/with-temp-dir.9Sfr21'
    $
It is no longer present with hashed-storage 0.4.5:
    $ PATH=~/.cabal/bin-linux:$PATH with-temp-dir bash -c 'darcs --version; darcs --exact-version | sed /]/q; darcs init; mkdir d; darcs rec -qlamd; darcs check'
    with-temp-dir: entering directory `/tmp/with-temp-dir.1B8tE9'
    2.3.1 (+ 437 patches)
    darcs compiled on Jan 19 2010, at 11:29:30
    Context:
    [resolve issue1731: bump hashed-storage dependency to 0.4.5
    Reinier Lamers <tux_rocker@reinier.de>**20100117205223
     Ignore-this: c6e300b3c56d85b425306530b4d6c7be
    ]
    Finished recording patch 'd'
    The repository is consistent!
    with-temp-dir: leaving directory `/tmp/with-temp-dir.1B8tE9'
    $
Remind me to submit a regression test for this, then we can close this ticket. |  
   | msg9861 (view) | Author: kowey | Date: 2010-01-19.10:26:00 |  |  
   | Alright, re-opening for Trent's regression test (which is a good, disciplined,
idea).  Alternatively, some sort of hashed-storage test may be good enough. |  
   | msg9904 (view) | Author: mornfall | Date: 2010-01-26.16:24:22 |  |  
   | The following patch updated the status of issue1677 to be resolved:
* Resolve issue1677: require hashed-storage 0.4.4. 
Ignore-this: 92a9def06cccee05dc1cbaa63b6ef6fa
This version of hashed-storage produces index with correct hashes for empty
directories (the previous versions would use zeroes as the hash instead of the
hash of empty string there, leading to hash mismatches in the index). |  |
 
| Date | User | Action | Args |  | 2009-11-09 00:26:52 | quick | create |  |  | 2009-11-09 14:34:27 | kowey | set | status: unknown -> needs-reproduction priority: bug -> urgent
 nosy:
  + kowey, mornfall
 messages:
  + msg9224
 topic:
  + Regression, Hashed
 assignedto: quick
 |  | 2009-11-09 17:20:46 | mornfall | set | priority: urgent -> bug files:
  + t.tar.gz
 messages:
  + msg9225
 |  | 2009-11-09 17:22:38 | mornfall | set | messages:
  + msg9226 |  | 2009-11-09 17:28:39 | kowey | set | assignedto: quick -> (no value) messages:
  + msg9227
 |  | 2009-11-14 05:10:18 | quick | set | messages:
  + msg9243 |  | 2009-11-14 12:15:41 | mornfall | set | messages:
  + msg9261 |  | 2009-11-14 17:59:54 | quick | set | messages:
  + msg9277 |  | 2009-11-23 13:48:04 | kowey | set | status: needs-reproduction -> waiting-for assignedto: quick
 messages:
  + msg9467
 |  | 2009-11-23 23:57:00 | mornfall | set | status: waiting-for -> has-patch assignedto: quick -> mornfall
 messages:
  + msg9471
 |  | 2009-11-24 00:12:25 | kowey | set | topic:
  + Target-2.4 |  | 2010-01-09 11:45:44 | gh | set | nosy:
  + gh |  | 2010-01-12 20:21:32 | ganesh | link | patch137 issues |  | 2010-01-19 01:18:27 | mornfall | set | status: has-patch -> resolved messages:
  + msg9856
 |  | 2010-01-19 01:35:52 | twb | set | status: resolved -> unknown nosy:
  + twb
 messages:
  + msg9858
 |  | 2010-01-19 01:39:29 | twb | set | status: unknown -> resolved |  | 2010-01-19 10:26:02 | kowey | set | status: resolved -> needs-reproduction assignedto: mornfall -> twb
 messages:
  + msg9861
 |  | 2010-01-26 16:24:25 | mornfall | set | status: needs-reproduction -> resolved messages:
  + msg9904
 |  | 2010-06-15 21:30:55 | admin | set | milestone: 2.4.x |  | 2010-06-15 21:30:57 | admin | set | topic:
  - Target-2.4 | 
 |