private Response protectSubmit(List<Job> jobs) throws JobSubmitException { return protector.execute(jobs, new JobSubmitExecutor<Response>() { @Override public Response execute(List<Job> jobs) throws JobSubmitException { return submitJob(jobs, SubmitType.ASYNC); } }); }
public Response execute(final List<Job> jobs, final JobSubmitExecutor<Response> jobSubmitExecutor) throws JobSubmitException { if (!rateLimiter.tryAcquire(acquireTimeout, TimeUnit.MILLISECONDS)) { throw new JobSubmitProtectException(maxQPS, errorMsg); } return jobSubmitExecutor.execute(jobs); }
@Override protected void beforeStart() { appContext.setRemotingClient(remotingClient); protector = new JobSubmitProtector(appContext); }
/** * 同步提交任务 */ private void syncSubmit(RemotingCommand requestCommand, final SubmitCallback submitCallback) throws JobTrackerNotFoundException { submitCallback.call(remotingClient.invokeSync(requestCommand)); }
@Override public RemotingCommand processRequest(Channel Channel, RemotingCommand request) throws RemotingCommandException { JobFinishedRequest requestBody = request.getBody(); try { if (appContext.getJobCompletedHandler() != null) { appContext.getJobCompletedHandler().onComplete(requestBody.getJobResults()); stat.incHandleFeedbackNum(CollectionUtils.sizeOf(requestBody.getJobResults())); } } catch (Exception t) { LOGGER.error(t.getMessage(), t); } return RemotingCommand.createResponseCommand(JobProtos.ResponseCode.JOB_NOTIFY_SUCCESS.code(), "received successful"); } }
stat.incSubmitSuccessNum(jobs.size()); } else { stat.incSubmitFailedNum(CollectionUtils.sizeOf(response.getFailedJobs()));
public JobClient() { this.stat = new JobClientMStatReporter(appContext); // 监控中心 appContext.setMStatReporter(stat); }
protected boolean retry(List<Job> jobs) { Response response = null; try { // 重试必须走同步,不然会造成文件锁,死锁 response = superSubmitJob(jobs, SubmitType.SYNC); return response.isSuccess(); } catch (Throwable t) { RetryScheduler.LOGGER.error(t.getMessage(), t); } finally { if (response != null && response.isSuccess()) { stat.incSubmitFailStoreNum(jobs.size()); } } return false; } };
@Override public Response submitJob(List<Job> jobs) { Response response; try { response = superSubmitJob(jobs); } catch (JobSubmitProtectException e) { response = new Response(); response.setSuccess(false); response.setFailedJobs(jobs); response.setCode(ResponseCode.SUBMIT_TOO_BUSY_AND_SAVE_FOR_LATER); response.setMsg(response.getMsg() + ", submit too busy"); } if (!response.isSuccess()) { try { for (Job job : response.getFailedJobs()) { jobRetryScheduler.inSchedule(job.getTaskId(), job); stat.incFailStoreNum(); } response.setSuccess(true); response.setCode(ResponseCode.SUBMIT_FAILED_AND_SAVE_FOR_LATER); response.setMsg(response.getMsg() + ", save local fail store and send later !"); LOGGER.warn(JSON.toJSONString(response)); } catch (Exception e) { response.setSuccess(false); response.setMsg(e.getMessage()); } } return response; }
/** * 同步提交任务 */ private void syncSubmit(RemotingCommand requestCommand, final SubmitCallback submitCallback) throws JobTrackerNotFoundException { submitCallback.call(remotingClient.invokeSync(requestCommand)); }
public Response execute(final List<Job> jobs, final JobSubmitExecutor<Response> jobSubmitExecutor) throws JobSubmitException { if (!rateLimiter.tryAcquire(acquireTimeout, TimeUnit.MILLISECONDS)) { throw new JobSubmitProtectException(maxQPS, errorMsg); } return jobSubmitExecutor.execute(jobs); }
@Override public RemotingCommand processRequest(Channel Channel, RemotingCommand request) throws RemotingCommandException { JobFinishedRequest requestBody = request.getBody(); try { if (appContext.getJobCompletedHandler() != null) { appContext.getJobCompletedHandler().onComplete(requestBody.getJobResults()); stat.incHandleFeedbackNum(CollectionUtils.sizeOf(requestBody.getJobResults())); } } catch (Exception t) { LOGGER.error(t.getMessage(), t); } return RemotingCommand.createResponseCommand(JobProtos.ResponseCode.JOB_NOTIFY_SUCCESS.code(), "received successful"); } }
stat.incSubmitSuccessNum(jobs.size()); } else { stat.incSubmitFailedNum(CollectionUtils.sizeOf(response.getFailedJobs()));
private Response protectSubmit(List<Job> jobs) throws JobSubmitException { return protector.execute(jobs, new JobSubmitExecutor<Response>() { @Override public Response execute(List<Job> jobs) throws JobSubmitException { return submitJob(jobs, SubmitType.ASYNC); } }); }
@Override protected void beforeStart() { appContext.setRemotingClient(remotingClient); protector = new JobSubmitProtector(appContext); }
public JobClient() { this.stat = new JobClientMStatReporter(appContext); // 监控中心 appContext.setMStatReporter(stat); }
protected boolean retry(List<Job> jobs) { Response response = null; try { // 重试必须走同步,不然会造成文件锁,死锁 response = superSubmitJob(jobs, SubmitType.SYNC); return response.isSuccess(); } catch (Throwable t) { RetryScheduler.LOGGER.error(t.getMessage(), t); } finally { if (response != null && response.isSuccess()) { stat.incSubmitFailStoreNum(jobs.size()); } } return false; } };
@Override public Response submitJob(List<Job> jobs) { Response response; try { response = superSubmitJob(jobs); } catch (JobSubmitProtectException e) { response = new Response(); response.setSuccess(false); response.setFailedJobs(jobs); response.setCode(ResponseCode.SUBMIT_TOO_BUSY_AND_SAVE_FOR_LATER); response.setMsg(response.getMsg() + ", submit too busy"); } if (!response.isSuccess()) { try { for (Job job : response.getFailedJobs()) { jobRetryScheduler.inSchedule(job.getTaskId(), job); stat.incFailStoreNum(); } response.setSuccess(true); response.setCode(ResponseCode.SUBMIT_FAILED_AND_SAVE_FOR_LATER); response.setMsg(response.getMsg() + ", save local fail store and send later !"); LOGGER.warn(JSON.toJSONString(response)); } catch (Exception e) { response.setSuccess(false); response.setMsg(e.getMessage()); } } return response; }
@Override public void operationComplete(ResponseFuture responseFuture) { try { submitCallback.call(responseFuture.getResponseCommand()); } finally { latch.countDown(); } } });
@Override public void operationComplete(ResponseFuture responseFuture) { try { submitCallback.call(responseFuture.getResponseCommand()); } finally { latch.countDown(); } } });