stable on-disk format #1132
Comments
/cc @philips : do you have an idea already how to proceed with this? |
I think it's critical for images/CAS to be really stable. Stability of prepared and exited containers is desirable but it also needs to have the flexibility to evolve. If I upgrade rkt, I'd hate to have to purge all my downloaded images but re-running prepare is not bad. However The situation with GC is more complex. If I upgrade rkt, I still need to be able to GC old exited pods. When GC was just |
Good point about the CAS. Should we introduce a format version for things like At the moment, GC belongs to stage1. And we will have a stage1 based on lkvm soon. So we might have some pods started with the traditional stage1 and some pods started with the lkvm stage1. When using What should we do with valid images according to an old appc/spec but now invalid due to the spec change? See #1140. |
We already have a database schema migration (#706) and we used it successfully for #1181 (thanks @sgotti!). So to ensure stability for the CAS we need to make sure we don't remove any of the other directories ( For garbage-collecting older pods, we need to be careful and have the right fallbacks. For example, we try to unmount the overlay fs but if it's already unmounted we continue the process. For things like #1140 (failed parsing because of a spec update) we discussed having a permissive Pod/Image manifest parser that we'd call if the normal parser fails. In this way, we can get enough infomation to give a good error message ("appName", "podUUID", "acVersion"...). This parser should probably live in appc/spec. |
@iaguis, @alban - a last-ditch parser to review for you - appc/spec#476 |
Documentation was added via #1271. The rest is pending on appc/spec. Moving to next milestone. |
It seems the only remaining task is #1471 (last-ditch manifest parser). |
#1471 landed so I think we can tentatively call this closed. Is the doc up to date? |
Yes, I don't think it changed recently. The documentation is in on-disk-format.md. Closing. |
When users create pods with rkt version n, the next version n+1 must be able to run them.
I don't know if we need to implement anything for this. Can you think of anything we miss for that?
add tests to check that a pod created on a previous version can be started. A functional test could download rkt-v0.7.0.tar.gz from internet and prepare the pod withrkt-0.7.0 prepare ...
. Then, it would run it withrkt-current run-prepared ...
The text was updated successfully, but these errors were encountered: