Skip to content

Zuul2 integration #1138

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Mar 13, 2020
Merged

Zuul2 integration #1138

merged 24 commits into from
Mar 13, 2020

Conversation

wavesZh
Copy link
Contributor

@wavesZh wavesZh commented Nov 4, 2019

Describe what this PR does / why we need it

integration of zuul2.

Resolves #80

Describe how you did it

As Zuul 2.x is based on netty, a event-drive model, so we use AsyncEntry to do flow control.

  • SentinelZuulInboundFilter: This inbound filter will regard all proxy ID (proxy in SessionContext) and all customized API as resources. When a BlockException caught, the filter will set endpoint to find a fallback to execute.
  • SentinelZuulOutboundFilter: When the response has no exception caught, the post filter will trace the exception and complete the entries.
  • SentinelZuulEndpoint: When an exception is caught, the filter will find a fallback to execute.

Describe how to verify it

run test and demo

Special notes for reviews

@sczyh30 sczyh30 added area/integrations Issues or PRs related to integrations with open-source components kind/feature Category issues or prs related to feature request. to-review To review labels Nov 4, 2019
@sczyh30
Copy link
Member

sczyh30 commented Nov 4, 2019

👍

@codecov-io
Copy link

codecov-io commented Nov 6, 2019

Codecov Report

Merging #1138 into master will decrease coverage by 0.57%.
The diff coverage is 10.73%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master    #1138      +/-   ##
============================================
- Coverage     43.01%   42.44%   -0.58%     
- Complexity     1567     1581      +14     
============================================
  Files           337      353      +16     
  Lines          9877    10082     +205     
  Branches       1332     1352      +20     
============================================
+ Hits           4249     4279      +30     
- Misses         5099     5275     +176     
+ Partials        529      528       -1
Impacted Files Coverage Δ Complexity Δ
...ateway/zuul2/api/route/PrefixRoutePathMatcher.java 0% <0%> (ø) 0 <0> (?)
...ter/gateway/zuul2/api/route/ZuulRouteMatchers.java 0% <0%> (ø) 0 <0> (?)
...uul2/api/matcher/HttpRequestMessageApiMatcher.java 0% <0%> (ø) 0 <0> (?)
...nel/adapter/gateway/zuul2/filters/EntryHolder.java 0% <0%> (ø) 0 <0> (?)
...ul2/filters/inbound/SentinelZuulInboundFilter.java 0% <0%> (ø) 0 <0> (?)
...way/zuul2/callback/DefaultRequestOriginParser.java 0% <0%> (ø) 0 <0> (?)
...way/zuul2/callback/ZuulGatewayCallbackManager.java 0% <0%> (ø) 0 <0> (?)
...gateway/zuul2/api/route/RegexRoutePathMatcher.java 0% <0%> (ø) 0 <0> (?)
...y/zuul2/filters/endpoint/SentinelZuulEndpoint.java 0% <0%> (ø) 0 <0> (?)
...er/gateway/zuul2/HttpRequestMessageItemParser.java 0% <0%> (ø) 0 <0> (?)
... and 25 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 49861f4...162331d. Read the comment docs.

@locuslin
Copy link

locuslin commented Nov 7, 2019

I'm working on Zuul2 intergration too.I'm doubt that there are problems.
1.Importing "spring-core" just to use the AntPathMatcher is a big cost .Might use ant-style-path-matcher) Instead?
2.SentinelZuulOutboundFilter may run in a different thead from the inbond one,is that OK just calling "ContextUtil.enter"&"Context.exit"?I read the code in sentinel-spring-cloud-gateway-adapter,but have't find a solution.

@wavesZh
Copy link
Contributor Author

wavesZh commented Nov 7, 2019

