View Issue Details

IDProjectCategoryView StatusLast Update
0007609Talerwallet-corepublic2023-02-21 15:39
ReporterFlorian Dold Assigned Tosebasjm Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Target Version0.9.2Fixed in Version0.9.2 
Summary0007609: document how DB migration and schema changes work
DescriptionCurrently that info is only there in the code.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

sebasjm

2023-01-31 21:01

developer   ~0019726

document here:
https://git.taler.net/docs.git/tree/design-documents/034-wallet-db-migration.rst

Right now a migration can fail for multiple reasons, like a new field or a problem in the fixup. If that happen the wallet can't be used.
We can have a "recovery mode" that will try to restore stores individually in order to save what it can from an old database.
For example:

 * backup providers (host and keys)
 * coins
 * exchange urls and pub key
 * auditors urls and pub key
 * transactions

It may end in data loss, but luckily not in money loss.

This may be useful for situations someone need to use the wallet and can wait for a fix to be deliver.

Also, maybe we want to clarify what happen to ongoing process when the wallet is upgrading:
 * if there is an withdrawal operation in progress and the wallet is restarted with an upgrade, how can we guarantee that no upgrade will make them fail and loss money?
 * if we can't, should make the wallet upgrade non-automatic and tell the user "click here to upgrade, is not recommended to upgrade if you have ongoing transfer in progress"

Florian Dold

2023-02-11 13:40

manager   ~0019802

I think having a "recovery mode" is something that could be useful. I've filed a separate issue for this recovery mode: 0007677

Also, ongoing withdrawal operations should never be affected badly by a DB upgrade, unless we screw up really badly. So there should never be the need to ask the user before an upgrade. We'd be better off just storing a copy of the database when doing a major upgrade, but the design we've documented already requires this.

Issue History

Date ModifiedUsernameFieldChange
2023-01-27 11:31Florian DoldNew Issue
2023-01-27 11:31Florian DoldStatusnew => assigned
2023-01-27 11:31Florian DoldAssigned To => Florian Dold
2023-01-31 21:01sebasjmNote Added: 0019726
2023-02-11 13:40Florian DoldAssigned ToFlorian Dold => sebasjm
2023-02-11 13:40Florian DoldStatusassigned => feedback
2023-02-11 13:40Florian DoldNote Added: 0019802
2023-02-13 20:26sebasjmStatusfeedback => informing
2023-02-13 20:26sebasjmResolutionopen => fixed
2023-02-21 15:39Christian GrothoffFixed in Version => 0.9.2
2023-02-21 15:39Christian GrothoffStatusinforming => closed
2023-04-13 18:36Florian DoldCategorywallet (TS core) => wallet-core