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.

Valutazione

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

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.

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();
    }
}
Lingua principale
C#
Stelle
3.5k
Fork
925
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

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.

Altre issue di libgit2/libgit2sharp

Tutte le issue di libgit2/libgit2sharp

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.