Seafile 5 syncing of old libraries
After upgrading to Seafile 5 I observed that my client was not syncing libraries anymore.
It turns out that this happens for libraries that were created long ago (before Seafile 3). According to Seafile issue #975 syncing of Seafile libraries may fail over HTTP(S) if they are stored in an older format on the server.
There is a forum thread about “migrating the old library format to the new library format” but I did not dare to try it out yet. Since I’m not syncing too much data over Seafile I rather opted to recreate my own libraries from scratch and now my client happily syncs over HTTPS.
Client side
On the Seafile client side it’s pretty obvious that something is not right. Old libraries that should be synced will always stay in the connecting state:
Additionally the ccnet.log
will contain lines like this:
[01/17/16 17:21:41] ../common/connect-mgr.c(364): [Conn] Start outgoing connect to (null)(SOMEID) 1.2.3.4:10001
[01/17/16 17:21:51] ../common/connect-mgr.c(220): [Conn] peer (null)(SOMEID) connection fails
Server side
As a server administrator it’s relatively easy to find the list of affected
libraries. While Seafile is stopped, running seaf-gc.sh --dry-run
will show
a list of libraries. Filtering that for GC version 0
will show libraries that
will never sync over HTTP(S):
$ ./seaf-gc.sh --dry-run|grep 'GC version 0 '
[01/17/16 17:00:49] gc-core.c(440): GC version 0 repo My Library Template(SOMEUUID)
After cleaning up my own libraries only a few libraries from other users are left in the old format, I guess I have to walk them over the procedure at some point to get things working again.