structr / structr

Structr is an integrated low-code development and runtime environment that uses a graph database.
https://structr.com
GNU General Public License v3.0
774 stars 156 forks source link

Content of binary file seem to be damaged after restore #425

Closed eric-schleicher closed 8 years ago

eric-schleicher commented 8 years ago

Source system: 2.0 snapshot 8 Target system: 2.0 snapshot 14

Method of Restore: renaming a backup file (exported with maintentance/sync) to be seed.zip in the base structr-ui folder on a clean install (of snapshot 14). Restore operation is successful and the system largely seems to work fine... However:

Structr is serving font files to client browsers... When it arrives @ the client, it's opened with opentype.js. during the font parsing process, I now recieve the following error: font-error-1

I checked on another well functioning system (snapshot 8; restored from exact same file) and this branch of script (pictured below) is not exercise the similarly on both system. you can see that it's inspecting the file internals to identify the font type. On the snapshot 8 system(s), the opentypejs script correctly identifies the file as type TTF based on it's internal format. In snapshot 14 the TTF check is false, and the subsequent OFT check fails to recognize the file type based on it's internal structr... the observiation is that this is incorrect determination... if the file contents were identical when they land at the client.

font-error-2 jpg

So downgrading the target from 2.0 snapshot 14 target to 2.0 snapshot 8 allowed the restore and proper functioning.

Not sure whether mangling of the file internals is a byproduct of the import, or transmission to the client.

Available to do additional diagnostics. at the moment this prevents my from migrating to snap 14.

I may try stopping the snap 8, copying the whole structure and string to update in plate (not import from backup.zip) to see if it's possible an incompatibility with the backup itself.

amorgner commented 8 years ago

Can you check what Structr delivers if you access the file via its URL on both systems?

The <!DO are probably the first characters of a web page source code (first line is <!DOCTYPE>) so I assume that an error page will be returned instead of the binary content.

Between snapshot 8 and 14 a change was made by enabling a uniqueness constraint on file paths so it could be that the new version serves a different file which is not public, returning an error page.

In the upcoming snapshot (being deployed right now) you can set application.filesystem.unique.paths = false in structr.conf to get back the old behavior without uniqueness check/enforcement.

eric-schleicher commented 8 years ago

good catch.

amorgner commented 8 years ago

See also https://github.com/structr/structr/issues/158

amorgner commented 8 years ago

So I think it's safe to say that this was not a bug in Structr but rather a consequence of the new file uniqueness.

I'll close this with the warning that before importing a backup with recent snapshots the option for unique paths should be turned off in structr.conf.

eric-schleicher commented 8 years ago

Confirmed On Mar 29, 2016 12:19 AM, "Axel Morgner" notifications@github.com wrote:

So I think it's safe to say that this was not a bug in Structr but rather a consequence of the new file uniqueness.

I'll close this with the warning that before importing a backup with recent snapshots the option for unique paths should be turned off in structr.conf.

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/structr/structr/issues/425#issuecomment-202751714