Skip to content

Commit 331b49d

Browse files
authored
Fix select for update (#906)
* removed limit on select for update (due to an Oracle 12c limitation) * added my name to authors * Use filter and wrap in a list * documentation
1 parent 3010059 commit 331b49d

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

AUTHORS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@ Jun Zhou
3535
David Smith
3636
Łukasz Skarżyński
3737
Tom Evans
38+
Dylan Giesler
39+
Spencer Carroll

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
### Added
2323
* #884 Added support for Python 3.9
2424

25+
### Fixed
26+
* made token revocation not apply a limit to the `select_for_update` statement #866
27+
2528
## [1.3.3] 2020-10-16
2629

2730
### Added

oauth2_provider/models.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,15 @@ def revoke(self):
401401
access_token_model = get_access_token_model()
402402
refresh_token_model = get_refresh_token_model()
403403
with transaction.atomic():
404-
self = (
405-
refresh_token_model.objects.filter(pk=self.pk, revoked__isnull=True)
406-
.select_for_update()
407-
.first()
408-
)
409-
if not self:
404+
try:
405+
token = refresh_token_model.objects.select_for_update().filter(
406+
pk=self.pk, revoked__isnull=True
407+
)
408+
except refresh_token_model.DoesNotExist:
409+
return
410+
if not token:
410411
return
412+
self = list(token)[0]
411413

412414
try:
413415
access_token_model.objects.get(id=self.access_token_id).revoke()

0 commit comments

Comments
 (0)