OSX/Win Seafile clients --> Enable sync temporary office files - Issues

Hi

I wanted to ask if other people also experience problems with the syncing of temporary office files.

My issues are:

  1. the temporary office files are synced but then not properly deleted \
    • This way they block the syncing process and outdated office files start to pile up undetected.
    • It’s then required to manually delete the temporary office files (which are often invisible to many users based on the OS setting). After that the sync off the original office file can proceed.
  2. Even if the temporary office file is being synced, this does not have an effect on actually locking the file for another user who’s trying to access it. It would produce a conflict file. So where is the advantage?

This is on Seafile Server 6.3.2 with mixed ISX and Win clients. Not all clients wil have the latest version.

Before I file a github issue, I wanted to check if this is a common experience or if it’s just me/us.

Let’s see ;’-)

We have the same problem with Pro server 6.3.4 running on Ubuntu + Mac only clients (all v 6.2.3), and this really is quite annoying.

@GITchristoph, Does this only happen on Mac client with the latest version? In recent versions we added a feature that can detect an MS Office file is opened on Mac and delay the update to the file. The mechanism is based on the existence of ~$* files. On Windows I cannot think of a reason that temp files can block syncing. Do you have seafile.log?

By the way, I don’t think the “enable sync office temporary file” option is related to this issue.

Hi @Jonathan

It happens on OSX with Client 6.2.3.
Here is an example:

On Macbook A I have “sync temporary MS files” enabled in the seafile client.
I created an Excel file test2.xslx.
And only the temporary file is being synced to Macbook B.
Not the actual test.xslx file.

Macbook A syncs it to the server though.

I hope the picture shows it:

The log does not show anything:

[09/14/18 22:05:31] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:05:31] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:05:31] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'initializing'.
[09/14/18 22:08:37] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'initializing' to 'downloading'.
[09/14/18 22:08:37] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:08:37] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:08:37] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:08:37] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:08:37] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'data') --> ('finished', 'finished')
[09/14/18 22:08:37] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'downloading' to 'synchronized'.
[09/14/18 22:08:40] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:08:40] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:08:40] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:09:01] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:09:01] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:09:01] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:09:06] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:09:06] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:09:06] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:10:08] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'initializing' to 'downloading'.
[09/14/18 22:10:08] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:10:09] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:10:09] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:10:09] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:10:09] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'data') --> ('finished', 'finished')
[09/14/18 22:10:09] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'downloading' to 'synchronized'.
[09/14/18 22:10:11] sync-mgr.c(545): Repo 'Library' sync state transition from 'initializing' to 'downloading'.
[09/14/18 22:10:11] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:10:11] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:10:11] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:10:11] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:10:11] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'data') --> ('finished', 'finished')
[09/14/18 22:10:11] sync-mgr.c(545): Repo 'Library' sync state transition from 'downloading' to 'synchronized'.
[09/14/18 22:10:11] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:10:11] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:10:11] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:10:13] sync-mgr.c(545): Repo 'Library' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:10:13] repo-mgr.c(3793): All events are processed for repo 567bdef1-102d-44a3-b72c-c38447ca1686.
[09/14/18 22:10:13] sync-mgr.c(545): Repo 'Library' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:11:13] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'initializing' to 'downloading'.
[09/14/18 22:11:13] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:11:13] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:11:13] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:11:13] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:11:13] http-tx-mgr.c(1153): Transfer repo 'f75b18f4': ('normal', 'data') --> ('finished', 'finished')
[09/14/18 22:11:13] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'downloading' to 'synchronized'.
[09/14/18 22:11:15] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:11:15] repo-mgr.c(3793): All events are processed for repo f75b18f4-9eaf-4bb7-b60d-f81f951d2b7c.
[09/14/18 22:11:15] sync-mgr.c(545): Repo 'Test-sync' sync state transition from 'committing' to 'synchronized'.
[09/14/18 22:11:15] sync-mgr.c(545): Repo 'Library' sync state transition from 'initializing' to 'downloading'.
[09/14/18 22:11:15] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:11:15] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:11:15] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:11:15] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:11:15] http-tx-mgr.c(1153): Transfer repo '567bdef1': ('normal', 'data') --> ('finished', 'finished')
[09/14/18 22:11:15] sync-mgr.c(545): Repo 'Library' sync state transition from 'downloading' to 'synchronized'.
[09/14/18 22:12:08] sync-mgr.c(545): Repo 'Desktop' sync state transition from 'synchronized' to 'committing'.
[09/14/18 22:12:08] repo-mgr.c(3793): All events are processed for repo 8c60da30-54cd-49b8-8d8d-b7712e25f5e8.
[09/14/18 22:12:08] sync-mgr.c(545): Repo 'Desktop' sync state transition from 'committing' to 'uploading'.
[09/14/18 22:12:08] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'init') --> ('normal', 'check')
[09/14/18 22:12:08] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'check') --> ('normal', 'commit')
[09/14/18 22:12:08] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'commit') --> ('normal', 'fs')
[09/14/18 22:12:09] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'fs') --> ('normal', 'data')
[09/14/18 22:12:09] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'data') --> ('normal', 'update-branch')
[09/14/18 22:12:09] http-tx-mgr.c(1153): Transfer repo '8c60da30': ('normal', 'update-branch') --> ('finished', 'finished')
[09/14/18 22:12:09] sync-mgr.c(545): Repo 'Desktop' sync state transition from 'uploading' to 'initializing'.
[09/14/18 22:12:09] sync-mgr.c(850): Removing blocks for repo Desktop(8c60da30).

