Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-7427

DNE3: multiple entries for BATCHID

Details

    • Improvement
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.8.0
    • 9223372036854775807

    Description

      In current DNE implementation (2.8.0), the DNE update records will be cancelled only if

      1. all of updates of this operation have been committed disk.
      2. all of operation with smaller batchid has been committed. And BATCHID has been updated.

      If one operation fails or stucks somewhere, then all of update logs of the following operation will not be cancelled even all of its updates have been committed, which will cause a very long recovery time, because it needs to retrieve all of update log for recovery, which is observed in DNE failover soak-test.

      So we can have multiple entries for batchid, i.e. records multiple batchids in BATCHID file, so even if one operation is stucked, it can still update the batchid, until all of entries are used. (similar as multiple last rcvd entry)

      Attachments

        Issue Links

          Activity

            [LU-7427] DNE3: multiple entries for BATCHID
            if updates are stored separately (like we discussed in the context of a different llog implementation), then we'd have to read only tiny descriptions like few dozen bytes / transaction.
            

            Even if we only read tiny for each record, but we still need read these "useless" records from all of logs. My point is that we should delete these all-committed cancel logs asap to avoid long time recovery. The current single batchid is not smart enough.

            di.wang Di Wang (Inactive) added a comment - if updates are stored separately (like we discussed in the context of a different llog implementation), then we'd have to read only tiny descriptions like few dozen bytes / transaction. Even if we only read tiny for each record, but we still need read these "useless" records from all of logs. My point is that we should delete these all-committed cancel logs asap to avoid long time recovery. The current single batchid is not smart enough.

            this is partly because we have to read all the updates from all the llogs. if updates are stored separately (like we discussed in the context of a different llog implementation), then we'd have to read only tiny descriptions like few dozen bytes / transaction.

            bzzz Alex Zhuravlev added a comment - this is partly because we have to read all the updates from all the llogs. if updates are stored separately (like we discussed in the context of a different llog implementation), then we'd have to read only tiny descriptions like few dozen bytes / transaction.
            di.wang Di Wang (Inactive) added a comment - - edited

            hmm, I think the problem is that we have too much update log, which slow down the recovery speed.

            I''d think you mean an additional index of committed-everywhere batchid's which you can clear by updating a single-value batchid.
            

            I think we need a smarter batchid to remember the committed status, instead of current single-value batchid, which will easily block cancellation if one transaction in commit list is stucked.

            di.wang Di Wang (Inactive) added a comment - - edited hmm, I think the problem is that we have too much update log, which slow down the recovery speed. I''d think you mean an additional index of committed-everywhere batchid's which you can clear by updating a single-value batchid. I think we need a smarter batchid to remember the committed status, instead of current single-value batchid, which will easily block cancellation if one transaction in commit list is stucked.

            I think this wouldn't be a big issue if our logs are indices storing just a short description of transactions (like batchid -> [set of nodes + blob pointer]).
            I'm not sure we really want an analogue of last_rcvd. I''d think you mean an additional index of committed-everywhere batchid's which you can clear by updating a single-value batchid.

            bzzz Alex Zhuravlev added a comment - I think this wouldn't be a big issue if our logs are indices storing just a short description of transactions (like batchid -> [set of nodes + blob pointer] ). I'm not sure we really want an analogue of last_rcvd. I''d think you mean an additional index of committed-everywhere batchid's which you can clear by updating a single-value batchid.

            People

              wc-triage WC Triage
              di.wang Di Wang (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: