bepaald / signalbackup-tools

Tool to work with Signal Backup files.
GNU General Public License v3.0
755 stars 36 forks source link

possible issue with repacked android backup involving stories #223

Closed Meteor0id closed 2 months ago

Meteor0id commented 2 months ago

So I checked to see if I can repack an Android backup, crop threads to get rid of old data (Signal keeps a whole lot of old contacts in its data and never clears those out). When importing the new backupfile it crashes Signal with org.thoughtcrime.securesms.storage.StoryDistributionListRecordProcessor$MyStoryDoesNotExistException. Not usre if this is a tool issue or a Signal issue but thought I would share this here since you might know.

Meteor0id commented 2 months ago

Lol I just noticed your commit 3 hours ago. Damn you are quick. Will check if that addressed it.

Meteor0id commented 2 months ago

nope, Signal now rejects the resulting repacked backup. Seems it needs another tweak. Anything info you need for this?

Meteor0id commented 2 months ago
Vacuuming database
[Warning]: Foreign key constraint violated.
-----------------------------------------------
| table                    | parent    | fkid |
-----------------------------------------------
| distribution_list_member | recipient | 0    |
-----------------------------------------------
bepaald commented 2 months ago

Not usre if this is a tool issue or a Signal issue but thought I would share this here since you might know.

If you get any problems with a backup after messing with it with this program, you should definitely open a bug report here before opening one at Signal.

Lol I just noticed your commit 3 hours ago. Damn you are quick. Will check if that addressed it.

I'm so quick I traveled through time! :-)

nope, Signal now rejects the resulting repacked backup. Seems it needs another tweak. Anything info you need for this?

I've had quite a few problems trying to deal with stories in the cropping/merging features. It's a complicated web of interdependencies plus some special cases where a normally cropped out story needs to be kept (along with all its references in (at least) 4 other tables), because it is hardcoded to exist in Signal ('MY STORY').

From the foreign key constraint violation, I came up with a case that may have caused this problem. I've had another go at it last night, let me know if that fixes things. If it does not I might need more info indeed, but even just figuring out exactly what info I'd need is a difficult problem.

So I checked to see if I can repack an Android backup, crop threads to get rid of old data (Signal keeps a whole lot of old contacts in its data and never clears those out).

If it works now, I'm curious to hear if this has the desired effect (you can check a little before restoring the backup by using --listrecipients).

Thanks!

Meteor0id commented 2 months ago

I have tested it and it works exactly as expected and desired now. I've cleared up a ridiculous number of old 'contacts' and chats which Signal was keeping in the database. My new backupfile is now about 30MB the original was almost 145MB. I can't comprehend why the Signal Devs haven't made work of deleting old data yet.

Thanks for again a crazy fast fix.

Are you also satisfied or are there any open ends?

bepaald commented 2 months ago

I've cleared up a ridiculous number of old 'contacts' and chats which Signal was keeping in the database. My new backupfile is now about 30MB the original was almost 145MB. I can't comprehend why the Signal Devs haven't made work of deleting old data yet.

Surely Signal does allow you to delete the chats doesn't it? And I assume that would be the bulk of the file size? Removing the actual contacts is a difficult undertaking as I've stated before (and this very issue is just one example of that). But indeed, the removal of unneeded contacts is a side effect of the cropping operation so I guess this program now has that option as well :-)

Are you also satisfied or are there any open ends?

Definitely happy that the story-issues appear to be solved now. So I'm good if you are. Thanks!