Page MenuHomePhabricator

SceneIORewrite: Asynchronous Serialization
Closed, WontfixPublic

Description

Description:
Processing a serialization request in a background-thread, allowing the application to continue

Use-Case:
When using serialization to continuously / regularly store the current state of data (“snapshot”), serialization should interfere with the main application to a minimum extent.

Implementation:
There are two challenges here: 1 modifications of the DataStorage being serialized and 2. Error handling

  1. Since most objects are ridiculously small (Properties!), they could be cloned nearly instantaneously. For the rest, we’d need read-locks or copy-on-write or something.
  2. There is not much error handling possible in any case. Good reporting is all we can do. This can be asynchronous.

Question:
Make an effort vs reward vs risk analysis. Does the added instability/complexity justify the result and effort?

Related Objects

StatusAssignedTask
Wontfixmaerz
WontfixNone

Event Timeline

Here's a discussion that we had with Miklos Espak some time ago regarding the auto-saving and what problems might arise when implementing it. I think it's meaningful to revisit this before going to implementation.

https://www.mail-archive.com/mitk-users@lists.sourceforge.net/msg05249.html

I'd say the takeway message from the discussion is as simple as "it needs testing and measuring on real applications". In my case, the auto-save feature has become a lot less important once I implemented the incremental saving - when saving a scene goes down from 2 minutes to 10-15 seconds, the users are way more likely to save their scene more often and thus auto-saving as a crash-recovery mechanism is less vital.

Incremental and automatic/completely async saving go hand-in-hand IMO - the fewer the amount of information is - the less likely is the background saving to interrupt the user.

kislinsk triaged this task as Wishlist priority.Aug 10 2016, 4:28 AM
kislinsk claimed this task.
kislinsk added a project: Auto-closed.
kislinsk added a subscriber: kislinsk.

Hi there! 🙂

This task was auto-closed according to our Task Lifecycle Management.
Please follow this link for more information and don't forget that you are encouraged to reasonable re-open tasks to revive them. 🚑

Best wishes,
The MITK devs

kislinsk removed kislinsk as the assignee of this task.May 26 2020, 12:05 PM
kislinsk removed a subscriber: kislinsk.