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

Restore tomcat scriptinfo object in order to show normal script path #197

Merged
merged 1 commit into from
Nov 19, 2023
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
1 change: 1 addition & 0 deletions changelog.d/+patched-path.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SIP-patched script path was being used also when mirrord was disabled - cosmetic effect only.
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ fun patchedScriptFromScript(scriptInfo: ScriptInfo, script: String, args: String
return PatchedScriptInfo(scriptInfo.scriptHelper, parent, startupNotShutdown, params.toTypedArray())
}

data class SavedConfigData(val envVars: List<EnvironmentVariable>, val nonDefaultScript: String?)
data class SavedConfigData(val envVars: List<EnvironmentVariable>, var scriptInfo: ScriptInfo?)

data class CommandLineWithArgs(val command: String, val args: String?)

Expand Down Expand Up @@ -176,22 +176,15 @@ class TomcatExecutionListener : ExecutionListener {
// even if `outgoing` feature is enabled.
val mirrordEnv = env + mapOf(Pair("MIRRORD_DETECT_DEBUGGER_PORT", "javaagent"), Pair("MIRRORD_IGNORE_DEBUGGER_PORTS", getTomcatServerPort()))

// If we're on macOS we're going to SIP-patch the script and change info, so save script info.
val originalScript = if (SystemInfo.isMac && !startupInfo.USE_DEFAULT) {
MirrordLogger.logger.debug("config uses non-default tomcat script. Saving path to restore later")
startupInfo.SCRIPT
} else {
null
}

savedEnvs[executorId] = SavedConfigData(envVars.toList(), originalScript)
val savedData = SavedConfigData(envVars.toList(), null)
envVars.addAll(mirrordEnv.map { (k, v) -> EnvironmentVariable(k, v, false) })
config.setEnvironmentVariables(envVars)

if (SystemInfo.isMac) {
MirrordLogger.logger.debug("isMac, patching SIP.")
patchedPath?.let {
MirrordLogger.logger.debug("patchedPath is not null: $it, meaning original was SIP")
savedData.scriptInfo = startupInfo
if (config.startupInfo.USE_DEFAULT) {
MirrordLogger.logger.debug("using default - handling SIP by replacing config.startupInfo")
val patchedStartupInfo = patchedScriptFromScript(startupInfo, it, scriptAndArgs?.args)
Expand All @@ -204,6 +197,7 @@ class TomcatExecutionListener : ExecutionListener {
}
}
}
savedEnvs[executorId] = savedData
}
} catch (e: Throwable) {
MirrordLogger.logger.debug("Running tomcat project failed: ", e)
Expand All @@ -223,8 +217,10 @@ class TomcatExecutionListener : ExecutionListener {
val saved = savedEnvs.remove(executorId) ?: return
config.setEnvironmentVariables(saved.envVars)
if (SystemInfo.isMac) {
saved.nonDefaultScript?.let {
config.startupInfo.SCRIPT = it
saved.scriptInfo?.let {
val startupInfoField = RunnerSpecificLocalConfigurationBit::class.java.getDeclaredField("myStartupInfo")
startupInfoField.isAccessible = true
startupInfoField.set(config, it)
}
}
}
Expand Down