Проблема блокировки Sqlite с тайм-аутом по умолчанию и транзакцией - PullRequest
0 голосов
/ 23 апреля 2020

Когда для приведенного ниже кода установлено время ожидания в 1 секунду, но Транзакция может выполняться без ошибок.

try
            {
                var databasePath = $@"{AppDomain.CurrentDomain.BaseDirectory}test.db";
                var connection = new SQLiteAsyncConnection(databasePath);

                await connection.SetBusyTimeoutAsync(TimeSpan.FromSeconds(1));

                var t1 = Task.Run(async () =>
                    await connection.RunInTransactionAsync(db => Thread.Sleep(5000)));

                var t2 = Task.Run(async () =>
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(2));
                        await connection.RunInTransactionAsync(db => Thread.Sleep(5000));
                    }
                );

                await Task.WhenAll(t1, t2);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine(ex.Message);
            }

У меня есть следующие вопросы:

1 . Что такое тайм-аут по умолчанию?

2 Кто-нибудь знает, как вызвать ошибку блокировки в этом случае?

Я хочу знать тайм-аут, чтобы я мог воспроизвести проблему блокировки, вызванную несколькими обновлениями в базе данных.

https://github.com/praeclarum/sqlite-net ver 1.5.231

Какое значение по умолчанию sqlite3_busy_timeout? https://dba.stackexchange.com/questions/203933/what-is-the-default-timeout-value-in-sqlite-connection-string-used-for

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