CORDA-728 fixed the issue with node runner on mac. Also did a tiny bit of readability refactoring.

CORDA-728 clinton's requested changes to move all property getters onto one line

CORDA-728 fixed the issue with node runner on mac. Also did a tiny bit of readability refactoring.

CORDA-728 clinton's requested changes to move all property getters onto one line

CORDA-728 Tiny bit of readability refactoring, change of flow control around error occuring on TC, renaming of log file to work with Rick's TC change.

CORDA-728 clinton's requested changes to move all property getters onto one line

CORDA-728 clinton's requested changes to move all property getters onto one line

CORDA-728 Fixing some simple compilation errors.

CORDA-728 deparallelizing in attempt to fix capsule error
This commit is contained in:
Mat Rizzo 2017-10-23 17:23:29 +01:00 committed by mat-rizzo-r3
parent 04d8260e0f
commit 59fe7a196b
4 changed files with 30 additions and 17 deletions

View File

@ -148,26 +148,22 @@ open class Cordform : DefaultTask() {
installNodeInfos()
}
private fun generateNodeInfos() {
project.logger.info("Generating node infos")
val generateTimeoutSeconds = 60L
val processes = nodes.map { node ->
project.logger.info("Generating node info for ${fullNodePath(node)}")
val logDir = File(fullNodePath(node).toFile(), "logs")
logDir.mkdirs() // Directory may not exist at this point
Pair(node, ProcessBuilder("java", "-jar", Node.nodeJarName, "--just-generate-node-info")
.directory(fullNodePath(node).toFile())
.redirectErrorStream(true)
// InheritIO causes hangs on windows due the gradle buffer also not being flushed.
// Must redirect to output or logger (node log is still written, this is just startup banner)
.redirectOutput(File(logDir, "generate-info-log.txt"))
.start())
logDir.mkdirs()
Pair(node, buildNodeProcess(node, logDir))
}
try {
processes.parallelStream().forEach { (node, process) ->
processes.forEach { (node, process) ->
if (!process.waitFor(generateTimeoutSeconds, TimeUnit.SECONDS)) {
throw GradleException("Node took longer $generateTimeoutSeconds seconds than too to generate node info - see node log at ${fullNodePath(node)}/logs")
} else if (process.exitValue() != 0) {
}
if (process.exitValue() != 0) {
throw GradleException("Node exited with ${process.exitValue()} when generating node infos - see node log at ${fullNodePath(node)}/logs")
}
}
@ -179,6 +175,16 @@ open class Cordform : DefaultTask() {
}
}
private fun buildNodeProcess(node: Node, logDir: File): Process {
return ProcessBuilder("java", "-jar", Node.nodeJarName, "--just-generate-node-info")
.directory(fullNodePath(node).toFile())
.redirectErrorStream(true)
// InheritIO causes hangs on windows due the gradle buffer also not being flushed.
// Must redirect to output or logger (node log is still written, this is just startup banner)
.redirectOutput(File(logDir, "generate-info.log"))
.start()
}
private fun installNodeInfos() {
project.logger.info("Installing node infos")
for (source in nodes) {

View File

@ -18,10 +18,12 @@ class Cordformation : Plugin<Project> {
* @return A file handle to the file in the JAR.
*/
fun getPluginFile(project: Project, filePathInJar: String): File {
val archive: File? = project.rootProject.buildscript.configurations.single { it.name == "classpath" }.find {
it.name.contains("cordformation")
}
return project.rootProject.resources.text.fromArchiveEntry(archive, filePathInJar).asFile()
val archive: File? = project.rootProject.buildscript.configurations
.single { it.name == "classpath" }
.find { it.name.contains("cordformation") }
return project.rootProject.resources.text
.fromArchiveEntry(archive, filePathInJar)
.asFile()
}
val executableFileMode = "0755".toInt(8)

View File

@ -128,7 +128,7 @@ class Node(private val project: Project) : CordformNode() {
// Can't parse as an X500 name, use the full string
name
}
nodeDir = File(rootDir.toFile(), dirName.replace("\\s", ""))
nodeDir = File(rootDir.toFile(), dirName)
}
private fun configureProperties() {
@ -201,7 +201,12 @@ class Node(private val project: Project) : CordformNode() {
* Installs the configuration file to this node's directory and detokenises it.
*/
private fun installConfig() {
val options = ConfigRenderOptions.defaults().setOriginComments(false).setComments(false).setFormatted(false).setJson(false)
val options = ConfigRenderOptions
.defaults()
.setOriginComments(false)
.setComments(false)
.setFormatted(false)
.setJson(false)
val configFileText = config.root().render(options).split("\n").toList()
// Need to write a temporary file first to use the project.copy, which resolves directories correctly.

View File

@ -104,7 +104,7 @@ private class TerminalWindowJavaCommand(jarName: String, dir: File, debugPort: I
delay 0.5
tell app "System Events" to tell process "Terminal" to keystroke "t" using command down
delay 0.5
do script "bash -c 'cd $dir; ${command.joinToString(" ")} && exit'" in selected tab of the front window
do script "bash -c 'cd \"$dir\" ; \"${command.joinToString("""\" \"""")}\" && exit'" in selected tab of the front window
end tell""")
}
OS.WINDOWS -> {