[
https://issues.apache.org/jira/browse/HBASE-3628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Stack resolved HBASE-3628.
----------------------------------
Resolution: Won't Fix
Stale. Context is different now.
> Add upper bound on threads for TThreadPoolServer; too many have run into the
> OOME can't create native thread because thrift spawns w/o bound
> --------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-3628
> URL: https://issues.apache.org/jira/browse/HBASE-3628
> Project: HBase
> Issue Type: Bug
> Components: Thrift
> Reporter: Michael Stack
> Priority: Major
> Labels: thrift, thrift2
>
> See tail of this thread:
> http://search-hadoop.com/m/Ooyif0dZ89/major+hdfs+issues&subj=Re+major+hdfs+issues
> We need to hack in something like the below:
> {code}
> diff --git a/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
> b/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
> index 06621ab..74856af 100644
> --- a/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
> +++ b/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java
> @@ -69,6 +69,7 @@ import org.apache.hadoop.hbase.thrift.generated.TRegionInfo;
> import org.apache.hadoop.hbase.thrift.generated.TRowResult;
> import org.apache.hadoop.hbase.util.Bytes;
> import org.apache.thrift.TException;
> +import org.apache.thrift.TProcessorFactory;
> import org.apache.thrift.protocol.TBinaryProtocol;
> import org.apache.thrift.protocol.TCompactProtocol;
> import org.apache.thrift.protocol.TProtocolFactory;
> @@ -911,9 +912,25 @@ public class ThriftServer {
> } else {
> transportFactory = new TTransportFactory();
> }
> -
> - LOG.info("starting HBase ThreadPool Thrift server on " + listenAddress
> + ":" + Integer.toString(listenPort));
> - server = new TThreadPoolServer(processor, serverTransport,
> transportFactory, protocolFactory);
> + TThreadPoolServer.Options poolServerOptions =
> + new TThreadPoolServer.Options();
> + int maxWorkerThreads = Integer.MAX_VALUE;
> + if (cmd.hasOption("maxWorkerThreads")) {
> + try {
> + maxWorkerThreads =
> + Integer.parseInt(cmd.getOptionValue("maxWorkerThreads", "" +
> Integer.MAX_VALUE));
> + } catch (NumberFormatException e) {
> + LOG.error("Could not parse maxWorkerThreads option", e);
> + printUsageAndExit(options, -1);
> + }
> + }
> + poolServerOptions.maxWorkerThreads = maxWorkerThreads;
> + LOG.info("starting HBase ThreadPool Thrift server on " + listenAddress
> +
> + ":" + Integer.toString(listenPort) +
> + ", maxWorkerThreads=" + maxWorkerThreads);
> + server = new TThreadPoolServer(processor, serverTransport,
> + transportFactory, transportFactory, protocolFactory, protocolFactory,
> + poolServerOptions);
> }
> {code}
> ...only with better factoring AND exposing other options in Options; they
> look useful.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)