Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to using measureTimedValue #1843

Merged
merged 2 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import com.fasterxml.jackson.module.kotlin.readValue
import com.netflix.graphql.dgs.DgsExecutionResult
import com.netflix.graphql.dgs.DgsQueryExecutor
import com.netflix.graphql.dgs.internal.utils.MultipartVariableMapper
import com.netflix.graphql.dgs.internal.utils.TimeTracer
import com.netflix.graphql.dgs.internal.utils.VariableMappingException
import graphql.execution.reactive.SubscriptionPublisher
import org.intellij.lang.annotations.Language
Expand All @@ -42,6 +41,7 @@ import org.springframework.web.bind.annotation.RestController
import org.springframework.web.context.request.WebRequest
import org.springframework.web.multipart.MultipartFile
import java.io.InputStream
import kotlin.time.measureTimedValue

/**
* HTTP entrypoint for the framework. Functionality in this class should be limited, so that as much code as possible
Expand Down Expand Up @@ -210,20 +210,17 @@ open class DgsRestController(
headers: HttpHeaders,
webRequest: WebRequest
): ResponseEntity<Any> {
val executionResult = TimeTracer.logTime(
{
dgsQueryExecutor.execute(
inputQuery.query,
inputQuery.variables.orEmpty(),
inputQuery.extensions,
headers,
inputQuery.operationName,
webRequest
)
},
logger,
"Executed query in {}ms"
)
val (executionResult, elapsed) = measureTimedValue {
dgsQueryExecutor.execute(
inputQuery.query,
inputQuery.variables.orEmpty(),
inputQuery.extensions,
headers,
inputQuery.operationName,
webRequest
)
}
logger.debug("Executed query in {}ms", elapsed.inWholeMilliseconds)
logger.debug(
"Execution result - Contains data: '{}' - Number of errors: {}",
executionResult.isDataPresent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,22 @@ package com.netflix.graphql.dgs.internal
import com.netflix.graphql.dgs.context.DgsContext
import com.netflix.graphql.dgs.context.DgsCustomContextBuilder
import com.netflix.graphql.dgs.context.DgsCustomContextBuilderWithRequest
import com.netflix.graphql.dgs.internal.utils.TimeTracer
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.http.HttpHeaders
import org.springframework.web.context.request.WebRequest
import java.util.*
import kotlin.time.measureTimedValue

open class DefaultDgsGraphQLContextBuilder(
private val dgsCustomContextBuilder: Optional<DgsCustomContextBuilder<*>>,
private val dgsCustomContextBuilderWithRequest: Optional<DgsCustomContextBuilderWithRequest<*>> = Optional.empty()
) {

fun build(dgsRequestData: DgsWebMvcRequestData): DgsContext {
return TimeTracer.logTime({ buildDgsContext(dgsRequestData) }, logger, "Created DGS context in {}ms")
val (context, elapsed) = measureTimedValue { buildDgsContext(dgsRequestData) }
logger.debug("Created DGS context in {}ms", elapsed.inWholeMilliseconds)
return context
}

private fun buildDgsContext(dgsRequestData: DgsWebMvcRequestData?): DgsContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package com.netflix.graphql.dgs.internal.utils
import org.slf4j.Logger

object TimeTracer {
@Deprecated("Use kotlin.time.measureTimedValue")
fun <R> logTime(action: () -> R, logger: Logger, message: String): R {
val startTime = System.currentTimeMillis()
val result = action()
Expand Down
Loading