Выполнение запросов из Vertx MySQL иногда вызывает ParserNotAvailableException - PullRequest
0 голосов
/ 13 июня 2019

У меня есть Java-программа, которая использует платформу Vert.x для асинхронных запросов SQL к базе данных MySQL. Иногда при выполнении запросов Vert.x выдает ParserNotAvailableException.

Я провел некоторое исследование и обнаружил, что это в основном из-за выполнения хранимых процедур. Существует проблема в GitHub, которая говорит о том, что действительно mauricio содержит ошибки, но я не думаю, что разработчики Vert.x все еще имеют эту ошибку. Поэтому я предполагаю, что, возможно, проблема либо в моем коде Java, либо в коде моих хранимых процедур.

public class SqlManager{

    private AsyncSQLClient _sqlClient;
    public SqlManager(MySqlHelper sqlHelper, SqlSettings settings) {
        ConnectionConfig config = new ConnectionConfig(settings.Address, settings.Port,
                settings.Database, settings.User, settings.Password);
        _sqlClient = sqlHelper.getSqlConnection(config);
    }
}

public class MySqlHelper {

    private Vertx _vertx;

    public MySqlHelper(Vertx vertx) {
        _vertx = vertx;
    }

    public AsyncSQLClient getSqlConnection(ConnectionConfig config) {
        AsyncSQLClient sqlClient = MySQLClient.createNonShared(_vertx, config.get());
        return sqlClient;
    }

}

Итак, я использую только один неиспользуемый клиент SQL для всех моих запросов и предполагаю, что это может быть проблемой. Также после ParserNotAvailableException Vert.x начинает выдавать BufferNotFullyConsumedException для некоторых запросов.

Должен ли я создавать новое соединение каждый раз, когда я делаю запрос, и закрывать соединение после выполнения запроса? Есть ли примеры, как правильно выполнять хранимые процедуры в Vert.x?

...