| Age | Commit message (Collapse) | Author |
|
This also increases precision of state time output.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
In some cases the signal might be delivered before the signal handler is installed, and synchronising against such a case is too expensive. Instead, use the pipe being closed as a fallback to the regular exit request. This change also moves installation of the signal handler early.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This change also spawns shim before committing system state, leaving it blocking on the setup pipe. The internal/outcome/process structure is also entirely reworked to be much more readable and less error-prone, while enabling basic performance measurements. A long-standing bug where segment lock is not held during Commit is also resolved.
Closes #19.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is useful for reordering these operations for further cleanup.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is no longer exported. Such a check is pointless.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This increases flexibility of how caller wants to handle the I/O. Also makes it no longer rely on finalizer.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The handle is otherwise inaccessible without the compat interface. This change also moves compatibility methods to separate adapter structs to avoid inadvertently using them.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This exposes store operations safe for direct access, and enables #19 to be implemented in internal/outcome.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The new store implementation will be exported as Store.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This reduces collision with local variable names, and generally makes sense for the new store package, since it no longer specifies the state struct.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This took significant effort to stub out, and achieves full coverage after c5aefe5e9d.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This makes it possible to instrument output behaviour through stub.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The magic numbers hurt readability.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The shim does not suspend output to begin with. These are leftovers from when container startup code suspends output.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is unreachable, but keeping it here as a failsafe until more test cases are added.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is less ambiguous, and more accurately describes the purpose of the package.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This package is much cleaner to stub independently, and makes no sense to lump into app.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
These are free of the dispatcher from internal/app. This change relocates them into their own package.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This fully exposes the store internals for #19 and are final preparations for removing the legacy store interface.
This change also fixes a potential deadlock in the handle initialisation mkdir failure path. This however is never reachable in hakurei as the store is never accessed concurrently.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This replaces the Store interface with something better reflecting the underlying data format for #19. An implementation of Store is provided on top of the new code to ease transition.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is less error-prone and fits better into internal/app which already uses check.Absolute for all pathnames.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This avoids getting into an inconsistent state for simultaneous calls to List and Do on a previously unknown identity.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
Some internal/app/state types were relocated to hst as part of the API. This change updates doc comments referring to them.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This eventually gets relocated to internal/app.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is the initial step of implementing #19.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is a pretty solid implementation backed by robust tests, with a much cleaner interface.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This references the underlying multiBackend due to a typo, making the whole dance with c a noop.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is useful in some tests.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This header improves the robustness of the format and significantly reduces cleanup overhead.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The upper half is now a nanosecond timestamp. Lower half is still random bytes, so use lower half for short identifier.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This makes the resulting json easier to parse since it can now be deserialised into the config struct.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This can receive signals, so is more useful to the caller.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is now part of the hst API. This change also improves identifier generation and serialisation.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
Init is not very talkative after process start even when verbose. Suspending output here is pointless and does more harm than good.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The SIGTERM signal is delivered in many other cases and can lead to strange behaviour. The unconditional resume of the logger also causes strange behaviour in the cancellation forwarding path. This change also passes through additional signals.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This does not yet have full coverage. Test cases covering failsafe paths and error injection will be added eventually.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This helps with other areas of the test suite as they're all based on hst.Template. This also helps contributors understand the behaviour of internal/app as hst.Template covers almost every aspect of it.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is quite a simple piece of code, this many test cases is excessive and wastes time in the integration vm.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This improves readability on narrower displays.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This enables instrumented testing of the shim.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is useful as package "syscall" does not provide such a wrapper. This change also improves error handling to fully conform to the manpage.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
Goroutine scheduling is not helpful in the setuid wrapper, it is not particularly harmful but lock here anyway.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This covers invalid call to Init.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This package will also hold syscall lookup tables for seccomp.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is useful for a user-facing representation other than JSON. This also gets rid of the ugly, outdated flags string builder in cmd/hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
The hst package only deals with data serialisation, however since many parts of hakurei make use of C libraries in some way it can be easy to inadvertently depend on cgo.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This is cleaner than relying on the finalizer.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
Updated according to evaluation warning.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
This change handles errors returned by encoding/json and prints significantly cleaner messages.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|
|
These bits are arch-specific.
Signed-off-by: Ophestra <cat@gensokyo.uk>
|