当我取下一个速度缓存主机时,为什么会得到ErrorCode <errca0022>?</errca0022>

时间:2009-12-09 21:25:48

标签: asp.net session distributed-computing appfabric

当我取下托管用户会话的三节点群集的一个节点时,我的网络应用程序中出现以下异常。

会话缓存也有辅助功能,没有驱逐。

这是错误消息和堆栈:

Exception information: 
    Exception type: DataCacheException 
    Exception message: ErrorCode<ERRCA0022>:Cache::GetAndLock: There is a temporary failure, please retry after some time. 

Stack trace:    at Microsoft.Data.Caching.DataCache.ExecuteAPI(RequestBody reqMsg, String apiName)
   at Microsoft.Data.Caching.DataCache.InternalGetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle, String region)
   at Microsoft.Data.Caching.DataCache.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle)
   at Microsoft.Data.Caching.DataCacheSessionStoreProvider.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions)
   at System.Web.SessionState.SessionStateModule.GetSessionStateItem()
   at System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(Object state)

如果我稍后重试请求,该消息将消失。为什么我首先收到此消息,服务器不应该自行解决主机已关闭并切换到其他客户端之一的问题。我已经在web.config文件中将会话客户端定义为简单,以防它出现路由问题,但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

请参阅以下博客:

http://blogs.msdn.com/velocity/archive/2009/04/30/the-dreaded-error-cache-get-the-request-timed-out.aspx

http://blogs.msdn.com/velocity/archive/2009/06/17/troubleshooting-velocity-series.aspx

回答你关于服务器自己解决这个问题的问题;它实际上可以做到这一点,但由于我们无法从应用程序开发人员的角度做出选择(重试或失败),我们将其留给应用程序为自己采用正确的行为(重试,无法返回到数据库等)。因此我们默认重试,但是如果某些应用程序想要它,我们也有一些内置的重试逻辑。希望这能解答您的疑问。