use of com.baidu.hugegraph.computer.core.common.exception.TransportException in project hugegraph-computer by hugegraph.
the class NettyServerHandler method exceptionCaught.
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
TransportException exception;
Channel channel = ctx.channel();
if (cause instanceof TransportException) {
exception = (TransportException) cause;
} else {
exception = new TransportException("%s when the server receive data from '%s'", cause, cause.getMessage(), TransportUtil.remoteAddress(channel));
}
ConnectionId connectionId = TransportUtil.remoteConnectionId(channel);
this.handler.exceptionCaught(exception, connectionId);
}
use of com.baidu.hugegraph.computer.core.common.exception.TransportException in project hugegraph-computer by hugegraph.
the class NettyClientFactory method doConnect.
/**
* Connect to the remote server.
*/
protected Channel doConnect(InetSocketAddress address, int connectTimeoutMs) throws TransportException {
E.checkArgumentNotNull(this.bootstrap, "The NettyClientFactory has not been " + "initialized yet");
long preConnect = System.nanoTime();
String formatAddress = TransportUtil.formatAddress(address);
LOG.debug("ConnectTimeout of address [{}] is [{}]", formatAddress, connectTimeoutMs);
ChannelFuture future = this.bootstrap.connect(address);
boolean success = future.awaitUninterruptibly(connectTimeoutMs, TimeUnit.MILLISECONDS);
if (!future.isDone()) {
throw new TransportException("Create connection to '%s' timeout!", formatAddress);
}
if (future.isCancelled()) {
throw new TransportException("Create connection to '%s' cancelled by user!", formatAddress);
}
if (future.cause() != null) {
throw new TransportException("Failed to create connection to '%s', caused by: %s", future.cause(), formatAddress, future.cause().getMessage());
}
if (!success || !future.isSuccess()) {
throw new TransportException("Failed to create connection to '%s'", formatAddress);
}
long postConnect = System.nanoTime();
LOG.info("Successfully created connection to '{}' after {} ms", formatAddress, (postConnect - preConnect) / 1000000L);
return future.channel();
}
use of com.baidu.hugegraph.computer.core.common.exception.TransportException in project hugegraph-computer by hugegraph.
the class NettyClientHandler method exceptionCaught.
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
TransportException exception;
if (cause instanceof TransportException) {
exception = (TransportException) cause;
} else {
exception = new TransportException("%s when the client receive data from '%s'", cause, cause.getMessage(), TransportUtil.remoteAddress(ctx.channel()));
}
this.client.clientHandler().exceptionCaught(exception, this.client.connectionId());
}
use of com.baidu.hugegraph.computer.core.common.exception.TransportException in project hugegraph-computer by hugegraph.
the class DataServerManagerTest method test.
@Test
public void test() {
Config config = UnitTestBase.updateWithRequiredOptions(RpcOptions.RPC_REMOTE_URL, "127.0.0.1:8090", ComputerOptions.JOB_ID, "local_001", ComputerOptions.JOB_WORKERS_COUNT, "1", ComputerOptions.BSP_LOG_INTERVAL, "30000", ComputerOptions.BSP_MAX_SUPER_STEP, "2", ComputerOptions.WORKER_COMPUTATION_CLASS, MockComputation.class.getName(), ComputerOptions.MASTER_COMPUTATION_CLASS, MockMasterComputation.class.getName());
FileManager fileManager = new FileManager();
fileManager.init(config);
SortManager sortManager = new RecvSortManager(context());
sortManager.init(config);
MessageRecvManager recvManager = new MessageRecvManager(context(), fileManager, sortManager);
recvManager.init(config);
ConnectionManager connManager = new TransportConnectionManager();
DataServerManager serverManager = new DataServerManager(connManager, recvManager);
serverManager.init(config);
Assert.assertEquals(DataServerManager.NAME, serverManager.name());
InetSocketAddress address = serverManager.address();
Assert.assertNotEquals(0, address.getPort());
ConnectionId connectionId = ConnectionId.parseConnectionId(address.getHostName(), address.getPort());
recvManager.onChannelActive(connectionId);
recvManager.onChannelInactive(connectionId);
TransportException e = new TransportException("test transport " + "exception");
recvManager.exceptionCaught(e, connectionId);
serverManager.close(config);
fileManager.close(config);
sortManager.close(config);
}
use of com.baidu.hugegraph.computer.core.common.exception.TransportException in project hugegraph-computer by hugegraph.
the class SenderIntegrateTest method slowSendFunc.
private void slowSendFunc(WorkerService service) throws TransportException {
Managers managers = Whitebox.getInternalState(service, "managers");
DataClientManager clientManager = managers.get(DataClientManager.NAME);
ConnectionManager connManager = Whitebox.getInternalState(clientManager, "connManager");
NettyTransportClient client = (NettyTransportClient) connManager.getOrCreateClient("127.0.0.1", 8091);
ClientSession clientSession = Whitebox.invoke(client.getClass(), "clientSession", client);
Function<Message, Future<Void>> sendFuncBak = Whitebox.getInternalState(clientSession, "sendFunction");
Function<Message, Future<Void>> sendFunc = message -> {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return sendFuncBak.apply(message);
};
Whitebox.setInternalState(clientSession, "sendFunction", sendFunc);
}
Aggregations