[PATCH] dim: Make rr-cache more robust

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There's a failure mode I didn't take into account:

1. You start a dim rebuild-tip, and update your rr-cache. Because you
didn't push for a while, this adds some really old files (but with
today's timestamp).

2. 2nd person finished their dim rebuild-tip and garbage-collects the
old rr-cache entries.

3. We get to commit_rr_cache, and the first thing the script does is
update the rr-cache branch, which deletes the old entries.

4. Then we copy them over again, because their timestamp is fresh.

5. The filtering doesn't catch them, because git ls-files doesn't list
them (they're deleted files after all).

6. They get re-added right away.

I think this is what happend today between Chris and Imre, and
resulted in a bit of confusion.

I think if we pull only after copying this would be avoided, since the
pull would delete the files the 2nd person gc'ed in step 2, and so
prevents them from getting re-added. Worst case there's a functional
conflict and the pusher needs to clean up the mess.

Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx>
---
 dim | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dim b/dim
index de3264aa0f76..53771762f15d 100755
--- a/dim
+++ b/dim
@@ -512,9 +512,9 @@ function commit_rerere_cache
 	if git_is_current_branch rerere-cache ; then
 		remote=$(branch_to_remote rerere-cache)
 
-		git pull >& /dev/null
 		rm $(rr_cache_dir)/rr-cache -Rf &> /dev/null || true
 		cp $(rr_cache_dir)/* rr-cache -r --preserve=timestamps
+		git pull >& /dev/null
 		git add ./*.patch >& /dev/null || true
 		for file  in $(find rr-cache/); do
 			if ! git log --since="60 days ago" --name-only -- $file | grep $file &> /dev/null; then
-- 
2.13.3

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux