Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-8699 Further Replication Manager Improvements
  3. HDDS-9596

Determine the criteria for calling a container empty in the SCM

Log workAgile BoardRank to TopRank to BottomAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsAdd voteVotersWatch issueWatchersConvert to IssueLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • SCM
    • None

    Description

      This is the current apache master logic for identifying an empty container:

        private boolean isContainerEmptyAndClosed(final ContainerInfo container,
            final Set<ContainerReplica> replicas) {
          return container.getState() == HddsProtos.LifeCycleState.CLOSED &&
              !replicas.isEmpty() &&
              replicas.stream().allMatch(
                  r -> r.getState() == ContainerReplicaProto.State.CLOSED &&
                      r.isEmpty());
        }
      

      What happens if: For an open container, a write is successful in 2 replicas, but not in the 3rd one. Now the pipeline is broken and closed and this container moves to quasi closed. The replicas are also quasi closed. It has two replicas on unique origins, so then the container is closed. At this stage, the quasi closed replicas go down and we’re only left with the 3rd empty replica. Won’t we be wrong in marking this container as empty now?

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned Assign to me
            siddhant Siddhant Sangwan

            Dates

              Created:
              Updated:

              Slack

                Issue deployment