Skip to content

Remove logging from the API used for the compiler plugin #1177

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

Merged
merged 1 commit into from
May 8, 2025

Conversation

koperagen
Copy link
Collaborator

@koperagen koperagen commented May 7, 2025

I don't think we can use logger in something called from compiler plugin - aggregators:

Caused by: org.jetbrains.kotlin.idea.gradle.diagnostic.CompilerInternalError:  java.lang.NoClassDefFoundError: io/github/oshai/kotlinlogging/KotlinLogging
	at org.jetbrains.kotlinx.dataframe.math.MeanKt.<clinit>(mean.kt:13)
	at org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators.mean_delegate$lambda$10(Aggregators.kt:151)
	at org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.AggregatorOptionSwitch1.invoke(AggregatorOptionSwitch.kt:18)
	at org.jetbrains.kotlinx.dataframe.plugin.impl.api.StatisticsKt.<clinit>(statistics.kt:95)
	at org.jetbrains.kotlinx.dataframe.plugin.impl.api.GroupBySum0.<init>(groupBy.kt:339)
	at org.jetbrains.kotlinx.dataframe.plugin.extensions.FunctionCallTransformer$DataSchemaLikeCallTransformer.transformOrNull(FunctionCallTransformer.kt:850)
	at org.jetbrains.kotlinx.dataframe.plugin.extensions.FunctionCallTransformer$DataFrameCallTransformer.transformOrNull(FunctionCallTransformer.kt:0)
	at org.jetbrains.kotlinx.dataframe.plugin.extensions.FunctionCallTransformer.transform(FunctionCallTransformer.kt:156)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCallInternal$resolve(FirExpressionsResolveTransformer.kt:583)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCall(FirExpressionsResolveTransformer.kt:493)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCall(FirExpressionsResolveTransformer.kt:68)
	at org.jetbrains.kotlin.fir.expressions.FirFunctionCall.transform(FirFunctionCall.kt:45)
	at org.jetbrains.kotlin.fir.visitors.FirTransformerUtilKt.transformSingle(FirTransformerUtil.kt:13)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformAsExplicitReceiver(FirExpressionsResolveTransformer.kt:293)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformExplicitReceiverOf(FirExpressionsResolveTransformer.kt:278)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCallInternal$resolve(FirExpressionsResolveTransformer.kt:548)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCall(FirExpressionsResolveTransformer.kt:493)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCall(FirExpressionsResolveTransformer.kt:68)
	at org.jetbrains.kotlin.fir.expressions.FirFunctionCall.transform(FirFunctionCall.kt:45)
	at org.jetbrains.kotlin.fir.visitors.FirTransformerUtilKt.transformSingle(FirTransformerUtil.kt:13)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformAsExplicitReceiver(FirExpressionsResolveTransformer.kt:293)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformExplicitReceiverOf(FirExpressionsResolveTransformer.kt:278)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCallInternal$resolve(FirExpressionsResolveTransformer.kt:548)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformFunctionCall(FirExpressionsResolveTransformer.kt:493)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformFunctionCall(FirAbstractBodyResolveTransformerDispatcher.kt:195)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformFunctionCall(FirAbstractBodyResolveTransformerDispatcher.kt:27)
	at org.jetbrains.kotlin.fir.expressions.FirFunctionCall.transform(FirFunctionCall.kt:45)
	at org.jetbrains.kotlin.fir.declarations.impl.FirPropertyImpl.transformInitializer(FirPropertyImpl.kt:122)
	at org.jetbrains.kotlin.fir.declarations.impl.FirPropertyImpl.transformInitializer(FirPropertyImpl.kt:33)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformLocalVariable(FirDeclarationsResolveTransformer.kt:646)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformProperty(FirDeclarationsResolveTransformer.kt:157)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformProperty(FirAbstractBodyResolveTransformerDispatcher.kt:498)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformProperty(FirAbstractBodyResolveTransformerDispatcher.kt:27)
	at org.jetbrains.kotlin.fir.declarations.FirProperty.transform(FirProperty.kt:62)
	at org.jetbrains.kotlin.fir.expressions.FirExpressionUtilKt.transformStatementsIndexed(FirExpressionUtil.kt:215)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformBlockInCurrentScope$resolve(FirExpressionsResolveTransformer.kt:725)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer.transformBlock(FirExpressionsResolveTransformer.kt:716)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformBlock(FirAbstractBodyResolveTransformerDispatcher.kt:222)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformBlock(FirAbstractBodyResolveTransformerDispatcher.kt:27)
	at org.jetbrains.kotlin.fir.expressions.FirBlock.transform(FirBlock.kt:33)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirPartialBodyResolveTransformer.transformElement(FirPartialBodyResolveTransformer.kt:36)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirPartialBodyResolveTransformer.transformElement(FirPartialBodyResolveTransformer.kt:13)
	at org.jetbrains.kotlin.fir.visitors.FirTransformer.transformBlock(FirTransformer.kt:183)
	at org.jetbrains.kotlin.fir.expressions.FirBlock.transform(FirBlock.kt:33)
	at org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl.transformBody(FirSimpleFunctionImpl.kt:114)
	at org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl.transformBody(FirSimpleFunctionImpl.kt:32)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformFunction(FirDeclarationsResolveTransformer.kt:1050)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformFunctionWithGivenSignature(FirDeclarationsResolveTransformer.kt:987)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.access$transformFunctionWithGivenSignature(FirDeclarationsResolveTransformer.kt:64)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformSimpleFunction$lambda$67$lambda$66$lambda$65(FirDeclarationsResolveTransformer.kt:979)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext.withParameters(BodyResolveContext.kt:1311)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext.forFunctionBody(BodyResolveContext.kt:753)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformSimpleFunction(FirDeclarationsResolveTransformer.kt:977)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformSimpleFunction(FirAbstractBodyResolveTransformerDispatcher.kt:574)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformSimpleFunction(FirAbstractBodyResolveTransformerDispatcher.kt:27)
	at org.jetbrains.kotlin.fir.declarations.FirSimpleFunction.transform(FirSimpleFunction.kt:55)
	at org.jetbrains.kotlin.fir.visitors.FirTransformerUtilKt.transformInplace(FirTransformerUtil.kt:20)
	at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformDeclarations(FirFileImpl.kt:81)
	at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformChildren(FirFileImpl.kt:66)
	at org.jetbrains.kotlin.fir.declarations.impl.FirFileImpl.transformChildren(FirFileImpl.kt:29)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformElement(FirAbstractBodyResolveTransformerDispatcher.kt:92)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformDeclarationContent(FirAbstractBodyResolveTransformerDispatcher.kt:462)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformDeclarationContent(FirDeclarationsResolveTransformer.kt:84)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.doTransformFile$lambda$57(FirDeclarationsResolveTransformer.kt:878)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.withFile(FirDeclarationsResolveTransformer.kt:891)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.doTransformFile(FirDeclarationsResolveTransformer.kt:877)
	at org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDeclarationsResolveTransformer.transformFile(FirDeclarationsResolveTransformer.kt:784)
