Skip to content

Commit

Permalink
Fix the bug that context was not released when blocked in Spring Web …
Browse files Browse the repository at this point in the history
…adapter (alibaba#1353)
  • Loading branch information
cdfive authored Mar 24, 2020
1 parent b715cea commit 43b5e65
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,11 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons
}
return true;
} catch (BlockException e) {
handleBlockException(request, response, e);
try {
handleBlockException(request, response, e);
} finally {
ContextUtil.exit();
}
return false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,18 +71,21 @@ public void testOriginParser() throws Exception {
final String headerName = "S-User";
configureRulesFor(springMvcPathVariableUrl, 0, limitOrigin);

// This will be passed since the caller is different: userB
this.mvc.perform(get("/foo/1").accept(MediaType.TEXT_PLAIN).header(headerName, "userB"))
.andExpect(status().isOk())
.andExpect(content().string("foo 1"));

// This will be blocked and reponse json.
// This will be blocked since the caller is same: userA
this.mvc.perform(
get("/foo/2").accept(MediaType.APPLICATION_JSON).header(headerName, limitOrigin))
.andExpect(status().isOk())
.andExpect(content().json(ResultWrapper.blocked().toJsonString()));

// This will be passed since the caller is different: ""
this.mvc.perform(get("/foo/3").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(ResultWrapper.blocked().toJsonString()));
.andExpect(content().string("foo 3"));

FlowRuleManager.loadRules(null);
}
Expand Down Expand Up @@ -115,7 +118,7 @@ public void testRuntimeException() throws Exception {
assertEquals(i + 1, cn.passQps(), 0.01);
}

// This will be blocked and reponse json.
// This will be blocked and response json.
this.mvc.perform(get(url))
.andExpect(status().isOk())
.andExpect(content().string(ResultWrapper.blocked().toJsonString()));
Expand Down

0 comments on commit 43b5e65

Please sign in to comment.