I'm working on Zuul2 intergration too.I'm doubt that there are problems.
1.Importing "spring-core" just to use the AntPathMatcher is a big cost .Might use ant-style-path-matcher) Instead?
2.SentinelZuulOutboundFilter may run in a different thead from the inbond one,is that OK just calling "ContextUtil.enter"&"Context.exit"?I read the code in sentinel-spring-cloud-gateway-adapter,but have't find a solution.

  1. That is better to use a lighter AntPathMatcher, but i need more suggestions.
  2. Because of event-drived model, one thread may be corresponds to many sentinel's contexts, so ThreadLocal is invalid to deliver context for a request.ContextUtil#enter create a ThreadLocal context as a head of invaction chain. The context has store in AsyncEntry when do SphU.asyncEntry and I use zuul's context to deliver and use it. ContextUtil#exit just clean ThreadLocal. but in my case, ContextUtil#exitmay not need to be invoked inSentinelZuulOutboundFilter`.

} catch (BlockException t) {
context.put(ZuulConstant.ZUUL_CTX_SENTINEL_BLOCKED_FLAG, Boolean.TRUE);
context.put(ZuulConstant.ZUUL_CTX_SENTINEL_FALLBACK_ROUTE, fallBackRoute);
context.setEndpoint(blockedEndpointName);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's better to call "setErrorEndpoint" and "setShouldSendErrorResponse" here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you set "setShouldSendErrorResponse" with true, the rest of inbound filter will not be invoked. I want that user can control the invocation of inbound filter by ZuulConstant.ZUUL_CTX_SENTINEL_BLOCKED_FLAG. It can be more flexible.

Copy link

@locuslin locuslin Nov 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.Generally when a resource is blocked,the invocation will be aborted.I think it would be confusing if the invocation continues.It seems better to make this feature enabled by configuration and disabled by default?
2. I finally work out the context switching(not tested although) , may you have a look at my code?I think it may case a memory leak here,and I tried to fix it.

  1. By the way,the code format is different from the orgin code ,especially for the indents.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Your suggestion is well, i will optimize it.
  2. I see a little your code, what is meaning about the code. asynchronous action should be done in asynchronous context to keep a correct invocation chain.

Copy link

@locuslin locuslin Nov 11, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just refer to the SentinelReactorSubscriber,exactly hookOnSubscribe and hookOnNext.It's not necessary to do like this,but just in case and to keep the same style.This is the document.

if (!asyncEntries.isEmpty()) {
context.put(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY, asyncEntries);
// clear context to avoid another request use incorrect context
ContextUtil.exit();
Copy link

@locuslin locuslin Nov 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to deliver the context to "SessionContext" and exit the context in outbound filter.I doubt "ContextUtil.exit" can't exit actually because that the "AysncEntry" haven't exit,I will confirm it later. And there is a limit in ContextUtil,and there will be a memory leak if not clean correctly.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

threadlocal of context may will not clean up in your case, i will fix it. And i think the place of ContextUtil.exit() is not important in event-driven model, it's function is just to clean threadlocal, but it maybe necessary to store the context for other purpose instead of discarding it.

@locuslin
Copy link

locuslin commented Nov 8, 2019

Also a suggestion ,it seems better only operate the context in Entry and don't store the context in ThreadLocal ,just as dubbo did.I found it hard to use the context in asynchronous invocation .But it may be a big change 😔.

@sczyh30
Copy link
Member

sczyh30 commented Dec 2, 2019

Could you please resolve the conflicts?

SessionContext context = request.getContext();
String origin = parseOrigin(request);
Deque<EntryHolder> holders = new ArrayDeque<>();
String routeId = (String) context.get(ZuulConstant.PROXY_ID_KEY);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the standard and universal key for routes of Zuul 2.x?

Copy link

@locuslin locuslin Dec 3, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not.The standard method is to call com.netflix.zuul.context.SessionContext#getRouteHost,and the key is "routeVIP",so there is a bug here.

@sczyh30
Copy link
Member

sczyh30 commented Dec 6, 2019

1.Importing "spring-core" just to use the AntPathMatcher is a big cost .Might use ant-style-path-matcher) Instead?

If there are any popular lightweight AntPathMatcher implementations (with correct functionality and good performance), we could replace spring-core with it.

@locuslin
Copy link

1.Importing "spring-core" just to use the AntPathMatcher is a big cost .Might use ant-style-path-matcher) Instead?

