Program: 82378
Project: 82378
Buggy source:
public static ThriftServer createServer(int serverIndex,BlurConfiguration configuration,boolean randomPort) throws Exception {
  Configuration config=new Configuration();
  TableContext.setSystemBlurConfiguration(configuration);
  TableContext.setSystemConfiguration(config);
  String bindAddress=configuration.get(BLUR_SHARD_BIND_ADDRESS);
  int bindPort=configuration.getInt(BLUR_SHARD_BIND_PORT,-1);
  bindPort+=serverIndex;
  if (randomPort) {
    bindPort=0;
  }
  TNonblockingServerSocket tNonblockingServerSocket=ThriftServer.getTNonblockingServerSocket(bindAddress,bindPort);
  if (randomPort) {
    bindPort=tNonblockingServerSocket.getServerSocket().getLocalPort();
  }
  int baseGuiPort=Integer.parseInt(configuration.get(BLUR_GUI_SHARD_PORT));
  final HttpJettyServer httpServer;
  if (baseGuiPort > 0) {
    int webServerPort=baseGuiPort + serverIndex;
    httpServer=new HttpJettyServer(bindPort,webServerPort,configuration.getInt(BLUR_CONTROLLER_BIND_PORT,-1),configuration.getInt(BLUR_SHARD_BIND_PORT,-1),configuration.getInt(BLUR_GUI_CONTROLLER_PORT,-1),configuration.getInt(BLUR_GUI_SHARD_PORT,-1),"String_Node_Str");
  }
 else {
    httpServer=null;
  }
  Set<Entry<String,String>> set=configuration.getProperties().entrySet();
  for (  Entry<String,String> e : set) {
    String key=e.getKey();
    if (key.startsWith("String_Node_Str")) {
      int index=key.lastIndexOf('.');
      int bufferSize=Integer.parseInt(key.substring(index + 1));
      long amount=Long.parseLong(e.getValue());
      BufferStore.initNewBuffer(bufferSize,amount);
    }
  }
  BlockCacheDirectoryFactory blockCacheDirectoryFactory;
  String blockCacheVersion=configuration.get(BLUR_SHARD_BLOCK_CACHE_VERSION,"String_Node_Str");
  long totalNumberOfBytes=configuration.getLong(BLUR_SHARD_BLOCK_CACHE_TOTAL_SIZE,VM.maxDirectMemory() - _64MB);
  if (blockCacheVersion.equals("String_Node_Str")) {
    blockCacheDirectoryFactory=new BlockCacheDirectoryFactoryV1(configuration,totalNumberOfBytes);
  }
 else   if (blockCacheVersion.equals("String_Node_Str")) {
    blockCacheDirectoryFactory=new BlockCacheDirectoryFactoryV2(configuration,totalNumberOfBytes);
  }
 else {
    throw new RuntimeException("String_Node_Str" + blockCacheVersion + "String_Node_Str");
  }
  LOG.info("String_Node_Str",serverIndex,bindAddress + "String_Node_Str" + bindPort,randomPort);
  String nodeNameHostName=getNodeName(configuration,BLUR_SHARD_HOSTNAME);
  String nodeName=nodeNameHostName + "String_Node_Str" + bindPort;
  String zkConnectionStr=isEmpty(configuration.get(BLUR_ZOOKEEPER_CONNECTION),BLUR_ZOOKEEPER_CONNECTION);
  BlurQueryChecker queryChecker=new BlurQueryChecker(configuration);
  int sessionTimeout=configuration.getInt(BLUR_ZOOKEEPER_TIMEOUT,BLUR_ZOOKEEPER_TIMEOUT_DEFAULT);
  final ZooKeeper zooKeeper=ZkUtils.newZooKeeper(zkConnectionStr,sessionTimeout);
  String cluster=configuration.get(BLUR_CLUSTER_NAME,BLUR_CLUSTER);
  BlurUtil.setupZookeeper(zooKeeper,cluster);
  final ZookeeperClusterStatus clusterStatus=new ZookeeperClusterStatus(zooKeeper,configuration);
  final BlurIndexRefresher refresher=new BlurIndexRefresher();
  BlurFilterCache filterCache=getFilterCache(configuration);
  BlurIndexWarmup indexWarmup=BlurIndexWarmup.getIndexWarmup(configuration);
  DistributedLayoutFactory distributedLayoutFactory=DistributedLayoutFactoryImpl.getDistributedLayoutFactory(configuration,cluster,zooKeeper);
  long safeModeDelay=configuration.getLong(BLUR_SHARD_SAFEMODEDELAY,60000);
  int shardOpenerThreadCount=configuration.getInt(BLUR_SHARD_OPENER_THREAD_COUNT,16);
  int internalSearchThreads=configuration.getInt(BLUR_SHARD_WARMUP_THREAD_COUNT,16);
  int warmupThreads=configuration.getInt(BLUR_SHARD_WARMUP_THREAD_COUNT,16);
  int maxMergeThreads=configuration.getInt(BLUR_SHARD_MERGE_THREAD_COUNT,3);
  final DistributedIndexServer indexServer=new DistributedIndexServer(config,zooKeeper,clusterStatus,indexWarmup,filterCache,blockCacheDirectoryFactory,distributedLayoutFactory,cluster,nodeName,safeModeDelay,shardOpenerThreadCount,internalSearchThreads,warmupThreads,maxMergeThreads);
  BooleanQuery.setMaxClauseCount(configuration.getInt(BLUR_MAX_CLAUSE_COUNT,1024));
  int maxHeapPerRowFetch=configuration.getInt(BLUR_MAX_HEAP_PER_ROW_FETCH,10000000);
  int fetchCount=configuration.getInt(BLUR_SHARD_FETCHCOUNT,100);
  int indexManagerThreadCount=configuration.getInt(BLUR_INDEXMANAGER_SEARCH_THREAD_COUNT,32);
  int mutateThreadCount=configuration.getInt(BLUR_INDEXMANAGER_MUTATE_THREAD_COUNT,32);
  int facetThreadCount=configuration.getInt(BLUR_INDEXMANAGER_FACET_THREAD_COUNT,16);
  long statusCleanupTimerDelay=TimeUnit.SECONDS.toMillis(10);
  final IndexManager indexManager=new IndexManager(indexServer,clusterStatus,filterCache,maxHeapPerRowFetch,fetchCount,indexManagerThreadCount,mutateThreadCount,statusCleanupTimerDelay,facetThreadCount);
  final BlurShardServer shardServer=new BlurShardServer();
  shardServer.setIndexServer(indexServer);
  shardServer.setIndexManager(indexManager);
  shardServer.setZookeeper(zooKeeper);
  shardServer.setClusterStatus(clusterStatus);
  shardServer.setQueryChecker(queryChecker);
  shardServer.setConfiguration(configuration);
  shardServer.setMaxRecordsPerRowFetchRequest(configuration.getInt(BLUR_MAX_RECORDS_PER_ROW_FETCH_REQUEST,1000));
  shardServer.setConfiguration(configuration);
  shardServer.init();
  final TraceStorage traceStorage=setupTraceStorage(configuration);
  Trace.setStorage(traceStorage);
  Trace.setNodeName(nodeName);
  Iface iface=BlurUtil.wrapFilteredBlurServer(configuration,shardServer,true);
  iface=BlurUtil.recordMethodCallsAndAverageTimes(iface,Iface.class,false);
  iface=BlurUtil.runWithUser(iface,false);
  iface=BlurUtil.runTrace(iface,false);
  if (httpServer != null) {
    WebAppContext context=httpServer.getContext();
    context.addServlet(new ServletHolder(new TServlet(new Blur.Processor<Blur.Iface>(iface),new TJSONProtocol.Factory())),"String_Node_Str");
    context.addServlet(new ServletHolder(new JSONReporterServlet()),"String_Node_Str");
    if (enableJsonReporter) {
      JSONReporter.enable("String_Node_Str",1,TimeUnit.SECONDS,60);
    }
  }
  int threadCount=configuration.getInt(BLUR_SHARD_SERVER_THRIFT_THREAD_COUNT,32);
  ShardServerEventHandler eventHandler=new ShardServerEventHandler();
  final ThriftBlurShardServer server=new ThriftBlurShardServer();
  server.setNodeName(nodeName);
  server.setServerTransport(tNonblockingServerSocket);
  server.setThreadCount(threadCount);
  server.setIface(iface);
  server.setEventHandler(eventHandler);
  server.setAcceptQueueSizePerThread(configuration.getInt(BLUR_SHARD_THRIFT_ACCEPT_QUEUE_SIZE_PER_THREAD,4));
  server.setMaxReadBufferBytes(configuration.getLong(BLUR_SHARD_THRIFT_MAX_READ_BUFFER_BYTES,Long.MAX_VALUE));
  server.setSelectorThreads(configuration.getInt(BLUR_SHARD_THRIFT_SELECTOR_THREADS,2));
  server.setMaxFrameSize(config.getInt(BLUR_THRIFT_MAX_FRAME_SIZE,16384000));
  BlurShutdown shutdown=new BlurShutdown(){
    @Override public void shutdown(){
      ThreadWatcher threadWatcher=ThreadWatcher.instance();
      quietClose(traceStorage,refresher,server,shardServer,indexManager,indexServer,threadWatcher,clusterStatus,zooKeeper,httpServer);
    }
  }
;
  server.setShutdown(shutdown);
  new BlurServerShutDown().register(shutdown,zooKeeper);
  return server;
}

