Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка Error: Unexpected transport error code 3 #418

Open
alexander-watsup opened this issue Oct 10, 2024 · 9 comments · May be fixed by #432
Open

Ошибка Error: Unexpected transport error code 3 #418

alexander-watsup opened this issue Oct 10, 2024 · 9 comments · May be fixed by #432
Labels
bug Something isn't working

Comments

@alexander-watsup
Copy link

Версия библиотеки 5.3.2 подключается к YDB без проблем.

С теми же настройками все более поздние версии выводят ошибку

/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/errors.js:334
            return new Error(`Unexpected transport error code ${e.code}! Error itself: ${errStr}`);
                   ^
Error: Unexpected transport error code 3! Error itself: {"code":3,"details":"Validation failed:\n  - identity: One of the options must be selected","metadata":{"grpc-status-details-bin":[{"type":"Buffer","data":[*********]}]}}
    at TransportError.convertToYdbError (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/errors.js:334:20)
    at RetryStrategy.retry (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/retries_obsoleted.js:88:49)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async descriptor.value (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/retries_obsoleted.js:135:20)
    at async IamAuthService.sendTokenRequest (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/credentials/iam-auth-service.js:84:24)
    at async IamAuthService.updateToken (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/credentials/iam-auth-service.js:90:30)
    at async IamAuthService.getAuthMetadata (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/credentials/iam-auth-service.js:113:17)
    at async DiscoveryService.updateMetadata (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/utils/authenticated-service.js:104:25)
    at async Proxy.<anonymous> (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/utils/authenticated-service.js:96:25)
    at async DiscoveryService.discoverEndpoints (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/discovery/discovery-service.js:89:26)
    at async /home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/retries_obsoleted.js:135:53
    at async RetryStrategy.retry (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/retries_obsoleted.js:84:24)
    at async descriptor.value (/home/SOMETHING/node_modules/ydb-sdk/build/cjs/src/retries_obsoleted.js:135:20)

Node JS пробовал версии 18 и 20.

Фрагмент кода:

import { Driver, getCredentialsFromEnv } from "ydb-sdk";

const endpoint = "grpcs://ydb.serverless.yandexcloud.net:2135";
const database = "/ru-central1/*******/*******";
const authService = getCredentialsFromEnv();
const ydbDriver = new Driver({ endpoint, database, authService });

export default ydbDriver;

Помогите, пожалуйста, как поправить проблему?

@alexander-watsup alexander-watsup added the bug Something isn't working label Oct 10, 2024
@Zork33
Copy link
Collaborator

Zork33 commented Oct 16, 2024

Подскажите, а какие настройки авторизации указаны в переменных среды?

@slaviknnov
Copy link

Подскажите, а какие настройки авторизации указаны в переменных среды?

такая же проблема, в переменных среды указан файл в YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS

@alexander-watsup
Copy link
Author

какие настройки авторизации указаны в переменных среды?

YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS
Если указать в этой переменной заведомо неверное значение (несуществующий файл) - выводится соответствующее сообщение об ошибке. Авторизация с заданным ключевым файлом и правами возможна - проверил через YDB CLI.

@Naumov1889
Copy link

Naumov1889 commented Nov 6, 2024

столкнулся с такой же проблемой.
Версия библиотеки 5.3.2 подключается к YDB без проблем.

@guideblade
Copy link

тоже самое
установил 5.3.2 и заработало, спасибо. все перерыл, надо было сразу на гитхаб заходить

@Naumov1889
Copy link

Naumov1889 commented Dec 5, 2024

топиков в версии 5.3.2 ещё не было. Как заставить работать другие варианты авторизации, разобраться не получилось.
Есть ли планы по решению этого бага авторизации?

@vitshev
Copy link

vitshev commented Dec 22, 2024

Столкнулся с проблемой при обновлении версии с 5.1.1 на 5.8.0

const saCredentials = getSACredentialsFromJson(configs.ydb.sa);
const authService = new IamAuthService(saCredentials);
const driver = new Driver({endpoint, database, authService});

@goshander
Copy link

goshander commented Feb 8, 2025

Аналогичная проблема, еле раздебажил, я думаю, что во всем виноват вот этот декоратор @ensureContext(true) добавленный в метод получения токена. Там вместо yandex.cloud.iam.v1.ICreateIamTokenRequest первым аргументом теперь приезжает контекст вместо { "jwt": "..." }

https://github.com/ydb-platform/ydb-nodejs-sdk/blame/main/src/credentials/iam-auth-service.ts#L42C12-L42C12

@goshander goshander linked a pull request Feb 8, 2025 that will close this issue
7 tasks
@goshander
Copy link

goshander commented Feb 8, 2025

Из интересного еще обнаружил что библиотека jsonwebtoken и node-jose не совместимы с bun (просто молча отдает невалидный токен), и уже не являются рекомендуемыми к использованию, так как не обновляются

Рекомендуется использовать https://github.com/panva/jose она поддерживается и работает на всех окружениях

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants