Асинхронный код постоянно выпадает с TimeoutException

Уже не делю не могу найти ошибку в казалось бы простом коде. Начал думать, что проблема не в коде, а в драйвере PostgreSQL. Буду благодарен уже за любые идеи т.к. код выглядит слишком простым, чтобы каждый раз падать с TimeoutException.

class QueryResultCache {
  List<RequestCacheStruct> requestsCacheList = [];
  Map<int, Future<PostgreSQLResult>> pendingFutures = {}; 

  Future<void> addResultToCache(sqlQuery) async {
    try {
        if(pendingFutures.containsKey(sqlQuery.hashCode)) {
          print('This query is already running');
          await pendingFutures[sqlQuery.hashCode];
        }
        else {
          pendingFutures.addAll({sqlQuery.hashCode: connection.query(sqlQuery, timeoutInSeconds: 3600)});
          var queryResult = await pendingFutures[sqlQuery.hashCode]; // run pending Future 
          var queryObj = RequestCacheStruct(sqlQuery.hashCode, DateTime.now(), queryResult! );
          requestsCacheList.add(queryObj);
          await pendingFutures.remove(sqlQuery.hashCode); // remove competed Future

          print('Query was added to сache');
        }
      }
        on TimeoutException catch(e) {
          print('TimeoutException: ${e.message}' );
        }
    }
}    

Идея такая. Что я пишу кэш для запросов. Если SQL запрос уже выполняется, но нужно предотвратить его повторное выполнение. Однако код постоянно сваливается с TimeoutException и сваливается сразу после выполнения нескольких запросов (т.е. в течении 30-40 секунд).

Про то что теоретически может быть коллизия hashCodeя знаю, но сейчас не про это.

Полный код класса такой.

upd: судя по всему в драйвере есть ошибка https://github.com/stablekernel/postgresql-dart/issues/167 и выставление

connection.query(sqlQuery, timeoutInSeconds: 3600)

не работает

и нужно прям в подключении выставлять:

connection = PostgreSQLConnection('localhost', 5432, 'test', username: 'postgres', password: '12345', queryTimeoutInSeconds: 3600); // here 

Ответы (0 шт):