this.pathProvider = pathProvider;
this.compress = compress;
this.config = config;
int threads = config.getMaxBackupUploadThreads();
LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>(threads);
this.executor = new BlockingSubmitThreadPoolExecutor(threads, queue, UPLOAD_TIMEOUT);
double throttleLimit = config.getUploadThrottle();
rateLimiter = RateLimiter.create(throttleLimit < 1 ? Double.MAX_VALUE : throttleLimit);
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
String mbeanName = MBEAN_NAME;