This was a pretty simple change, so to make things concrete I have PRs with
a prototype of the enabling change in the invoker [1] and a change to the
nodejs runtime to emit the start sentinels [2].

If we go ahead with this design, here's an example from an action that
writes one line to stdout and no lines to stderr:


stdout stream:
XXX_THE_START_OF_A_WHISK_ACTIVATION_XXX with id
cafca5b74be94eb8bca5b74be9beb80f for namespace guest
Here's a friendly message
XXX_THE_END_OF_A_WHISK_ACTIVATION_XXX


stderr stream:
XXX_THE_START_OF_A_WHISK_ACTIVATION_XXX with id
cafca5b74be94eb8bca5b74be9beb80f for namespace guest
XXX_THE_END_OF_A_WHISK_ACTIVATION_XXX


It should be really straightforward to write a streaming agent that reads
the json formatted logstreams and uses the START sentinels to keep track of
the activationId that should be injected into each logline and the
namespace to associate that logline with to the platform logging service.
Arguably the namespace information is redundant since all activations that
run in the container belong to the same namespace, but it seemed like
including it could make the processing marginally simpler.


Pausing for feedback before doing any more of the runtimes...


--dave


[1] https://github.com/apache/incubator-openwhisk/pull/3974


[2] https://github.com/apache/incubator-openwhisk-runtime-nodejs/pull/81


Reply via email to