Fix/graphql subscriptions logging (#704)

* Only log operationMessage in case gql logging is enabled

* Always log message type and operation name
This commit is contained in:
schroda
2023-10-05 04:02:46 +02:00
committed by GitHub
parent feead100f2
commit 3cd3cb0186
@@ -35,6 +35,7 @@ import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMess
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_ERROR
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_NEXT
import suwayomi.tachidesk.graphql.server.toGraphQLContext
import suwayomi.tachidesk.server.serverConfig
/**
* Implementation of the `graphql-ws` protocol defined by Apollo
@@ -52,9 +53,30 @@ class ApolloSubscriptionProtocolHandler(
private val basicConnectionErrorMessage = SubscriptionOperationMessage(type = GQL_ERROR.type)
private val acknowledgeMessage = SubscriptionOperationMessage(GQL_CONNECTION_ACK.type)
private fun getOperationName(payload: Any?): String {
val unknownOperationName = "__UNKNOWN__"
try {
@Suppress("UNCHECKED_CAST")
return (payload as Map<String, String>)["operationName"] ?: unknownOperationName
} catch (e: Exception) {
return unknownOperationName
}
}
fun handleMessage(context: WsMessageContext): Flow<SubscriptionOperationMessage> {
val operationMessage = convertToMessageOrNull(context.message()) ?: return flowOf(basicConnectionErrorMessage)
logger.debug { "GraphQL subscription client message, sessionId=${context.sessionId} operationMessage=$operationMessage" }
logger.debug {
"GraphQL subscription client message, sessionId=${context.sessionId} type=${operationMessage.type} operationName=${
getOperationName(operationMessage.payload)
} ${
if (serverConfig.gqlDebugLogsEnabled.value) {
"operationMessage=$operationMessage"
} else {
""
}
}"
}
return try {
when (operationMessage.type) {