Мы наблюдаем удивительный сценарий, когда у нас медленное сетевое соединение, и время ожидания наших вызовов к серверу WL истекает.
Это происходит в WL.Client.connect, а также в invokeProcedure:
- выполняем вызов с таймаутом 10 секунд
- сетевое соединение медленное, поэтому время ожидания вызова истекает
- определенная процедура onFailure, связанная с этим вызовом, выполняется
- сервер WL отвечает действительным ответом после тайм-аута
- выполняется процедура onSuccess, связанная с этим вызовом
Является ли это разработанным и предполагаемым поведением WL Client Framework? Это указано в документации InfoCenter или где-то еще?
Все разработчики в нашей команде ожидали, что эти две процедуры будут взаимоисключающими, и наш код был реализован на основе этого предположения. Сейчас мы изучаем варианты того, как сопоставить ответ с истечением времени ожидания/сбой с успешным ответом, чтобы убедиться, что мы достигаем эксклюзивного выполнения кода/логики onFailure или onSuccess в нашем приложении.
Примечание. Мы не проверяли это с помощью connectOnStartup=true, а поскольку initOptions не предоставляет процедуру onSuccess (поскольку WL обрабатывает ее внутри), может быть еще сложнее реализовать монопольное выполнение в этом случае.