NDC.pop() can return empty string, this causes a loop spinning in CallContext.UnregisterAll().
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cdf605b2 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cdf605b2 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cdf605b2 Branch: refs/heads/master Commit: cdf605b2cd7ccbe40b42810f8aaacb90535496db Parents: b21662f Author: Kelven Yang <kelv...@gmail.com> Authored: Tue Feb 25 11:47:51 2014 -0800 Committer: Kelven Yang <kelv...@gmail.com> Committed: Fri Feb 28 15:35:59 2014 -0800 ---------------------------------------------------------------------- api/src/org/apache/cloudstack/context/CallContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cdf605b2/api/src/org/apache/cloudstack/context/CallContext.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/context/CallContext.java b/api/src/org/apache/cloudstack/context/CallContext.java index f80b921..22ea55f 100644 --- a/api/src/org/apache/cloudstack/context/CallContext.java +++ b/api/src/org/apache/cloudstack/context/CallContext.java @@ -239,7 +239,7 @@ public class CallContext { String sessionIdOnStack = null; String sessionIdPushedToNDC = "ctx-" + UuidUtils.first(contextId); while ((sessionIdOnStack = NDC.pop()) != null) { - if (sessionIdPushedToNDC.equals(sessionIdOnStack)) { + if (sessionIdOnStack.isEmpty() || sessionIdPushedToNDC.equals(sessionIdOnStack)) { break; } if (s_logger.isTraceEnabled()) {