public void forceDeregisterFragmentInstance(TFragmentInstanceId fragmentInstanceId) {
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("[StartForceReleaseFIDataExchangeResource]");
    }
    ISink sinkHandle = shuffleSinkHandles.get(fragmentInstanceId);
    if (sinkHandle != null) {
      sinkHandle.abort();
      shuffleSinkHandles.remove(fragmentInstanceId);
    }
    Map<String, ISourceHandle> planNodeIdToSourceHandle = sourceHandles.get(fragmentInstanceId);
    if (planNodeIdToSourceHandle != null) {
      for (Entry<String, ISourceHandle> entry : planNodeIdToSourceHandle.entrySet()) {
        if (LOGGER.isDebugEnabled()) {
          LOGGER.debug("[CloseSourceHandle] {}", entry.getKey());
        }
        entry.getValue().abort();
      }
      sourceHandles.remove(fragmentInstanceId);
    }
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("[EndForceReleaseFIDataExchangeResource]");
    }
  }
Release all the related resources, including data blocks that are not yet fetched by downstream
fragment instances.

<p>This method should be called when a fragment instance finished in an abnormal state.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/exchange/MPPDataExchangeManager.java