Bug 310741 - Akonadi-google contacts stays in "syncing folder 'Other Contacts'(0%)"
Summary: Akonadi-google contacts stays in "syncing folder 'Other Contacts'(0%)"
Status: RESOLVED FIXED
Alias: None
Product: Akonadi
Classification: Frameworks and Libraries
Component: Google Resource (show other bugs)
Version: 4.10
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Daniel Vrátil
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-26 23:35 UTC by Nico Kruber
Modified: 2013-02-28 12:53 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 4.11


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nico Kruber 2012-11-26 23:35:38 UTC
similar to BKO#292257, I have 
* a kio_http which constantly uses 10% CPU resource (of my already slow netbook):
kdeinit4: kio_http [kdeinit] https local:/tmp/ksocket-nico/kla
* google contacts resource in akonadiconsole shows: Syncing folder 'Other Contacts'(0%)
* also, akonadi seems to forget the authorisation token since it asks me almost every time

Reproducible: Always

Steps to Reproduce:
I cannot tell how to reproduce - this only happens on one of my 3 almost identical PC setups (except for hardware)...



task list of the google resource from akonadiconsole:
----------
ResourceScheduler: Online
 current task: 4 SyncCollection collection 112 
 queue 0 is empty
 queue 1 is empty
 queue 2 is empty
 queue 3 is empty
 queue 4 2 tasks:
  5 SyncCollection collection 110 
  6 SyncAllDone 
----------
Comment 1 Nico Kruber 2012-11-26 23:36:17 UTC
please also note that this has been happening at least since 4.9.0 - possibly 4.8.*
Comment 2 Daniel Vrátil 2012-11-27 00:36:18 UTC
First make sure you are using libkgapi 0.4.3 (latest version). Then start kdebugdialog and enable all akonadi_googlecontacts_resource_* checkboxes and all kio* checkboxes.

From console, restart Akonadi (akonadictl restart) - you should now see a quite verbose debug output of the KIO slaves communicating with Google servers (and lot of other debug output from Akonadi and other resources - you can try redirecting output from Akonadi to a file, then grep it for googlecontacts). Anyway, try to look for any warnings/errors or whatever might seem suspicious.

(If you post any output, make sure no sensitive data are present in the logs)

