On Wed, 2011-02-16 at 15:11 +0100, Patrick Ohly wrote:
> I believe a user ran into issues with the migration of the .evolution
> file layout - at least that is what I am seeing while trying to
> reproduce the issue. I see "FAILED" remarks for the migration itself and
> then calendar and contact factories are unhappy about "e_source_get_uri
> () called on source with no absolute URI!" - see below.
> It seems related to https://bugzilla.gnome.org/show_bug.cgi?id=638080

FAILED messages during file migration is normal, believe it or not.

The file migration is distributed across three different processes:
evolution, e-addressbook-factory and e-calendar-factory.  Each process
migrates the files its responsible for at startup.  But since we can't
predict in which order the processes will run, all three of them try to
remove old directories after running their own migration routines.  Only
the last process to run is expected to successfully remove directories.

The migration routines are triggered by the existence of ~/.evolution.
They also refuse to overwrite files and directories which are already in
the new locations.  So if the migration leaves unexpected files behind
in ~/.evolution, or if ~/.evolution gets recreated somehow (such as by
running an older Evolution release), you will also see FAILED messages
on subsequent migration attempts.  In this scenario the remaining files
in ~/.evolution have to be cleaned up by hand.

The URI messages are likely related to the fact that the URI scheme for
local data sources changed in 2.32 to make the file migration possible.
It went from something like:


to simply:


This change had to be accounted for in many places throughout Evolution
and E-D-S and I think we missed a few in the initial 2.32 release (Milan
Crha, I believe, fixed the remaining issues in 2.32.2).

Another nasty side-effect of this change which I failed to realize until
we shipped 2.32 was that it broke the D-Bus interfaces in a subtle way.
If the address book and calendar D-Bus services are running code from
2.32, they won't understand what a "file:" data source URI is.  But if
they're running code from 2.30 or earlier, they won't understand what a
"local:" data source URI is.

Unfortunately it's common for the Evolution and backend process versions
to get mismatched by upgrading and restarting Evolution while the older
backend processes are still running.  Because of this issue we have now
added version numbers to our D-Bus bus names to prevent similar problems
the next time we have to break the D-Bus interface.  In 2.32, however,
the damage has to be cleaned up by hand.

Shut down evolution, e-addressbook-factory and e-calendar-factory.  Then
open Applications -> System Tools -> Configuration Editor and check the
following GConf keys for multiple entries with name="On This Computer".


Unfortunately these keys are stuffed with XML blobs which are difficult
to read in Configuration Editor, but if you scroll to the right a bit
you should be able to spot the "On This Computer" entries.  Following
the "name" attribute there should be a "base_uri" attribute with a URI
scheme of either "file:" or "local:".  Delete all the "On This Computer"
entries with a base_uri="file://..." attribute.

Hope this helps,
Matthew Barnes

evolution-hackers mailing list
To change your list options or unsubscribe, visit ...

Reply via email to