private RegisterApplicationMasterResponse registerApplicationMaster()
     throws YarnException, IOException {
   RegisterApplicationMasterRequest request =
       RegisterApplicationMasterRequest.newInstance(
           this.appHostName, this.appHostPort, this.appTrackingUrl);
   RegisterApplicationMasterResponse response = rmClient.registerApplicationMaster(request);
   synchronized (this) {
     lastResponseId = 0;
     if (!response.getNMTokensFromPreviousAttempts().isEmpty()) {
       populateNMTokens(response.getNMTokensFromPreviousAttempts());
     }
   }
   return response;
 }