Once I delete the ~$test2.xlsx file on Macbook B, then the original test.xlsx file gets synced from tje server to Macbook B.

I tested the same with Seafile client 6.2.5 on 2 Macbooks.
It has the exact same problem. The xlsx file only gets synced after I deleted manually the temporary office file.
This is not working.

Try it like this:

  • have 2x Macbooks (A+B) with Seafile client 6.2.3 or 6.2.5 with “sync temp office files” enabled.
  • create an offcie file on Macbook A and let it sync
  • Check what happens on server and Macbook B
  • See that temo file and actual office file gets synced to server BUT only a tempo file synced to Macbook B
  • Delete the temp file on Macbook B and see how the actual officde file gets synced.

If the option “sync temp office files” is disabled, then the sync seems to work fine.

In relation to this function:

In recent versions we added a feature that can detect an MS Office file is opened on Mac and delay the update to the file.

With “sync temp office files” disabledI have never seen that working on my Macbook and Windows Clients, to be honest. Neither in 6.2.5.

If Macbook A has test3.xslx open and I also open it on Macbook B, then changed on Macbook B overwrite the file on Macbook A, although Macbook A was the first to have office open.

I must say that this feature does not work here at all.

I hope that helps a bit to get the head around the issue,

Greetings, Chris

Hi @GITchristoph,

I understand the situation now. I think the “sync office temp file” option is of no use by now. So it’s safe to remove and disable this option in next release.

As for the delay update behavior, the update is delayed to when the xlsx file is closed on Macbook A. It doesn’t matter which one open the file first. You need to have 6.2.4 or later running on Macbook A.

So, what is the solution to this?

If Sync office files is disabled, the files sync correctly but the file locking does not work and if its enabled files do not sync correctly but the locking works?? At the moment we are running into way too many version conflicts because of this random behaviour. Also today when manually deleting the lock files to make the sync work we lost some files completely, they don’t even show up in the trash. Not good.

Hi @Jonathan

I think the “sync office temp file” option is of no use by now. So it’s safe to remove and disable this option in next release.

I think it can be said that it’s required now for all users to update to a sync client that disables the “sunc office temp file” option, since having it enabled causes sync issues.

You need to have 6.2.4 or later running on Macbook A.

I don’t think there was a version 6.2.4 for OSX, just 6.2.3 when the “office locking file” started to be promoted.
Anyhow, understood that we should all run 6.2.5.

But please also note: That the feature that the Seafile client locks office files when opened does not work on our Win/Mac environment. The person, who saves last, wins.

You can disable sync office temp files option. Seafile pro edition provides built-in file locking. When Office file is opened, it’ll be locked on the server. This feature doesn’t rely on the office temp files being synced. This works on Mac with the latest version.

The two situations works on our environment and some of our customers who rely on them also report that they work:

  1. When an MS office file is opened on Mac, it’ll be locked on the server.
  2. If a MS office file is opened locally, the update from the server will not be applied until it’s closed.

Ok, thanks!

Hi @Jonathan

Thanks for the answer.
Does this only work for Seafile Pro Edition?
I am running the Community Edition and I understood the option should be valid for that Edition as well?

@Jonathan

For me the scenario looks like this:

Macbook A opens testfile.xls and makes a change.
Macbook B opens testfile.xls (there is no notification that the file is already open on Macbook A) and makes a change at the same time.

On both Macbook A and B the testfile.xls file will be closed.
The version of testfile.xls that was closed last will become a conflict file.

So this is probably still what it is before.

Wasn’t it always like that? Can I ask what new advantage of this “locking feature” is?

I don’t get it, probably I am hoping for something that was never supposed to work.
What I am hoping for is that the feature will over the same as when working on an office file on a server: If it’s already opened, Word/Excel wlll warn you about this fact and allows to only open the file in read-only.

That would be cool, but it’s. not what the feature offers?

Or does this work in Seafile-Pro only?