Skip to content

Commit

Permalink
Fix: Add conditional to not lock empty list of resources (#1760)
Browse files Browse the repository at this point in the history
### Feature or Bugfix
- Bugfix

### Detail
In #1706 all the scenarios
tested had multiple Datasets sharing a shared-Glue database. The issue
is that when there is no common shared Glue database the lock will try
to lock an empty list of resources, resulting in timeouts in
`backend/dataall/modules/s3_datasets_shares/services/share_processors/glue_table_share_processor.py:248`

### Relates
- #1706

### Security
Please answer the questions below briefly where applicable, or write
`N/A`. Based on
[OWASP 10](https://owasp.org/Top10/en/).

- Does this PR introduce or modify any input fields or queries - this
includes
fetching data from storage outside the application (e.g. a database, an
S3 bucket)?
  - Is the input sanitized?
- What precautions are you taking before deserializing the data you
consume?
  - Is injection prevented by parametrizing queries?
  - Have you ensured no `eval` or similar functions are used?
- Does this PR introduce any functionality or component that requires
authorization?
- How have you ensured it respects the existing AuthN/AuthZ mechanisms?
  - Are you logging failed auth attempts?
- Are you using or adding any cryptographic features?
  - Do you use a standard proven implementations?
  - Are the used keys controlled by the customer? Where are they stored?
- Are you introducing any new policies/roles/users?
  - Have you used the least-privilege principle? How?


By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license.
  • Loading branch information
dlpzx authored Feb 6, 2025
1 parent 851d756 commit 78e6143
Showing 1 changed file with 10 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
from contextlib import nullcontext
from typing import List
from warnings import warn
from datetime import datetime
Expand Down Expand Up @@ -244,11 +245,15 @@ def process_revoked_shares(self) -> bool:
log.info(f'Additional Resources to be locked while revoking glue tables: {additional_resources_to_lock}')

try:
with ResourceLockRepository.acquire_lock_with_retry(
resources=additional_resources_to_lock,
session=self.session,
acquired_by_uri=self.share_data.share.shareUri,
acquired_by_type=self.share_data.share.__tablename__,
with (
ResourceLockRepository.acquire_lock_with_retry(
resources=additional_resources_to_lock,
session=self.session,
acquired_by_uri=self.share_data.share.shareUri,
acquired_by_type=self.share_data.share.__tablename__,
)
if additional_resources_to_lock
else nullcontext()
):
log.info('##### Starting Revoking tables #######')
success = True
Expand Down

0 comments on commit 78e6143

Please sign in to comment.