And one more thing - how many contacts approximately do you have in the Google addressbook?
Comment 3 Nico Kruber 2012-11-28 00:55:57 UTC
(In reply to comment #2)
> First make sure you are using libkgapi 0.4.3 (latest version).

yes, this is the version I have

> Then start
> kdebugdialog and enable all akonadi_googlecontacts_resource_* checkboxes and
> all kio* checkboxes.
> [...]
> Anyway, try to look for any warnings/errors or whatever
> might seem suspicious.

the following messages from googlecalendar keep repeating over and over again
---------------------
akonadi_googlecalendar_resource_0(2777) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_googlecalendar_resource_0(2777) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_imap_resource_4(2782)/kdepimlibs (kimap) RetrieveItemsTask::onFinalSelectDone: All fine, asking for all message flags looking for changes
akonadi_googlecalendar_resource_0(2777)/kio (KIOJob) KIO::TransferJob::slotFinished: KUrl("https://www.googleapis.com/tasks/v1/users/@me/lists")
akonadi_googlecalendar_resource_0(2777)/kio (Scheduler) KIO::SchedulerPrivate::jobFinished: KIO::TransferJob(0x9f3ed48) KIO::Slave(0x9f30f28)
akonadi_googlecalendar_resource_0(2777)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::SimpleJob(0x9f9adc8)
akonadi_googlecalendar_resource_0(2777)/kio (KIOJob) KIO::TransferJob::slotFinished: KUrl("https://accounts.google.com/o/oauth2/token")
akonadi_googlecalendar_resource_0(2777)/kio (Scheduler) KIO::SchedulerPrivate::jobFinished: KIO::TransferJob(0x9f9adc8) KIO::Slave(0x9f8cea8)
akonadi_googlecalendar_resource_0(2777) KGAPI::AccessManagerPrivate::submitCache: Cache contains 0 requests
akonadi_googlecalendar_resource_0(2777) KGAPI::AccessManagerPrivate::submitCache: Cache contains 1 requests
akonadi_googlecalendar_resource_0(2777) KGAPI::AccessManagerPrivate::nam_sendRequest: Sending request to   QUrl( "https://www.googleapis.com/tasks/v1/users/@me/lists" )
akonadi_googlecalendar_resource_0(2777)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::SimpleJob(0x9f82cc0)
akonadi_googlecalendar_resource_0(2777) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_googlecalendar_resource_0(2777) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
---------------------

at some point I get the authorisation dialogue for googlecontacts and the following similar messages appear:

---------------------
akonadi_googlecontacts_resource_4(3170) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_googlecontacts_resource_4(3170) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_googlecontacts_resource_4(3170)/kio (KIOJob) KIO::TransferJob::slotFinished: KUrl("https://www.google.com/m8/feeds/contacts/nico.kruber@gmail.com/full?alt=json&showdeleted=true&updated-min=2012-10-13T21:15:16Z")
akonadi_googlecontacts_resource_4(3170)/kio (Scheduler) KIO::SchedulerPrivate::jobFinished: KIO::TransferJob(0x9e69148) KIO::Slave(0x9d3ccc0)
akonadi_googlecontacts_resource_4(3170)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::SimpleJob(0x9e41ef8)
akonadi_googlecontacts_resource_4(3170)/kio (KIOJob) KIO::TransferJob::slotFinished: KUrl("https://accounts.google.com/o/oauth2/token")
akonadi_googlecontacts_resource_4(3170)/kio (Scheduler) KIO::SchedulerPrivate::jobFinished: KIO::TransferJob(0x9e41ef8) KIO::Slave(0x9d3ccc0)
akonadi_googlecontacts_resource_4(3170) KGAPI::AccessManagerPrivate::submitCache: Cache contains 0 requests
akonadi_googlecontacts_resource_4(3170) KGAPI::AccessManagerPrivate::submitCache: Cache contains 1 requests
akonadi_googlecontacts_resource_4(3170) KGAPI::AccessManagerPrivate::nam_sendRequest: Sending request to   QUrl( "https://www.google.com/m8/feeds/contacts/nico.kruber@gmail.com/full?alt=json&showdeleted=true&updated-min=2012-10-13T21:15:16Z" )
akonadi_googlecontacts_resource_4(3170)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO::SimpleJob(0x9e9b178)
akonadi_googlecontacts_resource_4(3170) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
akonadi_googlecontacts_resource_4(3170) KGAPI::AuthPrivate::kwalletFolderChanged: KWallet folder "Akonadi Google" changed, checking if any of 1 cached accounts needs updating
---------------------

> And one more thing - how many contacts approximately do you have in the
> Google addressbook?

not many - approximately around 100

on a related note, I still have the old akonadi_googledata_resource0 in the list of resources I can browse through in akonadiconsole - I don't know how to get rid of this as it is not available as in the agents tab anymore (I guess I should have deleted it before upgrading to the new google resources)
-> may this be the cause?!
Comment 4 Daniel Vrátil 2012-12-05 13:31:41 UTC
(In reply to comment #3)
>....
> on a related note, I still have the old akonadi_googledata_resource0 in the
> list of resources I can browse through in akonadiconsole - I don't know how
> to get rid of this as it is not available as in the agents tab anymore (I
> guess I should have deleted it before upgrading to the new google resources)
> -> may this be the cause?!

Hard to say, but let's try to get rid of it first. If you are 100% you don't have the old googledata binary available anymore, use the steps I described here [0]. After that go to ~/.kde/share/config and delete any akonadi_googledata_*rc files (forgot to mention that in the forum post).
Also please remove all the new  Google  resources (both Calendar and Contacts), open KWallet manager and delete the "Akonadi Google" folder (this deletes the auth tokens). Restart Akonadi (akonadictl restart) and add and configure the Google resources again. Let me know if it still misbehaves. 

[0] http://forum.kde.org/viewtopic.php?f=215&t=106850#p247707
Comment 5 Nico Kruber 2012-12-06 08:36:46 UTC
this seems to have fixed the high CPU usage - at least the two times I have logged into my session this has not happened any more. I'll observe further...
Comment 6 Nico Kruber 2013-01-29 08:46:13 UTC
(In reply to comment #4)
> Also please remove all the new  Google  resources (both Calendar and
> Contacts), open KWallet manager and delete the "Akonadi Google" folder (this
> deletes the auth tokens). Restart Akonadi (akonadictl restart) and add and
> configure the Google resources again. Let me know if it still misbehaves. 

I guess this fixed it last time but the problem seems back again - same PC (netbook), now with KDE 4.10 RC2. I don't know what caused this but maybe it is one of the crashes during logout that happen occasionally and break something?
Anyway, I'd like to find the reason so that this gets fixed once and for all.

I'll try cleaning up kwallet and see what happens after that. Also I can generate debug info like last time again. If you have any other ideas, please let me know.
Comment 7 Nico Kruber 2013-02-12 22:50:20 UTC
deleting the kwallet entries did not solve this
now I'm being asked for the password but this dialogue keeps popping up over and over again. Login succeeds, and I authorize it and the "getting authorization token" appears, immediately followed by the password dialogue (I tried it up to 5 times in a row)

sometimes, up to 3 different login dialogues (according to requested information) appear:
1) calendar
2) contacts
3) contacts+calendar+tasks

