diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-04-29 20:11:48 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-04-29 20:11:48 +0300 |
commit | cd45df00d36b256cbe765ea7abc6aecf8bc6f17b (patch) | |
tree | 907e90a9c39b9127c2decab10c70aec6fdc6e9dd /distixlib/ticket_store.py | |
parent | d4593b4d23389a4459ad10a6dcd9eeba52b01085 (diff) | |
parent | 5e7a8c6b497ed7fa7ffac2c0a80244dd3fa85cde (diff) | |
download | distix-cd45df00d36b256cbe765ea7abc6aecf8bc6f17b.tar.gz |
Merge remote-tracking branch 'origin/liw/memopt'
Diffstat (limited to 'distixlib/ticket_store.py')
-rw-r--r-- | distixlib/ticket_store.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/distixlib/ticket_store.py b/distixlib/ticket_store.py index 82ebc1e..14f4eaf 100644 --- a/distixlib/ticket_store.py +++ b/distixlib/ticket_store.py @@ -75,11 +75,17 @@ class TicketStore(object): return os.listdir(self._dirname) return [] + def clear_ticket_cache(self): # pragma: no cover + self._ticket_cache.clear() + def get_ticket(self, ticket_id_or_prefix): '''Return a distixlib.Ticket for an existing ticket in the store.''' ticket_id = self._find_ticket_id_from_prefix(ticket_id_or_prefix) - assert ticket_id in self._ticket_cache + if ticket_id not in self._ticket_cache: + ticket_dir = self._get_dir_for_ticket(ticket_id) + ticket = self._load_ticket(ticket_dir) + self._ticket_cache.put(ticket) return self._ticket_cache.get(ticket_id) def _find_ticket_id_from_prefix(self, prefix): @@ -88,8 +94,7 @@ class TicketStore(object): if len(matches) == 1: return matches[0] - tickets = self.get_tickets() - ticket_ids = [t.get_ticket_id() for t in tickets] + ticket_ids = self.get_ticket_ids() matches = self._find_ticket_ids_matching_prefix(ticket_ids, prefix) if len(matches) == 1: return matches[0] @@ -229,3 +234,6 @@ class _TicketCache(object): def get_all(self): return self._known_tickets.values() + + def clear(self): # pragma: no cover + self._known_tickets.clear() |