patch applied (/home/srv/code/hackage-server): "First go at adding continuous/live mirroring" and 8 others
duncan at lun.haskell.org
duncan at lun.haskell.org
Sun Oct 9 02:16:02 CEST 2011
Thu Oct 6 11:29:45 BST 2011 Duncan Coutts <duncan at well-typed.com>
* First go at adding continuous/live mirroring
Ignore-this: 69423437dcf02091da86ae3480bc128d
M ./MirrorClient.hs -32 +105
M ./hackage-server.cabal -1 +1
Thu Oct 6 12:09:20 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Improve the mirror client help messages
Ignore-this: 30d7c7730b11b88871fa6a4df3d79014
M ./MirrorClient.hs -5 +35
Sat Oct 8 15:30:24 BST 2011 Duncan Coutts <duncan at community.haskell.org>
* Rework the async var to batch updates and amortise the work
Ignore-this: 3f53d68d36f1847b061dcb7ddcb3e23d
Previously, every single write to the var was laboriously evaluated
and since jobs keep comming in faster than they can be evaluated,
then the input queue just grows without bound. But if we're just
writing then if we have several new inputs in the queue then we can
just skip to the final update and evaluate that one. That's now what
we do, with a slight complication to do with incremental updates.
M ./Distribution/Server/Util/AsyncVar.hs -16 +34
M ./hackage-server.cabal +1
Sat Oct 8 16:55:51 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Overhaughl the mirror client error handling infrastructure and strategy
Ignore-this: 59347decddab335ba0f9f75fd66d3d0f
M ./MirrorClient.hs -127 +443
Sat Oct 8 17:01:55 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Only rewrite the mirror client error files if they've changed
Ignore-this: b82b608bfcd9a6d2e4473bb616ab563c
M ./MirrorClient.hs -2 +4
Sat Oct 8 19:20:12 BST 2011 Duncan Coutts <duncan at community.haskell.org>
* Disable idle GC for the server
Ignore-this: 970125139572aee660c2dae06f904464
It doesn't correctly detect when we're really idle and ends up
using ~15% CPU when the server is otherwise idle.
M ./hackage-server.cabal +2
Sat Oct 8 19:22:16 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Depend on the latest HTTP lib, for bug fixes
Ignore-this: a5f411822c140575974829df3e5eacec
M ./MirrorClient.hs -3
M ./hackage-server.cabal -1 +1
Sun Oct 9 00:43:15 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Report when a checkpoint is finished writing.
Ignore-this: 2f451e601c3d8fb9c1bb45e34d55f0eb
It's just that little bit more reassuring.
M ./Main.hs +1
Sun Oct 9 01:12:09 BST 2011 Duncan Coutts <duncan at well-typed.com>
* Handle IO errors in mirroring without losing package error info
Ignore-this: 718a385e3718d7cc12a6312109648dfc
Previously if we got an IO exception, rather than an HTTP level error,
then we had no chance to trap it locally so we would lose all the
accumulated info about the packages with errors. Now we cheat. Instead
of using a proper state monad, we use a reader monad with an IORef
that way, we can catch the IO exception in the monad run function,
and still read out the latest package error state.
Also handle user interrupt ^C similarly.
M ./MirrorClient.hs -15 +33
More information about the cabal-devel
mailing list