diff options
author | Jasper Ras <jras@hostnet.nl> | 2025-03-20 11:07:49 +0100 |
---|---|---|
committer | Jasper Ras <jras@hostnet.nl> | 2025-03-20 11:07:49 +0100 |
commit | 80ccf68f55dbb70d7e5ed52ee95b3c9d1b6ce264 (patch) | |
tree | 93e28e85ab70052aa6f577998ec7dc1f413b40c0 /4 Archives/Resumable backup tasks | |
parent | 9642cd7ae24f0ba79ce5647c709b35ae8f06a285 (diff) |
vault backup: 2025-03-20 11:07:48
Diffstat (limited to '4 Archives/Resumable backup tasks')
4 files changed, 97 insertions, 0 deletions
diff --git a/4 Archives/Resumable backup tasks/Implementatie.md b/4 Archives/Resumable backup tasks/Implementatie.md new file mode 100644 index 0000000..d4fe6ef --- /dev/null +++ b/4 Archives/Resumable backup tasks/Implementatie.md @@ -0,0 +1,4 @@ +Agent maakt state dir aan per task; schrijf context.json weg met daarin all params benodigd om de handler aan te roepen om te replayen. Als taak afgekapt word blijft context bestaan; tijdens start van goba zoeken naar alle context.json en gebruik om handlers aan te roepen en de task te herstarten. +Iets wat nog gefixed moet worden is dat het de files in staging area achterlaat als VM bijv gemigreerd is; de task failed buiten taskflow om en reverts draaien dus niet. Ipv staging area opzetten en destroyen in taskflow; context dir gebruiken die via contextmanager opgeruimd word. + +De backup service failed handler aangepast om de task state naar new te zetten ipv failed; kan nu in oneindige loop raken.
\ No newline at end of file diff --git a/4 Archives/Resumable backup tasks/Prototype resumable task.md b/4 Archives/Resumable backup tasks/Prototype resumable task.md new file mode 100644 index 0000000..d9fc2ed --- /dev/null +++ b/4 Archives/Resumable backup tasks/Prototype resumable task.md @@ -0,0 +1,64 @@ +--- +tags: + - taskflow + - "#openstack" +references: + - https://github.com/openstack/taskflow/blob/master/taskflow/examples/resume_from_backend.py +--- +```python +import time +import contextlib + +from taskflow.patterns import linear_flow as lf +from taskflow import task, engines +from taskflow.persistence import backends, models +from taskflow.exceptions import NotFound + + +class PrintAndWait(task.Task): + def execute(self, *args, **kwargs): + print(self.name) + time.sleep(10) + return self.name + + +def logbook_and_flow_detail(backend, id): + conn = backend.get_connection() + + try: + logbook = conn.get_logbook(id) + flow_detail = logbook.find(id) + except NotFound: + logbook = models.LogBook("printer_log", uuid=id) + flow_detail = models.FlowDetail("cool flow", uuid=id) + logbook.add(flow_detail) + + with contextlib.closing(backend.get_connection()) as conn: + conn.upgrade() + conn.save_logbook(logbook) + + return logbook, flow_detail + + +def create_flow(): + main_flow = lf.Flow("main_flow") + + for i in range(10): + main_flow.add(PrintAndWait(name=f"print_n_wait_{i}")) + + return main_flow + + +def main(): + backend = backends.fetch(conf=dict(connection="sqlite:///test.db")) + logbook, flow_detail = logbook_and_flow_detail(backend, "1") + + flow = create_flow() + eng = engines.load(flow, flow_detail=flow_detail, backend=backend, book=logbook) + + eng.run() + + +if __name__ == "__main__": + main() +```
\ No newline at end of file diff --git a/4 Archives/Resumable backup tasks/Reminders.md b/4 Archives/Resumable backup tasks/Reminders.md new file mode 100644 index 0000000..45626e7 --- /dev/null +++ b/4 Archives/Resumable backup tasks/Reminders.md @@ -0,0 +1,6 @@ +--- +tags: + - resumable-tasks + - groupvps +--- +Restore & backup directories in var/lib/goba are to prevent collissions (bc we upload all files in dir when uploading backup).
\ No newline at end of file diff --git a/4 Archives/Resumable backup tasks/Resumable tasks maandag.md b/4 Archives/Resumable backup tasks/Resumable tasks maandag.md new file mode 100644 index 0000000..df42b92 --- /dev/null +++ b/4 Archives/Resumable backup tasks/Resumable tasks maandag.md @@ -0,0 +1,23 @@ +--- +tags: + - gobs + - resumable-tasks +--- +Alle params tasks/atoms zijn nu primitives, connections e.d via constructor. Tasks kunnen nu resumed worden. + +Interrupt handler: +- Signal handler installeren die op sigterm luisteren +j wh +- Hoe te resumen + - combinatie van onderstaande: vm kan gemigreerd zijn. + - Tasks failen + - gobs retried niet + - uitzonderingen nodig: wat als server deleted word tijdens task + - + - State dumpen naar file + - Alle state nodig om task weer te kunnen resumen + - Lastig te serializen? + +Start -> check if vm exists? nee -> fail + +Uiteindelijk
\ No newline at end of file |