code: public void stop() {
      for (AlluxioURI syncPoint : mSyncPathList) {
        MountTable.Resolution resolution = null;
        try {
          resolution = mMountTable.resolve(syncPoint);
        } catch (InvalidPathException e) {
          LOG.warn("stop: InvalidPathException resolving syncPoint {}, exception {}",
              syncPoint,  e);
        }
        long mountId = resolution.getMountId();
        // Remove initial sync thread
        Future<?> syncFuture = mSyncPathStatus.remove(syncPoint);
        if (syncFuture != null) {
          syncFuture.cancel(true);
        }
  
        Future<?> future = mPollerMap.remove(mountId);
        if (future != null) {
          future.cancel(true);
        }
  
        // Tell UFS to stop monitoring the path
        try (CloseableResource<UnderFileSystem> ufs = resolution.acquireUfsResource()) {
          ufs.get().stopSync(resolution.getUri());
        } catch (IOException e) {
          LOG.warn("Ufs IOException for uri {}, exception is {}", syncPoint, e);
        }
  
        try (CloseableResource<UnderFileSystem> ufs = resolution.acquireUfsResource()) {
          ufs.get().stopActiveSyncPolling();
        } catch (IOException e) {
          LOG.warn("Encountered IOException when trying to stop polling thread {}", e);
        }
      }
    }
docs: Stops the sync manager and any outstanding threads, does not change the sync points.
  This stops four things in the following order.
  1. Stop any outstanding initial sync futures for the sync points. (syncFuture.cancel)
  2. Stop the heartbeat thread that periodically wakes up to process events that have been
  recorded for the past heartbeat interval.
  3. Tell the polling thread to stop monitoring the path for events
  4. Stop the thread that is polling HDFS for events