Skip to content

Commit

Permalink
Add traceparent header to wave & tower clients
Browse files Browse the repository at this point in the history
Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
  • Loading branch information
pditommaso committed Jan 29, 2025
1 parent 0a29236 commit 2a41267
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ class SimpleHttpClient {
con.setRequestMethod(method)
con.setRequestProperty("Content-Type", contentType)
con.setRequestProperty("User-Agent", userAgent)
con.setRequestProperty("Traceparent", TraceUtils.nextTrace())
// set charset
if( charset )
con.setRequestProperty("charset", "utf-8")
Expand Down
35 changes: 35 additions & 0 deletions modules/nf-commons/src/main/nextflow/util/TraceUtils.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2013-2024, Seqera Labs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package nextflow.util

import groovy.transform.CompileStatic

/**
*
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com>
*/
@CompileStatic
class TraceUtils {

static String nextTrace() {
final traceId = UUID.randomUUID().toString().replace("-", "").substring(0, 32)
final spanId = UUID.randomUUID().toString().replace("-", "").substring(0, 16)
return String.format("00-%s-%s-01", traceId, spanId)
}

}
35 changes: 35 additions & 0 deletions modules/nf-commons/src/test/nextflow/util/TraceUtilsTest.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2013-2024, Seqera Labs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package nextflow.util

import spock.lang.Specification

/**
*
* @author Paolo Di Tommaso <paolo.ditommaso@gmail.com>
*/
class TraceUtilsTest extends Specification {

def 'should create a traceparent string' () {
when:
def trace = TraceUtils.nextTrace()
then:
trace =~ /00-[a-f0-9]{32}-[a-f0-9]{16}-01/
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ import nextflow.processor.TaskRun
import nextflow.script.bundle.ResourcesBundle
import nextflow.util.SysHelper
import nextflow.util.Threads
import nextflow.util.TraceUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
/**
Expand Down Expand Up @@ -290,12 +291,13 @@ class WaveClient {
request.towerAccessToken = accessToken
request.towerRefreshToken = refreshToken

final trace = TraceUtils.nextTrace()
final body = JsonOutput.toJson(request)
final uri = URI.create("${endpoint}/v1alpha2/container")
log.debug "Wave request: $uri; attempt=$attempt - request: $request"
final req = HttpRequest.newBuilder()
.uri(uri)
.headers('Content-Type','application/json')
.headers('Content-Type','application/json', 'Traceparent', trace)
.POST(HttpRequest.BodyPublishers.ofString(body))
.build()

Expand Down

0 comments on commit 2a41267

Please sign in to comment.