Skip to content

bug: YDB_400100 BAD_SESSION #89

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

Closed
gfh31fgh2 opened this issue Jul 12, 2023 · 11 comments
Closed

bug: YDB_400100 BAD_SESSION #89

gfh31fgh2 opened this issue Jul 12, 2023 · 11 comments
Assignees
Labels
bug Something isn't working question Further information is requested

Comments

@gfh31fgh2
Copy link

gfh31fgh2 commented Jul 12, 2023

Bug Report

YDB PHP SDK version:
1.7.0
1.5.6 - здесь нет таких проблем

Environment
ubuntu18
JWT

Current behavior:

YDB Table BeginTransaction (YDB_400100 BAD_SESSION): Session not found: ydb://session/3?node_id=11111&id=xxxxxxxxI=

Expected behavior:

php working more than 12 hours

Steps to reproduce:

php working more than 12 hours

Related code:

https://github.com/gfh31fgh2/ydb-php-simple-driver

@gfh31fgh2 gfh31fgh2 added the bug Something isn't working label Jul 12, 2023
@gfh31fgh2 gfh31fgh2 changed the title bug: bug: YDB_400100 BAD_SESSION Jul 12, 2023
@gfh31fgh2
Copy link
Author

пять и больше ретраев никак не меняют ситуацию

@ilyakharev
Copy link
Contributor

В старых версих ретраи работали с ошибками, поэтому мы их поправили и их нужно вызывать явно.
Для использования кода с транзакцией используйте:

$ydb->table()->retryTransaction(function(Session $session){
//Тут ваш код
}, $idempotent);

Где $idempotent признак идемпотентности транзакции (по умолчанию - false).
Также рекомендуется сделать транзакции имдепотентными, тогда ретраер будет работать лучше

Рекомендуем использовать версию v1.8.0

@ilyakharev ilyakharev self-assigned this Jul 12, 2023
@gfh31fgh2
Copy link
Author

обновились на 1.8.0 - получаем те же ошибки

@gfh31fgh2
Copy link
Author

Все еще остаются ошибки

@ilyakharev
Copy link
Contributor

ilyakharev commented Jul 18, 2023

Делать prepare и вызывать execute в prepare statement необходимо на одной сессии, то есть внутри одного ретраера.
Пример использования:

$result = $table->retryTransaction(function (Session $session) {
    $prepare = $session->prepare($yql);
    return $prepare->execute($data);
});

@rekby rekby added question Further information is requested and removed bug Something isn't working labels Jul 18, 2023
@gfh31fgh2
Copy link
Author

gfh31fgh2 commented Jul 18, 2023

речь в issue идет о 1.7.0 - так что это в любом случае bug тег
как и про 1.8.0
а 1.8.1 только сейчас будем тестировать, если хотите сменить тег - можно создать новый issue с версией 1.8.1

ps: вместо retrySession должен быть retryTransaction
ps2: а разве доп параметр по retry вторым не нужен?

@ilyakharev
Copy link
Contributor

вместе retrySession должен быть retryTransaction
Исправил

а разве доп параметр по retry вторым не нужен?
Флаг идемпотентности и параметры ретраера в данном примере используются по умолчанию

@ilyakharev ilyakharev added the bug Something isn't working label Jul 18, 2023
@gfh31fgh2
Copy link
Author

1.8.1
с тем кодом что вы указали - ошибка осталась

@gfh31fgh2
Copy link
Author

gfh31fgh2 commented Jul 27, 2023

Косяк в команде
$output = $rsa->sign($input);

который иногда выполянется около 1 минуты

return $rsa->sign($input);
- при заходе в ELSE

@rekby
Copy link
Member

rekby commented Jul 31, 2023

Исходная проблема решилась.

Сейчас осталась проблема со скоростью подписи токена, это будет делаться соседней задачей: #102

Чтобы сохранять понятность истории.

@rekby rekby closed this as completed Jul 31, 2023
@gfh31fgh2
Copy link
Author

да, ретрай решает отчасти эту проблему

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

No branches or pull requests

3 participants