|
@@ -55,6 +55,8 @@ import java.io.IOException;
|
|
|
import java.net.InetSocketAddress;
|
|
|
import java.net.URL;
|
|
|
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_JOURNALNODE_HANDLER_COUNT_DEFAULT;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_JOURNALNODE_HANDLER_COUNT_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_JOURNALNODE_RPC_BIND_HOST_KEY;
|
|
|
|
|
|
|
|
@@ -63,9 +65,9 @@ import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_JOURNALNODE_RPC_BIND_HOST
|
|
|
public class JournalNodeRpcServer implements QJournalProtocol,
|
|
|
InterQJournalProtocol {
|
|
|
private static final Logger LOG = JournalNode.LOG;
|
|
|
- private static final int HANDLER_COUNT = 5;
|
|
|
private final JournalNode jn;
|
|
|
private Server server;
|
|
|
+ private final int handlerCount;
|
|
|
|
|
|
JournalNodeRpcServer(Configuration conf, JournalNode jn) throws IOException {
|
|
|
this.jn = jn;
|
|
@@ -90,13 +92,25 @@ public class JournalNodeRpcServer implements QJournalProtocol,
|
|
|
new QJournalProtocolServerSideTranslatorPB(this);
|
|
|
BlockingService service = QJournalProtocolService
|
|
|
.newReflectiveBlockingService(translator);
|
|
|
+ int confHandlerCount = conf.getInt(DFS_JOURNALNODE_HANDLER_COUNT_KEY,
|
|
|
+ DFS_JOURNALNODE_HANDLER_COUNT_DEFAULT);
|
|
|
+ if (confHandlerCount <= 0) {
|
|
|
+ LOG.warn("Invalid value for: {} = {}, Should be > 0,"
|
|
|
+ + " will use default value of: {}.",
|
|
|
+ DFS_JOURNALNODE_HANDLER_COUNT_KEY, confHandlerCount,
|
|
|
+ DFS_JOURNALNODE_HANDLER_COUNT_DEFAULT);
|
|
|
+ confHandlerCount = DFS_JOURNALNODE_HANDLER_COUNT_DEFAULT;
|
|
|
+ }
|
|
|
+ this.handlerCount = confHandlerCount;
|
|
|
+ LOG.info("The number of JournalNodeRpcServer handlers is {}.",
|
|
|
+ this.handlerCount);
|
|
|
|
|
|
this.server = new RPC.Builder(confCopy)
|
|
|
.setProtocol(QJournalProtocolPB.class)
|
|
|
.setInstance(service)
|
|
|
.setBindAddress(bindHost)
|
|
|
.setPort(addr.getPort())
|
|
|
- .setNumHandlers(HANDLER_COUNT)
|
|
|
+ .setNumHandlers(this.handlerCount)
|
|
|
.setVerbose(false)
|
|
|
.build();
|
|
|
|
|
@@ -121,6 +135,11 @@ public class JournalNodeRpcServer implements QJournalProtocol,
|
|
|
this.server.setTracer(jn.tracer);
|
|
|
}
|
|
|
|
|
|
+ @VisibleForTesting
|
|
|
+ protected int getHandlerCount() {
|
|
|
+ return this.handlerCount;
|
|
|
+ }
|
|
|
+
|
|
|
void start() {
|
|
|
this.server.start();
|
|
|
}
|