сохраняет  его  в монгу
                  
                  
                  
                  
                  
                  public override async Task<PutObjectReply> PutObjectInBucket(IAsyncStreamReader<PutObjectRequests> requestStream, ServerCallContext context)
                  
                  
                  
                  
                  
                  но проблема возникает тогда, когда сюда летит большое количество файлов одновременно допустим 20 000 
                  
                  
                  вопрос: как праивльно их сохранить? есть предчувствие что это должно быть не 20 000 стримов а один стримно тогда как это реализовать? 
                  
                  
                  сделать из 20к файлов один большой стрим и как его развернуть потом при сохранении ?
                  
                  
                
Zip?
А в чем проблема возникает. Сформулируешь?
что такое летит 20000 файлов?
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  от коннектов пухнет, исключения кидает
какие исключения?
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  если ты пишешь в S3 то можно файл не приниматьв память, а стримить его напрямую в S3
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  System.ArgumentNullException: Value cannot be null. (Parameter 'value') at Google.Protobuf.ProtoPreconditions.CheckNotNull[T](T value, String name) at SP.FileStorage.Service.API.RemoveObjectRequest.set_Link(String value) например вот
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  нет не пишу в S3
выглядит как ошибка формата
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  она происходит при Task.WhenAll() если разом начать засылать стримы, а если по одному то все будет ок
если сервис не справляется, самое время воткнуть кафку
Видимо, тебе нужен стримовый запрос, а не отдельные запросы. https://learn.microsoft.com/ru-ru/aspnet/core/grpc/client?view=aspnetcore-7.0
Это выглядит как ты в Link пытаешься null присвоить, проверь какие там у тебя присвоения и когда, может race обычный или просто ошибки обработки
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Мне нужно не отказываясь от GRPC как то реализовать так, что бы стрим шел один и сохраняло файлы верно
Если что в .NET probuf string нельзя писать null, если надо undefined сделать, то используй clear()
https://learn.microsoft.com/ru-ru/aspnet/core/grpc/performance?view=aspnetcore-7.0 Ну вот тут описано. По идее там вообще одно соединение нужно для одного клиента, потому как нафига их несколько? Они мультиплексируются по HTTP2
не понимаю, зачем тебе стрим grpc для файлов?
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Потому что есть сервис файлстораджа, на который по grpc файлы отправляются с других сервисов
это хорошо, зачем grpc stream, стримы же для реалтайм обновлений юзают обычно
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  А как файлы слать?
у тебя много маленьких файлов?
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Да с разных сервисов
да просто обычным вызовом на эндпоинт, без стримов
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  http/2
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Так… и что там в аргументе будет ? Пейлоад со стримом ?
просто пэйлоад, а как его считать — это уже второй вопрос
 Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Alexander
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Так в этом и вопрос как не делать кучу пейлодов а заслать в виде одного ? Получается 1 файл == 1 пейлоад
Вот такое вполне себе живет и нормально используется
Обсуждают сегодня