libgit2 / libgit2/libgit2sharp

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

Aperta
#708 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C#
Stelle
3.5k
Fork
925
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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();
    }
}

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione in parallelo usando Repository(gitpath), repo.Commits e repo.Head.Tip, quindi eseguila sul repository Linux con LibGit2Sharp 0.16.0.0. Verifica se la costruzione o l’accesso concorrenti al repository causano il fallimento di mmap e il tip null; il lavoro è completato quando le operazioni parallele segnalate non producono più nessuno dei due sintomi, con un test di regressione se il progetto dispone di una posizione adatta per i test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp, git
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.