cache issue

Bertrand Jacquin beber at meleeweb.net
Sun Mar 23 15:06:42 CET 2014


Hi,

I'm getting some trouble with cgit on enlightenment platforms and cache
since some time, but at it seems to be reproductable with cgit 0.10 here
is a report.

The cache configuration look like this :

cache-root=../cache
cache-size=10000
cache-static-ttl=1
cache-dynamic-ttl=1
cache-repo-ttl=1
cache-root-ttl=1
cache-scanrc-ttl=5

* Main page

$ curl -sD - -o /dev/null https://git.enlightenment.org/ \
  | grep -E '^(Date|Expires|Last-Modified): '
Date: Sun, 23 Mar 2014 14:02:08 GMT
Expires: Sun, 23 Mar 2014 14:02:52 GMT
Last-Modified: Sun, 23 Mar 2014 14:01:52 GMT

In this page, core/elementary.git is shown as last modified '58 min.'
ago.

$ curl -s https://git.enlightenment.org/ \
  | sed -e 's;<html xmlns=.*>;<html>;' \
	| xmlstarlet fo -o -D -R --html 2> /dev/null \
	| xmlstarlet sel -T -t \
      -m "html/body/div/div/table/tr/td/a[@title='core/elementary.git']" \
			-v "../..//span[@class='age-mins']" -n
58 min.

* Repo page

$ curl -sD - -o /dev/null https://git.enlightenment.org/core/elementary.git/ \
  | grep -E '^(Date|Expires|Last-Modified): '
Date: Sun, 23 Mar 2014 14:02:14 GMT
Expires: Mon, 10 Mar 2014 20:49:55 GMT
Last-Modified: Mon, 10 Mar 2014 20:48:55 GMT

As you see, the Expires header is wrong as the configuration state it
should not be older than 1 minute (cache-repo-ttl).

Here, master is the last modified branch and is shown as last modified
'3 hours' ago.

$ curl -s https://git.enlightenment.org/core/elementary.git/ \
  | sed -e 's;<html xmlns=.*>;<html>;' \
	| xmlstarlet fo -o -D -R --html 2> /dev/null \
	| xmlstarlet sel -T -t \
      -m "html/body/div/div/table/tr/td/a[@href='/core/elementary.git/log/']" \
      -v "../..//span[@class='age-hours']" -n
3 hours

* All branch page

$ curl -sD - -o /dev/null https://git.enlightenment.org/core/elementary.git/refs/heads \
  | grep -E '^(Date|Expires|Last-Modified): '
Date: Sun, 23 Mar 2014 14:02:22 GMT
Expires: Sun, 23 Mar 2014 14:03:22 GMT
Last-Modified: Sun, 23 Mar 2014 14:02:22 GMT

In this page, the master is showned as last modified '61 min.' ago.

$ curl -s https://git.enlightenment.org/core/elementary.git/refs/heads \
  | sed -e 's;<html xmlns=.*>;<html>;' \
	| xmlstarlet fo -o -D -R --html 2> /dev/null \
	| xmlstarlet sel -t \
      -m "html/body/div/div/table/tr/td/a[@href='/core/elementary.git/log/']" \
      -v "../..//span[@class='age-mins']" -n
61 min.

How can we fix this ? I have some .lock files in the cache directory, is
there any way to flush the lock files after some period ? Also, to help
debugging this, it should be nice to have a X-Cgit-Cache: header
containing the cache file used given to user.

Once I remove '*.lock' in cache directory, 'Repo page' and 'All branch
page' are equal, but 'Main page' is not OK (ordered in the same as
before) :

62 min.
65 min.
65 min.

-- 
Beber


More information about the CGit mailing list