##// END OF EJS Templates
fix: lfs chunked uploads....
fix: lfs chunked uploads. When testing large file uploads it's found that gunicorn raises NoMoreData instead of returning value. This fixes the problem and doesn't show excesive exceptions for no reason. Previously file upload still worked but spawned errors in logs

File last commit:

r1249:5745b11f default
r1280:b2259b07 default
Show More
memory_lru_dict.py
63 lines | 1.8 KiB | text/x-python | PythonLexer
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497 # RhodeCode VCSServer provides access to different vcs backends via network.
source-code: updated copyrights to 2023
r1126 # Copyright (C) 2014-2023 RhodeCode GmbH
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497 #
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import logging
from repoze.lru import LRUCache
core: moved str_utils and type_utils to lib so it's consistent with ce, and easier to sync up codebases
r1249 from vcsserver.lib.str_utils import safe_str
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497
log = logging.getLogger(__name__)
class LRUDict(LRUCache):
"""
Wrapper to provide partial dict access
"""
def __setitem__(self, key, value):
return self.put(key, value)
def __getitem__(self, key):
return self.get(key)
def __contains__(self, key):
return bool(self.get(key))
def __delitem__(self, key):
del self.data[key]
def keys(self):
python3: another 2to3 pass
r1054 return list(self.data.keys())
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497
class LRUDictDebug(LRUDict):
"""
Wrapper to provide some debug options
"""
def _report_keys(self):
vcsserver: modernize code for python3
r1130 elems_cnt = f'{len(list(self.keys()))}/{self.size}'
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497 # trick for pformat print it more nicely
fmt = '\n'
for cnt, elem in enumerate(self.keys()):
vcsserver: modernize code for python3
r1130 fmt += f'{cnt+1} - {safe_str(elem)}\n'
logging: use lazy formatting of log entries
r541 log.debug('current LRU keys (%s):%s', elems_cnt, fmt)
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
r497
def __getitem__(self, key):
self._report_keys()
return self.get(key)