From 253194e4918798075bc16e86f2e668ba50fbdb8c Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 8 Oct 2020 17:47:21 -0700 Subject: [PATCH] do not hold write locks - if objects don't exist (#10644) --- .github/workflows/codeql.yml | 51 ------------------------------------ cmd/erasure-object.go | 9 +++++++ 2 files changed, 9 insertions(+), 51 deletions(-) delete mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 2a7156447..000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: "Code scanning - action" - -on: - push: - pull_request: - schedule: - - cron: '0 19 * * 0' - -jobs: - CodeQL-Build: - - # CodeQL runs on ubuntu-latest and windows-latest - runs-on: ubuntu-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: go, javascript - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/cmd/erasure-object.go b/cmd/erasure-object.go index c0c289a0d..7a9224eb4 100644 --- a/cmd/erasure-object.go +++ b/cmd/erasure-object.go @@ -890,6 +890,15 @@ func (er erasureObjects) DeleteObjects(ctx context.Context, bucket string, objec // any error as it is not necessary for the handler to reply back a // response to the client request. func (er erasureObjects) DeleteObject(ctx context.Context, bucket, object string, opts ObjectOptions) (objInfo ObjectInfo, err error) { + goi, gerr := er.GetObjectInfo(ctx, bucket, object, opts) + if gerr != nil && goi.Name == "" { + switch gerr.(type) { + case InsufficientReadQuorum: + return objInfo, InsufficientWriteQuorum{} + } + return objInfo, gerr + } + // Acquire a write lock before deleting the object. lk := er.NewNSLock(ctx, bucket, object) if err = lk.GetLock(globalDeleteOperationTimeout); err != nil {