Nano Hash - криптовалюты, майнинг, программирование

Отсутствует поведение роли кэша Windows Azure Caching 2.1 в эмуляторе вычислений

Я работаю над размещенной службой, в которой кэш Windows Azure развернут на экземплярах веб-роли. Кэш включен в рабочей среде, но в эмуляторе вычислений мы отключаем его, так как часто сталкиваемся с замедлениями и исключениями при работе с эмулятором кеша. В частности, в эмуляторе вычислений мы не загружаем модуль кэширования в csdef, а во время выполнения определяем, включен ли кеш, создавая DataCacheFactory и перехватывая конкретное исключение, возникающее, когда роль, указанная в конфигурации клиентской библиотеки, не найдена в csdef.

Это работало правильно до Windows Azure Caching 2.0 — когда мы обновились до Windows Azure Caching 2.1 (и Azure SDK 2.1), поведение изменилось:

  • у нас нет исключения в конструкторе DataCacheFactory;
  • когда мы пытаемся создать экземпляр DataCache из DataCacheFactory, роль кажется зависшей и через 3 минуты возвращается со следующим исключением (полный текст можно найти здесь):

    Microsoft.ApplicationServer.Caching.DataCacheException was unhandled by
    user code
    Message=ErrorCode<ERRCA0017>:SubStatus<ES0006>:There is a temporary failure.
    Please retry later. (<snip>). Additional Information :
    The client was trying to communicate with the server:
    net.tcp://WebRole:24233.
    InnerException: System.Net.Sockets.SocketException
    Message=No such host is known
    

Обратите внимание, что это не дубликат следующих вопросов SO:

поскольку

  • Я уверен, что использую Azure SDK 2.1 (я проверил при отладке правильность версий библиотеки);
  • моя проблема возникает только тогда, когда я специально отключаю роль кеша.

Ответы:


1

Используя процедуру, описанную в следующем SO answer, и с помощью ILSpy я смог понять, почему возникает это исключение. : в Windows Azure Caching 2.1, когда роль, указанная в конфигурации клиента, не найдена, она считается адресом и выполнение продолжается, а в более старых версиях выдает исключение (которое я поймал, чтобы понять, что кеш не включен).

Соответствующие сообщения журнала:

WaWorkerHost.exe Information: 0 : INFORMATION:
<DistributedCache.CacheFactory.1> TryAutoDiscoverServersWithinDeployment
for Instance 'WebRole' failed to connect as RoleName type with exception
System.Reflection.TargetInvocationException: Exception has been thrown by
the target of an invocation. --->
Microsoft.ApplicationServer.Caching.DataCacheException:
ErrorCode<UnspecifiedErrorCode>:SubStatus<ES0001>:The role WebService
was not found in the current deployment.
at Microsoft.ApplicationServer.Caching.AzureClientHelper.RoleUtility.
  GetCacheRoleIPList(String roleName, String portIdentifier)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments,
  Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,
  Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, 
  BindingFlags invokeAttr, Binder binder, Object[] parameters,
  CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at Microsoft.ApplicationServer.Caching.DataCacheFactory.
   AutoDiscoverServersWithinDeployment()
at Microsoft.ApplicationServer.Caching.DataCacheFactory.
   TryAutoDiscoverServersWithinDeployment()
Assuming it as EndPoint.

и

WaWorkerHost.exe Warning: 0 : WARNING: <DistributedCache.SocketClientChannel.1>
Request 1 to host net.tcp://webrolw:24233/ failed 
Status=ChannelOpenFailed[System.Net.Sockets.SocketException (0x80004005):
No such host is known

Для решения этой проблемы вы можете:

  • проанализировать только что созданный DataCacheFactory и посмотреть, есть ли в свойстве Servers какой-либо элемент, в котором адрес совпадает с именем роли кэша — признак того, что указанная роль не имеет настроенного кэша;
  • в конфигурациях отладки размещенной службы уменьшите количество повторных попыток в CacheReadyRetryPolicy свойства DataCacheFactory (которое вызывало 3-минутную задержку перед исключением), и если возникают исключения, предполагается, что кеш недоступен.
07.10.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..