output: #fixed code
                                  public static void main(String[] args) {
          ProtocolV1Client client = new ProtocolV1Client();
          client.connect("127.0.0.1", 8811, 500);
  
          Map<String, String> head = new HashMap<>();
          head.put("tracerId", "xxadadadada");
          head.put("token", "adadadad");
  
          BranchCommitRequest body = new BranchCommitRequest();
          body.setBranchId(12345L);
          body.setApplicationData("application");
          body.setBranchType(BranchType.AT);
          body.setResourceId("resource-1234");
          body.setXid("xid-1234");
  
          final int threads = 50;
          final AtomicLong cnt = new AtomicLong(0);
          final ThreadPoolExecutor service1 = new ThreadPoolExecutor(threads, threads, 0L, TimeUnit.MILLISECONDS,
                  new SynchronousQueue<Runnable>(), new NamedThreadFactory("client-", false));// 无队列
          for (int i = 0; i < threads; i++) {
              service1.execute(() -> {
                  while (true) {
                      try {
                          Future future = client.sendRpc(head, body);
                          RpcMessage resp = (RpcMessage) future.get(200, TimeUnit.MILLISECONDS);
                          if (resp != null) {
                              cnt.incrementAndGet();
                          }
                      } catch (Exception e) {
                          // ignore
                      }
                  }
              });
          }
  
          Thread thread = new Thread(new Runnable() {
              private long last = 0;
  
              @Override
              public void run() {
                  while (true) {
                      long count = cnt.get();
                      long tps = count - last;
                      LOGGER.error("last 1s invoke: {}, queue: {}", tps, service1.getQueue().size());
                      last = count;
  
                      try {
                          Thread.sleep(1000);
                      } catch (InterruptedException e) {
                      }
                  }
              }
          }, "Print-tps-THREAD");
          thread.start();
      }
input: #vulnerable code 
                                  public static void main(String[] args) throws InterruptedException, TimeoutException, ExecutionException {
          ProtocolV1Client client = new ProtocolV1Client();
          client.connect("127.0.0.1", 8811, 500);
  
          Map<String, String> head = new HashMap<>();
          head.put("tracerId", "xxadadadada");
          head.put("token", "adadadad");
  
          BranchCommitRequest body = new BranchCommitRequest();
          body.setBranchId(12345L);
          body.setApplicationData("application");
          body.setBranchType(BranchType.AT);
          body.setResourceId("resource-1234");
          body.setXid("xid-1234");
  
          RpcMessage rpcMessage = new RpcMessage();
          rpcMessage.setId(client.idGenerator.incrementAndGet());
          rpcMessage.setCodec(CodecType.SEATA.getCode());
          rpcMessage.setCompressor(ProtocolConstants.CONFIGURED_COMPRESSOR);
          rpcMessage.setHeadMap(head);
          rpcMessage.setBody(body);
          rpcMessage.setMessageType(ProtocolConstants.MSGTYPE_RESQUEST);
  
          Future future = client.send(rpcMessage.getId(), rpcMessage);
          RpcMessage resp = (RpcMessage) future.get(200, TimeUnit.SECONDS);
  
          System.out.println(resp.getId() + " " + resp.getBody());
      } 
                              #location 25 
                              #vulnerability type NULL_DEREFERENCE