diff --git a/impl/src/main/java/org/jboss/weld/context/AbstractConversationContext.java b/impl/src/main/java/org/jboss/weld/context/AbstractConversationContext.java index 89bf4cc0e25..40d6f4bb782 100644 --- a/impl/src/main/java/org/jboss/weld/context/AbstractConversationContext.java +++ b/impl/src/main/java/org/jboss/weld/context/AbstractConversationContext.java @@ -292,10 +292,16 @@ public void activate(String cid) else { setRequestAttribute(getRequest(), CURRENT_CONVERSATION_ATTRIBUTE_NAME, getConversation(cid)); - getCurrentConversation().lock(getConcurrentAccessTimeout()); - NamingScheme namingScheme = new ConversationNamingScheme(ConversationContext.class.getName(), cid); - setBeanStore(createRequestBeanStore(namingScheme, getRequest())); - getBeanStore().attach(); + if (getCurrentConversation().lock(getConcurrentAccessTimeout())) + { + NamingScheme namingScheme = new ConversationNamingScheme(ConversationContext.class.getName(), cid); + setBeanStore(createRequestBeanStore(namingScheme, getRequest())); + getBeanStore().attach(); + } + else + { + throw new IllegalStateException("Conversation lock timed out: " + cid); + } } }