Запрос к эмулятору хранилища данных Google выполняется бесконечно - PullRequest
0 голосов
/ 18 марта 2020

Когда я запускаю функцию запроса в эмуляторе хранилища данных, он просто запускается и не останавливается. Нет ошибок, нет ничего. Процессор сильно загружен, пока я просто не убью работу. Я установил переменные окружения, я даже вручную предоставил apiEndpoint для моей функции запроса

const datastore = new Datastore({
        apiEndpoint: "http://localhost:8081"
    });

Вывод из SDK выглядит следующим образом:

Выполнение: cmd / c C: \ Users \ oskid \ AppData \ Local \ Google \ Cloud SDK \ google-cloud-sdk \ platform \ cloud-datastore-emulator \ cloud_datastore_emulator.cmd start --host = localhost --port = 8081 --store_on_disk = True - -consistency = 0.9 --allow_remote_shutdown C: \ Users \ oskid \ AppData \ Roaming \ gcloud \ emulators \ datastore [datastore] 18 марта 2020 г. 9:47:38 com.google.cloud.datastore.emulator.CloudDatastore $ FakeDatastoreAction $ 9 apply [хранилище данных] INFO: Предоставлено --allow_remote_shutdown для запуска команды, которая больше не нужна. [хранилище данных] 18 марта 2020 г. 9:47:38 com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub [хранилище данных] ИНФОРМАЦИЯ: Инициализировано локальное хранилище данных: [хранилище данных]
Тип: высокая репликация [хранилище данных] Хранение: C: \ Users \ oskid \ AppData \ Roaming \ gcloud \ emulators \ datastore \ WEB-INF \ appengine-генерируемый \ local_db.bin [datastore] 18 марта 2020 г. 9:47:39 com.google.cloud.datastore .emulator.impl.LocalDatastoreFileStub load [хранилище данных] ИНФОРМАЦИЯ: Резервное хранилище, C: \ Users \ oskid \ AppData \ Roaming \ gcloud \ emulators \ datastore \ WEB-INF \ appengine-генерируемый \ local_db.bin, не существует , Это будет создано. [datastore] Конечная точка API: http://localhost: 8081 [datastore] Если вы используете библиотеку, которая поддерживает переменную среды DATASTORE_EMULATOR_HOST, выполните: [datastore] [datastore] export DATASTORE_EMULATOR_HOST = localhost: 8081 [datastore] [datastore] Dev App Server запущен. [datastore] [datastore] Предыдущая строка была напечатана только для обратной совместимости. [хранилище данных] Если ваши тесты используют его для подтверждения запуска эмулятора, [хранилище данных] перейдите к конечной точке проверки работоспособности эмулятора (/). Спасибо! [хранилище данных] Конечная точка проверки работоспособности для этого экземпляра эмулятора: http://localhost: 8081 / март 18, 2020 9:54:25 io.gapi.emulators.grp c .GrpcServer $ 3 operationComplete [хранилище данных ] ИНФОРМАЦИЯ: Добавление обработчиков для вновь зарегистрированных каналов. [datastore] 18 марта 2020 г. 9:54:25 io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead [datastore] INFO: Обнаружено соединение HTTP / 2.

Завершить вывод из функции запроса:

C: \ Users \ oskid \ Desktop \ my_project \ cloud-functions \ queryDS> npm start

queryDS@1.0.0 start C: \ Users \ oskid \ Desktop \ my_project \ cloud-functions \ queryDS functions-framework -target = staging_queryDS --port = 443

Функция обслуживания ... Функция: staging_queryDS URL: http://localhost: 443 / Поддерживаемые уровни серьезности: отладка, информация, уведомление, предупреждение, ошибка, критическое состояние, предупреждение, экстренное сообщение [извещение] в [staging undefined queryDS] {"tags": {"appInstance": "staging", " scope ":" queryDS "}}: {" message ":" [staging undefined queryDS] Вызов функции запущен "}

Ничего не генерируется в папке datastore \ WEB-INF \ appengine-генерируемой, и никакие индексы не добавляются в локальный index.yaml. Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 19 марта 2020

Первым шагом было бы убедиться в обновлении компонента эмулятора Datastore Cloud SDK. Это можно сделать через «Обновление компонентов gcloud», и на него ссылаются здесь . Чтобы убедиться, что облачная функция может работать должным образом, пожалуйста, запустите тест с очень простым запросом, который гарантированно быстро вернет успешные результаты в отношении базы данных. Если это так, то рекомендуется просмотреть запрос, представленный для определения неэффективности, и убедиться, что он следует передовым методам, подробно здесь . Если этого не произойдет, вы можете посмотреть в облачной функции logs , чтобы узнать, какая операция не удалась.

...