Неизвестный сигнал: 11 при использовании .net Core Cloud Firestore в Google Cloud - PullRequest
1 голос
/ 29 октября 2019

Я создал две службы .net core 3.0 C # с Cloud Run. Когда я пытаюсь вставить документ пожарного магазина, приложение вылетает в облаке. Локально это работает с тем же соединением пожарного депо. Вчера один сервис работал хорошо. Что я могу сделать, чтобы устранить эту проблему?

Предоставленный код C # показывает

"Неполученный сигнал: 11, pid = 1, tid = 13, fault_addr = 453942."

как сообщение об ошибке в журнале Cloud Run. Авария происходит на линии documentRef.SetAsync(plan);. Неполученный сигнал 11 звучит как ошибка.

Сервисы используют пакет nuget Google Cloud Firestore (1.0.0) и Grpc.Core (1.22.1).

[FirestoreData]
public class Plan
{
        [FirestoreProperty]
        public string PlanId{ get; set; }
}

[...]

using Google.Cloud.Firestore;

[...]

var plan = new Plan() { PlanId = "testId"};
Database = FirestoreDb.Create("testing-profile-crawler");
var documentRef = Database.Collection("crawler-plan").Document("test");
documentRef.SetAsync(plan);

1 Ответ

1 голос
/ 05 ноября 2019

Проблема не специфична для .NET Core - она ​​действительно касается запуска gRPC на Alpine. Собственные библиотеки gRPC (которые используются Grpc.Core) созданы на основе glibc, который по умолчанию отсутствует в Alpine.

Команда gRPC имеет обходной путь для этого, включен в их тестсборка с использованием версии glibc, созданной для Alpine . Я не могу ручаться за это, кроме как сказать, что это сработало в моем тестировании. Вполне вероятно, что это настолько близко к "поддерживаемому", насколько вероятно будет gRPC на Alpine.

Используемый мной Dockerfile начинается следующим образом:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0.0-alpine3.9

RUN apk update && apk --no-cache add ca-certificates wget
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk
RUN apk add glibc-2.30-r0.apk

... без установки libc6-compat или шага символической ссылки. После этого вы сможете использовать оставшуюся часть Dockerfile, как и раньше. Обратите внимание, что здесь используется Alpine 3.9 - тег всего лишь 3.0.0-alpine не работал, когда я его пробовал.

С поддержкой gRPC в .NET Core 3.0, возможно , что когда мы обновили наши библиотеки до Grpc.Core 2.x , вместо этого вы могли бы использовать клиентскую библиотеку Microsoft gRPC ... но есть некоторые аспекты Grpc.Core, которых в настоящее время нетподдерживается этим, и я не ожидаю, что мы сможем значительно облегчить использование версии Microsoft (хотя мы действительно хотим попробовать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...