CommandPost / FCPCafe

FCP Cafe Website
https://fcp.cafe
MIT License
26 stars 15 forks source link

FCP & QNAP SMB v3 corrupting libraries upon duplicating projects. #250

Open nick314 opened 9 months ago

nick314 commented 9 months ago

Apple Feedback Assistant ID: MISSING

Using the latest FCP, although this issue has been going on for some time and with previous versions. The library and media is located on a QNAP server (10GbE connection - 800Write/1050Read performance) via SMB 3. Final Cut Pro-2023-09-13-155901.ips.zip

Almost every time I duplicate a project within an event, I get a corrupt library, especially when I try to rename the project. Sometimes duplicating works, but after working for a couple of minutes, library corrupts itself, and duplicate no longer works unless I manually go to the library contents and delete the corrupt project folder and restart.

This happened with previous versions of FCP and the same QNAP so it's not linked to this version only, but I've been working on davinci for a while, and hadn't noticed lately how often the issue happens with FCP.

The media I'm working with is Sony A7SIII, but the crashes I get after returning the project from Davinci, so the media is essentially Apple ProRes 422 HQ. May have something to do with XML roundtripping but I doubt it since I've stumbled onto this issue with other projects that didn't have round tripping. Could be SMB related (though no disconnection issues occur), but I have not tested this with moving the project locally and trying to see if the issue pops up as well. I have tried creating a new library and adding the media and keywords there, but the same thing happens. I have a crash log from today, but the software doesn't really crash, so I don't know what relevant info can be found inside.

SPECS:

nick314 commented 9 months ago

I have now tested the library locally on the laptop and it seems to work. So the issue remains over SMB v3 and 10GBe connections where FCP corrupts libraries upon duplicating and renaming projects that are located over this type of network.

joema4 commented 8 months ago

I have limited experience using FCP files on a QNAP server, but Apple says if using FCP files on a Linux-based NAS using SMB, that server should be using Samba 4.3.4 or later configured with modules for Apple compatibility: https://support.apple.com/en-us/HT207128

I briefly ran the fs_usage command in terminal against the FCP process when I was duplicating a project. It showed a lot of specialized I/O calls on the library that are designed to prevent data corruption, e.g, guarded_pwrite_np, guarded_close_np, guarded_open_np, guarded_close_np. I don't know how those are redirected to SMB then on the server from SMB to local I/O calls.

I don't know what kind of I/O tracing options exist on QNAP, but one logical approach is do the equivalent of fs_usage on the server during FCP project duplication, while the MacOS client is also being logged by fs_usage. That way you can do a time-correlated study of the I/O operations.

Re the library corruption, one question is whether that is at the database structural level or at the application level. The integrity of each SQLite database in each event and project within the library can be checked using PRAGMA INTEGRITY_CHECK in each database, using any SQLite query tool. The one I use is SQLPro for SQLite: https://www.sqlitepro.com

If it's not damaged at the database structural level (IOW index b-trees), the damage is at the application layer, IOW the logical contents of the tables. There is the undocumented FCP menu OPT+Clip>Verify & Repair Project, but I definitely wouldn't use that without a backup.

It would be interesting to use SQLPro and export a CSV version of the project database before the duplication attempt, then export a CSV version afterward (both original and duplicate) and compare those using a diff tool such as Beyond Compare or BBEdit.