Caused by: org.jetbrains.kotlin.idea.gradle.diagnostic.CompilerInternalError:  java.lang.ClassNotFoundException: io.github.oshai.kotlinlogging.KotlinLogging
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

@koperagen koperagen added this to the 1.0.0-Beta1 (0.16) milestone May 7, 2025
@koperagen koperagen self-assigned this May 7, 2025
@koperagen koperagen added bug Something isn't working Compiler plugin Anything related to the DataFrame Compiler Plugin labels May 7, 2025
@koperagen koperagen requested review from Jolanrensen and zaleslaw May 7, 2025 11:51
@Jolanrensen
Copy link
Collaborator

That's just because the dependency is excluded. I'd rather wrap it in a try/catch or something.

How else should we inform users that DataFrame does something that might be unexpected/wrong in the users' eyes? With logs, at least we have something to point to. And since they're logs, users can disable them

@koperagen
Copy link
Collaborator Author

Exception happens during static initialization of aggregators (logger property), so i cannot wrap logger.warn specifically

@koperagen
Copy link
Collaborator Author

@Jolanrensen Sorry, let's merge this to have working statistics in IDEA for now, i'd really like to have all our latest changes working in IDEA by the next kt-master sync

@Jolanrensen
Copy link
Collaborator

Jolanrensen commented May 8, 2025

@Jolanrensen Sorry, let's merge this to have working statistics in IDEA for now, i'd really like to have all our latest changes working in IDEA by the next kt-master sync

sure, but let's add the Long->Double loss-of-precision as note in the "TODO KDocs:" blocks in mean.kt, std.kt etc. so we won't forget to mention the conversion when we write KDocs for the statistics functions. If we can't get the logger to work, we at least need to mention it in the documentation.
Edit: I think only median.kt and percentile.kt don't have this note yet

@koperagen koperagen merged commit b319f73 into master May 8, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Compiler plugin Anything related to the DataFrame Compiler Plugin
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants