(self, key, data, cache, complete)
| 812 | self.evictions += 1 |
| 813 | |
| 814 | def add_entry(self, key, data, cache, complete): |
| 815 | transformed = self.transform(key, data) |
| 816 | if not cache: |
| 817 | return transformed |
| 818 | packed = self.pack(transformed) |
| 819 | pkey = self.prefixed_key(key, complete=complete) |
| 820 | file = self.key_filename(pkey) |
| 821 | try: |
| 822 | with open(file, "wb") as fd: |
| 823 | fd.write(packed) |
| 824 | except OSError as os_error: |
| 825 | try: |
| 826 | safe_unlink(file) |
| 827 | except FileNotFoundError: |
| 828 | pass # open() could have failed as well |
| 829 | if os_error.errno == errno.ENOSPC: |
| 830 | self.enospc += 1 |
| 831 | self.backoff() |
| 832 | else: |
| 833 | raise |
| 834 | else: |
| 835 | self.size += len(packed) |
| 836 | self.cache.add(pkey) |
| 837 | if self.size > self.size_limit: |
| 838 | self.backoff() |
| 839 | return transformed |
| 840 | |
| 841 | def log_instrumentation(self): |
| 842 | logger.debug( |
no test coverage detected