@SSSSTTTTAAAASSSS

GRPC context.WithValue?

Добрый день.
Не могу понять, почему когда мой клиент gRPC отправляет запрос на сервер с контекстом context.WithValue, мой сервер не может распарсить его?
При том что клиенту этот контекст идет по всей цепочки и он логируется, а при получении сервером, который дальше его отправляет, тоже, он перестает парситься.
Пока из идей это только при получении клиентом контекста, запихивать его в метаданные и только потом уже отправлять запрос на сервер, а он уже будет в свою очередь перезапихивать его обратно в обычный контекст и отправлять уже на сервис и БД. Но это кажется неправильным решением.
Возможно есть какой-то другой способ?
Заранее благодарен за помощь.

вот метод клиента gRPC
```
func (s UserGRPCСontroller) CreateUser(ctx context.Context, name string) (uuid.UUID, error) {
id, ok := ctx.Value(model.ContextKeyRequestID).(string) // тут все ок, и контекст парсится
if !ok {
log.Info("failed to convert context value and get context id")
}
resp, err := s.client.Create(ctx, &pb.Name{Name: name, })
........
}
```

метод сервера, который уже не парсится
```
func (s UserServerGRPC) Create(ctx context.Context, in *pb.Name) (*pb.User, error) {
id, ok := ctx.Value(model.ContextKeyRequestID).(string) // тут уже контекст не парсится и дальше идет пустой
if !ok {
log.Info("failed to convert context value and get context id")
}
res, err := s.service.Create(ctx, in.Name)
.....
}
```
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@PapaStifflera
Родился, вырос...
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы