Одиночный сбой очистки helper навсегда занимает слот подключения

Fermée
#342 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
csharp
Domaine
backend

Piste de recherche

Start with HelperSession.cs:87–97, HelperServer.cs:46–66, and HelperLeasePool.cs:9–14; trace how cleanup failures affect the lease and session directory. Reproduce the failure with a fake StopAsync that throws once, then check that a retry can complete cleanup and a later session can acquire the slot. Done means failed cleanup remains retryable, and file deletion after a confirmed engine stop does not block new connections.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug network

Приоритет P1 · milestone 0.4.1

Если остановка движка или удаление каталога сессии помощника завершится исключением, последующие подключения могут получать «A privileged engine already owns this resource» до перезапуска помощника.

Воспроизведение с фейком

  1. Занять слот через HelperSession.
  2. Закрыть клиентскую сессию, заставив фейковый StopAsync один раз выбросить исключение.
  3. Попробовать занять слот второй сессией. Первая очистка не повторяется и захват отклоняется.

Причина: HelperSession.cs:87–97 выполняет остановку, Dispose и удаление каталога последовательно, освобождая lease в самом конце. HelperServer.cs:63–66 ожидает Dispose один раз, а :46–52 только логирует ошибку завершённой задачи и теряет ссылку. HelperLeasePool.cs:9–14 продолжает отклонять новые подключения.

Доказательство: изолированный прогон получил A privileged engine already owns this resource. StopAttempts=1; old session directory remains=True.

Ожидаемо: сбой очистки остаётся доступен для повторной попытки. После подтверждённой остановки движка временная ошибка удаления файлов не блокирует все последующие подключения.

Направление исправления: удерживать состояние незавершённой очистки для повторов. Разделить освобождение слота после безопасной остановки и отдельное удаление каталога сессии.

Связано: #257, #182.

Аудит ffa65648867139f9e45c15f4b635a83c1ff52c1b.

Langage dominant
C#
Étoiles
5
Forks
1
Merge moyen
46 min
PR mergées (30 j)
202

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de endercodezz/BYDLO

Toutes les issues de endercodezz/BYDLO

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.