connector
This commit is contained in:
parent
6ee609507f
commit
c9be5a0792
@ -82,7 +82,7 @@ class Connector:
|
|||||||
self.block_hashes_cache_limit = block_hashes_cache_limit
|
self.block_hashes_cache_limit = block_hashes_cache_limit
|
||||||
self.tx_cache_limit = 100 * 100000
|
self.tx_cache_limit = 100 * 100000
|
||||||
self.block_headers_cache_limit = 100 * 100000
|
self.block_headers_cache_limit = 100 * 100000
|
||||||
self.block_preload = Cache(max_size=self.block_preload_cache_limit)
|
self.block_preload = Cache(max_size=self.block_preload_cache_limit, clear_tail=False)
|
||||||
self.block_hashes = Cache(max_size=self.block_hashes_cache_limit)
|
self.block_hashes = Cache(max_size=self.block_hashes_cache_limit)
|
||||||
self.block_hashes_preload_mutex = False
|
self.block_hashes_preload_mutex = False
|
||||||
self.tx_cache = Cache(max_size=self.tx_cache_limit)
|
self.tx_cache = Cache(max_size=self.tx_cache_limit)
|
||||||
@ -664,7 +664,8 @@ class Connector:
|
|||||||
processed_height = self.last_block_height
|
processed_height = self.last_block_height
|
||||||
|
|
||||||
while height < max_height:
|
while height < max_height:
|
||||||
if self.block_preload._store_size < self.block_preload_cache_limit * 0.9:
|
if self.block_preload._store_size < self.block_preload_cache_limit * 0.9 and \
|
||||||
|
self.last_block_height >= next(iter(self.block_preload._store)):
|
||||||
try:
|
try:
|
||||||
if height < self.last_block_height:
|
if height < self.last_block_height:
|
||||||
height = self.last_block_height + 1
|
height = self.last_block_height + 1
|
||||||
@ -984,11 +985,12 @@ class DependsTransaction(Exception):
|
|||||||
|
|
||||||
|
|
||||||
class Cache():
|
class Cache():
|
||||||
def __init__(self, max_size=1000000):
|
def __init__(self, max_size=1000000, clear_tail=True):
|
||||||
self._store = OrderedDict()
|
self._store = OrderedDict()
|
||||||
self._store_size = 0
|
self._store_size = 0
|
||||||
self._max_size = max_size
|
self._max_size = max_size
|
||||||
self.clear_tail = False
|
self.clear_tail = False
|
||||||
|
self.clear_tail_auto = clear_tail
|
||||||
self._requests = 0
|
self._requests = 0
|
||||||
self._hit = 0
|
self._hit = 0
|
||||||
|
|
||||||
@ -1000,7 +1002,7 @@ class Cache():
|
|||||||
def _check_limit(self):
|
def _check_limit(self):
|
||||||
if self._store_size >= self._max_size:
|
if self._store_size >= self._max_size:
|
||||||
self.clear_tail = True
|
self.clear_tail = True
|
||||||
if self.clear_tail:
|
if self.clear_tail and self.clear_tail_auto:
|
||||||
if self._store_size >= int(self._max_size * 0.75):
|
if self._store_size >= int(self._max_size * 0.75):
|
||||||
try:
|
try:
|
||||||
[self.pop_last() for i in range(20)]
|
[self.pop_last() for i in range(20)]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user