wiki:opensync-0.33-notes

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/