]> source.dussan.org Git - jgit.git/commit
Only increment mod count if packed-refs file changes 41/6141/1
authorKevin Sawicki <kevin@github.com>
Fri, 11 May 2012 02:13:24 +0000 (19:13 -0700)
committerKevin Sawicki <kevin@github.com>
Mon, 28 May 2012 21:06:12 +0000 (14:06 -0700)
commit91f5ce3a15d5df61de42fbe72a368ac513081d5b
tree2561f87cf3cbaebfdb54b925851e61c1556b0941
parent24a0f47e32ab7cdf20c2201d7100599ea057f8a3
Only increment mod count if packed-refs file changes

Previously if a packed-refs file was racily clean then there
was a 2.5 second window in which each call to getPackedRefs
would increment the mod count causing a RefsChangedEvent to be
fired since the FileSnapshot would report the file as modified.

If a RefsChangedListener called getRef/getRefs from the
onRefsChanged method then a StackOverflowError could occur
since the stack could be exhausted before the 2.5 second
window expired and the packed-refs file would no longer
report being modified.

Now a SHA-1 is computed of the packed-refs file and the
mod count is only incremented when the packed refs are
successfully set and the id of the new packed-refs file
does not match the id of the old packed-refs file.

Change-Id: I8cab6e5929479ed748812b8598c7628370e79697
org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java