Skip to content

file backend isn't using context manager correctly in locking code #15

Closed

Description

@sqlalchemy-bot

Migrated issue, originally created by Michael Bayer (zzzeek)

#!python

diff -r 2421b6447c65442f6ae0d410629382701da035c3 dogpile/cache/backends/file.py
--- a/dogpile/cache/backends/file.py	Tue Nov 20 17:48:17 2012 -0500
+++ b/dogpile/cache/backends/file.py	Mon Dec 10 14:11:24 2012 -0500
@@ -213,14 +213,18 @@
     @contextmanager
     def read(self):
         self.acquire_read_lock(True)
-        yield
-        self.release_read_lock()
+        try:
+            yield
+        finally:
+            self.release_read_lock()
 
     @contextmanager
     def write(self):
         self.acquire_write_lock(True)
-        yield
-        self.release_write_lock()
+        try:
+            yield
+        finally:
+            self.release_write_lock()
 
     def acquire_read_lock(self, wait):
         return self._acquire(wait, os.O_RDONLY, fcntl.LOCK_SH)

Activity

  1. sqlalchemy-bot commented on Dec 10, 2012

    @sqlalchemy-bot
    Author

    Michael Bayer (zzzeek) wrote:

    c9c29f4

  2. sqlalchemy-bot commented on Dec 10, 2012

    @sqlalchemy-bot
    Author

    Changes by Michael Bayer (zzzeek):

    • changed status to closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions