Skip to content

Latest commit

 

History

History
934 lines (699 loc) · 53.3 KB

CHANGELOG.md

File metadata and controls

934 lines (699 loc) · 53.3 KB

Changelog

v1.0.0

Changes

  • Protocol: bolt support GoAway (#1993) @z2z23n0
  • Protocol: HTTP health check support more configurations (#1999) @dengqian
  • Add new Admin API for query MOSN version (#2002) @songzhibin97
  • Exit code change to 2 when mosn start failed in upgrade mode (#2006) @doujiang24
  • Add a new function to check whether MOSN is in active upgrading state (#2003) @doujiang24
  • Add new command: stop (#1990) @Jun10ng

Bug fixes

  • Fix the problem that the domain name update result is wrong when there are multiple DNS domain names in StrictDnsCluster (#1994) @Jun10ng
  • Fix upgrade state check error when metrics is configured to shared memory (#2011) @nejisama

v0.27.0

New Features

  • 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) @nejisama
  • Support use variables to configure route headers add or remove. (#1946) @MengJiapeng
  • Support health check's initialize interval can be configured (#1942) @rickey17
  • Add HTTP Dial for upstream cluster health check (#1942) @rickey17
  • Add extension callback function for tls context created. @antJack
  • Support extension for Listener and Connection created. @antJack
  • Support graceful shutdown for xprotocol framework. (#1922) @doujiang24
  • Support graceful shutdown for MOSN (#1922) @doujiang24
  • Integrated Holmes for automatically pprof (#1978) @doujiang24
  • Add Fetch and RequireCert for SDS client @nejisama
  • Add a new tls verify extension: sni verify (#1910) @nejisama

Changes

  • Upgrade dubbo-go-hessian to v1.10.2 (#1896) @wongoo
  • Add new configuration for upstream cluster: IdleTimeout (#1914) hui-cha
  • Transfer some upstream cluster configuration constants to config/v2 package (#1970) @jizhuozhi
  • Add variable to store request raw data in xprotocol protocols implementations @antJack
  • Add new configuration for original-dst filter: localhost listener can be used in listener match fallback (#1972) @nejisama
  • Add new configuration for original-dst cluster: use localhost address as the target address @nejisama
  • Do not use vendor mode any more, use go mod instead. (#1997) @nejisama

Refactoring

  • Refactor MOSN state management and stage management. (#1859) @doujiang24
  • 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) @doujiang24
  • Use separate IoBuffer for log (#1936) @nejisama
  • Refactor sds provider, support a sds config to generate different tls config (#1958) @nejisama

Optimization

  • Optimize the irregular module naming in examples. (#1913) @scaat
  • Delete some useless fields in connection struct (#1811) @doujiang24
  • Optimize the heap management in edf loadbalancer (#1920) @jizhuozhi
  • Optimize the error message when get variables returns error (#1952) @antJack
  • Optimize the memory reuse in proxy: a finished request received reset will take no effect on memory reuse now @wangfakang
  • Optimize the memory usage in maglev loadbalancer (#1964) @baerwang
  • Support error log to iobuffer error, support exception handling when log rotation error occurs (#1996) @nejisama

Bug fixes

  • Fix: when stream id is too large in http2, the connection is not closed. (#1900) @jayantxie
  • Fix: route error log output is abnormal (#1915) @scaat
  • Fix: xprotocol go plugin example build errors (#1899) @nearmeng
  • Fix: original-dst filter get ip errors being ignored (#1931) @alpha-baby
  • Fix: HTTP may cause hangs in high concurrency (#1949) @alpha-baby
  • Fix: istio config parse extension spell error (#1927) LemmyHuang
  • Fix: proxy may cause nil panic when get variables (#1953) @doujiang24
  • Fix: HTTP cannot get reason for connection reset (#1772) @wangfakang
  • Fix: cannot restart a stopped listener (#1883) @lemonlinger
  • Fix: strict-dns debug log output is abnormal (#1963) @wangfakang
  • Fix: divide 0 error in edf loadbalancer (#1970) @jizhuozhi
  • Fix: listener may cause nil panic when set deadline (#1981) @antJack
  • Fix: some typo errors @Jun10ng @fibbery
  • Fix: too many goroutines makes go test race failed (#1898) @alpha-baby

v0.26.0

Incompatible Change

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 this doc(In Chinese) for changing the old existing code suit for the new release.

New Features

  • Added the ip_access new filter to manage access control based on IP (#1797). @Bryce-huang
  • Support admin api extends auth functions (#1834). @nejisama
  • The transcode filter module support dynamic phase (#1815). @YIDWang
  • Added the SetConnectionState method for tls connection in pkg/mtls/crypto/tls.Conn (#1804). @antJack
  • Added the after-start and after-stop two new stages, and allow to register handler during these stages. @doujiang24
  • Support specify the unix domain socket directory by adding the new "uds_dir" configuration (#1829). @dengqian
  • Support choose dynamic protocol convert dynamically and allow register transcoder through go-plugin. @Tanc010
  • Added more HTTP protocol method to make protocol matcher work properly (#1870). @XIEZHENGYAO
  • Support to set upstream protocol dynamically (#1808). @YIDWang
  • Support set default HTTP stream config #1886. @nejisama

Changes

  • Change the default max header size to 8KB (#1837). @nejisama
  • Refactory default HTTP1 and HTTP2 convert, remove the proxy convert, use transcoder filter instead. @nejisama
  • transcoder filter: changed to register trancoder factory instead trancoder (#1879). @YIDWang

Bug fixes

  • Fix a HTTP buffer reuse related bug that may leads to nil panics in high concurrency case. @nejisama
  • Fix: get the proper value of variable response_flag, (#1814). @lemonlinger
  • Fix: prefix_write not work with "/" (#1826). @Bryce-huang
  • Fix: the reconfig.sock file may be removed unexpectly when killed the old MOSN manually during smoothly upgrade, (#1820). @XIEZHENGYAO
  • 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). @taoyuanyuan
  • Should set the inherit config back to the MOSN instance (#1819). @XIEZHENGYAO
  • Should send resetStreamFrame to upstream when cancel grpc context at client side, otherwise server side context won't be done. @XIEZHENGYAO
  • Should set the resetReason before closing the stream connection, otherwise, may unable to get the real reason (#1828). @wangfakang
  • Should use the listener that best match when found multi listeners, otherwise, may got 400 error code. @MengJiapeng
  • Fixed panic due to concurrent map iteration and map write during process setting broadcast in HTTP2 protocol. @XIEZHENGYAO
  • Fix memory leak occurred in the binding connpool of XProtocol (#1821). @Dennis8274
  • Should close logger at the end, otherwise, may lost log during close MOSN instance (#1845). @doujiang24
  • Fix panic due to codecClient is nil when got connect timeout event from XProtocol PingPong connection pool (#1849). @cuiweixie
  • Health checker not work when the unhealthyThreshold is an empty value (#1853). @Bryce-huang
  • WRR may leads dead recursion in unweightChooseHost #1860. @alpha-baby
  • Fix direct response, send hijack should not transcode. @nejisama
  • Fix EDF wrr lb cannot choose a healthy host when there's a unhealthy host with a high weight. @lemonlinger
  • Got the wrong CACert filename when converting the listen filter from Istio LDS, MOSN may not listen success (#1893). @doujiang24
  • The goroutine for resolving hosts in STRICT_DNS_CLUSTER cannot be stopped #1894 @bincherry

v0.25.0

New Features

Refactoring

  • Decouple MOSN core and Istio related xDS code. @nejisama
  • Upgrade proxy-wasm-go-host version. @zhenjunMa
  • Refactor networkfilter configuration parse functions, support AddOrUpdate and Get. @antJack

Optimization

  • Use mod vendor instead of GO111MODULE=off in Makefile. @scaat
  • Move some archived repo code into mosn.io/pkg. @nejisama
  • Optimize EDF loadbalancer: random pick host at the first select time. @alpha-baby
  • Optimize EDF loadbalancer performance. @alpha-baby
  • Optimize boltv2 protocol heartbeat's trigger and reply. @nejisama
  • Optimize HTTP2 retry processing in stream mode, optimize HTTP2 unary request processing in stream mode. @XIEZHENGYAO
  • Ignore CPU numbers limit when use environment variable to set GOMAXPROCS. @wangfakang
  • Reduce memory alloc when create subset loadbalancer. [@dzdx]((https://github.com/dzdx)
  • Support different listener can independent run same name gRPC Server. @nejisama

Bug fixes

  • Fix MOSN hangs up when host is empty when retry. @XIEZHENGYAO
  • Fix connections in msgconnpool cannot handle connect event. @RayneHwang
  • Fix MOSN panic when tracer driver is not inited and someone calls tracer Enable. @nejisama
  • Fix boltv2 protocol constructs hijack response version wrong. @nejisama
  • Fix HTTP2 handle connection termination event. @XIEZHENGYAO
  • Fix typo. @jxd134 @yannsun
  • Fix ResponseFlag outputs in RequestInfo. @wangfakang
  • Fix bolt/boltv2 protocol not recalculated the empty data's length. @hui-cha

v0.24.0

New Features

  • Support jaeger to collect OpenTracing message @Roger
  • Routing configuration new variable configuration mode, you can modify the routing results by modifying the variable @wangfakang
  • Routing virtualhost matching supports port matching mode @jiebin
  • Impl envoy filter: header_to_metadata @antJack
  • Support graceful for uds @taoyuanyuan
  • New subset load balancing logic to use the full list of machines for load balancing in scenarios where there is no metadata matching @nejisama
  • MOSN's grpc framework supports graceful stop @alpha-baby

Optimization

  • Optimize health check update mode for Cluster configuration updates @alpha-baby
  • Add OnConnectionEvent interface in api.Connection @CodingSinger
  • Weighted roundrobin loadbalancer underwriting policy adjusted to normal roundrobin load balancer @alpha-baby
  • Enhance interface value in mosn variable model @antJack
  • Subset also follows the same underwriting strategy when determining the number of machines and whether they exist @antJack

Bug fixes

  • Dubbo stream filter supports automatic protocol recognition @Thiswang
  • Fix roundrobin loadbalancer result exception in case of concurrency @alpha-baby
  • Fix unix address resolution exception @taoyuanyuan
  • Fix the exception that HTTP short connection cannot take effect @taoyuanyuan
  • Fix a memory leak in the TLS over SM3 suite after disconnection @ZengKe
  • HTTP2 support doretry when connection reset by peer or broken pipe @taoyuanyuan
  • Fix the host information error from the connection pool @Sharember
  • Fix data race bug when choose weighted cluster @alpha-baby
  • Return invalid host if host is unhealthy in EdfLoadBalancer @alpha-baby
  • Fix the problem that XProtocol routing configuration timeout is invalid @nejisama

v0.23.0

New Features

  • Add new networkfilter:grpc. A grpc server can be extended by networkfilter and implemented in the MOSN, reuse MOSN capabilities. @nejisama @zhenjunMa
  • Add a new extended function for traversal calls in the StreamFilterChain. @wangfakang
  • Add HTTP 403 status code mapping in the bolt protocol. @pxzero
  • Add the ability to shutdown the upstream connections. @nejisama

Optimization

  • Optimize the networkfilter configuration parsed. @nejisama
  • Support extend proxy config by protocol, optimize the proxy configuration parse timing. @nejisama
  • Add tls conenction's certificate cache, reduce the memory usage. @nejisama
  • Optimize Quick Start Sample. @nobodyiam
  • Reuse context when router handler check available. @alpha-baby
  • Modify the NewSubsetLoadBalancer's input parameter to interface instead of the determined structure. @alpha-baby
  • Add an example of using so plugin to implement a protocol. @yichouchou
  • Optimize the method of get environment variable GOPATH in the MAKEFILE. @bincherry
  • Support darwin & aarch64 architecture. @nejisama

Bug fixes

  • Fix the bug of HTTP1 URL encoding. @morefreeze
  • Fix the bug of HTTP1 URL case-sensitive process. @GLYASAI
  • Fix the bug of memory leak in error handling when the tls cipher suite is SM4. @william-zk

v0.22.0

New Features

  • Add Wasm extension framework @antJack
  • Add x-bolt sub-protocol to allow wasm-based codec for XProtocol @zonghaishang
  • Support fallback through SO_ORIGINAL_DST when protocol auto-matching got failed @antJack
  • Support Go Plugin mode for XProtocol @fdingiit
  • Support for network extension @wangfakang
  • Update to Istio xDS v3 API @champly Branch: istio-1.7.7

Optimization

  • Remove redundant file path clean when resolving StreamFilter configs @eliasyaoyc
  • Allow setting a unified callback handler for the StreamFilterChain @antJack
  • Support multi-stage execution and remove state lock for the FeatureGate @nejisama
  • Add trace support for HTTP2 @OrezzerO

Refactoring

  • Add StageManger to divide the bootstrap procedure of MOSN into four configurable stages @nejisama
  • Unify the type definitions of XProtocol and move into mosn.io/api package @fdingiit
  • Add GetTimeout method for XProtocol to replace the variable getter @nejisama

Bug fixes

  • Fix concurrent read and write for RequestInfo in Proxy @nejisama
  • Fix the safety bug when forwarding the request URI @antJack
  • Fix concurrent slice read and write for Router configurations when doing persistence @nejisama

v0.21.0

Optimization

  • Upgrade sentinel version to v1.0.2 @ansiz
  • Shrink the read buffer of tls when read timeout, reduce tls memory consumption @cch123
  • Add comments and simplify the implementation of the xprotocol protocol connpool @cch123
  • Update the mosn registry version @cadeeper @cch123

Refactoring

  • Optimize header matching logic when routing, support general RPC routing matching implementation @nejisama
  • Delete some of the original constants and add constants used to describe the mechanism of variables @nejisama
  • Refactor flow control module, support custom callback extension, realize the ability to customize filter conditions and modify context information, etc @ansiz

Bug fixes

  • Fix metrics statistics error when request is abnormal @cch123
  • Fix the bug that the URL is not escaping before forwarding HTTP request @antJack
  • Fix the variable injection errors in HTTP protocol, Fix the bug that routing rewrite is not supported in the HTTP2 protocol @nejisama

New Features

  • Support Domain-Specific Language route implementation @CodingSinger
  • StreamFilter supports the dynamic link libraries written in Go @CodingSinger
  • VirtualHost supports per_filter_config configuration in routing configuration @machine3
  • Xprotocol supports dubbo thrift protocol @cadeeper

v0.20.0

Optimization

  • Add UDS address prefix check before UDS resolution when TCP address resolution fails @wangfakang
  • Optimized the retrial interval for connection pool acquisition @nejisama
  • Add global switch for write loop mode @nejisama
  • Optimize auto protocol matching and add test cases @taoyuanyuan
  • Replace the headers with more efficient variables @CodingSinger
  • Pool the writeBufferChan timer to reduce overhead @cch123
  • Add MOSN failure detail info into TraceLog @nejisama
  • New read done channel in HTTP protocol processing @alpha-baby
  • Enhance logger rotator @nejisama

Refactoring

  • Upgrade to golang 1.14.13 @nejisama
  • Refactor router chain extension mode to the route handler extension mode, support different router handler configuration @nejisama
  • Refactor MOSN extended configuration, support load config according to configuration order @nejisama

Bug fixes

  • Fix the bug no provider available occurred after dubbo2.7.3 @cadeeper
  • Fix the bug that UDS connections were treated as TCP connections in netpoll mode @wangfakang
  • Fix the problem that the HTTP Header cannot be obtained correctly when it is set to an empty value @ianwoolf

New Features

  • Support old Mosn transfer configuration to new Mosn through UDS to solve the issue that Mosn in XDS mode cannot be smoothly upgraded @alpha-baby
  • Automatic protocol identification supports the identification of XProtocol @cadeeper
  • Support configuration of the keepalive parameters for XProtocol @cch123
  • Support more detailed time tracking @nejisama
  • Support metrics lazy registration to optimize metrics memory when number of service in cluster is too large @champly
  • Add setter function for default XProtocol multiplex connection pool size @cch123
  • Support netpoll @cch123
  • Support broadcast @dengqian
  • Support get tls configurations from LDS response @wZH-CN
  • Add ACK response for SDS @wZH-CN

v0.19.0

Optimization

  • Use the latest TLS memory optimization scheme @cch123
  • Proxy log optimization to reduce memory escape @taoyuanyuan
  • Increase the maximum number of connections limit @champly
  • When AccessLog fails to obtain variables, use "-" instead @champly
  • MaxProcs supports configuring automatic recognition based on CPU usage limits @champly
  • Allow specifying network for cluster @champly

Refactoring

  • Refactored the StreamFilter framework. The network filter can reuse the stream filter framework @antJack

Bug fixes

  • Fix HTTP Trace get URL error @wzshiming
  • Fix the ConnectTimeout parameter of xDS cluster is not converted @dengqian
  • Fix the upstreamHostGetter method gets the wrong hostname @dengqian
  • Fix tcp proxy close the connection abnormally @dengqian
  • Fix the lack of default configuration of mixer filter, resulting in a nil pointer reference @glyasai
  • Fix HTTP2 direct response not setting Content-length correctly @wangfakang
  • Fix the nil pointer reference in getAPISourceEndpoint @dylandee
  • Fix memory increase caused by too many Timer applications when Write is piled up @champly
  • Fix the problem of missing stats when Dubbo Filter receives an illegal response @champly

v0.18.0

New Features

Optimization

  • Avoid copying http response body @wangfakang
  • Upgrade github.com/TarsCloud/TarsGo package, to v1.1.4 @champly
  • Add test for various connpool @cch123
  • Use sync.Pool to reduce memory cost by TLS connection outBuf @cch123
  • Reduce xprotocol lock area @cch123
  • Remove useless parameter of network.NewClientConnection method, remove ALPN detection in Dispatch method of struct streamConn @nejisama
  • Add TerminateStream API to StreamReceiverFilterHandler, with which stream can be reset during handling @nejisama
  • Add client TLS fallback @nejisama
  • Fix TLS HashValue in host @nejisama
  • Fix disable_log admin api typo @nejisama

Bug fixes

  • Fix go mod tidy failing @champly
  • Fix ResourceExhausted: grpc: received message larger than max when MOSN receive > 4M XDS messages @champly
  • Fix fault tolerance unit-test @wangfakang
  • Fix MOSN reconfig fails when MOSNConfig.servers[].listeners[].bind_port is false @alpha-baby
  • Set timeout for local write buffer send, avoid goroutine leak @cch123
  • Fix deadloop when TLS timeout @nejisama
  • Fix data isn't modified by SetData method in dubbo.Frame struct @lxd5866

v0.17.0

New Features

  • Add header max size configuration option. @wangfakang
  • Add protocol impement choice whether need workerpool mode. And support workerpool mode concurrent configuration. @cch123
  • Add UDS feature for listener. @CodingSinger
  • Add dubbo protocol use xDS httproute config filter. @champly

Optimization

  • Optimiza http situation buffer malloc. @wangfakang
  • Optimize RWMutex for SDS StreamClient. @nejisama
  • Update hessian2 v1.7.0 lib. @cch123
  • Modify NewStream interface, use callback replace direct. @cch123
  • Refactor XProtocol connect pool, support pingpong mode, mutiplex mode and bind mode. @cch123
  • Optimize XProtocol mutiplex mode, support Host max connect configuration. @cch123
  • Optimize route regex config avoid dump unuse config. @wangfakang

Bug fixes

  • Fix README ant logo invalid address. @wangfakang
  • Fix header override content when set a longer header to request header. @cch123
  • Fix Dubbo protocol analysis attachment maybe panic. @champly

v0.16.0

Optimization

  • Logger Roller supports the custom Roller. @wenxuwan
  • Add a SendHijackReplyWithBody API for streamFilter. @wenxuwan
  • 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. @cch123
  • Optimize the MOSN integration test framework and add more unit test cases. @nejisama @wangfakang @taoyuanyuan
  • DirectResponse route configuration supports the update mode of XDS. @wangfakang
  • Add a new field of TLSContext for clusterManager configuration. @nejisama

Bug fixes

  • Fix the bug that UDP connection timeout during the smooth upgrade will cause an endless loop. @dengqian
  • Fix the bug that call DirectResponse in the SendFilter will cause an endless loop. @taoyuanyuan
  • Fix concurrency conflicts in HTTP2 stream counting. @wenxuwan
  • Fix the bug that UDP connection read timeout cause data loss. @dengqian
  • Fix the bug that the response StatusCode cannot be recorded correctly due to the loss of the protocol flag when doing a retry. @dengqian
  • Fix the protocol boltv2 decode error. @nejisama
  • Fix the bug that listener cannot be restarted automatically when listener panic. @alpha-baby
  • Fix the bug that NoCache flag is invalid in variable. @wangfakang
  • Fix concurrency conflicts in SDS reconnect. @nejisama

v0.15.0

New Features

  • Routing Path Rewrite supports configuring the content of Rewrite by regular expression @liangyuanpeng
  • Configure new fields: Extended configuration fields, you can start the configuration by extending the configuration fields; Dubbo service discovery configuration via extended configuration fields @cch123
  • New DSL feature for easy control of request processing behavior @wangfakang
  • Extended implementation of StreamFilter with new traffic mirroring function @champly
  • Listener configuration adds UDP support @dengqian
  • Configuration format support YAML format parsing @GLYASAI
  • Routing support for HTTP redirect configuration @knight42

Optimization

  • Istio's stats filter for personalizing metrics based on matching criteria @wzshiming
  • Metrics configuration support to configure the output percentage of the Histogram @champly
  • StreamFilter New state for aborting requests directly and not responding to clients @taoyuanyuan
  • XProtocol hijack response support carry body @champly
  • Apache SkyWalking upgrade to version 0.5.0 arugal
  • Upstream Connection TLS State Determination Modification to support the determination of whether a connection needs to be re-established via a TLS-configured Hash @nejisama
  • Optimize DNS cache logic to prevent DNS flooding issues that can be caused when DNS fails @wangfakang

Bug fixes

  • Fix the bug that XProtocol protocols determine protocol errors in scenarios with multiple protocols when TLS encryption is enabled @nejisama
  • Fix bug in AccessLog where variables of prefix match type don't work @dengqian
  • Fix bug where Listener configuration parsing is not handled correctly @nejisama
  • Fix Router/Cluster bug that fails to save when the Name field contains a path separator in the file persistence configuration type @nejisama

v0.14.0

New Features

  • Support for Istio 1.5.X @wangfakang @trainyao @champly
    • 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 @trainyao
  • New connection pool implementation for supporting message class requests @cch123
  • New Metrics for TLS Connection Switching @nejisama
  • Metrics for adding HTTP StatusCode @dengqian
  • Add Metrics Admin API output @dengqian
  • New interface to query the number of current requests for proxy @zonghaishang
  • Support for HostRewrite Header @liangyuanpeng

Optimization

  • Upgrade tars dependencies to fix compilation issues with higher versions of Golang @wangfakang
  • xDS Configuration Analysis Upgrade Adaptation Istio 1.5.x @wangfakang
  • Optimize log output from proxy @wenxuwan
  • DNS Cache default time changed to 15s @wangfakang
  • HTTP Parameter Route Matching Optimization @wangfakang
  • Upgrade the fasthttp library @wangfakang
  • Optimizing Dubbo Request Forwarding Encoding @zonghaishang
  • Request max body configurable for HTTP support @wangfakang

Bug fixes

  • Fix Dubbo Decode bug that fails to parse attachment @champly
  • Fix bug where streams could be created before HTTP2 connection is established @dunjut
  • Fix HTTP2 Handling Trailer null pointer exception @taoyuanyuan
  • Fix bug where HTTP request headers are not standardized by default @nejisama
  • Fix panic exceptions caused by disconnected connections during HTTP request processing @wangfakang
  • Fix read/write lock copy issue with dubbo registry @champly

v0.13.0

New Features

  • Support Strict DNS Cluster @dengqian
  • Stream Filter @wangfakang that supports GZip processing
  • Dubbo service registry complete Beta version @cch123
  • Stream Filter @NeGnail that supports standalone fault isolation
  • Integrated Sentinel flow limiting capability @ansiz

Optimization

  • Optimize implementation of EDF LB and re-implement WRR LB using EDF @CodingSinger
  • Configure to get ADMIN API optimizations, add features and environment variable related ADMIN API @nejisama
  • Update that triggers a health check when updating Host changed from asynchronous mode to synchronous mode @nejisama
  • Updated the Dubbo library to optimize the performance of Dubbo Decode @zonghaishang
  • Optimize Metrics output in Prometheus, using regularity to filter out illegal Key @nejisama
  • Optimize MOSN's return status code @wangfakang

Bug fix

  • Fix concurrent conflict issues with health check registration callback functions @nejisama
  • Fix the error where the configuration persistence function did not handle the null configuration correctly @nejisama
  • Fix the problem that DUMP as a file fails when ClusterName/RouterName is too long @nejisama
  • Fix the problem of not getting the XProtocol protocol correctly when getting it @wangfakang
  • Fix the problem with fetching the wrong context when creating StreamFilter @wangfakang

v0.12.0

New Features

  • Support Skywalking @arugal
  • Stream Filter adds a new phase of Receive Filter execution, which allows you to execute Receive Filter @wangfakang again after MOSN has finished routing Host
  • HTTP2 supports streaming @peacocktrain @taoyuanyuan
  • FeatureGate adds interface KnownFeatures to output current FeatureGate status @nejisama
  • Provide a protocol-transparent way to obtain requested resources (PATH, URI, ARG), with the definition of resources defined by each protocol itself @wangfakang
  • New load balancing algorithm

Optimize

  • XProtocol protocol engine optimization @neverhook
    • 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 v1.5.0 @cch123
  • API Adjustments, HostInfo added health check related interface @wangfakang
  • Optimize circuit breaking function @wangfakang
  • Responsible for balanced selection logic simplification, Hosts of the same address multiplex the same health check mark @nejisama @cch123
  • Optimize HTTP building logic and improve HTTP building performance @wangfakang
  • Log rotation logic triggered from writing logs, adjusted to timed trigger @nejisama
  • Typo fixes @xujianhai666 @candyleer

Bug Fix

  • Fix the xDS parsing fault injection configuration error @champly
  • Fix the request hold issue caused by the MOSN HTTP HEAD method @wangfakang
  • Fix a problem with missing StatusCode mappings in the XProtocol engine @neverhook
  • Fix the bug for DirectReponse triggering retries @taoyuanyuan

v0.11.0

New features

  • Support the extension of Listener Filter, the transparent hijacking capability is implemented based on Listener Filter @wangfakang
  • New Set method for variable mechanism @pxzero
  • Added automatic retry and exception handling when SDS Client fails @taoyuanyuan
  • Improve TraceLog and support injecting context @nejisama

Refactoring

  • Refactored XProtocol Engine and reimplemented SOFARPC protocol @neverhook
    • 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 @taoyuanyuan
  • Streamlined LDS interface parameters @nejisama
  • Modified the routing configuration model, abandoned connection_manager @nejisama

Optimization

  • Optimize Upstream dynamic domain name resolution mechanism @wangfakang
  • Optimized TLS encapsulation, added error log, and modified timeout period in compatibility mode @nejisama
  • Optimize timeout setting, use variable mechanism to set timeout @neverhook
  • Dubbo parsing library dependency upgraded to 1.5.0 @cch123
  • Reference path migration script adds OS adaptation @taomaree

Bug fix

  • Fix the problem of losing query string during HTTP2 protocol forwarding @champly

v0.10.0

New features

  • Support multi-process plugin mode
  • Startup parameters support service-meta parameters
  • Supports abstract uds mode to mount sds socket

Refactoring

  • 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)

Optimization

  • 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

Bug fixes

  • 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

v0.9.0

New features

  • Support variable mechanism, accesslog is modified to use variable mechanism to obtain information

Refactoring

  • Refactored package reference path for sofastack.io/sofa-mosn to mosn.io/mosn

Bug fix

  • 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

v0.8.1

New features

  • Metrics added: count of requests that MOSN failed to process

Optimization

  • Improved the write performance of Metrics shared memory with MMAP
  • Reduced the default coroutine pool size and optimize memory usage
  • Optimized log output

Bug fix

  • Fixed a bug where if there is a log file when MOSN starts, it is not rotated normally.

v0.8.0

New features

  • Added interface: Support connection returns current availability status
  • Manage API to add default help page

Optimization

  • 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

Bug fix

  • 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

v0.7.0

New features

  • Added FeatureGates support
  • Added Metrics: request processing time in MOSN
  • Support for restarting listening sockets that have been closed at runtime

Refactoring

  • Upgraded to Go 1.12.7
  • Modified the xDS client startup order, now it will start before the MOSN service

Bug fix

  • 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

v0.6.0

New features

  • Configured the new idle connection timeout connection_idle_timeout 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

Refactoring

  • 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

Optimization

  • Optimized connected Metrics statistics
  • Optimized the output format of Metrics in prometheus mode
  • Optimized IO write coroutines to reduce memory footprint

Bug fix

  • 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

v0.5.0

New features

  • 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

Refactoring

  • Refactored package import path
    • Changed from github.com/alipay/sofa-mosn to sofastack.io/sofa-mosn

Optimaztion

  • 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

Bug fix

  • 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

v0.4.2

New features

  • 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

Refactoring

  • 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

Optimization

  • 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

Bug fix

  • 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

v0.4.1

New features

  • 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

Refactoring

  • 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

Optimization

  • 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

Bug fix

  • Fixed deadlock bug in workpool
  • Fixed bug with HTTP2 error handling trailer
  • Fixed concurrency issues with buffer reuse

v0.4.0

New features

  • 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

Refactoring

  • Refactored the protocol framework to support the extension of the SOFA RPC sub-protocol

Optimization

  • Optimized support for the HTTP protocol, performance improvement of about 30%
  • Optimized support for HTTP2 protocol, performance improvement of about 100%
  • Optimized implementation of TCP Proxy

Bug fix

  • Fixed a bug in smooth upgrades
  • Fixed bug with HTTP/HTTP2 protocol processing
  • Fixed some bugs with potential memory leaks

v0.3.0

New features

  • Support for smooth migration of Metrics
  • Smooth migration with TLS support

Optimization

  • Optimized CPU and memory usage for SOFARPC protocol resolution

v0.2.1

New features

  • Support stand-alone TLS switch
  • Support Dubbo protocol through XProtocol protocol

v0.2.0

New features

  • Support for route matching rules with weights
  • Added xDS client implementation
    • Support for LDS
    • Support CDS
  • Support for four layers of Filter to expand
  • Support TLS configuration scalable
  • Support for IO processing based on native epoll
  • Enhanced scalability for protocol parsing
  • Added XProtocol, which can be implemented by XProtocol extension protocol

Optimization

  • Implement memory reuse framework to reduce memory allocation overhead

v0.1.0

New features

  • Implemented a programmable, scalable network extension framework MOSN
  • Achieved the protocol framework
    • Support SOFA RPC protocol
    • Support HTTP protocol
    • Support HTTP2 protocol
  • Support for scalable mode based on Stream Filters
  • Support back-end cluster management and load balancing
  • Support simple route matching rules
  • Support smooth restart and smooth upgrade