@Override public void run() { notifyDeliveryFuturesOnSuccess(bucketInfo, arriveTime); } });
protected void uploadIfNeeded() { processUploadDecision(strategy.isUploadNeeded(storage.getStatus())); }
@Override public void setLogDeliveryListener(LogDeliveryListener listener) { logCollector.setLogDeliveryListener(listener); }
@Override public void run() { try { BucketInfo bucketInfo = storage.addLogRecord(new LogRecord(record)); bucketInfoMap.put(bucketInfo.getBucketId(), bucketInfo); addDeliveryFuture(bucketInfo, future); } catch (IOException ex) { LOG.warn("Can't serialize log record {}, exception catched: {}", record, ex); } uploadIfNeeded(); } });
@Test public void testUpdateDecision() { DefaultLogUploadStrategy strategy = new DefaultLogUploadStrategy(); strategy.setBatch(20); strategy.setVolumeThreshold(60); strategy.setTimeout(300); TestLogStorageStatus status = new TestLogStorageStatus(60, 3); Assert.assertEquals(LogUploadStrategyDecision.UPLOAD, strategy.isUploadNeeded(status)); status = new TestLogStorageStatus(70, 3); Assert.assertEquals(LogUploadStrategyDecision.UPLOAD, strategy.isUploadNeeded(status)); }
/** * All-args constructor. */ public AbstractLogCollector(LogTransport transport, ExecutorContext executorContext, KaaChannelManager channelManager, FailoverManager failoverManager) { this.strategy = new DefaultLogUploadStrategy(); this.storage = new MemLogStorage(); this.controller = new DefaultLogUploadController(); this.channelManager = channelManager; this.transport = transport; this.executorContext = executorContext; this.failoverManager = failoverManager; }
@Test public void testEmptyLogRecord() { long bucketSize = 3; int recordCount = 3; LogStorage storage = (LogStorage) getStorage(bucketSize, recordCount); LogBucket group = storage.getNextBucket(); Assert.assertTrue(group == null); storage.close(); }
@Override public void run() { logDeliveryListener.onLogDeliverySuccess(bucketInfo); } });
@Override public void setLogStorage(LogStorage storage) { this.logCollector.setStorage(storage); }
@Override public void run() { logDeliveryListener.onLogDeliveryFailure(bucketInfo); } });
@Override public void run() { strategy.onTimeout(controller); } });
@Override public void setLogUploadStrategy(LogUploadStrategy strategy) { this.logCollector.setStrategy(strategy); }
@Override public void run() { uploadIfNeeded(); } }, delay, TimeUnit.SECONDS);
@Override public void onTimeout(LogFailoverCommand controller) { //TODO: fix issue described in KAA-1039 controller.retryLogUpload(retryPeriod); }
@Override public LogUploadStrategyDecision isUploadNeeded(LogStorageStatus status) { LogUploadStrategyDecision decision; if (!isUploadLocked) { decision = checkUploadNeeded(status); } else { decision = LogUploadStrategyDecision.NOOP; } return decision; }
@Override public void run() { strategy.onFailure(controller, errorCode); } });
@Test public void testMaxParallelUpload() throws Exception { testMaxParallelUploadHelper(0); testMaxParallelUploadHelper(3); testMaxParallelUploadHelper(5); }
@Override public void run() { synchronized (uploadCheckLock) { uploadCheckInProgress = false; } uploadIfNeeded(); } }, strategy.getUploadCheckPeriod(), TimeUnit.SECONDS);
@Override public void onFailure(LogFailoverCommand controller, LogDeliveryErrorCode code) { switch (code) { case NO_APPENDERS_CONFIGURED: case APPENDER_INTERNAL_ERROR: case REMOTE_CONNECTION_ERROR: case REMOTE_INTERNAL_ERROR: controller.retryLogUpload(retryPeriod); break; default: break; } }
@Override public void retryLogUpload() { uploadIfNeeded(); }