public boolean safeSave(Stats stats){
if( storage == null ){
return false;
}
try{
ensureDatesAreSet(stats);
long start = System.currentTimeMillis();
storage.save(stats, appInstance, appType);
lastSave.set(dateUtil.now().getTime());
lastError.set(0);
log.info("Saved stats in {}ms", System.currentTimeMillis() - start);
return true;
}catch(Exception e){
Throwable cause = firstNonNull(getRootCause(e), e);
log.warn("Failed to save stats - next attempt in 5 minutes. Error type: {}, Message: {}", cause.getClass().getName(), cause.getMessage());
log.debug("Failed to save stats - next attempt in 5 minutes. ", e);
lastError.set(dateUtil.now().getTime());
return false;
}
}