Project: MOSN (Orchestration & Management / Service Proxy)
File: CHANGELOG.md

PeakEWMA supports configuring activeRequestBias (#2301) @jizhuozhi gRPC filter supports UDS (#2309) @wenxuwan Support init inherit old mosn config function (#2241) @dengqian Allow custom proxy defaultRouteHandlerName (#2308) @fibbery Example http-sample README adding configuration file link (#2226) @mimani68 Update wazero to 1.2.1 (#2254) @codefromthecrypt Update dependencies (#2230) (#2233) (#2247) (#2302) (#2326) (#2332) (#2333) @dependabot Refactor debug log content, move data into tracef (#2316) @antJack Optimize the default EWMA of newly added hosts (#2301) @jizhuozhi PeakEwma LB no longer counts error responses (#2323) @jizhuozhi Fix edfScheduler incorrectly fixing weight to 1 in dynamic load algorithm (#2306) @jizhuozhi Fix unstable LB behavior caused by changing the order of cluster hosts (#2258) @dengqian Fix panic caused by missing EWMA() method in NilMetrics (#2310) @antJack (#2312) @jizhuozhi Fix panic caused by empty cluster hosts when xDS is updated (#2314) @dengqian Fix reboot failure due to undeleted UDS socket file when MOSN exits abnormally (#2318) @wenxuwan Fix xDS status code not converted error. Fix unhandled istio inbound IPv6 address error (#2144) @kkrrsq Fix new connection error when Listener does not close directly during graceful exit of non-hot upgrade (#2234) @hui-cha Fix goimports lint error (#2313) @spacewander EdfLoadBalancer supports slow start mode (#2178) @jizhuozhi Support cluster exclusive connectionPool (#2281) @yejialiango LeastActiveRequest and LeastActiveConnection load balancers support setting activerequestbias (#2286) @jizhuozhi Support configuration of metric sampler (#2261) @jizhuozhi Add PeakEWMA load balancer (#2253) @jizhuozhi README update partners & users (#2245) @doujiang24 Update dependencies (#2242) (#2248) (#2249) @dependabot Upgrade the floor Go version supported by MOSN to 1.18 (#2288) @muyuan0 Use logical clock to make edf scheduler more stable (#2229) @jizhuozhi Change log level on missing proxyondelete from ERROR to WARN in proxywasm (#2246) @codefromthecrypt Receiver names are different for connection object (#2262) @diannaowa Disable over strict linters in workflow (#2259) @jizhuozhi Disable workflow when PR in draft mode (#2269) @diannaowa Use pointer to avoid overhead of duffcopy and duffzero (#2272) @jizhuozhi Remove unnecessary imports (#2292) @spacewander CI add goimports check (#2297) @spacewander Fix panic caused by different hosts using the same rander during health check (#2240) @dengqian Fix connpool binding conn id (#2263) @antJack Fix saved client stream protocol information to DownStreamProtocol in the context (#2270) @nejisama Fix not using the correct Go version for testing (#2288) @muyuan0 Fix incorrectly assume the variable not found if the real value is '-' (#2174) @3062 Fix nil interface panic caused by cluster certificate configuration error (#2291) @3062 Fix parsing error caused by using interface type in the leastActiveRequestLoadBalancer configuration (#2284) @jizhuozhi Fix configuration lbConfig not effective (#2299) @3062 Fix activeRequestBias missing default value and some naming case error (#2298) @jizhuozhi Support record HTTP health check log (#2096) @dengqian Add least_connection load balancer (#2184) @dengqian Add API to force reconnect and send ADS request (#2183) @dengqian Support pprof debug server endpoint configure (#2202) @dengqian Integrate with mosn.io/envoy-go-extension, consult (#2200) @antJack (#2222) @3062 Add API to support override registration (mosn/pkg#72) @antJack Add a field in variables to record mosn processing time (#2235) @z2z23n0 Support setting cluster idle_timeout to zero to indicate never timeout (#2197) @antJack Move pprof import to pkg/mosn (#2216) @3062 Reduce logging for proxywasm benchmarks (#2189) @Crypt Keeper Enlarge UDP DNS resolve buffer (#2201) @dengqian Fix the debug server not inherited during smooth upgrade (#2204) @dengqian Fix where new mosn would delete reconfig.sock when smooth upgrade failed (#2205) @dengqian Fix HTTP health check URL with query string will be unescaped (#2207) @dengqian Fix lb ReqRoundRobin fails to choose host when index exceeds hosts

(#2209) @dengqian Fix the problem that after RDS creates a route, the established connection cannot find the route (#2199) @dengqian (#2210) @3062 Fix old cache values are read after the execution of Variable.Set (mosn/pkg#73) @antJack Fix panic caused by DefaultRoller not setting time (mosn/pkg#74) @dengqian Advance the timing of metrics initialization to make it work for static config (#2221) @dengqian Fix a concurrency problem caused by multiple health checkers sharing rander (#2228) @dengqian Set HTTP/1.1 as the HTTP protocol to be sent upstream (#2225) @dengqian Completing the missing statistics (#2215) @3062 Moves to consolidated Proxy-Wasm implementation and enables wazero by default (#2172) Optimized parsing xDS transparent proxy configuration: add pass-through configuration for unrecognized addresses (#2171) Optimized the golangci execution flow in CI testing (#2166) (#2167) Add integrated benchmarks for Proxy-Wasm (#2164) (#2169) Upgrade the minimum version of Go supported by MOSN to 1.17 (#2160) Fix some problems in the README.md (#2161) Add benchmark (#2173) subsetLoadBalancer reuse subset entry to optimze alloc/inuse memory (#2119) (#2188) Fix a panic problem with connpool_binging when connecting to upstream timeout (#2180) Fix the problem that retryTime is 0 when cluster LB algorithm is LBORIGINALDST (#2170) Fix smooth upgrade failed (#2129) (#2193) Modify the way xDS Listener logs are parsed (#2182) Fix example print error (#2190) Support for configuring HTTP retry status codes (#2097) Add dev container build configuration and instructions (#2108) Support connpool_binding GoAway (#2115) Support for configuring the listener defaultReadBufferSize (#2133) Support Proxy-Wasm v2 ABI (#2089) Support transparent proxy based on iptables tproxy (#2142) Remove MOSN's extended context framework and use the variable mechanism instead. Migrate the variable mechanism and memory reuse framework to mosn.io/pkg (#2055) Migrating the metrics interface to mosn.io/api (#2124) Fix some missing log parameters (#2141) Determine if the obtained cookie exists by error (#2136) TraceLog support for zipkin (#2014) Support cloud edge interconnection (#1640) , details can be found in Trace supports plugin extension in the form of Driver, using SkyWalking as trace implementation (#2047) Support Parsing Extended xDS Stream Filter (#2095) stream filter: ipaccess extension implements xDS parsing logic (#2095) Add package tar command to MakeFile (#1968) Adjust connection read timeout from buffer.ConnReadTimeout to types.DefaultConnReadTimeout (#2051) Fix typo in documentation (#2056) (#2057) (#2070) Update the configuration file of license-checker.yml (#2071) New interface for traversing SubsetLB (#2059) (#2061) Add SetConfig interface for tls.Conn (#2088) Add Example of xds-server as MOSN control plane (#2075) Add error log when HTTP request parsing fails (#2085) (#2066) Load balancing skips the last selected host on retry (#2077) Access logs support printing traceID, connectionID and UpstreamConnectionID (#2107) Refactor how HostSet is used (#2036) Change the connection write data to only support synchronous write mode (#2087) Optimize the algorithm for creating subset load balancing to reduce memory usage (#2010) Support scalable cluster update method operation (#2048) Optimize multi-certificate matching logic: match servername first, and match ALPN only after all servernames are unmatched (#2053) Fix the latest image version in the wasm example to be a fixed version (#2033) Adjust the order of log closing execution when MOSN exits, and fix the problem that some exit logs cannot be output correctly (#2034) Fix the problem that OriginalDst was not properly processed after matching successfully (#2058) Fix the problem that the protocol conversion scene does not handle exceptions correctly, and add the protocol conversion implementation specification (#2062) Fix stream proxy not properly handling exception events such as connection write timeout/disconnect (#2080) Fix the panic problem that may be caused by the wrong timing of connection event listening (#2082) Avoid closing event before event listener

(#2098) HTTP1/HTTP2 protocol save protocol information in context when processing (#2035) Fix possible concurrency issues when pushing xDS (#2101) If the upstream address variable is not found, it no longer returns null and returns ValidNotFound (#2049) Fix health check does not support xDS (#2084) Fix the method of judging the upstream address (#2093) Protocol: Bolt v1 v2 maps status code api.NoHealthUpstreamCode -> ResponseStatusNoProcessor (#2018) . Should allow AppendGracefulStopStage and AppendBeforeStopStage when MOSN is starting or running (#2029) . Fix wrong variable in error message when workerPool Panic (#2019) . Protocol: bolt support GoAway (#1993) Protocol: HTTP health check support more configurations (#1999) Add new Admin API for query MOSN version (#2002) Exit code change to 2 when mosn start failed in upgrade mode (#2006) Add a new function to check whether MOSN is in active upgrading state (#2003) Add new command: stop (#1990) Fix the problem that the domain name update result is wrong when there are multiple DNS domain names in StrictDnsCluster (#1994) Fix upgrade state check error when metrics is configured to shared memory (#2011) Support istio v1.10.6 by default. Support switch istio version by make command, current MOSN support v1.10.6 and v1.5.2. (#1910) Support use variables to configure route headers add or remove. (#1946) Support health check's initialize interval can be configured (#1942) Add HTTP Dial for upstream cluster health check (#1942) Add extension callback function for tls context created. Support extension for Listener and Connection created. Support graceful shutdown for xprotocol framework. (#1922) Support graceful shutdown for MOSN (#1922) Integrated for automatically pprof (#1978) Add Fetch and RequireCert for SDS client Add a new tls verify extension: sni verify (#1910) Upgrade dubbo-go-hessian to v1.10.2 (#1896) Add new configuration for upstream cluster: IdleTimeout (#1914) Transfer some upstream cluster configuration constants to `config/v2` package (#1970) Add variable to store request raw data in xprotocol protocols implementations Add new configuration for original-dst filter: localhost listener can be used in listener match fallback (#1972) Add new configuration for original-dst cluster: use localhost address as the target address Do not use vendor mode any more, use go mod instead. (#1997) Refactor MOSN state management and stage management. (#1859) Shield signal processing extension related interfaces, do not expose semaphore to developers, and modify it to be scalable for behavior after receiving a signal. (#1859) Use separate IoBuffer for log (#1936) Refactor sds provider, support a sds config to generate different tls config (#1958) Optimize the irregular module naming in examples. (#1913) Delete some useless fields in connection struct (#1811) Optimize the heap management in edf loadbalancer (#1920) Optimize the error message when get variables returns error (#1952) Optimize the memory reuse in proxy: a finished request received reset will take no effect on memory reuse now Optimize the memory usage in maglev loadbalancer (#1964) Support error log to iobuffer error, support exception handling when log rotation error occurs (#1996) Fix: when stream id is too large in http2, the connection is not closed. (#1900) Fix: route error log output is abnormal (#1915) Fix: xprotocol go plugin example build errors (#1899) Fix: original-dst filter get ip errors being ignored (#1931) Fix: HTTP may cause hangs in high concurrency (#1949) Fix: istio config parse extension spell error (#1927) Fix: proxy may cause nil panic when get variables (#1953) Fix: HTTP cannot get reason for connection reset (#1772) Fix: cannot restart a stopped listener (#1883) Fix: strict-dns debug log output is abnormal (#1963) Fix: divide 0 error in edf loadbalancer (#1970) Fix: listener may cause nil panic when set

(#1981) Fix: some typo errors Fix: too many goroutines makes go test race failed (#1898) For implementing new protocols more nature, XProtocol is no longer as a protocol and no subprotocol any more. XProtocol is a framework to implement protocol easier now. So, the old existing code for implementing new protocols need some changes, please see (In Chinese) for changing the old existing code suit for the new release. Added the ip_access new filter to manage access control based on IP (#1797). Support admin api extends auth functions (#1834). The transcode filter module support dynamic phase (#1815). Added the SetConnectionState method for tls connection in pkg/mtls/crypto/tls.Conn (#1804). Added the after-start and after-stop two new stages, and allow to register handler during these stages. Support specify the unix domain socket directory by adding the new "uds_dir" configuration (#1829). Support choose dynamic protocol convert dynamically and allow register transcoder through go-plugin. Added more HTTP protocol method to make protocol matcher work properly (#1870). Support to set upstream protocol dynamically (#1808). Support set default HTTP stream config #1886. Change the default max header size to 8KB (#1837). Refactory default HTTP1 and HTTP2 convert, remove the proxy convert, use transcoder filter instead. transcoder filter: changed to register trancoder factory instead trancoder (#1879). Fix a HTTP buffer reuse related bug that may leads to nil panics in high concurrency case. Fix: get the proper value of variable response_flag, (#1814). Fix: prefix_write not work with "/" (#1826). Fix: the reconfig.sock file may be removed unexpectly when killed the old MOSN manually during smoothly upgrade, (#1820). Fix the bug in doretry: should not set setupRetry to false directly, since the old response should be skip when the new upstream request has been sent out (#1807). Should set the inherit config back to the MOSN instance (#1819). Should send resetStreamFrame to upstream when cancel grpc context at client side, otherwise server side context won't be done. Should set the resetReason before closing the stream connection, otherwise, may unable to get the real reason (#1828). Should use the listener that best match when found multi listeners, otherwise, may got 400 error code. Fixed panic due to concurrent map iteration and map write during process setting broadcast in HTTP2 protocol. Fix memory leak occurred in the binding connpool of XProtocol (#1821). Should close logger at the end, otherwise, may lost log during close MOSN instance (#1845). Fix panic due to codecClient is nil when got connect timeout event from XProtocol PingPong connection pool (#1849). Health checker not work when the unhealthyThreshold is an empty value (#1853). WRR may leads dead recursion in unweightChooseHost #1860. Fix direct response, send hijack should not transcode. Fix EDF wrr lb cannot choose a healthy host when there's a unhealthy host with a high weight. Got the wrong CACert filename when converting the listen filter from Istio LDS, MOSN may not listen success (#1893). The goroutine for resolving hosts in STRICTDNSCLUSTER cannot be stopped #1894 Routing configuration supports remove request headers. Support WASM Reload. Integrated SEATA TCC mode, support HTTP protocol. Support boltv2 protocol tracelog. New metrics stream filter for gRPC framework. Support DNS related configuration in xDS cluster config. Decouple MOSN core and Istio related xDS code. Upgrade proxy-wasm-go-host version. Refactor networkfilter configuration parse functions, support `AddOrUpdate` and `Get`. Use `mod vendor` instead of `GO111MODULE=off` in Makefile. Move some archived repo code into `mosn.io/pkg`. Optimize EDF loadbalancer: random pick host at the first select time. Optimize EDF loadbalancer performance. Optimize boltv2 protocol heartbeat's trigger and

Optimize HTTP2 retry processing in stream mode, optimize HTTP2 unary request processing in stream mode. Ignore CPU numbers limit when use environment variable to set GOMAXPROCS. Reduce memory alloc when create subset loadbalancer. Support different listener can independent run same name gRPC Server. Fix MOSN hangs up when host is empty when retry. Fix connections in `msgconnpool` cannot handle connect event. Fix MOSN panic when tracer driver is not inited and someone calls tracer `Enable`. Fix boltv2 protocol constructs hijack response version wrong. Fix HTTP2 handle connection termination event. Fix typo. Fix `ResponseFlag` outputs in `RequestInfo`. Fix bolt/boltv2 protocol not recalculated the empty data's length. Support jaeger to collect OpenTracing message Routing configuration new variable configuration mode, you can modify the routing results by modifying the variable Routing virtualhost matching supports port matching mode Impl envoy filter: Support graceful for uds New subset load balancing logic to use the full list of machines for load balancing in scenarios where there is no metadata matching MOSN's grpc framework supports graceful stop Optimize health check update mode for Cluster configuration updates Add OnConnectionEvent interface in api.Connection Weighted roundrobin loadbalancer underwriting policy adjusted to normal roundrobin load balancer Enhance interface value in mosn variable model Subset also follows the same underwriting strategy when determining the number of machines and whether they exist Dubbo stream filter supports automatic protocol recognition Fix roundrobin loadbalancer result exception in case of concurrency Fix unix address resolution exception Fix the exception that HTTP short connection cannot take effect Fix a memory leak in the TLS over SM3 suite after disconnection HTTP2 support doretry when connection reset by peer or broken pipe Fix the host information error from the connection pool Fix data race bug when choose weighted cluster Return invalid host if host is unhealthy in EdfLoadBalancer Fix the problem that XProtocol routing configuration timeout is invalid Add new networkfilter:grpc. A grpc server can be extended by networkfilter and implemented in the MOSN, reuse MOSN capabilities. Add a new extended function for traversal calls in the StreamFilterChain. Add HTTP 403 status code mapping in the bolt protocol. Add the ability to shutdown the upstream connections. Optimize the networkfilter configuration parsed. Support extend proxy config by protocol, optimize the proxy configuration parse timing. Add tls conenction's certificate cache, reduce the memory usage. Optimize Quick Start Sample. Reuse context when router handler check available. Modify the NewSubsetLoadBalancer's input parameter to interface instead of the determined structure. Add an example of using so plugin to implement a protocol. Optimize the method of get environment variable `GOPATH` in the `MAKEFILE`. Support darwin & aarch64 architecture. Optimize the logger file flag. Fix the bug of HTTP1 URL encoding. Fix the bug of HTTP1 URL case-sensitive process. Fix the bug of memory leak in error handling when the tls cipher suite is SM4. Add Wasm extension framework Add x-bolt sub-protocol to allow wasm-based codec for XProtocol Support fallback through SOORIGINALDST when protocol auto-matching got failed Support Go Plugin mode for XProtocol Support for network extension Update to Istio xDS v3 API Branch: Remove redundant file path clean when resolving StreamFilter configs Allow setting a unified callback handler for the StreamFilterChain Support multi-stage execution and remove state lock for the FeatureGate Add trace support for HTTP2 Add StageManger to divide the bootstrap procedure of MOSN into four configurable stages Unify the type definitions of XProtocol and move into

package Add GetTimeout method for XProtocol to replace the variable getter Fix concurrent read and write for RequestInfo in Proxy Fix the safety bug when forwarding the request URI Fix concurrent slice read and write for Router configurations when doing persistence Upgrade sentinel version to v1.0.2 Shrink the read buffer of tls when read timeout, reduce tls memory consumption Add comments and simplify the implementation of the xprotocol protocol connpool Update the mosn registry version Optimize header matching logic when routing, support general RPC routing matching implementation Delete some of the original constants and add constants used to describe the mechanism of variables Refactor flow control module, support custom callback extension, realize the ability to customize filter conditions and modify context information, etc Fix metrics statistics error when request is abnormal Fix the bug that the URL is not escaping before forwarding HTTP request Fix the variable injection errors in HTTP protocol, Fix the bug that routing rewrite is not supported in the HTTP2 protocol Support Domain-Specific Language route implementation StreamFilter supports the dynamic link libraries written in Go VirtualHost supports perfilterconfig configuration in routing configuration Xprotocol supports dubbo thrift protocol Add UDS address prefix check before UDS resolution when TCP address resolution fails Optimized the retrial interval for connection pool acquisition Add global switch for write loop mode Optimize auto protocol matching and add test cases Replace the headers with more efficient variables Pool the writeBufferChan timer to reduce overhead Add MOSN failure detail info into TraceLog New read done channel in HTTP protocol processing Enhance logger rotator Upgrade to golang 1.14.13 Refactor router chain extension mode to the route handler extension mode, support different router handler configuration Refactor MOSN extended configuration, support load config according to configuration order Fix the bug no provider available occurred after dubbo2.7.3 Fix the bug that UDS connections were treated as TCP connections in netpoll mode Fix the problem that the HTTP Header cannot be obtained correctly when it is set to an empty value Support old Mosn transfer configuration to new Mosn through UDS to solve the issue that Mosn in XDS mode cannot be smoothly upgraded Automatic protocol identification supports the identification of XProtocol Support configuration of the keepalive parameters for XProtocol Support more detailed time tracking Support metrics lazy registration to optimize metrics memory when number of service in cluster is too large Add setter function for default XProtocol multiplex connection pool size Support netpoll Support broadcast Support get tls configurations from LDS response Add ACK response for SDS Use the latest TLS memory optimization scheme Proxy log optimization to reduce memory escape Increase the maximum number of connections limit When AccessLog fails to obtain variables, use "-" instead MaxProcs supports configuring automatic recognition based on CPU usage limits Allow specifying network for cluster Refactored the StreamFilter framework. The network filter can reuse the stream filter framework Fix HTTP Trace get URL error Fix the ConnectTimeout parameter of xDS cluster is not converted Fix the upstreamHostGetter method gets the wrong hostname Fix tcp proxy close the connection abnormally Fix the lack of default configuration of mixer filter, resulting in a nil pointer reference Fix HTTP2 direct response not setting `Content-length` correctly Fix the nil pointer reference in getAPISourceEndpoint Fix memory increase caused by too many Timer applications when Write is piled up Fix the problem of missing stats when Dubbo Filter receives an illegal response Add MOSN configure extension Add MOSN configuration tool , improve user configure experience Avoid copying http response body Upgrade `github.com/TarsCloud/TarsGo` package, to v1.1.4 Add test for various connpool Use sync.Pool to reduce memory cost by TLS connection outBuf Reduce xprotocol lock area Remove useless parameter of

method, remove ALPN detection in `Dispatch` method of struct `streamConn` Add `TerminateStream` API to `StreamReceiverFilterHandler`, with which stream can be reset during handling Add client TLS fallback Fix TLS HashValue in host Fix disable_log admin api typo Fix `go mod tidy` failing Fix `ResourceExhausted: grpc: received message larger than max` when MOSN receive > 4M XDS messages Fix fault tolerance unit-test Fix MOSN reconfig fails when `MOSNConfig.servers Set timeout for local write buffer send, avoid goroutine leak Fix deadloop when TLS timeout Fix data isn't modified by `SetData` method in `dubbo.Frame` struct Add header max size configuration option. Add protocol impement choice whether need workerpool mode. And support workerpool mode concurrent configuration. Add UDS feature for listener. Add dubbo protocol use xDS httproute config filter. Optimiza http situation buffer malloc. Optimize RWMutex for SDS StreamClient. Update hessian2 v1.7.0 lib. Modify NewStream interface, use callback replace direct. Refactor XProtocol connect pool, support pingpong mode, mutiplex mode and bind mode. Optimize XProtocol mutiplex mode, support Host max connect configuration. Optimize route regex config avoid dump unuse config. Fix README ant logo invalid address. Fix header override content when set a longer header to request header. Fix Dubbo protocol analysis attachment maybe panic. Logger Roller supports the custom Roller. Add a SendHijackReplyWithBody API for streamFilter. The configuration adds option of turning off the smooth upgrade. If the smooth upgrade is turned off, different instances of MOSN can be started on the same machine. Optimize the MOSN integration test framework and add more unit test cases. DirectResponse route configuration supports the update mode of XDS. Add a new field of TLSContext for clusterManager configuration. Fix the bug that UDP connection timeout during the smooth upgrade will cause an endless loop. Fix the bug that call DirectResponse in the SendFilter will cause an endless loop. Fix concurrency conflicts in HTTP2 stream counting. Fix the bug that UDP connection read timeout cause data loss. Fix the bug that the response StatusCode cannot be recorded correctly due to the loss of the protocol flag when doing a retry. Fix the protocol boltv2 decode error. Fix the bug that listener cannot be restarted automatically when listener panic. Fix the bug that NoCache flag is invalid in variable. Fix concurrency conflicts in SDS reconnect. Routing Path Rewrite supports configuring the content of Rewrite by regular expression Configure new fields: Extended configuration fields, you can start the configuration by extending the configuration fields; Dubbo service discovery configuration via extended configuration fields New DSL feature for easy control of request processing behavior Extended implementation of StreamFilter with new traffic mirroring function Listener configuration adds UDP support Configuration format support YAML format parsing Routing support for HTTP redirect configuration Istio's stats filter for personalizing metrics based on matching criteria Metrics configuration support to configure the output percentage of the Histogram StreamFilter New state for aborting requests directly and not responding to clients XProtocol hijack response support carry body Apache SkyWalking upgrade to version

Upstream Connection TLS State Determination Modification to support the determination of whether a connection needs to be re-established via a TLS-configured Hash Optimize DNS cache logic to prevent DNS flooding issues that can be caused when DNS fails Fix the bug that XProtocol protocols determine protocol errors in scenarios with multiple protocols when TLS encryption is enabled Fix bug in AccessLog where variables of prefix match type don't work Fix bug where Listener configuration parsing is not handled correctly Fix Router/Cluster bug that fails to save when the Name field contains a path separator in the file persistence configuration type Support for Istio 1.5.X go-control-plane upgrade to version 0.9.4 xDS support for ACK, new Metrics for xDS. Istio sourceLabels filtering support probe interface with pilot-agent support support for more startup parameters, adapting to Istio agent startup scenarios gzip, strict-dns, original-dst support for xDS updates. Remove Xproxy Logic Maglev Load Balancing Algorithm Support New connection pool implementation for supporting message class requests New Metrics for TLS Connection Switching Metrics for adding HTTP StatusCode Add Metrics Admin API output New interface to query the number of current requests for proxy Support for HostRewrite Header Upgrade tars dependencies to fix compilation issues with higher versions of Golang xDS Configuration Analysis Upgrade Adaptation Istio 1.5.x Optimize log output from proxy DNS Cache default time changed to 15s HTTP Parameter Route Matching Optimization Upgrade the fasthttp library Optimizing Dubbo Request Forwarding Encoding Request max body configurable for HTTP support Fix Dubbo Decode bug that fails to parse attachment Fix bug where streams could be created before HTTP2 connection is established Fix HTTP2 Handling Trailer null pointer exception Fix bug where HTTP request headers are not standardized by default Fix panic exceptions caused by disconnected connections during HTTP request processing Fix read/write lock copy issue with dubbo registry Support Strict DNS Cluster Stream Filter that supports GZip processing Dubbo service registry complete Beta version Stream Filter that supports standalone fault isolation Integrated Sentinel flow limiting capability Optimize implementation of EDF LB and re-implement WRR LB using EDF Configure to get ADMIN API optimizations, add features and environment variable related ADMIN API Update that triggers a health check when updating Host changed from asynchronous mode to synchronous mode Updated the Dubbo library to optimize the performance of Dubbo Decode Optimize Metrics output in Prometheus, using regularity to filter out illegal Key Optimize MOSN's return status code Fix concurrent conflict issues with health check registration callback functions Fix the error where the configuration persistence function did not handle the null configuration correctly Fix the problem that DUMP as a file fails when ClusterName/RouterName is too long Fix the problem of not getting the XProtocol protocol correctly when getting it Fix the problem with fetching the wrong context when creating StreamFilter Support Skywalking Stream Filter adds a new phase of Receive Filter execution, which allows you to execute Receive Filter again after MOSN has finished routing Host HTTP2 supports streaming FeatureGate adds interface KnownFeatures to output current FeatureGate status Provide a protocol-transparent way to obtain requested resources (PATH, URI, ARG), with the definition of resources defined by each protocol itself New load balancing algorithm Support for ActiveRequest LB Support WRR LB XProtocol protocol engine optimization Modifies the XProtocol heartbeat response interface to support the protocol's heartbeat response to return more information Optimize connpool for heartbeat triggering, only heartbeats will be triggered if the protocol for heartbeats is implemented Dubbo library dependency version updated from v1.5.0-rc1 to

API Adjustments, HostInfo added health check related interface Optimize circuit breaking function Responsible for balanced selection logic simplification, Hosts of the same address multiplex the same health check mark Optimize HTTP building logic and improve HTTP building performance Log rotation logic triggered from writing logs, adjusted to timed trigger Typo fixes Fix the xDS parsing fault injection configuration error Fix the request hold issue caused by the MOSN HTTP HEAD method Fix a problem with missing StatusCode mappings in the XProtocol engine Fix the bug for DirectReponse triggering retries Support the extension of Listener Filter, the transparent hijacking capability is implemented based on Listener Filter New Set method for variable mechanism Added automatic retry and exception handling when SDS Client fails Improve TraceLog and support injecting context Refactored XProtocol Engine and reimplemented SOFARPC protocol Removed SOFARPC Healthcheck filter and changed to xprotocol's built-in heartbeat implementation Removed the original protocol conversion (protocol conv) support of the SOFARPC protocol, and added a new protocol conversion extension implementation capability based on stream filter xprotocol adds idle free and keepalive Protocol analysis and optimization Modify the Encode method parameters of HTTP2 protocol Streamlined LDS interface parameters Modified the routing configuration model, abandoned `connection_manager` Optimize Upstream dynamic domain name resolution mechanism Optimized TLS encapsulation, added error log, and modified timeout period in compatibility mode Optimize timeout setting, use variable mechanism to set timeout Dubbo parsing library dependency upgraded to 1.5.0 Reference path migration script adds OS adaptation Fix the problem of losing query string during HTTP2 protocol forwarding Support multi-process plugin mode Startup parameters support service-meta parameters Supports abstract uds mode to mount sds socket Separate some mosn base library code into mosn.io/pkg package (github.com/mosn/pkg) Separate mosn interface definition to mosn.io/api package (github.com/mosn/api) The log basic module is separated into mosn.io/pkg, and the log of mosn is optimized Optimize FeatureGate Added processing when failed to get SDS configuration When CDS deletes a cluster dynamically, it will stop the health check corresponding to the cluster The callback function when sds triggers certificate update adds certificate configuration as a parameter Fixed a memory leak issue when SOFARPC Oneway request failed Fixed the issue of 502 error when receiving non-standard HTTP response Fixed possible conflicts during DUMP configuration Fixed the error of Request and Response Size of TraceLog statistics Fixed write timeout failure due to concurrent write connections Fixed serialize bug Fixed the problem that the memory reuse buffer is too large when the connection is read, causing the memory consumption to be too high Optimize Dubbo related implementation in XProtocol Support variable mechanism, accesslog is modified to use variable mechanism to obtain information Refactored package reference path for `sofastack.io/sofa-mosn` to `mosn.io/mosn` Fixed the bug that buf is not empty when Write is connected Fixed HTTP2 stream counting bug Fix memory leak caused by proxy coroutine panic Fix memory leak caused by read and write coroutine stuck in specific scenarios Fix the bug of xDS concurrent processing `make image` output image modification, modified to a MOSN example Fixed the field of getting CallerAPP in TraceLog of SOFA RPC Metrics added: count of requests that MOSN failed to process Improved the write performance of Metrics shared memory with MMAP Reduced the default coroutine pool size and optimize memory usage Optimized log output Fixed a bug where if there is a log file when MOSN starts, it is not rotated

Added interface: Support connection returns current availability status Manage API to add default help page Reduced connections and request default memory allocation Optimized machine list information storage in ConfigStore Metrics optimization SOFARPC heartbeat requests are no longer recorded in Metrics Optimize shared memory mode for Metrics use Optimized profile reading, ignoring empty files and non-json files Optimized the xDS client The xDS client is modified to start completely asynchronously without blocking the startup process Optimize xDS client disconnect retry logic Fixed bug where hot upgrade connection migration would fail in TLS Inspector mode Fixed a bug where the log rotation configuration could not be updated correctly Fixed a bug where the log did not output log time correctly at the Fatal level Fixed a bug in which a connected read loop would cause an infinite loop in a particular scenario Fixed a bug in HTTP connection count statistics errors Fixed a bug that prevented the channel from being properly closed when the connection was closed Fixed bug handling of buffers when handling response to BoltV2 protocol Fixed concurrency violations when reading and writing persistent configurations Fixed concurrency conflicts that receive responses and trigger timeouts Added FeatureGates support Added Metrics: request processing time in MOSN Support for restarting listening sockets that have been closed at runtime Upgraded to Go 1.12.7 Modified the xDS client startup order, now it will start before the MOSN service Fixed a bug that did not properly trigger a request reset when an RPC request was written. Fixed memory leak bugs when no upstream response was received Fixed a bug where some of the request parameters would be lost when the HTTP request was retried Fixed a bug that could cause panic when DNS resolution failed Fixed a bug that didn't time out when the connection was established in TLS Inspector mode prometheus output format no longer supports gzip Configured the new idle connection timeout `connectionidletimeout` field, the default value is 90s. MOSN will actively close the connection when the idle connection timeout is triggered Error log adds Alert interface and outputs error log with error code format Support SDS to obtain TLS certificate Refactored upstream module Refactored the internal Cluster implementation structure Update Host implementation changed from delta update to full update to speed up update Refactored Snapshot implementation Optimized some memory usage Modified the parameters of some interface functions Refactored the implementation of Tracing and supports more extensions Optimized connected Metrics statistics Optimized the output format of Metrics in prometheus mode Optimized IO write coroutines to reduce memory footprint Fixed possible concurrency violations when creating Loggers concurrently Fixed a bug that caused a panic due to a response and a trigger timeout Fixed concurrent bugs when HTTP processing connection reset Fixed bug where the log file could not be rotated correctly after it was deleted Fixed a concurrent bug when HTTP2 handled goaway Configure a hybrid mode that supports both xDS mode and static configuration Support management API extensible registration new API Supports dynamic update of StreamFilter configuration, which can take effect on all connections Refactored package import path Changed from `github.com/alipay/sofa-mosn` to

Optimized the output structure of the error log Improved implementation of configuration file json parsing Optimized memory reuse for large buffer scenarios Optimized the use of shared memory for Metrics when first booting Fixed bug where ProxyLogger's log level could not be dynamically updated Fixed connection read and write loops that could cause panic bugs Fixed a bug that didn't work correctly when deleting multiple clusters at the same time Fixed a bug where the number of active requests in Metrics was incorrectly counted in concurrency Fixed a bug where the HTTP connection triggered a panic when resetting and receiving a response concurrency Support for new profile models Cluster configuration support is set to a separate directory Routing configuration support is set to a separate directory Support for multiple certificate configurations Compatible with old profile models Add new Metrics to show basic information version number version of Go used MOSN runtime state the address to listen to Support for Metrics filtering Support for registering callback functions when MOSN changes state Support Request oneway Support batch modification of error log level, support batch shutdown of Access log Refactored the Proxy threading model Each request is processed using a separate Goroutine Use the state machine instead of the callback function to request the processing flow to be modified to serial Refactored the connection pool selection model, try to avoid selecting the backend to the exception Optimized Metrics output performance Optimized error log output Optimized SOFA RPC protocol parsing performance Extended the implementation of the context, reduce the number of nesting layers and optimize performance when compatible with standard contexts Fixed a bug in the parsing part of the json configuration Fixed a bug where HTTP would trigger Goroutine leaks in certain scenarios Fixed bug in IO write concurrency scenarios that could cause panic Fixed a bug where HOST information was not deduplicated Metrics added prometheus mode output Metrics supports exclusion configuration Support dynamic opening and closing of logs, support dynamic adjustment of error log level HTTP protocol support 100 continue Support Tars protocol Connections that support the SOFARPC protocol send heartbeats when idle Support for creating connections based on sub-protocols of SOFARPC Support for new smooth upgrade methods Active health check supports scalable implementation, default is tcp dial Memory Multiplexing Module supports scalability Load balancing implementation support for scalability Profile resolution support is extensible, default is json file parsing Refactored the stream package structure, modified some API interfaces Log module modified to asynchronous write log Refactored xDS configuration conversion module Refactored implementation of the routing chain Move some common function functions to the utils package directory Route matching optimization, supporting KV matching in specific scenarios The request status code recorded in the request message is uniformly converted to the HTTP status code as a standard Optimized Tracer implementation to improve the performance of Tracer records Optimized performance for profile persistence Optimized performance for dynamically updating backend machine lists Fixed deadlock bug in workpool Fixed bug with HTTP2 error handling trailer Fixed concurrency issues with buffer reuse Support gRPC via HTTP2 Support HTTP/HTTP2 protocol automatic identification Tracer supporting SOFA RPC protocol Add more routing features Support for retry policy configuration Policy configuration that supports direct response Support for adding and deleting custom fields in HTTP header Support for rewriting the HTTP protocol Host and URI Support for scalable routing implementation Support QPS current limiting and rate based current limiting Support fault injection Support for Mixer Support for obtaining MOSN runtime configuration Refactored the protocol framework to support the extension of the SOFA RPC sub-protocol Optimized support for the HTTP protocol, performance improvement of