libgit2 / libgit2/libgit2sharp

throw LibGit2SharpException or repo.Head.TIp==null while parallel

Offen
#708 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C#
Sterne
3.5k
Forks
925
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Updated. Code simplified

// use LibGit2Sharp.0.16.0.0 from nuget
// https://github.com/torvalds/linux
var gitpath = @"path/to/linux/source";

var times = 10;
for (int i = 0; i < times; i++)
{
    Task.Run(() =>
    {
        using (var repo = new Repository(gitpath))
        {
            // sometimes throw LibGit2SharpException here
            // An exception of type 'LibGit2Sharp.LibGit2SharpException' occurred in LibGit2Sharp.dll but was not handled in user code
            // Additional information: An error was raised by libgit2. Category = Os (Error).
            // Failed to mmap. No data written: Not enough storage is available to process this command.
            foreach (var commit in repo.Commits)
            {
            }
        }
    });
}

while (true)
{
    using (var repo = new Repository(gitpath))
    {
        // sometimes repo.Head.Tip == null
        repo.Head.Tip.ToString();
    }
}

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der parallelen Reproduktion unter Verwendung von Repository(gitpath), repo.Commits und repo.Head.Tip und führe sie anschließend mit dem Linux-Repository und LibGit2Sharp 0.16.0.0 aus. Untersuche, ob die nebenläufige Erstellung oder der nebenläufige Zugriff auf Repository das mmap-Fehlschlagen und den null tip verursacht; als erledigt gilt die Aufgabe, wenn die gemeldeten parallelen Vorgänge keines der beiden Symptome mehr hervorrufen, mit einem Regressionstest, falls das Projekt einen geeigneten Testort hat.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, git
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.