Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-174-reorganise-for-bank-developers

This commit is contained in:
Matthew Nesbit 2016-05-16 15:27:44 +01:00
commit 4fd32c3455
4 changed files with 64 additions and 31 deletions

View File

@ -18,6 +18,7 @@ buildscript {
ext.artemis_version = '1.2.0'
ext.jetty_version = '9.1.1.v20140108'
ext.jersey_version = '2.22.2'
ext.jolokia_version = '2.0.0-M1'
repositories {
mavenCentral()
@ -100,6 +101,18 @@ task getIRSDemo(type: CreateStartScripts) {
classpath = jar.outputs.files + project.configurations.runtime
}
// Force windows script classpath to wildcard path to avoid the 'Command Line Is Too Long' issues
// with generated scripts. Include Jolokia .war explicitly as this isn't picked up by wildcard
tasks.withType(CreateStartScripts)
{
doLast {
windowsScript.text = windowsScript
.readLines()
.collect { line -> line.replaceAll(~/^set CLASSPATH=.*$/, 'set CLASSPATH=%APP_HOME%/lib/*;%APP_HOME%/lib/jolokia-agent-war-'+project.ext.jolokia_version+'.war') }
.join('\r\n')
}
}
// These lines tell gradle to run the Quasar suspendables scanner to look for unannotated super methods
// that have @Suspendable sub implementations. These tend to cause NPEs and are not caught by the verifier
// NOTE: need to make sure the output isn't on the classpath or every other run it generates empty results, so

View File

@ -1,26 +1,24 @@
Welcome to the R3 prototyping repository!
=========================================
Welcome to the Corda repository!
================================
This documentation describes the first prototype of a possible future R3 shared ledger platform.
This documentation describes the prototype of a proposed architecture for distributed ledgers.
The goal of this prototype is to explore fundamentally better designs for transactions, states and smart contract APIs
than what presently exists on the market, tailor made for the needs of the financial industry. We are attempting to
prove or disprove the following hypothesis:
The goal of this prototype is to explore fundamentally better designs for distributed ledgers than what presently exists
on the market, tailor made for the needs of the financial industry. We are attempting to prove or disprove the
following hypothesis:
*The combination of*
* *An upgraded state transition model*
* *Industry standard, production quality virtual machines and languages*
* *Limited data propagation*
* *Conflict resolution without proof of work or blocks*
*is sufficiently powerful to justify the creation of a new platform implementation.*
The combination of
* An upgraded state transition model
* Industry standard, production quality virtual machines and languages
* An advanced orchestration framework
* Limited data propagation
* Conflict resolution without proof of work or blocks
is sufficiently powerful to justify the creation of a new platform implementation.
Read on to learn:
.. toctree::
:maxdepth: 2
:caption: Overview
@ -46,6 +44,7 @@ Read on to learn:
:maxdepth: 2
:caption: Appendix
release-process
visualiser
codestyle
building-the-docs

View File

@ -0,0 +1,23 @@
Release process
===============
Corda is under heavy development. The current release process is therefore geared towards rapid iteration.
Each Corda development release is called a *milestone* and has its own branch in the git repository. Milestones are
temporarily stabilised snapshots of the Corda code which are suitable for developers to experiment with. They may
receive backported bugfixes but once announced a milestone will not have any API or backwards compatibility breaks.
Between milestones backwards compatibility is expected to break. Every new milestone comes with a short announcement
detailing:
* What major improvements have been made.
* How to forward port your code to the new milestone.
* What new documentation has become available.
* Important known issues.
Eventually, Corda will stabilise and release version 1. At that point backwards compatibility will be guaranteed
forever and the software will be considered production ready. Until then, expect it to be a building site and wear your
hard hat.
Our goal is to cut a new milestone roughly once a month. There are no fixed dates. If need be, a milestone may slip by
a few days to ensure the code is sufficiently usable.

View File

@ -22,9 +22,7 @@ import org.glassfish.jersey.servlet.ServletContainer
import java.io.RandomAccessFile
import java.lang.management.ManagementFactory
import java.nio.channels.FileLock
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.StandardOpenOption
import java.time.Clock
import javax.management.ObjectName
@ -164,20 +162,20 @@ class Node(dir: Path, val p2pAddr: HostAndPort, configuration: NodeConfiguration
// twice with the same directory: that's a user error and we should bail out.
val pidPath = dir.resolve("process-id")
val file = pidPath.toFile()
if (file.exists()) {
val f = RandomAccessFile(file, "rw")
val l = f.channel.tryLock()
if (l == null) {
println("It appears there is already a node running with the specified data directory $dir")
println("Shut that other node down and try again. It may have process ID ${file.readText()}")
System.exit(1)
}
nodeFileLock = l
if (!file.exists()) {
file.createNewFile()
}
file.deleteOnExit()
val f = RandomAccessFile(file, "rw")
val l = f.channel.tryLock()
if (l == null) {
println("It appears there is already a node running with the specified data directory $dir")
println("Shut that other node down and try again. It may have process ID ${file.readText()}")
System.exit(1)
}
nodeFileLock = l
val ourProcessID: String = ManagementFactory.getRuntimeMXBean().name.split("@")[0]
Files.write(pidPath, ourProcessID.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)
pidPath.toFile().deleteOnExit()
if (nodeFileLock == null)
nodeFileLock = RandomAccessFile(file, "rw").channel.lock()
}
f.setLength(0)
f.write(ourProcessID.toByteArray())
}
}