I second the idea of recording the request/transaction id as part of the 
activation record. We don’t currently do that,  but we do have a caused-by 
annotation for composite activations. I suggest another annotation which is the 
transaction id. 

Chetan’s pr is straightforward and I think achieves the goal of linking parents 
to children for external tracing. 

-r

> On Aug 19, 2019, at 5:02 AM, Erez Hadad <er...@il.ibm.com> wrote:
> 
> Hi folks,
> 
> My two cents: recall my "shared context" presentation about using a 
> semi-transparent execution context that is shared across multiple 
> consequent invocations. Similar to the transaction id being discussed. 
> https://cwiki.apache.org/confluence/download/attachments/74689638/Shared%20Context%20in%20OpenWhisk%20Invocations.pptx?api=v2
> 
> Specifically, you may want to consider the implementation options in slide 
> 11:
> 1. One particular option of interest is to embed the shared context id ( = 
> transaction id) in the activation id. When the new activation id is 
> generated, the transaction id can be taken from the caller's activation id 
> and embedded in the new activation id. This way the activation id remains 
> unique per invocation but the transaction id can be extracted from it if 
> needed, manually or via a client library (e.g., extending the OW js 
> library). Kind of a minimal change. 
> 2. Another possibly valuable option is to have the transaction id used as 
> a key for retrieving data (e.g., key/value) from a 3rd-party fast service, 
> such as redis. This can be left open for the user of the transaction id or 
> provide a reference implementation in the client library. Such data can 
> also be pre-fetched before the invocation starts (e.g., from CouchDB / 
> Redis), but again, at the cost of a higher code change.
> 
> Regards,
> -- Erez
> 
> 
> 
> 
> 
> 
> From:   Rodric Rabbah <rod...@gmail.com>
> To:     dev@openwhisk.apache.org
> Cc:     tyson.nor...@gmail.com
> Date:   17/08/2019 03:36
> Subject:        [EXTERNAL] Re: Passing TransactionId as part of action 
> invocation
> 
> 
> 
> Of course if the transaction id is the same as the activation id (of the 
> composite action) the solutions are comparable. 
> 
> The downside of using transaction id is that we have no APIs to query by 
> it today, and it?s not recorded in the activation metadata. So while it?s 
> useful for external tracing (no objections to doing it), I think from an 
> openwhisk API point of view we still have a gap. 
> 
> -r
> 
> On Aug 16, 2019, at 4:58 PM, Chetan Mehrotra <chetan.mehro...@gmail.com> 
> wrote:
> 
>>> I think if OW SDK, and sequences/compositions, propagate X-Request-Id
>>> header (using the existing transaction id/X-Request-Id), the parent is 
> not
>>> needed?
>> 
>> Thats what I counting on as we just need to correlate calls made for a
>> given flow corelated with time to get a sequence of flow.
>> 
>>> - expose the transaction id to runtime container
>>> - propagate the transaction id in requests initiated from runtime
>>> container/controller
>> 
>> Makes sense. Would open a ticket capturing these changes then
>> Chetan Mehrotra
>> 
>>> On Fri, Aug 16, 2019 at 7:44 AM Tyson Norris <tysonnor...@gmail.com> 
> wrote:
>>> 
>>> I think if OW SDK, and sequences/compositions, propagate X-Request-Id
>>> header (using the existing transaction id/X-Request-Id), the parent is 
> not
>>> needed? i.e. there may be 2 parts to this effort:
>>> - expose the transaction id to runtime container
>>> - propagate the transaction id in requests initiated from runtime
>>> container/controller
>>> 
>>> 
>>> 
>>>> On Thu, Aug 15, 2019 at 10:38 AM Rodric Rabbah <rod...@gmail.com> 
> wrote:
>>>> 
>>>> In general yes but I think generally do you need the transaction id or 
> the
>>>> parent id for an activation?
>>>> 
>>>> This issue is relevant - 
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_apache_openwhisk_issues_3083&d=DwIFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=Oo9B0p_tCCWIIum5GpjjqA&m=RVvqHH3EKTdA9cNFz3n2dPeXV_wFUOU01I5vxvAqt8Q&s=eZzttWaoeE0WFe_MndFO1O6K1wA9hZbc-BKbRZa6kDM&e=
>  
> .
>>>> I also recall in the early days of the composer, we wanted a way to 
> query
>>>> parent/child activations but this requires new couch views and we 
> didn't
>>>> pursue it.
>>>> 
>>>> 
>>>> 
>>>> On Thu, Aug 15, 2019 at 1:20 PM Chetan Mehrotra 
> <chetan.mehro...@gmail.com
>>>>> 
>>>> wrote:
>>>> 
>>>>> Currently we pass the `activation_id` as part of `/run` call to any
>>>>> action runtime [1]. Would it be fine to also pass the `TransactionId`
>>>>> such that it can be accessed by action code?
>>>>> 
>>>>> One usecase of this would be to enable tracing a sequence/composition
>>>>> by linking all activations which are part of same transaction in
>>>>> epsagon [2]
>>>>> 
>>>>> Chetan Mehrotra
>>>>> [1]
>>>>> 
>>>> 
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_apache_openwhisk_blob_master_docs_actions-2Dnew.md-23activation&d=DwIFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=Oo9B0p_tCCWIIum5GpjjqA&m=RVvqHH3EKTdA9cNFz3n2dPeXV_wFUOU01I5vxvAqt8Q&s=-vjUf19hoPEdgOTjnbs7jjHFqsJhWIRJjQSQYIme8xw&e=
>  
> 
>>>>> [2]
>>>>> 
>>>> 
> https://urldefense.proofpoint.com/v2/url?u=https-3A__epsagon.com_blog_epsagon-2Dmakes-2Dtroubleshooting-2Dapache-2Dopenwhisk-2Da-2Dsnap_&d=DwIFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=Oo9B0p_tCCWIIum5GpjjqA&m=RVvqHH3EKTdA9cNFz3n2dPeXV_wFUOU01I5vxvAqt8Q&s=IkGq6vR80pwlGlaXAkXHi_rV14IXnX0hc3smCWO8BM8&e=
>  
> 
>>>>> 
>>>> 
> 
> 
> 
> 

Reply via email to