Adium

Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#9122 closed defect (fixed)

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

Reported by: david Owned by: evands
Milestone: Adium 1.3 Component: Adium Core
Version: Severity: normal
Keywords: addressbook, image, photo, syncservices, sync, services, the truth, truth Cc:
Patch Status:

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 (9)

comment:1 Changed 12 years ago by xmpp-nerd

confirmed. same issue here.

comment:2 Changed 12 years ago by Jordan

Milestone: Adium X 1.3
Owner: changed from nobody to Evan Schoenberg

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.

comment:3 Changed 12 years ago by Evan Schoenberg

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.

comment:4 Changed 12 years ago 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.

comment:5 Changed 12 years ago by Evan Schoenberg

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

comment:6 Changed 12 years ago 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.

comment:7 Changed 12 years ago by Evan Schoenberg

Resolution: fixed
Status: newclosed

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

comment:8 Changed 12 years ago by xmpp-nerd

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

comment:9 Changed 12 years ago by xmpp-nerd

has this been fixed in 1.2.5 ?

Note: See TracTickets for help on using tickets.