]> source.dussan.org Git - jgit.git/commit
Let RefDirectory use FileSnapShot to handle fast updates 81/3481/3
authorChristian Halstrick <christian.halstrick@sap.com>
Fri, 20 May 2011 09:18:20 +0000 (11:18 +0200)
committerChris Aniszczyk <caniszczyk@gmail.com>
Mon, 23 May 2011 19:48:10 +0000 (14:48 -0500)
commit2302a6d3ceea2926e785dba57abd58f609684e86
tree9a7a543cad0be99236cbc2792f88c40e59f0cabf
parent16e810b2ec37c2db8bc0e39426be385024a8de8a
Let RefDirectory use FileSnapShot to handle fast updates

Since this change may affect performance and memory consumption on every
access to a loose ref I explicitly made it a RFC to collect opinions.

Previously RefDirectory.scanRef() was not detecting an update of a
loose ref when the update didn't changed the modification time of
the backing file. RefDirectory cached loose refs and the way to detect
outdated cache entries was to compare lastmodification timestamp on the
file representing the ref. If two updates to the same ref happen faster
than the filesystem-timer granularity (for linux this is 2 seconds)
there is the possiblity that we don't detect the update.

Because of this bug EGit's PushOperationTest only works with 2 second
sleeps inside.

This change let RefDirectory use FileSnapshot to detect such situations.
FileSnapshot helps to remember when a file was last read from disk and
therefore enables to decide when to load a file from disk although
modification time has not changed.

Change-Id: I03b9a137af097ec69c4c5e2eaa512d2bdd7fe080
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/PushCommandTest.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefDirectoryTest.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileSnapshot.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/RefDirectory.java