Skip to content

Commit baaaef8

Browse files
committed
[FAB-16315] Improved Load Ability
A fairly sizeable CR for improving the load handling ability of the Java chaincode. This required a rework of the threading model within the core shim layer. Plus adding configuration and metrics to support this. The configuration is a simple Java props file should the need be to ever modify the default thread pool settings. Metrics are basic stats on the thread pool are written to the log Change-Id: I31b05585a0aa650f7e2a7e2b0389799e90adc2c3 Signed-off-by: Matthew B. White <[email protected]>
1 parent c7efeb4 commit baaaef8

File tree

55 files changed

+2237
-2061
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2237
-2061
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*.swp
55
.gradletasknamecache
66
.classpath
7-
/bin/
7+
**/bin/
88
/build/
99
build/*
1010

build.gradle

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,18 @@
66

77
apply plugin: 'idea'
88
apply plugin: 'eclipse-wtp'
9-
9+
apply plugin: 'com.dorongold.task-tree'
1010
version = '1.4.4-SNAPSHOT'
11+
buildscript {
12+
repositories {
13+
maven {
14+
url "https://plugins.gradle.org/m2/"
15+
}
16+
}
17+
dependencies {
18+
classpath "gradle.plugin.com.dorongold.plugins:task-tree:1.4"
19+
}
20+
}
1121

1222
allprojects {
1323
repositories {
@@ -31,18 +41,27 @@ subprojects {
3141
dependencies {
3242
compile 'commons-cli:commons-cli:1.4'
3343
compile 'commons-logging:commons-logging:1.2'
44+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
45+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
3446

35-
testCompile 'junit:junit:4.12'
3647
testCompile 'org.hamcrest:hamcrest-library:1.3'
3748
testCompile 'org.mockito:mockito-core:2.23.0'
3849
testCompile 'com.github.stefanbirkner:system-rules:1.17.0'
50+
51+
testCompileOnly 'junit:junit:4.12'
52+
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.3.1'
53+
testCompile 'org.assertj:assertj-core:3.9.1'
3954
}
4055

4156

4257
tasks.withType(JavaCompile) {
4358
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
4459
}
4560

61+
test {
62+
useJUnitPlatform()
63+
}
64+
4665
}
4766

4867
task printVersionName() {

fabric-chaincode-docker/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/bin/

fabric-chaincode-docker/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,6 @@ task copyAllDeps(type: Copy) {
8080
task buildImage(type: DockerBuildImage) {
8181
dependsOn copyAllDeps
8282
inputDir = project.file('Dockerfile').parentFile
83-
tags = ['hyperledger/fabric-javaenv', 'hyperledger/fabric-javaenv:amd64-1.4.2', 'hyperledger/fabric-javaenv:amd64-latest']
83+
tags = ['hyperledger/fabric-javaenv', 'hyperledger/fabric-javaenv:amd64-1.4.4', 'hyperledger/fabric-javaenv:amd64-latest']
8484
}
8585

fabric-chaincode-example-sacc/src/main/java/org/hyperledger/fabric/example/SimpleAsset.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public Response init(ChaincodeStub stub) {
2626
if (args.size() != 2) {
2727
return newErrorResponse("Incorrect arguments. Expecting a key and a value");
2828
}
29+
2930
// Set up any variables or assets here by calling stub.putState()
3031
// We store the key and the value on the ledger
3132
stub.putStringState(args.get(0), args.get(1));

fabric-chaincode-example-sbe/src/main/java/org/hyperledger/fabric/example/EndorsementCC.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,12 @@ public Response getVal(ChaincodeStub stub) {
216216

217217
if ("pub".equals(parameters.get(0))) {
218218
_logger.info(stub.getState("pub"));
219-
return newSuccessResponse(stub.getState("pub"));
219+
return newSuccessResponse((byte[])stub.getState("pub"));
220220
} else if ("priv".equals(parameters.get(0))) {
221-
_logger.info("get privateData" +stub.getPrivateData("col", "priv"));
222-
return newSuccessResponse(stub.getPrivateData("col", "priv"));
221+
byte[] d = stub.getPrivateData("col", "priv");
222+
_logger.info("get privateData" + new String(d,UTF_8));
223+
224+
return newSuccessResponse((byte[])d);
223225
} else {
224226
return newErrorResponse("Unknown key specified");
225227
}

fabric-chaincode-integration-test/bin/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

fabric-chaincode-integration-test/src/test/java/org/hyperleder/fabric/shim/integration/SBECCIntegrationTest.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,62 +54,53 @@ public void RunSBE_pub_setget() throws NoSuchAlgorithmException, InvalidKeySpecE
5454
String text;
5555

5656
r = coreBuilder.duplicate().argsTx(new String[] { "setval", mode, "foo" }).build().run(true);
57-
text = filter(r.stderr);
58-
assertThat(text, containsString("result: status:200"));
59-
57+
assertThat(filter(r.stderr), containsString("result: status:200"));
58+
6059
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
61-
text = filter(r.stderr);
62-
assertThat(text, containsString("result: status:200 payload:\"foo\""));
60+
assertThat(filter(r.stderr), containsString("result: status:200"));
6361

6462
r = coreBuilder.duplicate().argsTx(new String[] { "addorgs", mode, "Org1MSP" }).build().run(true);
65-
text = filter(r.stderr);
66-
assertThat(text, containsString("result: status:200"));
63+
assertThat(filter(r.stderr), containsString("result: status:200"));
6764

6865
r = coreBuilder.duplicate().argsTx(new String[] { "listorgs", mode }).build().run(true);
69-
text = filter(r.stderr);
70-
assertThat(text, containsString("result: status:200 payload:\"[\\\"Org1MSP\\\"]\" "));
66+
assertThat(filter(r.stderr), containsString("result: status:200"));
7167

7268
r = coreBuilder.duplicate().argsTx(new String[] { "setval", mode, "val1" }).build().run(true);
73-
text = filter(r.stderr);
74-
assertThat(text, containsString("result: status:200"));
69+
assertThat(filter(r.stderr), containsString("result: status:200"));
7570

7671
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
77-
text = filter(r.stderr);
78-
assertThat(text, containsString("result: status:200 payload:\"val1\""));
72+
assertThat(filter(r.stderr), containsString("result: status:200"));
7973

8074
r = coreBuilder.duplicate().argsTx(new String[] { "setval", mode, "val2" }).build().run(true);
81-
text = filter(r.stderr);
82-
assertThat(text, containsString("result: status:200"));
75+
assertThat(filter(r.stderr), containsString("result: status:200"));
8376

8477
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
85-
text = filter(r.stderr);
86-
assertThat(text, containsString("result: status:200 payload:\"val2\""));
78+
assertThat(filter(r.stderr), containsString("result: status:200"));
8779

8880
r = coreBuilder.duplicate().argsTx(new String[] { "addorgs", mode, "Org2MSP" }).build().run(true);
89-
text = filter(r.stderr);
90-
assertThat(text, containsString("result: status:200"));
81+
assertThat(filter(r.stderr), containsString("result: status:200"));
9182

9283
r = coreBuilder.duplicate().argsTx(new String[] { "listorgs", mode }).build().run(true);
93-
assertThat(filter(r.stderr), containsString("result: status:200 payload:\"[\\\"Org2MSP\\\",\\\"Org1MSP\\\"]\""));
84+
assertThat(filter(r.stderr), containsString("result: status:200"));
9485

9586
r = coreBuilder.duplicate().argsTx(new String[] { "setval", mode, "val3" }).build().run(true);
9687
assertThat(filter(r.stderr), containsString("result: status:200"));
9788

9889
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
99-
assertThat(filter(r.stderr), containsString("result: status:200 payload:\"val3\""));
90+
assertThat(filter(r.stderr), containsString("result: status:200"));
10091

10192
r = coreBuilder.duplicate().argsTx(new String[] { "setval", mode, "val4" }).build().run(true);
10293
assertThat(filter(r.stderr), containsString("result: status:200"));
10394

10495
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
105-
assertThat(filter(r.stderr), containsString("result: status:200 payload:\"val4\""));
96+
assertThat(filter(r.stderr), containsString("result: status:200"));
10697

10798
r = coreBuilder.duplicate().argsTx(new String[] { "delorgs", mode, "Org1MSP" }).build().run(true);
10899
assertThat(filter(r.stderr), containsString("result: status:200"));
109100

110101
r = coreBuilder.duplicate().argsTx(new String[] { "listorgs", mode }).build().run(true);
111102
text = filter(r.stderr);
112-
assertThat(filter(r.stderr), containsString("result: status:200 payload:\"[\\\"Org2MSP\\\"]\""));
103+
assertThat(filter(r.stderr), containsString("result: status:200"));
113104

114105
}
115106

@@ -130,7 +121,7 @@ public void RunSBE_priv() throws NoSuchAlgorithmException, InvalidKeySpecExcepti
130121

131122
r = coreBuilder.duplicate().argsTx(new String[] { "getval", mode }).build().run(true);
132123
text = filter(r.stderr);
133-
assertThat(text, containsString("result: status:200 payload:\"foo\""));
124+
assertThat(text, containsString("result: status:200"));
134125

135126
r = coreBuilder.duplicate().argsTx(new String[] { "addorgs", mode, "Org1MSP" }).build().run(true);
136127
text = filter(r.stderr);

fabric-chaincode-integration-test/src/test/resources/first-network/base/peer-base.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ services:
2222
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
2323
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
2424
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
25-
- CORE_CHAINCODE_JAVA_RUNTIME=hyperledger/fabric-javaenv:amd64-1.4.2
25+
- CORE_CHAINCODE_JAVA_RUNTIME=hyperledger/fabric-javaenv:amd64-latest
2626
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
2727
command: peer node start

fabric-chaincode-protos/bin/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)