ElasticSearch Nest BulkAll halted after receiving failures that can not be retried from _bulk Hatası | C#

Merhaba elasticsearch 7.8.1’e geçince aktarım yapan konsol uygulamasında bu hatayı almaya başladım. Hatanın sebebi atmaya çalıştığı kayıtlardan bir veya bir kaçında problem olması ama hangisinde ve ne problemi var bunu göremediğim için çözüm bulamamıştım.

Aşağıdaki şekilde hem hata alan kayıt varsa devam et diyoruz sisteme, hem de hatayı göstermesini sağlıyoruz.

Bendeki hata bir alanın uzunluğu 32 kilobyte’tan daha büyük olmasıydı.

        List<string> errors = new List<string>();
        int seenPages = 0;
        int requests = 0;
        CancellationTokenSource tokenSource = new CancellationTokenSource();
        ConcurrentBag<BulkResponse> bulkResponses = new ConcurrentBag<BulkResponse>();
        ConcurrentBag<BulkAllResponse> bulkAllResponses = new ConcurrentBag<BulkAllResponse>();
        ConcurrentBag<items> deadLetterQueue = new ConcurrentBag<items>();
        BulkAllObservable<items> observableBulk = elasticClient.BulkAll(lst, f => f
                .MaxDegreeOfParallelism(Environment.ProcessorCount)
                .BulkResponseCallback(r =>
                {
                    bulkResponses.Add(r);
                    Interlocked.Increment(ref requests);
                })
                .ContinueAfterDroppedDocuments()
                .DroppedDocumentCallback((r, o) =>
                {
                    errors.Add(r.Error.Reason);
                    deadLetterQueue.Add(o);
                })
                .BackOffTime(TimeSpan.FromSeconds(5))
                .BackOffRetries(2)
                .Size(1000)
                .RefreshOnCompleted()
                .Index(indeksName)
                .BufferToBulk((r, buffer) => r.IndexMany(buffer))
            , tokenSource.Token);

        try
        {
            observableBulk.Wait(TimeSpan.FromMinutes(15), b =>
            {
                bulkAllResponses.Add(b);
                Interlocked.Increment(ref seenPages);
            });
        }
        catch (Exception e)
        {
            Console.WriteLine("Exxx => " + e.Message);
        }
        foreach (var err in errors)
        {
            Console.WriteLine("Error : " + err);
        }

Selamlar.

Leave a Reply

Your email address will not be published.