Fixed version (ground truth):
public static ThriftServer createServer(int serverIndex,BlurConfiguration configuration,boolean randomPort) throws Exception {
  Configuration config=new Configuration();
  TableContext.setSystemBlurConfiguration(configuration);
  TableContext.setSystemConfiguration(config);
  String bindAddress=configuration.get(BLUR_SHARD_BIND_ADDRESS);
  int bindPort=configuration.getInt(BLUR_SHARD_BIND_PORT,-1);
  bindPort+=serverIndex;
  if (randomPort) {
    bindPort=0;
  }
  TNonblockingServerSocket tNonblockingServerSocket=ThriftServer.getTNonblockingServerSocket(bindAddress,bindPort);
  if (randomPort) {
    bindPort=tNonblockingServerSocket.getServerSocket().getLocalPort();
  }
  int baseGuiPort=Integer.parseInt(configuration.get(BLUR_GUI_SHARD_PORT));
  final HttpJettyServer httpServer;
  if (baseGuiPort > 0) {
    int webServerPort=baseGuiPort + serverIndex;
    httpServer=new HttpJettyServer(bindPort,webServerPort,configuration.getInt(BLUR_CONTROLLER_BIND_PORT,-1),configuration.getInt(BLUR_SHARD_BIND_PORT,-1),configuration.getInt(BLUR_GUI_CONTROLLER_PORT,-1),configuration.getInt(BLUR_GUI_SHARD_PORT,-1),"String_Node_Str");
  }
 else {
    httpServer=null;
  }
  Set<Entry<String,String>> set=configuration.getProperties().entrySet();
  for (  Entry<String,String> e : set) {
    String key=e.getKey();
    if (key.startsWith("String_Node_Str")) {
      int index=key.lastIndexOf('.');
      int bufferSize=Integer.parseInt(key.substring(index + 1));
      long amount=Long.parseLong(e.getValue());
      BufferStore.initNewBuffer(bufferSize,amount);
    }
  }
  BlockCacheDirectoryFactory blockCacheDirectoryFactory;
  String blockCacheVersion=configuration.get(BLUR_SHARD_BLOCK_CACHE_VERSION,"String_Node_Str");
  long totalNumberOfBytes=configuration.getLong(BLUR_SHARD_BLOCK_CACHE_TOTAL_SIZE,VM.maxDirectMemory() - _64MB);
  if (blockCacheVersion.equals("String_Node_Str")) {
    blockCacheDirectoryFactory=new BlockCacheDirectoryFactoryV1(configuration,totalNumberOfBytes);
  }
 else   if (blockCacheVersion.equals("String_Node_Str")) {
    blockCacheDirectoryFactory=new BlockCacheDirectoryFactoryV2(configuration,totalNumberOfBytes);
  }
 else {
    throw new RuntimeException("String_Node_Str" + blockCacheVersion + "String_Node_Str");
  }
  LOG.info("String_Node_Str",serverIndex,bindAddress + "String_Node_Str" + bindPort,randomPort);
  String nodeNameHostName=getNodeName(configuration,BLUR_SHARD_HOSTNAME);
  String nodeName=nodeNameHostName + "String_Node_Str" + bindPort;
  String zkConnectionStr=isEmpty(configuration.get(BLUR_ZOOKEEPER_CONNECTION),BLUR_ZOOKEEPER_CONNECTION);
  BlurQueryChecker queryChecker=new BlurQueryChecker(configuration);
  int sessionTimeout=configuration.getInt(BLUR_ZOOKEEPER_TIMEOUT,BLUR_ZOOKEEPER_TIMEOUT_DEFAULT);
  final ZooKeeper zooKeeper=ZkUtils.newZooKeeper(zkConnectionStr,sessionTimeout);
  String cluster=configuration.get(BLUR_CLUSTER_NAME,BLUR_CLUSTER);
  BlurUtil.setupZookeeper(zooKeeper,cluster);
  final ZookeeperClusterStatus clusterStatus=new ZookeeperClusterStatus(zooKeeper,configuration);
  final BlurIndexRefresher refresher=new BlurIndexRefresher();
  BlurFilterCache filterCache=getFilterCache(configuration);
  BlurIndexWarmup indexWarmup=BlurIndexWarmup.getIndexWarmup(configuration);
  DistributedLayoutFactory distributedLayoutFactory=DistributedLayoutFactoryImpl.getDistributedLayoutFactory(configuration,cluster,zooKeeper);
  long safeModeDelay=configuration.getLong(BLUR_SHARD_SAFEMODEDELAY,60000);
  int shardOpenerThreadCount=configuration.getInt(BLUR_SHARD_OPENER_THREAD_COUNT,16);
  int internalSearchThreads=configuration.getInt(BLUR_SHARD_WARMUP_THREAD_COUNT,16);
  int warmupThreads=configuration.getInt(BLUR_SHARD_WARMUP_THREAD_COUNT,16);
  int maxMergeThreads=configuration.getInt(BLUR_SHARD_MERGE_THREAD_COUNT,3);
  final DistributedIndexServer indexServer=new DistributedIndexServer(config,zooKeeper,clusterStatus,indexWarmup,filterCache,blockCacheDirectoryFactory,distributedLayoutFactory,cluster,nodeName,safeModeDelay,shardOpenerThreadCount,internalSearchThreads,warmupThreads,maxMergeThreads);
  BooleanQuery.setMaxClauseCount(configuration.getInt(BLUR_MAX_CLAUSE_COUNT,1024));
  int maxHeapPerRowFetch=configuration.getInt(BLUR_MAX_HEAP_PER_ROW_FETCH,10000000);
  int remoteFetchCount=configuration.getInt(BLUR_CONTROLLER_REMOTE_FETCH_COUNT,100);
  int fetchCount=configuration.getInt(BLUR_SHARD_FETCHCOUNT,110);
  if (fetchCount + 1 <= remoteFetchCount) {
    LOG.warn("String_Node_Str" + BLUR_SHARD_FETCHCOUNT + "String_Node_Str"+ fetchCount+ "String_Node_Str"+ BLUR_CONTROLLER_REMOTE_FETCH_COUNT+ "String_Node_Str"+ remoteFetchCount+ "String_Node_Str");
  }
  int indexManagerThreadCount=configuration.getInt(BLUR_INDEXMANAGER_SEARCH_THREAD_COUNT,32);
  int mutateThreadCount=configuration.getInt(BLUR_INDEXMANAGER_MUTATE_THREAD_COUNT,32);
  int facetThreadCount=configuration.getInt(BLUR_INDEXMANAGER_FACET_THREAD_COUNT,16);
  long statusCleanupTimerDelay=TimeUnit.SECONDS.toMillis(10);
  final IndexManager indexManager=new IndexManager(indexServer,clusterStatus,filterCache,maxHeapPerRowFetch,fetchCount,indexManagerThreadCount,mutateThreadCount,statusCleanupTimerDelay,facetThreadCount);
  final BlurShardServer shardServer=new BlurShardServer();
  shardServer.setIndexServer(indexServer);
  shardServer.setIndexManager(indexManager);
  shardServer.setZookeeper(zooKeeper);
  shardServer.setClusterStatus(clusterStatus);
  shardServer.setQueryChecker(queryChecker);
  shardServer.setConfiguration(configuration);
  shardServer.setMaxRecordsPerRowFetchRequest(configuration.getInt(BLUR_MAX_RECORDS_PER_ROW_FETCH_REQUEST,1000));
  shardServer.setConfiguration(configuration);
  shardServer.init();
  final TraceStorage traceStorage=setupTraceStorage(configuration);
  Trace.setStorage(traceStorage);
  Trace.setNodeName(nodeName);
  Iface iface=BlurUtil.wrapFilteredBlurServer(configuration,shardServer,true);
  iface=BlurUtil.recordMethodCallsAndAverageTimes(iface,Iface.class,false);
  iface=BlurUtil.runWithUser(iface,false);
  iface=BlurUtil.runTrace(iface,false);
  if (httpServer != null) {
    WebAppContext context=httpServer.getContext();
    context.addServlet(new ServletHolder(new TServlet(new Blur.Processor<Blur.Iface>(iface),new TJSONProtocol.Factory())),"String_Node_Str");
    context.addServlet(new ServletHolder(new JSONReporterServlet()),"String_Node_Str");
    if (enableJsonReporter) {
      JSONReporter.enable("String_Node_Str",1,TimeUnit.SECONDS,60);
    }
  }
  int threadCount=configuration.getInt(BLUR_SHARD_SERVER_THRIFT_THREAD_COUNT,32);
  ShardServerEventHandler eventHandler=new ShardServerEventHandler();
  final ThriftBlurShardServer server=new ThriftBlurShardServer();
  server.setNodeName(nodeName);
  server.setServerTransport(tNonblockingServerSocket);
  server.setThreadCount(threadCount);
  server.setIface(iface);
  server.setEventHandler(eventHandler);
  server.setAcceptQueueSizePerThread(configuration.getInt(BLUR_SHARD_THRIFT_ACCEPT_QUEUE_SIZE_PER_THREAD,4));
  server.setMaxReadBufferBytes(configuration.getLong(BLUR_SHARD_THRIFT_MAX_READ_BUFFER_BYTES,Long.MAX_VALUE));
  server.setSelectorThreads(configuration.getInt(BLUR_SHARD_THRIFT_SELECTOR_THREADS,2));
  server.setMaxFrameSize(config.getInt(BLUR_THRIFT_MAX_FRAME_SIZE,16384000));
  BlurShutdown shutdown=new BlurShutdown(){
    @Override public void shutdown(){
      ThreadWatcher threadWatcher=ThreadWatcher.instance();
      quietClose(traceStorage,refresher,server,shardServer,indexManager,indexServer,threadWatcher,clusterStatus,zooKeeper,httpServer);
    }
  }
;
  server.setShutdown(shutdown);
  new BlurServerShutDown().register(shutdown,zooKeeper);
  return server;
}