Hi everyone,
yet another experimental OpenSync release for developers and testers. Late as usual - but better late then never! The next stable major release is coming closer.
First, I would like to thank everyone how is working, testing and supporting on OpenSync!
New features and call for testing:
- Unidirectional Synchronization: "read-only" sinks. msynctool example:
Enable/Disable? writing (of objtype sink) for a member (default: read/write):
msynctool --disable-readonly <groupname> <memberid> [<objtype>] msynctool --enable-readonly <groupname> <memberid> [<objtype>]
To disable writing for all objtypes:
msynctool --enable-readonly group 1
To disable certain objtypes for all objtypes (e.g. "contact"):
msynctool --enable-readonly group 1 contact
- Merger and Converter can be enabled/disabled in group configuration
Enable/Disable? the converter of a group (default: enabled). Disabling converters is recommend for Backups only:
msynctool --enable-converter <groupname> msynctool --disable-converter <groupname>
Enable/Disable? the merger of a group (default: enabled):
msynctool --enable-merger <groupname> msynctool --disable-merger <groupname>
Fixed issues:
- External Plugin processes (reimplementation of OSyncStartType EXTERNAL).
kdepim-sync should now work again within KitchenSync? (mainloop conflicts)
- Detection if conflict can be solved by temporary ignore of conflict
- Duplicating conflicts works again correctly
Known issues:
- There is likely an issue (again) with osync_mapping_engine_multiply() which
can cause an assert() in osync_change_set_uid(). If you can reproduce that in a reliable let me know.
API changes: If you want to setup a unidirectional sync and and change a member objtype sink to "read-only":
osync_bool osync_objtype_sink_get_write(OSyncObjTypeSink *sink); void osync_objtype_sink_set_write(OSyncObjTypeSink *sink, osync_bool write);
For reference implementation see msynctool.
Dropped osync_member_add_objtype(). Use osync_member_add_objtype_sink() instead:
- void osync_member_add_objtype(OSyncMember *member, const char *objtype); + void osync_member_add_objtype_sink(OSyncMember *member, OSyncObjTypeSink *sink);
Next steps:
- Change the build environment. We can't handle scons anymore. Anyone with
object to cmake?
- Our unit test framework is great and very important! We managed to fix every
failing testcase expect three testcases:
- time_unix_converters - looks like one of the testcase can only run in a
certain timezone ;)
- engine_sync_stress - stress test timeouts (at least on my slow machine) we
should do some performance profiling. Maybe we can tweak the osync_obj_engine_initialize() call or call it with osync_engine_initialize() so the mapping table don't have to be loaded on every osync_engine_synchronize() call. Another thing is the archive - the sqlite calls take a lot. There is even one call which makes use of a sub-select which have to get rid of.
- client_run - testcase times out - looks like the testcase is broken - client
process isn't able to disconnect correctly - looks like yet another HUP signal problem.
- Improve our unit tests with the help of code coverrage
- Cleanup bug tickets
- Testing, testing and testing
- Add capabilities support for plugins
- Finish vformat plugin and fix the XSD Schemas of XMLFormat-*
- Review OpenSync? API
- Testing, testing and testing
- Make a major release 0.40
Released tarballs can be found at: http://www.opensync.org/download/releases/0.33/