I'll run it with debug enabled (as mentioned above) as soon as possible...
Comment 8 Nico Kruber 2013-02-12 22:52:54 UTC
I guess, there is something wrong with the scope in the kwallet info - now, it is set to ",https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/tasks" (note the comma at the beginning)
also it should contain the contact scope, I'd guess
Comment 9 Daniel Vrátil 2013-02-28 12:53:13 UTC
Git commit dc1d1e496990b7b65fb422f71bfe82ac751a93e4 by Dan Vrátil.
Committed on 28/02/2013 at 13:19.
Pushed by dvratil into branch 'master'.

Port Akonadi resources for Google services to LibKGAPI2

Resources now use the new job-based API, which is more
flexible and solves many problems that were very hard
to fix with the previous API.

Lot of duplicated code has been factored out and moved
to /resources/google/common.

Featurewise, Google Contacts resources now fully supports
contacts groups and fetching contacts photos has been
notably improved, Google Calendar resource has improved
tasks handling and both resources have better status and
progress reporting and should be faster and more stable.
Related: bug 301647, bug 309320, bug 313368, bug 281695, bug 294639

FIXED-IN: 4.11

DIGEST:

M  +1    -1    CMakeLists.txt
M  +1    -1    resources/google/CMakeLists.txt
M  +5    -10   resources/google/calendar/CMakeLists.txt
D  +0    -102  resources/google/calendar/calendareditor.cpp
D  +0    -55   resources/google/calendar/calendareditor.h
M  +616  -519  resources/google/calendar/calendarresource.cpp
M  +35   -78   resources/google/calendar/calendarresource.h
M  +57   -50   resources/google/calendar/defaultreminderattribute.cpp
M  +17   -20   resources/google/calendar/defaultreminderattribute.h
D  +0    -298  resources/google/calendar/resource_events.cpp
M  +0    -166  resources/google/calendar/resource_tasks.cpp
M  +2    -22   resources/google/calendar/settings.cpp
M  +3    -23   resources/google/calendar/settings.h
M  +128  -731  resources/google/calendar/settingsdialog.cpp
M  +18   -51   resources/google/calendar/settingsdialog.h
D  +0    -52   resources/google/calendar/tasklisteditor.cpp
D  +0    -49   resources/google/calendar/tasklisteditor.h
D  +0    -128  resources/google/calendar/ui/calendar_editor.ui
D  +0    -204  resources/google/calendar/ui/settingsdialog.ui
D  +0    -85   resources/google/calendar/ui/tasklist_editor.ui
A  +244  -0    resources/google/common/googleaccountmanager.cpp     [License: GPL (v2+)]
A  +67   -0    resources/google/common/googleaccountmanager.h     [License: GPL (v2+)]
A  +275  -0    resources/google/common/googleresource.cpp     [License: GPL (v3+)]
A  +109  -0    resources/google/common/googleresource.h     [License: GPL (v3+)]
A  +55   -0    resources/google/common/googlesettings.cpp     [License: GPL (v3+)]
A  +58   -0    resources/google/common/googlesettings.h     [License: GPL (v3+)]
A  +213  -0    resources/google/common/googlesettingsdialog.cpp     [License: GPL (v3+)]
A  +77   -0    resources/google/common/googlesettingsdialog.h     [License: GPL (v3+)]
M  +4    -2    resources/google/contacts/CMakeLists.txt
M  +373  -593  resources/google/contacts/contactsresource.cpp
M  +31   -69   resources/google/contacts/contactsresource.h
M  +3    -24   resources/google/contacts/settings.cpp
M  +3    -23   resources/google/contacts/settings.h
M  +19   -128  resources/google/contacts/settingsdialog.cpp
M  +5    -23   resources/google/contacts/settingsdialog.h
D  +0    -38   resources/google/contacts/ui/groupeditor.ui
D  +0    -61   resources/google/contacts/ui/settingsdialog.ui

http://commits.kde.org/kdepim-runtime/dc1d1e496990b7b65fb422f71bfe82ac751a93e4