Adium

Ticket #9122 (closed defect: fixed)

Opened 7 months ago

Last modified 4 months ago

addressbook image is copied/overwriten every time which causes troubles with syncservices

Reported by: david Assigned to: evands
Priority: normal Milestone: Adium X 1.3
Component: Adium Core Version: 1.2.1
Severity: normal Keywords: addressbook, image, photo, syncservices, sync, services, the truth, truth
Cc: Patch: None
Pending: 0

Description

Adiums Addressbook Settings are configured like so:
[x] Use Addressbook Images as contact symbols
[ ] Even if the contact already has a symbol
[x] Overwrite Addressbook Image with contact symbol
(probably the wording is a bit different in the en locale)
test system is running 10.5.1

The problem is, that adium overwrites the addressbook image every time the contact signs on. so even if the image didn't change, sync services marks the contact as changed in the truth database.

So every application working with contacts and syncservices will get a notification "contact x" has changed.
this leads to massive cpu load and even obsolete traffic in some situations.

in order to solve this issue adium should do something like
(pseudocode)
if contactsymbol not equal to addressbookimage : overwrite
else : do nothing

this would heavily reduce load on the truth database and thus heavily reduce load on third party applications using sync services.

Change History

02/11/2008 01:20:43 PM changed by xmpp-nerd

confirmed. same issue here.

02/23/2008 11:11:56 AM changed by jas8522

  • owner changed from nobody to evands.
  • milestone set to Adium X 1.3.

Evan: any chance your existing contact image changes have solved this? Would it be an easy addition to your new code? Setting to 1.3 for now to attempt to coincide this bug fix with your existing changes.

02/23/2008 11:56:19 AM changed by evands

It might be partially mitigated, but it might be unchanged and certainly isn't fixed.

It shouldn't be too tough to do a lookup and perform a comparison of the TIFF representations of the images. It remains to be seen if the performance penalty within Adium is worth the savings for performance of other apps using Sync Services.

02/24/2008 05:09:23 AM changed by david

Good someone took notice of this ticket :-) as of 1.2.2 its not solved. just checked it. the perfomance issues are really serious on systems, where sync services are heavily used (or better said.. where applications are used, which heavily rely on sync services). because: everytime a contact signs on, adium updates the truth database, the truth database notifies every sync services application... every sync services application uploads the changes into its own client database... or even worse uploads it remotely into a server database.

do you also use syncservices for updating the images? using sync services this issue shouldn't arise, since sync services *should* only update the truth if there are really changes.

02/24/2008 07:32:20 AM changed by evands

Adium uses the Address Book API (-[ABPerson setImage:]), which apparently does no such checking.

02/24/2008 08:21:34 PM changed by david

ah ok. probably using ABPerson setImage with a "has changed?" check is a hack that would work nicely. using syncservices instead, would be a nice solution, but probably much more work - at least initially. in the long view using syncservices would open new possibilities for adium... #9050 could also benefit from a sync services solution.

02/24/2008 09:59:18 PM changed by evands

  • status changed from new to closed.
  • resolution set to fixed.

(In [22680]) Only set the Address Book image when overriding AB images with Adium-specified images if there has been a change. Fixes #9122

03/31/2008 04:25:51 AM changed by xmpp-nerd

works fine. could you please backport to release version? 1.2.5 or even better 1.2.4.1 ? ;)

04/29/2008 06:29:46 AM changed by xmpp-nerd

has this been fixed in 1.2.5 ?