If there are any popular lightweight AntPathMatcher implementations (with correct functionality and good performance), we could replace spring-core with it.

The most popular and suitable implementation I could find is the ant-style-path-matcher.There are some similar test cases (see here)borrowed from spring,you can refer to it and decied whether to use it.

@sczyh30 sczyh30 added this to the 1.7.2 milestone Dec 16, 2019
Copy link
Member

@sczyh30 sczyh30 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I'll improve some of the code later.

@sczyh30 sczyh30 merged commit e84fbcb into alibaba:master Mar 13, 2020
@sczyh30
Copy link
Member

sczyh30 commented Mar 13, 2020

Fabulous work. Thanks for contributing!

@sczyh30 sczyh30 removed the to-review To review label Mar 13, 2020
sczyh30 pushed a commit that referenced this pull request Mar 13, 2020
- also add demo for Zuul 2.x adapter
@wavesZh wavesZh deleted the zuul2-Integration branch April 1, 2020 14:05
linlinisme added a commit to linlinisme/Sentinel that referenced this pull request Nov 24, 2020
* calculate process cpu usage to support application running in container environment

* Enhance reliability and performance of InMemoryMetricsRepository (alibaba#1319)

* Fix InMemoryMetricsRepository can't keep the last five minutes metrics data problem and Improve read-write performance
* Use TimeUtil.currentTimeMillis() replace System.currentTimeMillis() for better performance

* dashboard: Support setting value pattern for client IP and host in gateway flow rule dialog (alibaba#1325)

* doc: Update JDK requirement of the dashboard in README.md (alibaba#1316)

* Following discussions in alibaba#1315

* Add "web-context-unify" config in Spring WebMVC adapter to support "chain" relation flow strategy (alibaba#1328)

* Fix the parsing issue in large post request for sentinel-transport-simple-http (alibaba#1255)

* Add gateway adapter for Zuul 2.x (alibaba#1138)

- also add demo for Zuul 2.x adapter

* Polish code and demo of Sentinel Zuul 2.x adapter

Signed-off-by: Eric Zhao <[email protected]>

* Polish code of transport command centers and heartbeat senders

Signed-off-by: Eric Zhao <[email protected]>

* Polish logging SPI related code and add general JUL adapter for Logger SPI (alibaba#1338)

* Move the legacy JUL methods from LogBase to BaseJulLogger.
* Add a JavaLoggingAdapter as the general JUL adapter for the Logger SPI, which makes it convenient to use (as the default logger).
* Add LoggerSpiProvider to resolve Logger SPI.
* Polish the logback demo.

Signed-off-by: Eric Zhao <[email protected]>

* Move CommandCenterLog to sentinel-transport-common and polish related code (alibaba#1341)

Signed-off-by: Eric Zhao <[email protected]>

* Polish placeholders in logging content to slf4j convention (alibaba#1342)

* Polish placeholders in logging content to "{}"

Signed-off-by: Eric Zhao <[email protected]>

* Fix timezone problem of sentinel-block.log

Signed-off-by: Eric Zhao <[email protected]>

* dashboard: Fix NoNodeException problem of FlowRuleZookeeperProvider example (alibaba#1352)

* Introduce logging extension: slf4j (alibaba#1344)

* Regroup packages related to logging into a separate module and polish document (alibaba#1355)

* Fix CI failure in JDK 11 environment (alibaba#1360)

* Supplement missing javax.annotation-api to sentinel-cluster-server-envoy-rls and sentinel-demo-zuul2-gateway
* Upgrade mockito-core to 2.28.2 (up to date)

* Fix the bug that context was not released when blocked in Spring Web adapter (alibaba#1353)

* Improve standard output message in LogBase (alibaba#1357)

* Complete the unit tests for sentinel-logging-slf4j module (alibaba#1358)

* refactor: Make the ProcessorSlot itself as SPI and deprecate legacy slot chain builder (alibaba#411)

* Make slots loaded by SPI, mark all slots with @SpiOrder from -10000 to -1000, improve comment
* Reserve gateway and param slot chain builder (just extends DefaultSlotChainBuilder) and mark them as @deprecated

* Force modifyRule command handler to fail if an incompatible old fastjson found (alibaba#1377)

* Note that this is only a temporary solution.

* Set default log level of JDK logging to INFO and polish code of SpiLoader (alibaba#1365)

* Improve log info in SpiLoader, improve comment and test case
* Use error level in catch block, init ArrayList with capacity and improve add item to list

* doc: Polish README.md of sentinel-cluster-server-envoy-rls module

Signed-off-by: Eric Zhao <[email protected]>

* dashboard: Hide advanced options in flow rule dialog when cluster mode is enabled (alibaba#1367)

* doc: Update README.md

Signed-off-by: Eric Zhao <[email protected]>

* Update fastjson to 1.2.68

Signed-off-by: Eric Zhao <[email protected]>

* Bump version to 1.7.2

Signed-off-by: Eric Zhao <[email protected]>

* Fix the bug of extracting request cookie in Spring Cloud Gateway adapter (alibaba#1400)

* Bump version to 1.8.0-SNAPSHOT

Signed-off-by: Eric Zhao <[email protected]>

* Add JAX-RS adapter (alibaba#1396)

* Fix the bug of misplaced locks in ContextUtil and ClusterNode (alibaba#1429)

- which may lead to IllegalMonitorStateException in unlock() when unchecked error occurs during lock()

* fix: Tracer does not trace exception to DefaultNode (alibaba#1068)

* Support setting project.name via the properties file and deprecate legacy config path (alibaba#1412)

* Update resolving logic of project name and polish SentinelConfig (alibaba#1437)

Signed-off-by: Eric Zhao <[email protected]>

* Refactor the mechanism of recording error in Entry and StatisticSlot

* Also polish related complete callbacks

Signed-off-by: Eric Zhao <[email protected]>

* Polish Tracer with entry.setError(ex) mechanism

Signed-off-by: Eric Zhao <[email protected]>

* dashboard: Remove duplicate code in MetricEntity (alibaba#1441)

* dashboard: Fix the bug that cookie may have conflict with web applications under the same domain (alibaba#1443)

* Improve deprecated ParameterMetric purge mechanism (alibaba#1372)

* Clear useless data in ParameterMetric for all removed rules

* Polish code comments of the fundamental Sph/SphO/SphU class

Signed-off-by: Eric Zhao <[email protected]>

* Add OkHttp integration (alibaba#1456)

* dashboard: Fix historical version compatibility problem for auth check via localStorage (alibaba#1473)

* Add exceptionPredicate in Tracer for customized exception filtering logic (alibaba#1496)

* test: Add test cases for Tuple2 (alibaba#1501)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Add support for extracting param from complex object (alibaba#1491)

* This could enable specified parameter flow control for customized objects.

* Support setting class-level defaultFallback for annotation extension (alibaba#1493)

* Add unit test for logging/TokenBucket (alibaba#1504)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Fix sentinel-apache-dubbo-adapter full GC bug (alibaba#1431)

* Polish RocketMQ PullConsumerDemo to make code clear (alibaba#1528)

* Add unit test for cluster/FlowResponseDataDecoder (alibaba#1514)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Improve consumer filter of Dubbo 2.6.x and 2.7.x adapter (alibaba#1532)

* entry and exit with params in consumer filter

* Polish sentinel-opensource-eco-landscape-en.png

Signed-off-by: Eric Zhao <[email protected]>

* Add annotation extension for Java EE CDI (alibaba#1541)

* Add Sentinel annotation and JAX-RS plugins for Quarkus (alibaba#1542)

* Add sentinel-quarkus-adapter module, which provides sentinel-annotation-quarkus-adapter and sentinel-jax-rs-quarkus-adapter to adapt sentinel-annotation-cdi-interceptor and sentinel-jax-rs-adapter for Quarkus. It also provides sentinel-native-image-quarkus-adapter to support running Sentinel with Quarkus in native image mode.

* Polish document and code of Sentinel annotation CDI extension

Signed-off-by: Eric Zhao <[email protected]>

* Upgrade fastjson to 1.2.71 (alibaba#1545)

* Add file.encoding JVM args in maven-surefire-plugin to avoid charset problem (alibaba#1550)

* Add annotation CDI demo and Quarkus adapter demo (alibaba#1543)

* Polish document and rearrange package for Quarkus and JAX-RS adapter

Signed-off-by: Eric Zhao <[email protected]>

* Support customized origin parser in legacy Dubbo 2.6.x adapter (alibaba#1555)

* Add Eureka data-source extension (alibaba#1502)

* Upgrade nacos-client version to 1.3.0 in sentinel-datasource-nacos (alibaba#1576)

* demo: Update slot chain SPI demo (alibaba#1581)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Add explicit null checking for charset in SimpleHttpClient#encodeRequestParams (alibaba#1589)

* Adapter: Support Apache HttpClient (alibaba#1455)

Introduce support through a customized client builder `SentinelApacheHttpClientBuilder`.

* doc: Fix mistakes in README.md of sentinel-zuul-adapter (alibaba#1593)

* Fix incorrect protocol description in FlowRequestData writer/decoder (alibaba#1607)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Refactor config mechanism for OkHttp adapter and polish related code

- One config per interceptor instead of the global config
- Polish document and demo

Signed-off-by: Eric Zhao <[email protected]>

* test: Add unit test for sentinel-cluster-server and polish code (alibaba#1529)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Refactor degrade hierarchy with new circuit breaker mechanism and improve strategy

* Add `CircuitBreaker` abstraction (with half-open state) and add circuit breaker state change event observer support.
* Improve circuit breaking strategy (avg RT → slow request ratio) and make statistics of each rule dependent (to support arbitrary statistic interval).
* Add simple "trial" mechanism (aka. half-open).
* Refactor mechanism of metric recording and state change handling for circuit breakers: record RT and error when requests have completed (i.e. `onExit`, based on alibaba#1420).

Signed-off-by: Eric Zhao <[email protected]>

* Update test cases for circuit breaking

Signed-off-by: Eric Zhao <[email protected]>

* Update demo for circuit breaking (DegradeRule)

Signed-off-by: Eric Zhao <[email protected]>

* test: Update test cases with new degrade mechanism in sentinel-demo-quarkus

Signed-off-by: Eric Zhao <[email protected]>

* Remove deprecated passCheck() in Rule and polish interface

Signed-off-by: Eric Zhao <[email protected]>

* Polish cluster flow control demo: add port in Nacos address (alibaba#1655)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Polish boolean checking in test cases and dashboard (alibaba#1664)

* Remove unused code in TokenServerHandler#channelActive (alibaba#1667)

Signed-off-by: cj <[email protected]>

* Optimize the order of slots in ProcessorSlot SPI config (alibaba#1649)

* Fix the bug of circuit breaker half-open state transformation when request is blocked by upcoming rules (alibaba#1645)

* Refactor the workflow to fix the bug that circuit breaker may remain half-open state forever when the request is blocked by upcoming rules: revert the state change in exit handler (as a temporary workaround)
* Add exit handler in Entry as a per-invocation hook.

* Polish CircuitBreaker interface and update comments

- Only carry context in tryPass/onComplete method (this might be generic in upcoming versions)

Signed-off-by: Eric Zhao <[email protected]>

* Refactor exit handler mechanism of Entry

- Rename: whenComplete -> whenTerminate
- Execute the exit handler directly after the onExit hook of all slots

Signed-off-by: Eric Zhao <[email protected]>

* Add extended interface for metric extension hook to support distinguishing traffic type (alibaba#1665)

- Add EntryType args to all hook methods

* dashboard: Refactor degrade service/controller and adapt to new features

Signed-off-by: Eric Zhao <[email protected]>

* Polish Dubbo 2.6.x adapter and unify callback registry into DubboAdapterGlobalConfig (alibaba#1572)

* Unify Dubbo callback registry (for fallback and origin parser) into DubboAdapterGlobalConfig
* Polish default fallback implementation (wrap exception with RpcResult rather than directly throw it out)

Signed-off-by: Eric Zhao <[email protected]>

* Refactor extended MetricExtension interface (matching events in Sentinel)

- Unify the extended interface as a few event handlers: onPass, onBlocked, onComplete and onError
- Polish related code

Signed-off-by: Eric Zhao <[email protected]>

* Support customized origin parser in Apache Dubbo 2.7.x adapter and unify config (alibaba#1617)

* Support customized origin parser in Apache Dubbo 2.7.x adapter
* Unify Dubbo callback registry (for fallback and origin parser) into DubboAdapterGlobalConfig
* Polish default fallback implementation (wrap exception with RpcResult rather than directly throw it out)

* Polish code and README.md of sentinel-datasource-eureka

Signed-off-by: Eric Zhao <[email protected]>

* webmvc-adapter: improve to avoid ErrorEntryFreeException (alibaba#1533)

If entry already exists in request just skip creation.

* adapter: Add test cases for Spring WebFlux HandlerFunction (alibaba#1678)

* Add RuntimeException converting method in BlockException and polish logic for validation

Signed-off-by: Eric Zhao <[email protected]>

* Fix NPE bug and improve default fallback in Dubbo 2.7.x adapter

- Fix NPE bug in consumer filter (when non-biz error occurred)
- Improve default fallback in Dubbo 2.7.x adapter: convert the BlockException to a simple RuntimeException (with necessary message)
- Polish code and comments

Signed-off-by: Eric Zhao <[email protected]>

* Improve compatibility for dispatched servlet request in Spring Web adapter (alibaba#1681)

* Bump version to 1.8.0

Signed-off-by: Eric Zhao <[email protected]>

* Update README.md

Signed-off-by: Eric Zhao <[email protected]>

* Bump version to 1.8.1-SNAPSHOT

Signed-off-by: Eric Zhao <[email protected]>

* Fix typo in CircuitBreakingIntegrationTest (alibaba#1688)

Signed-off-by: yunfeiyanggzq <[email protected]>

* Pre-calculate intervalInSecond in LeapArray to reduce redundant calculation (alibaba#1700)

* doc: Fix typo in code comments (alibaba#1721)

* Solve the URI fetching bug in sentinel-zuul-adapter alibaba#1109 (alibaba#1605)

Use `getRequestURI` instead of `getServletPath` to get URI of current request(Both in prefix and regex matching).

* Fix NPE bug when updating gateway flow rules before the route/API has been requested once (alibaba#1729)

* Make NettyTransportClient.getCurrentId() thread safe (alibaba#1707)

Fix issue alibaba#1705.

- Use CAS to make it thread safe and limited in the declared range.

Signed-off-by: cj <[email protected]>

* Add attributes of cluster concurrency limiting in ClusterFlowConfig

Signed-off-by: yunfeiyanggzq <[email protected]>

* Add concurrency token request/release operation in TokenService

Signed-off-by: yunfeiyanggzq <[email protected]>

* Add basic cluster concurrency limiting impl in token server module

Signed-off-by: yunfeiyanggzq <[email protected]>

* Add unit tests for cluster concurrent limiting checker

Signed-off-by: yunfeiyanggzq <[email protected]>

* doc: Fix content in README.md of sentinel-dashboard (alibaba#1737)

* Fix the dependency conflict issue

* Optimize logging statements using placeholder (alibaba#1736)

* Optimize logging statements using placeholder to avoid unnecessary concatenation (issue alibaba#1735)

* Polish document and name of parameter (alibaba#1738)

- doc: Fix a typo in description of booting options for sentinel-dashboard
- Fix mismatched name of parameter to its comment for VersionUtils.parseVersion()

* Fix potential concurrency issue when updating flow rules (alibaba#1783)

* test: Fix overrunning test `FlowRuleManagerTest.testLoadAndGetRules` (alibaba#1823)

Signed-off-by: Jason Joo <[email protected]>

* Improve default block fallback logic in Dubbo 2.6.x adapter to avoid serialization problem  (alibaba#1794)

- convert BlockException to a simple RuntimeException (with necessary message)

* Fix the problem that requests will never be blocked when slowRatioThreshold = 100% (alibaba#1779)

* CI: Polish dependencies for ARM64 and add ARM64 job to Travis CI (alibaba#1765)

1. Added ARM64 architecture in .travis.yml
2. Updated 'embedded-consul' version to 2.2.0, 'consul-api' version to 1.4.5 for ARM64 support.
3. Updated grpc.version for 'io.grpc:protoc-gen-grpc-java' to 1.30.2, for ARM64 support.

Signed-off-by: odidev <[email protected]>

* [feat alibaba#1839]: Make dashboard support deploying under subpath (alibaba#1851)

* dashboard: Add statIntervalMs field in DegradeRule dialog (alibaba#1781)

Co-authored-by: tianhao <[email protected]>
Co-authored-by: jy2156121 <[email protected]>
Co-authored-by: Olof <[email protected]>
Co-authored-by: cdfive <[email protected]>
Co-authored-by: Jason Joo <[email protected]>
Co-authored-by: tao.zhang <[email protected]>
Co-authored-by: Eric Zhao <[email protected]>
Co-authored-by: WongTheo <[email protected]>
Co-authored-by: 于玉桔 <[email protected]>
Co-authored-by: Zhiguo.Chen <[email protected]>
Co-authored-by: seasidesky <[email protected]>
Co-authored-by: haifeng <[email protected]>
Co-authored-by: johnli <[email protected]>
Co-authored-by: zhenxianyimeng <[email protected]>
Co-authored-by: pleasecheckhere2016 <[email protected]>
Co-authored-by: ZhiQiang Gu <[email protected]>
Co-authored-by: zechao zheng <[email protected]>
Co-authored-by: yangy <[email protected]>
Co-authored-by: xiby <[email protected]>
Co-authored-by: iron_city <[email protected]>
Co-authored-by: Bo <[email protected]>
Co-authored-by: HupJ <[email protected]>
Co-authored-by: Peine <[email protected]>
Co-authored-by: cj <[email protected]>
Co-authored-by: Bill Yip <[email protected]>
Co-authored-by: liqiangz <[email protected]>
Co-authored-by: mikawudi <[email protected]>
Co-authored-by: dani3lWong <[email protected]>
Co-authored-by: cj <[email protected]>
Co-authored-by: yunfeiyanggzq <[email protected]>
Co-authored-by: Luke <[email protected]>
Co-authored-by: HelloCoCooo <[email protected]>
Co-authored-by: nickChenyx <[email protected]>
Co-authored-by: Weihua <[email protected]>
Co-authored-by: 王振广 <[email protected]>
Co-authored-by: Lynx <[email protected]>
Co-authored-by: odidev <[email protected]>
Co-authored-by: Brent <[email protected]>
hughpearse pushed a commit to hughpearse/Sentinel that referenced this pull request Jun 2, 2021
- also add demo for Zuul 2.x adapter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/integrations Issues or PRs related to integrations with open-source components kind/feature Category issues or prs related to feature request.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] Integration with Netflix Zuul2
5 participants