mirror of
https://github.com/cryptosharks131/lndg.git
synced 2026-08-13 12:33:04 +02:00
Fix: Add stagger delay and configurable reconnect interval for inactive-peer reconnects (issue #458) (#459)
This commit is contained in:
parent
c89206a1cd
commit
be74fc8e74
3 changed files with 10 additions and 1 deletions
|
|
@ -71,6 +71,7 @@ class GUIForm(AutoFeesForm):
|
|||
class LocalSettingsForm(GUIForm):
|
||||
lnd_cleanPayments = forms.IntegerField(label='lnd_cleanPayments', required=False)
|
||||
lnd_retentionDays = forms.IntegerField(label='lnd_retentionDays', required=False)
|
||||
lnd_reconnectInterval = forms.IntegerField(label='lnd_reconnectInterval', required=False)
|
||||
|
||||
updates_channel_codes = [
|
||||
(0, 'base_fee'),
|
||||
|
|
|
|||
|
|
@ -2032,6 +2032,7 @@ def get_local_settings(*prefixes):
|
|||
if 'LND-' in prefixes:
|
||||
form.append({'unit': '', 'form_id': 'lnd_cleanPayments', 'value': 0, 'label': 'LND Clean Payments', 'id': 'LND-CleanPayments', 'title': 'Clean LND Payments (toggles failed payment clean-up routine)', 'min':0, 'max':1})
|
||||
form.append({'unit': 'days', 'form_id': 'lnd_retentionDays', 'value': 30, 'label': 'LND Retention', 'id': 'LND-RetentionDays', 'title': 'LND Retention days for failed payment data', 'min':1, 'max':1000})
|
||||
form.append({'unit': 'min', 'form_id': 'lnd_reconnectInterval', 'value': 3, 'label': 'LND Reconnect Interval', 'id': 'LND-ReconnectInterval', 'title': 'Minimum minutes between reconnect attempts per inactive peer. Default 3', 'min':1, 'max':1440})
|
||||
|
||||
for prefix in prefixes:
|
||||
ar_settings = LocalSettings.objects.filter(key__contains=prefix).values('key', 'value').order_by('key')
|
||||
|
|
@ -2074,6 +2075,7 @@ def update_settings(request):
|
|||
#LND
|
||||
{'form_id': 'lnd_cleanPayments', 'value': 0, 'parse': lambda x: int(x), 'id': 'LND-CleanPayments'},
|
||||
{'form_id': 'lnd_retentionDays', 'value': 30, 'parse': lambda x: int(x), 'id': 'LND-RetentionDays'},
|
||||
{'form_id': 'lnd_reconnectInterval', 'value': 3, 'parse': lambda x: int(x), 'id': 'LND-ReconnectInterval'},
|
||||
]
|
||||
|
||||
form = LocalSettingsForm(request.POST)
|
||||
|
|
|
|||
8
jobs.py
8
jobs.py
|
|
@ -1,4 +1,5 @@
|
|||
import django
|
||||
import random
|
||||
from time import sleep
|
||||
from django.db.models import Max, Sum, Avg, Count
|
||||
from django.db.models.functions import TruncDay
|
||||
|
|
@ -668,13 +669,18 @@ def update_closures(stub):
|
|||
db_closure.save()
|
||||
|
||||
def reconnect_peers(stub):
|
||||
if LocalSettings.objects.filter(key='LND-ReconnectInterval').exists():
|
||||
reconnect_interval = int(LocalSettings.objects.filter(key='LND-ReconnectInterval')[0].value)
|
||||
else:
|
||||
LocalSettings(key='LND-ReconnectInterval', value='3').save()
|
||||
reconnect_interval = 3
|
||||
inactive_peers = Channels.objects.filter(is_open=True, is_active=False, private=False).values_list('remote_pubkey', flat=True).distinct()
|
||||
if len(inactive_peers) > 0:
|
||||
peers = Peers.objects.all()
|
||||
for inactive_peer in inactive_peers:
|
||||
if peers.filter(pubkey=inactive_peer).exists():
|
||||
peer = peers.filter(pubkey=inactive_peer)[0]
|
||||
if peer.last_reconnected == None or (int((datetime.now() - peer.last_reconnected).total_seconds() / 60) > 2):
|
||||
if peer.last_reconnected is None or ((datetime.now() - peer.last_reconnected).total_seconds() >= (reconnect_interval + random.uniform(0, reconnect_interval)) * 60):
|
||||
logger.info(f'Reconnecting peer {peer.alias} {peer.pubkey}, last reconnected at {peer.last_reconnected}')
|
||||
if peer.connected == True:
|
||||
logger.info(f'Inactive channel is still connected to peer, disconnecting peer {peer.alias} {inactive_peer}')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue