-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Update dependency com.github.ben-manes.caffeine:caffeine to v3 #7908
base: 3.6.x
Are you sure you want to change the base?
Conversation
8f5d503
to
2b1b1ef
Compare
2b1b1ef
to
96a99e2
Compare
SonarCloud Quality Gate failed. 5 Bugs |
96a99e2
to
4891532
Compare
4891532
to
c7b5bcc
Compare
SonarCloud Quality Gate failed. 9 Bugs |
This PR replaces the filter processing logic with a central `FilterRunner` class, and adds support for annotation-based filter methods (similar to controllers). Changes: - Replace most uses of `HttpFilter` with a new sealed `GenericHttpFilter` interface. `GenericHttpFilter`s are opaque, they are only processed by the `FilterRunner`. A `GenericHttpFilter` can be a legacy filter, a new annotation-based filter method, or one of a few special internal types. - Implement new annotation-based filter parsing in static methods in `FilterRunner`. It scans & validates filter arguments, assigns binders, validates the return value, etc, and finally stuffs the filter metadata into a record that extends `GenericHttpFilter`. This code is also used by a processor that validates filter methods at compile time. - Implement new filter logic in `FilterRunner`. The filter runner has a coroutine-inspired approach and tries to process filters sequentially, avoiding deep reactive call stacks. Reactive code is avoided altogether where possible.
Logback 1.3.x breaks binary compatability, and cannot be used in some cases with Micronaut 3.8.x This commit adds this fact to the documentation
…#8850) If the retry delay always increases by 1s then that's not an exponential progression, it's a linear progression where the delay time is calculated as 1s x n, and n is the number of retries.
- Refactor beans endpoint removing unnecessary reactive APIs - Include disabled bean info in beans endpoint
#9128) This PR replaces the HttpStreamsServerHandler, HandlerPublisher, HttpRequestDecoder and HttpResponseDecoder by a new PipeliningServerHandler. PipeliningServerHandler directly receives netty HttpMessages, combines them into a FullHttpRequest or StreamedHttpRequest, and passes them on to a handler. It also takes care of pipelining, so that the responses for different requests are sent in the same order those requests came in, which fixes some old bugs in RoutingInboundHandler. PipeliningServerHandler optimizes the read and write operations. Concurrent reads are handled safely, removing the need for the FlowControlHandler even in the streaming case. Flushes are delayed until readComplete, so that multiple requests in the same TCP packet can be responded to in a single TCP packet as well. The biggest performance win comes from message aggregation, however. While PipeliningServerHandler can handle a FullHttpRequest from FULL_CONTENT, it can also do some basic aggregation on its own. Small requests commonly have the HttpRequest and HttpContent come in in the same read call. PipeliningServerHandler will "hold back" the HttpRequest until readComplete to merge it with the HttpContent if available, into a FullHttpRequest. This gives a performance benefit downstream, it's actually ~600ns faster in FullHttpStackBenchmark by default than 4.0.x with FULL_CONTENT. The big advantage over FULL_CONTENT is that this aggregation is always enabled and is not a compatibility issue. Large requests will still safely fall back to StreamedHttpRequest. FULL_CONTENT is still useful for customizers that want to observe the full HTTP message, however, and may give some perf benefit for medium-sized request bodies. The reason this PR is so big is that now, many small requests are processed using the FullHttpRequest APIs. There are many subtle differences in this code path. For example, form items are parsed immediately and then passed to FormRouteCompleter, where previously parsing and processing would be interleaved (the reactive code path). This exposed some bugs because it moves some `if (refCnt > 0) release` calls to before the processing.
This fails in 4.0.0 as the response is OK
Merge 3.9.x, fix TCK test and document breakage
* Use StringIntMap for propertyIndexOf This patch replaces the propertyIndexOf method generated for each introspection with an optimized String->int map. For cases where propertyIndexOf may be called for many different types, this avoids a megamorphic call site (benchmark about 5x as fast). On the other hand, for cases where propertyIndexOf is only called with one or two different introspections at the same call site, this is slightly slower (benchmark about 0.65x as fast). imo this tradeoff is acceptable, because the speedup for megamorphic case far exceeds the slowdown for the monomorphic case. Monomorphic call sites should also be less "hot" in practical code, so performance of propertyIndexOf matters less. Finally, the absolute performance difference is quite small for the monomorphic case, in the benchmark it's 70ns so roughly 1.5ns per item, while for the megamorphic case it's roughly 30ns per item. Benchmark results, before this change: Benchmark (itemCount) (typeCount) Mode Cnt Score Error Units PropertyIndexBenchmark.test 50 1 avgt 5 115.205 ± 1.016 ns/op PropertyIndexBenchmark.test 50 2 avgt 5 118.745 ± 0.106 ns/op PropertyIndexBenchmark.test 50 3 avgt 5 832.091 ± 8.271 ns/op After this change: Benchmark (itemCount) (typeCount) Mode Cnt Score Error Units PropertyIndexBenchmark.test 50 1 avgt 5 183.315 ± 0.435 ns/op PropertyIndexBenchmark.test 50 2 avgt 5 162.453 ± 0.881 ns/op PropertyIndexBenchmark.test 50 3 avgt 5 162.690 ± 1.004 ns/op * Use array instead of list --------- Co-authored-by: Denis Stepanov <[email protected]>
We had to disable Predictive Test Selection and Test Distribution for Kotest tests as Kotest was unsupported. As of micronaut-test-4.0.0-M2, we use a supported version of Kotest 5, so this pr reverses #8612 To re-enable these Gradle features
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0d301c9
to
4705566
Compare
|
This PR contains the following updates:
2.9.3
->3.1.6
Release Notes
ben-manes/caffeine
v3.1.6
: 3.1.6Implementation-Version
and otherMANIFEST.MF
attributes (#889)v3.1.5
: 3.1.5Compare Source
Cache
clear()
removing a key more than once due to a write-back removal listener (#872)JCache
v3.1.4
: 3.1.4Compare Source
Added @CanIgnoreReturnValue annotations for static analysis (#868)
v3.1.3
: 3.1.3Cache
JCache
putAll
with an immutable map that causes an exception when using a cache writer (#841)v3.1.2
: 3.1.2Cache
computeIfAbsent
when replacing a collected weak/soft value and the custom expiry failsGuava
JCache
Cache.getConfiguration()
to return an immutable instancev3.1.1
: 3.1.1refreshAfterWrite
when racing with a removed entry (#715)v3.1.0
: 3.1.0Map.equals
when the traversal triggers an eviction and the subset of live entries matchesv3.0.6
: 3.0.6AsyncCache.getAll
when storing additional mappings (#655)v3.0.5
: 3.0.5Cache
@Nullable
fromLoadingCache.get(key)
(#594)JCache
close()
will now shutdown the executor and wait for in-flight loads to finishv3.0.4
: 3.0.4Cache
Map.entrySet.contains(o)
to use reference equalityv3.0.3
: 3.0.3Cache
v3.0.2
: 3.0.2Cache
sun.misc.Unsafe
and fallbacksv3.0.1
: 3.0.1v3.0.0
: 3.0.0This release includes API incompatible changes.
Highlights
API improvements
Policy.refreshes()
for a snapshot of the in-flight refresh operationsCacheLoader
andAsyncCacheLoader
offerbulk
factory methodsAsyncCacheLoader
methods may now throw checked exceptionsLoadingCache.refresh
now returns the in-flight future (#143)LoadingCache.refreshAll
convenience methodSet
of keys (wasIterable
)Implementation improvements
java.util.logging
(#456)sun.misc.Unsafe
is no longer required (#273)Incompatible changes
VarExpiration
time-based puts now return the old value instead of a boolean resultPolicy.Expiration
into fixed and refresh interfacesDeprecation removals
CacheWriter
,SingleConsumerQueue
, andUnsafeAccess
StatsCounter.recordEviction
variationsCacheStats
constructorsNotes
CacheWriter
usages can be replaced byMap
computations andCaffeine.evictionListener
Unsafe
may be used if available, otherwise falls back toVarHandles
Configuration
📅 Schedule: Branch creation - "every weekend" in timezone Europe/Prague, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.