@Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    FragmentInstanceFailureInfo that = (FragmentInstanceFailureInfo) o;
    return (this.getMessage() == null
            ? that.getMessage() == null
            : this.getMessage().equals(that.getMessage()))
        && (this.getCause() == null
            ? that.getCause() == null
            : this.getCause().equals(that.getCause()))
        && this.getSuppressed().equals(that.getSuppressed())
        && this.getStack().equals(that.getStack());
  }
This class is inspired by Trino <a
href="https://github.com/trinodb/trino/blob/master/core/trino-main/src/main/java/io/trino/execution/ExecutionFailureInfo.java">...</a>.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceFailureInfo.java