Skip to content

Conversation

tamassoltesz
Copy link
Contributor

Summary of change

(A few sentences about this PR)

Related issues

  • Link to issue1 here
  • Link to issue1 here

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your
changes work. Bonus points for screenshots and videos!)

Documentation changes

(If relevant, please create a PR in our docs repo, or create a checklist here
highlighting the necessary changes)

Checklist for important updates

  • Changelog has been updated
    • If there are any db schema changes, mention those changes clearly
  • coreDriverInterfaceSupported.json file has been updated (if needed)
  • pluginInterfaceSupported.json file has been updated (if needed)
  • Changes to the version if needed
    • In build.gradle
  • If added a new paid feature, edit the getPaidFeatureStats function in FeatureFlag.java file
  • Had installed and ran the pre-commit hook
  • If there are new dependencies that have been added in build.gradle, please make sure to add them
    in implementationDependencies.json.
  • Update function getValidFields in io/supertokens/config/CoreConfig.java if new aliases were added for any core
    config (similar to the access_token_signing_key_update_interval config alias).
  • Issue this PR against the latest non released version branch.
    • To know which one it is, run find the latest released tag (git tag) in the format vX.Y.Z, and then find the
      latest branch (git branch --all) whose X.Y is greater than the latest released tag.
    • If no such branch exists, then create one from the latest released branch.
  • If added a foreign key constraint on app_id_to_user_id table, make sure to delete from this table when deleting
    the user as well if deleteUserIdMappingToo is false.
  • If added a new recipe, then make sure to update the bulk import API to include the new recipe.

Remaining TODOs for this PR

  • Item1
  • Item2

commands.add(
installationDir + "core/*:" + installationDir + "plugin-interface/*:" + installationDir + "ee/*");
if (javaagentEnabled) {
commands.add("-javaagent:\"" + installationDir + "/agent/opentelemetry-javaagent.jar\"");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The path for the Java agent on non-Windows systems should not include escaped quotes. Please update to:

commands.add("-javaagent:" + installationDir + "/agent/opentelemetry-javaagent.jar");

The quotes are only needed for Windows paths due to potential spaces in directory names, but on Unix-like systems they can cause the JVM to incorrectly interpret the path.

Suggested change
commands.add("-javaagent:\"" + installationDir + "/agent/opentelemetry-javaagent.jar\"");
if (Utils.isWindows()) {
commands.add("-javaagent:\"" + installationDir + "/agent/opentelemetry-javaagent.jar\"");
} else {
commands.add("-javaagent:" + installationDir + "/agent/opentelemetry-javaagent.jar");
}

Spotted by Diamond

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

Comment on lines 42 to 47
Map<String, String> methodArguments = new HashMap<>();
for (Object argument : joinPoint.getArgs()) {
methodArguments.put(argument.getClass().getCanonicalName(), String.valueOf(argument));
}
span.setAttribute("method.arguments", methodArguments.keySet().stream().map(key -> key + ": " + methodArguments.get(key))
.collect(Collectors.joining(", ", "{", "}")));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code as written could throw a NullPointerException if any argument in joinPoint.getArgs() is null. Consider adding null checks before accessing argument.getClass():

Map<String, String> methodArguments = new HashMap<>();
for (Object argument : joinPoint.getArgs()) {
    if (argument != null) {
        methodArguments.put(argument.getClass().getCanonicalName(), String.valueOf(argument));
    } else {
        methodArguments.put("null", "null");
    }
}

This ensures the code handles null arguments gracefully while still capturing all method parameters for telemetry.

Suggested change
Map<String, String> methodArguments = new HashMap<>();
for (Object argument : joinPoint.getArgs()) {
methodArguments.put(argument.getClass().getCanonicalName(), String.valueOf(argument));
}
span.setAttribute("method.arguments", methodArguments.keySet().stream().map(key -> key + ": " + methodArguments.get(key))
.collect(Collectors.joining(", ", "{", "}")));
Map<String, String> methodArguments = new HashMap<>();
for (Object argument : joinPoint.getArgs()) {
if (argument != null) {
methodArguments.put(argument.getClass().getCanonicalName(), String.valueOf(argument));
} else {
methodArguments.put("null", "null");
}
}
span.setAttribute("method.arguments", methodArguments.keySet().stream().map(key -> key + ": " + methodArguments.get(key))
.collect(Collectors.joining(", ", "{", "}")));

Spotted by Diamond

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@tamassoltesz tamassoltesz marked this pull request as draft September 26, 2025 12:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants