Hello Patrick,
Sorry to hear the binfile caused you that much troubles.
I guess it must be that the alignment of the structs used in the
binfiles are different in 64bit than in 32bit.
I must admit that the binfiles were not designed with data portability
across architectures in mind. Little to big endian and vice versa also
does not work - however the binfile implementation will detect that
case. The implementation also checks for a mismatch in the binfile
header size, and has a ID and DB version check to handle updates of
the data format.
But apparently the alignment difference does not affect the header,
but the records (changelog, I assume) themselves, and these are in
fact not checked for conformant size when ID and DB version checks are
ok.
I'll add checks for record size - these should catch migration caused
alignment/packing issues.
When binfilebase detects an incompatibility (like too old DB version
that cannot be upgraded, or newer DB version than expected), the
affected binfiles will be recreated (if it affects settings, the
incompatibility will be reported, so the user can decide if settings
should be re-created).
Best Regards,
Lukas
On Aug 14, 2009, at 17:26 , Patrick Ohly wrote:
Hello!
I just had a very weird problem: SyncEvolution consistently sent all
items to the server in a normal sync, although they were not
recognized
as updated or new. The DB CreateContext method was called twice for
the
same datastore. Consider myself totally confused at that point.
To cut a long story (several hours) short, the underlying reason was
that I had copied my home directory from an older 32 bit Linux
installation to a newer installation in 64 bit. The binfile
implementation does not seem to cope with that well. I'm not sure
how it
caused the effects above, but after removing the entire .synthesis
directory (the place where SyncEvolution keeps the Synthesis binfiles)
syncs started to work normally again.
It is not guaranteed that migrating from 32 bit to 64 bit by simply
copying files works. However, my expectation was (and still is) that
software should detect this, warn the user and the abort. Thoughts?
Of course this happened while testing the final 0.9 release binaries,
which is why I was close to despair and they are not announced yet ;-)
--
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.
_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis
Lukas Zeller ([email protected])
-
Synthesis AG, SyncML Solutions & Sustainable Software Concepts
[email protected], http://www.synthesis.ch
_______________________________________________
os-libsynthesis mailing list
[email protected]
http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis