Skip to content
This repository was archived by the owner on May 4, 2019. It is now read-only.

Commit c2f1ec4

Browse files
committed
Merge branch 'release/0.8.10'
2 parents c49718f + 3210e5e commit c2f1ec4

File tree

80 files changed

+2258
-6599
lines changed

Some content is hidden

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

80 files changed

+2258
-6599
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Netifi Proteus Java
22

3-
<a href='https://travis-ci.org/netifi-proteus/proteus-java'><img src='https://travis-ci.org/netifi-proteus/proteus-java.svg?branch=master'></a>
3+
[![Join the chat at https://gitter.im/netifi/general](https://badges.gitter.im/netifi/general.svg)](https://gitter.im/netifi/general) <a href='https://travis-ci.org/netifi-proteus/proteus-java'><img src='https://travis-ci.org/netifi-proteus/proteus-java.svg?branch=master'></a>
44

55

66
## Build from Source

build.gradle

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,37 +46,16 @@ project(':broker-mgmt-idl') {
4646
apply from: file('../gradle/java.gradle')
4747
}
4848

49-
project(':client') {
50-
description = 'Netifi Proteus Client'
51-
ext.artifactName = 'client'
52-
53-
apply from: file('../gradle/java.gradle')
54-
}
55-
56-
project(':core') {
57-
description = 'Netifi Core Library'
58-
ext.artifactName = 'core'
59-
60-
apply from: file('../gradle/java.gradle')
61-
}
62-
63-
project(':core-idl') {
64-
description = 'Netifi Core IDL'
65-
ext.artifactName = 'core-idl'
66-
67-
apply from: file('../gradle/java.gradle')
68-
}
69-
7049
project(':frames') {
7150
description = 'Netifi Proteus Frames'
7251
ext.artifactName = 'frames'
7352

7453
apply from: file('../gradle/java.gradle')
7554
}
7655

77-
project(':metrics-idl') {
78-
description = 'Netifi Proteus Metrics IDL'
79-
ext.artifactName = 'metrics-idl'
56+
project(':client') {
57+
description = 'Netifi Proteus Client'
58+
ext.artifactName = 'client'
8059

8160
apply from: file('../gradle/java.gradle')
8261
}
@@ -95,13 +74,6 @@ project(':metrics-prometheus') {
9574
apply from: file('../gradle/java.gradle')
9675
}
9776

98-
project(':protobuf-rpc') {
99-
description = 'Netifi Proteus RPC'
100-
ext.artifactName = 'protobuf-rpc'
101-
102-
//apply from: file('../gradle/java.gradle')
103-
}
104-
10577
project(':tracing-openzipkin') {
10678
description = 'Netifi Proteus Openzipkin Integration'
10779
ext.artifactName = 'tracing-openzipkin'
@@ -116,3 +88,17 @@ project(':tracing-idl') {
11688

11789
apply from: file('../gradle/java.gradle')
11890
}
91+
92+
project(':viz-idl') {
93+
description = 'Netifi Proteus Vizceral IDL'
94+
ext.artifactName = 'viz-idl'
95+
96+
apply from: file('../gradle/java.gradle')
97+
}
98+
99+
project(':vizceral') {
100+
description = 'Netifi Proteus Vizceral Service'
101+
ext.artifactName = 'vizceral'
102+
103+
apply from: file('../gradle/java.gradle')
104+
}

client/build.gradle

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,45 @@ targetCompatibility = 1.8
88
dependencies {
99
protobuf project (':broker-info-idl')
1010

11-
compile project (':core')
11+
compile 'io.rsocket.rpc:core:0.1.2'
12+
compile 'io.rsocket.rpc:frames:0.1.2'
1213
compile project (':auth')
14+
compile project (':frames')
1315

1416
compile 'com.typesafe:config:1.3.2'
1517
compile 'com.google.guava:guava:22.0'
18+
compile 'io.netty:netty-tcnative:2.0.12.Final:linux-x86_64'
1619

17-
testProtobuf project (':core-idl')
18-
testProtobuf project (':protobuf-rpc')
1920
testCompile 'io.micrometer:micrometer-registry-atlas:1.0.3'
21+
testProtobuf 'io.rsocket.rpc:core-idl:0.1.2'
22+
testCompile 'io.rsocket.rpc:core:0.1.2'
23+
testCompile project(':tracing-openzipkin')
24+
testCompile project(':metrics-micrometer')
25+
testCompile 'javax.inject:javax.inject:1'
26+
testCompile 'junit:junit:4.12'
27+
testCompile 'org.apache.logging.log4j:log4j-api:2.9.0'
28+
testCompile 'org.apache.logging.log4j:log4j-core:2.9.0'
29+
testCompile 'org.apache.logging.log4j:log4j-slf4j-impl:2.9.0'
2030
}
2131

22-
def protocPluginBaseName = "proteus-java-${osdetector.os}-${osdetector.arch}"
23-
def javaPluginPath = "$rootDir/protobuf-rpc/build/exe/java_plugin/$protocPluginBaseName"
24-
2532
protobuf {
2633
generatedFilesBaseDir = "${projectDir}/src/generated"
2734

2835
protoc {
2936
artifact = 'com.google.protobuf:protoc:3.6.0'
3037
}
3138
plugins {
32-
proteus {
33-
path = javaPluginPath
39+
rsocketRpc {
40+
artifact = 'io.rsocket.rpc:protobuf-rpc:0.1.2'
3441
}
3542
}
3643
generateProtoTasks {
3744
all().each { task ->
38-
task.dependsOn ':protobuf-rpc:java_pluginExecutable'
39-
// Recompile protos when the codegen has been changed
40-
task.inputs.file javaPluginPath
4145
// Recompile protos when build.gradle has been changed, because
4246
// it's possible the version of protoc has been changed.
4347
task.inputs.file "${rootProject.projectDir}/build.gradle"
4448
task.plugins {
45-
proteus {}
49+
rsocketRpc {}
4650
}
4751
}
4852
}

client/src/main/java/io/netifi/proteus/DefaultProteusBrokerService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import io.netifi.proteus.presence.PresenceNotifier;
1313
import io.netifi.proteus.rsocket.*;
1414
import io.netifi.proteus.rsocket.transport.WeightedClientTransportSupplier;
15-
import io.netifi.proteus.stats.FrugalQuantile;
16-
import io.netifi.proteus.stats.Quantile;
15+
import io.rsocket.rpc.stats.FrugalQuantile;
16+
import io.rsocket.rpc.stats.Quantile;
1717
import io.netty.buffer.ByteBuf;
1818
import io.netty.buffer.ByteBufAllocator;
1919
import io.netty.buffer.Unpooled;
@@ -29,11 +29,13 @@
2929
import reactor.core.publisher.Mono;
3030
import reactor.core.publisher.MonoProcessor;
3131

32+
import io.rsocket.rpc.rsocket.RequestHandlingRSocket;
33+
import io.netifi.proteus.rsocket.UnwrappingRSocket;
34+
3235
import java.net.InetSocketAddress;
3336
import java.net.SocketAddress;
3437
import java.time.Duration;
3538
import java.util.*;
36-
import java.util.concurrent.atomic.AtomicLong;
3739
import java.util.function.Function;
3840

3941
public class DefaultProteusBrokerService implements ProteusBrokerService, Disposable {

client/src/main/java/io/netifi/proteus/Proteus.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
package io.netifi.proteus;
22

3-
import io.micrometer.core.instrument.MeterRegistry;
43
import io.netifi.proteus.rsocket.ProteusSocket;
5-
import io.netifi.proteus.rsocket.RequestHandlingRSocket;
4+
import io.rsocket.rpc.rsocket.RequestHandlingRSocket;
5+
import io.rsocket.rpc.RSocketRpcService;
66
import io.netty.buffer.ByteBuf;
77
import io.netty.buffer.Unpooled;
8+
import io.netty.handler.ssl.OpenSsl;
9+
import io.netty.handler.ssl.SslContext;
10+
import io.netty.handler.ssl.SslContextBuilder;
11+
import io.netty.handler.ssl.SslProvider;
12+
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
813
import io.opentracing.Tracer;
914
import io.rsocket.Closeable;
1015
import io.rsocket.transport.ClientTransport;
1116
import io.rsocket.transport.netty.client.TcpClientTransport;
1217
import org.slf4j.Logger;
1318
import org.slf4j.LoggerFactory;
19+
import reactor.core.Exceptions;
1420
import reactor.core.publisher.Mono;
1521
import reactor.core.publisher.MonoProcessor;
22+
import reactor.ipc.netty.tcp.TcpClient;
1623

1724
import java.net.InetSocketAddress;
1825
import java.net.SocketAddress;
@@ -94,7 +101,7 @@ public Mono<Void> onClose() {
94101
return onClose;
95102
}
96103

97-
public Proteus addService(ProteusService service) {
104+
public Proteus addService(RSocketRpcService service) {
98105
requestHandlingRSocket.addService(service);
99106
return this;
100107
}
@@ -134,10 +141,7 @@ public static class Builder {
134141
private int missedAcks = DefaultBuilderConfig.getMissedAcks();
135142
private DestinationNameFactory destinationNameFactory;
136143

137-
private MeterRegistry registry = null;
138-
private int batchSize = DefaultBuilderConfig.getBatchSize();
139-
private Function<SocketAddress, ClientTransport> clientTransportFactory =
140-
address -> TcpClientTransport.create((InetSocketAddress) address);
144+
private Function<SocketAddress, ClientTransport> clientTransportFactory = null;
141145
private int poolSize = Runtime.getRuntime().availableProcessors();
142146
private Supplier<Tracer> tracerSupplier = () -> null;
143147

@@ -152,13 +156,8 @@ public Builder poolSize(int poolSize) {
152156
return this;
153157
}
154158

155-
public Builder metricBatchSize(int batchSize) {
156-
this.batchSize = batchSize;
157-
return this;
158-
}
159-
160159
public Builder keepalive(boolean useKeepAlive) {
161-
this.keepalive = keepalive;
160+
this.keepalive = useKeepAlive;
162161
return this;
163162
}
164163

@@ -196,9 +195,7 @@ public Builder seedAddresses(Collection<SocketAddress> addresses) {
196195
if (addresses instanceof List) {
197196
this.seedAddresses = (List<SocketAddress>) addresses;
198197
} else {
199-
List<SocketAddress> list = new ArrayList<>();
200-
list.addAll(addresses);
201-
this.seedAddresses = list;
198+
this.seedAddresses = new ArrayList<>(addresses);
202199
}
203200

204201
return this;
@@ -245,6 +242,35 @@ public Proteus build() {
245242
Objects.requireNonNull(accessToken, "account token is required");
246243
Objects.requireNonNull(group, "group is required");
247244

245+
if (clientTransportFactory == null) {
246+
logger.info("Client transport factory not provided; using TCP transport.");
247+
try {
248+
final SslProvider sslProvider;
249+
if (OpenSsl.isAvailable()) {
250+
logger.info("Native SSL provider is available; will use native provider.");
251+
sslProvider = SslProvider.OPENSSL_REFCNT;
252+
} else {
253+
logger.info("Native SSL provider not available; will use JDK SSL provider.");
254+
sslProvider = SslProvider.JDK;
255+
}
256+
final SslContext sslContext =
257+
SslContextBuilder.forClient()
258+
.trustManager(InsecureTrustManagerFactory.INSTANCE)
259+
.sslProvider(sslProvider)
260+
.build();
261+
clientTransportFactory = address -> {
262+
TcpClient client =
263+
TcpClient.create(
264+
opts ->
265+
opts.connectAddress(() -> address)
266+
.sslContext(sslContext));
267+
return TcpClientTransport.create(client);
268+
};
269+
} catch (Exception sslException) {
270+
throw Exceptions.bubble(sslException);
271+
}
272+
}
273+
248274
this.accessTokenBytes = Base64.getDecoder().decode(accessToken);
249275

250276
if (destinationNameFactory == null) {
@@ -259,7 +285,7 @@ public Proteus build() {
259285
if (seedAddresses == null) {
260286
Objects.requireNonNull(host, "host is required");
261287
Objects.requireNonNull(port, "port is required");
262-
socketAddresses = Arrays.asList(InetSocketAddress.createUnresolved(host, port));
288+
socketAddresses = Collections.singletonList(InetSocketAddress.createUnresolved(host, port));
263289
} else {
264290
socketAddresses = seedAddresses;
265291
}

client/src/main/java/io/netifi/proteus/presence/BrokerInfoPresenceNotifier.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public void watch(String group) {
5555
}
5656
}
5757
})
58+
.onErrorResume(err -> Mono.delay(Duration.ofMillis(500)).then(Mono.error(err)))
5859
.retry()
5960
.subscribe(this::joinEvent));
6061
}

core/src/main/java/io/netifi/proteus/rsocket/UnwrappingRSocket.java renamed to client/src/main/java/io/netifi/proteus/rsocket/UnwrappingRSocket.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package io.netifi.proteus.rsocket;
22

3-
import io.netifi.proteus.frames.*;
43
import io.netty.buffer.ByteBuf;
54
import io.rsocket.Payload;
65
import io.rsocket.RSocket;
6+
import io.netifi.proteus.frames.*;
77
import io.rsocket.util.ByteBufPayload;
88
import io.rsocket.util.RSocketProxy;
99
import org.reactivestreams.Publisher;
1010
import reactor.core.publisher.Flux;
1111
import reactor.core.publisher.Mono;
1212

13-
// Need to unwrap Proteus Messages
13+
// Need to unwrap RSocketRpc Messages
1414
public class UnwrappingRSocket extends RSocketProxy {
1515

1616
public UnwrappingRSocket(RSocket source) {

client/src/main/java/io/netifi/proteus/rsocket/WeightedReconnectingRSocket.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.netifi.proteus.rsocket;
22

33
import io.netifi.proteus.DestinationNameFactory;
4-
import io.netifi.proteus.exception.TimeoutException;
4+
import io.rsocket.rpc.exception.TimeoutException;
55
import io.netifi.proteus.rsocket.transport.WeightedClientTransportSupplier;
6-
import io.netifi.proteus.stats.Ewma;
7-
import io.netifi.proteus.stats.Median;
8-
import io.netifi.proteus.stats.Quantile;
6+
import io.rsocket.rpc.stats.Ewma;
7+
import io.rsocket.rpc.stats.Median;
8+
import io.rsocket.rpc.stats.Quantile;
99
import io.netty.buffer.ByteBuf;
1010
import io.netty.buffer.ByteBufUtil;
1111
import io.rsocket.*;

client/src/main/java/io/netifi/proteus/rsocket/transport/WeightedClientTransportSupplier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.netifi.proteus.rsocket.transport;
22

33
import io.netifi.proteus.rsocket.WeightedRSocket;
4-
import io.netifi.proteus.stats.Ewma;
4+
import io.rsocket.rpc.stats.Ewma;
55
import io.rsocket.Closeable;
66
import io.rsocket.transport.ClientTransport;
77
import io.rsocket.util.Clock;

client/src/test/java/io/netifi/proteus/integration/ProteusIntegrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
@Ignore
2525
public class ProteusIntegrationTest {
2626

27-
private static final long accessKey = 3855261330795754807L;
27+
private static final long accessKey = 9007199254740991L;
2828
private static final String accessToken = "kTBDVtfRBO4tHOnZzSyY5ym2kfY=";
29-
private static final String host = "localhost";
29+
private static final String host = "edge.netifi.io";
3030
private static final int port = 8001;
3131
private static final int server_port = 8001;
3232
private static Proteus server;

0 commit comments

Comments
 (0)