mirror of
https://github.com/corda/corda.git
synced 2025-02-04 02:01:13 +00:00
Merge remote-tracking branch 'remotes/origin/master' into mnesbit-cor-174-reorganise-for-bank-developers
This commit is contained in:
commit
4fd32c3455
13
build.gradle
13
build.gradle
@ -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
|
||||
|
@ -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
|
||||
|
23
docs/source/release-process.rst
Normal file
23
docs/source/release-process.rst
Normal 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.
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user