Release Notes

    Release Notes - Apache ServiceComb - Version java-chassis-1.1.0

Sub-task

  • [SCB-493] - parameters and DefaultLogPublisher optimize
  • [SCB-675] - generate protobuf idl from swagger
  • [SCB-681] - jackson protobuf support v3 specification: map/list/array
  • [SCB-687] - highway server not accept too many connection
  • [SCB-691] - add vertx server/ rest client/highway client/ highway server connection meter
  • [SCB-790] - support create new target microservice instance in one node
  • [SCB-793] - run it-consumer during travis CI
  • [SCB-842] - jackson protobuf serializer have performance problem
  • [SCB-843] - add http client pool request time to consumer invocation meter
  • [SCB-881] - add more invocation stage measurement
  • [SCB-894] - measure httpServer and httpClient
  • [SCB-917] - parse proto file to model
  • [SCB-918] - serialize/deserialize based on proto model
  • [SCB-922] - collect Getter/Setter from pojo
  • [SCB-947] - delete old jackson protobuf logic
  • [SCB-948] - convert proto model to string
  • [SCB-1001] - [vertx] downloading, client disconnect first, should close WriteStream right now.
  • [SCB-1021] - add vertx client/server meters to metrics
  • [SCB-1022] - measure tcpServer and tcpClient
  • [SCB-1034] - metrics performance optimize

Bug

  • [SCB-74] - POJO static method is export as an operation
  • [SCB-381] - Fix foudation-vertx UT failure on linux
  • [SCB-769] - When delay fault injection is enabled, the business thread will be blocked
  • [SCB-774] - Unexpected warn log is printed while the service is exiting if there are reactive operations
  • [SCB-780] - sessionstickrule add the judgement of whether lastServer can also be accessed.
  • [SCB-787] - Server States not clean unavailable server
  • [SCB-794] - Edge invocation do not properly send servlet filter response code
  • [SCB-799] - fix problem about "mvn install" in ubuntu
  • [SCB-800] - Param order generated by BeanParamAnnotationProcessor is not stable
  • [SCB-802] - in rollback scenario, old versions meta is used and invocation is fail
  • [SCB-810] - fix zipkin dependency
  • [SCB-828] - In some tomcat implementation inputstream available is null
  • [SCB-845] - some times download file can not get correct content
  • [SCB-849] - refactor producer connection limit using vertx metrics spi mechanism
  • [SCB-861] - lost response type of @ApiResponse 490/590
  • [SCB-886] - Path param is not encoded and decoded correctly
  • [SCB-888] - switch SCBEngine status to up in the wrong time
  • [SCB-895] - When json parse fail will not get 400 but 590
  • [SCB-898] - Governance function is not effective when configuration Start with servicecomb
  • [SCB-904] - SpringMVC @RequestHeader do not support value,only support name
  • [SCB-905] - Request connection is hang up when request path contains illegal string
  • [SCB-910] - Java Chassis support spring boot 2.0
  • [SCB-956] - not support body to be a enum
  • [SCB-959] - When parsing inner classes,CtType will throw NotFoundException
  • [SCB-960] - when consumer local failed(eg: LB failed), CompletableFuture callback can not get InvocationContext
  • [SCB-964] - Fix MediaType setting problem
  • [SCB-965] - resolve DoS attack problem about enum/char/Character/byte/Byte/short/Short/int/Integer/long/Long/float/Float/double/Double
  • [SCB-972] - Using SHA1 signature key as UUID of micro service
  • [SCB-1007] - not support CustomGeneric<Map<KEY, VALUE>>
  • [SCB-1012] - add NoRouteToHostException in retry's exception
  • [SCB-1014] - Fix priority problem of ExceptionToResponseConverter
  • [SCB-1043] - MicroserviceVersions.safeSetInstances lost exception message
  • [SCB-1045] - fix sample spring bean declaring

New Feature

  • [SCB-215] - support annotation ApiParam
  • [SCB-775] - support invoke service using raw type like JsonObject
  • [SCB-777] - Support @BeanParam annotation in JAX-RS developing style
  • [SCB-778] - In tomcat, support register swagger base path with container prefix
  • [SCB-786] - when instances cache is not sync to SC caused by bug, auto fix it.
  • [SCB-788] - public key black/white add feature: choose server by microservice field and properties
  • [SCB-847] - Provide a way to decode user's custom error data
  • [SCB-880] - Give an option to query parameter convert empty to null
  • [SCB-903] - Add a feature to serialize/deserialize using Object to avoid information lose
  • [SCB-926] - Invoke 3rd party service
  • [SCB-936] - Encoded slash '/' is decoded in EdgeService, causing 404 error response
  • [SCB-967] - support configed ip send request
  • [SCB-1009] - Supporting configure encrypted password for proxy settings
  • [SCB-1040] - Support discover instances from ServiceCenter Aggregator

Improvement

  • [SCB-206] - Support @Api to specify produces and consumes
  • [SCB-711] - HTTP2 and other client should be lasy initialized
  • [SCB-747] - add jaxrs upload file demo
  • [SCB-795] - update jackson from 2.9.5 to 2.9.6
  • [SCB-827] - Add response decode error log
  • [SCB-832] - modify the errorThresholdPercentage from 20 to 0
  • [SCB-833] - Provide a retry mechanism to meet upgrade no interrupt
  • [SCB-870] - Refractor loadbalancer rule to not use IRule to give more control
  • [SCB-873] - Make the validation result display the parameter name instead of arg0, arg1
  • [SCB-887] - aysnc servlet timeout is too short and may block container pool when tasks are timeout
  • [SCB-889] - add SCBEngine reference to BootEvent
  • [SCB-897] - Support config rest server max initial line length
  • [SCB-911] - Timeout scenario print too many logs
  • [SCB-931] - upgrade vert.x to fix some know issues
  • [SCB-933] - Revert changes to RestObjectMapper that fail on primitive types not present
  • [SCB-943] - make ProduceJsonProcessor,DefaultHttpClientFilter,ServerRestArgsFilter changable
  • [SCB-954] - improve consumer stage time record when failed
  • [SCB-961] - Isolation provide a way to isolate for at least a moment
  • [SCB-975] - Improve retry rule
  • [SCB-979] - Add reminder log on the selection of SwaggerGeneratorContext
  • [SCB-982] - Show the warning message in maven compile plugin
  • [SCB-985] - Add springboot2-starter-discovery
  • [SCB-986] - ServerInstances can be cached in spring-boot2-starter-discovery
  • [SCB-987] - delete spring 3 related declaring
  • [SCB-989] - scan RestController to to make springmvc controller publish as ServiceComb Rest easier
  • [SCB-996] - When retries fail, return the last error
  • [SCB-1020] - No need unregister when bootup failure before register service
  • [SCB-1031] - The Response's properties was overrided wrong between @APIOperation and @Resoponse on the controller method
  • [SCB-1038] - Fix some bugs and logs improvement reported by users when testing

Task

  • [SCB-612] - delete useless MicroserviceMetaManager
  • [SCB-736] - generate default value to swagger for primitive type, even there is no defaultValue annotation
  • [SCB-854] - BootListener support load by not only spring bean, but also SPI
  • [SCB-859] - generate traceId when create invocation for consumer/producer/edge
  • [SCB-882] - split mixed integration test case
  • [SCB-893] - measure vertx by vertx metrics mechanism
  • [SCB-906] - add sample for invocation apm by java agent
  • [SCB-919] - generate lambda Getter/Setter from reflect method or field to improve performance
  • [SCB-920] - Remove duplicate dependencies
  • [SCB-921] - check if swagger compatible to protobuf and choose transport automatically
  • [SCB-928] - support swagger "collection-format" feature
  • [SCB-944] - make control IT deploy simpler and print less log
  • [SCB-957] - delete too old protobuf map compatible flag
  • [SCB-973] - TLP graduation tasks
  • [SCB-992] - Synchronous open source code from Vert.x 3.5.3 version
  • [SCB-1023] - switch max connection limitation to metrics mechanism
  • [SCB-1035] - Update third party licenses for java-chassis
    Release Notes - Apache ServiceComb - Version java-chassis-1.0.0

Bug

  • [SCB-651] - QPS rate limit bug
  • [SCB-662] - Using cse/servicecomb duplicate key will get list of values
  • [SCB-666] - Test failure on system that have rotate option set in /etc/resolv.conf
  • [SCB-696] - [AccessLog] If nginx send requests via short-lived connections, %v will print "0.0.0.0"
  • [SCB-699] - add schemaIds field in register.yaml when mock the Local sevice-center
  • [SCB-703] - When consumer invoke void type method in RPC style, an exception is thrown
  • [SCB-705] - When consumer invoke an unregistered provider, it will never find this provider even the provider is registered later
  • [SCB-753] - NPE when query not exists service
  • [SCB-754] - Check null invocation in AbstractRestInvocation to avoid unexpected NPE
  • [SCB-759] - Fix ServiceComb version error
  • [SCB-772] - Java Chassis::Handlers::Loadbalance test failed
  • [SCB-773] - Java Chassis::Core test failed

New Feature

  • [SCB-616] - Make access log mechanism extensible
  • [SCB-640] - Add black/white list support based on public key handler
  • [SCB-679] - Support Cross-Origin Resource Sharing (CORS)
  • [SCB-708] - Support assembling query param into Object parameter(in Spring MVC developing style)
  • [SCB-752] - User can switch off outputting merged log4j property file
  • [SCB-760] - provide a way to invoke service with full path

Improvement

  • [SCB-194] - Improve component-scan setting
  • [SCB-661] - Logs improvement to give better information
  • [SCB-671] - Duplicate cse.xxx to servicecomb.xxx to work better in future
  • [SCB-684] - Following swagger conventions
  • [SCB-685] - Service comb chassis must support default values
  • [SCB-697] - Service comb chassis must support JAX-RS @DefaultValue
  • [SCB-700] - Check server status when choose an available server
  • [SCB-701] - RequestBody(required = false) and when requestBody is null then exception observed
  • [SCB-702] - Deleted unwanted json-lib maven dependency for foundation-config
  • [SCB-706] - refactor loadbalance filters logic to support invocation based filter
  • [SCB-712] - Do not register service path to service center when not necessary
  • [SCB-713] - @DefaulValue should be set only when input param is null
  • [SCB-715] - Working in thread that do not have context class loader
  • [SCB-727] - Java Chassis-Local generated schema and service center schema are different while registering the service then print the difference content
  • [SCB-750] - Dependency management is incomplete in Saga and Java-Chassis
  • [SCB-755] - [SCB-755] 755 Duplicate copy cse config to Servicecomb config
  • [SCB-763] - Simplify Dynamic Config (Apollo) Integration Test in Java Chassis

Wish

  • [SCB-746] - Update Chassis from m1 to m2 in start.servicecomb.io

Task

  • [SCB-506] - Report the service governance event
  • [SCB-693] - registry microservice failed if get host address failed
  • [SCB-725] - support get main class package when run with "java -jar xxx.jar"
  • [SCB-726] - edge support convert from form-data or x-www-form-urlencoded to json automatically
  • [SCB-728] - add decrypt/signature/... to edge demo
  • [SCB-729] - check if instance cache equals to SC
  • [SCB-733] - open handlerContext for business logic, and add a new name: localContext
  • [SCB-738] - delete microservice from MicroserviceManager after it not exist in SC
  • [SCB-762] - resolve eclipse compile warnings
    Release Notes - Apache ServiceComb - Version java-chassis-1.0.0-m2

Sub-task

  • [SCB-137] - Add new dimension of transport way for all Consumer/Producer
  • [SCB-196] - Add metrics for each consumer/provider handler
  • [SCB-203] - servlet rest support file upload
  • [SCB-252] - Metrics support overwatch Integration
  • [SCB-370] - Metrics timer (like latency) output precision must to nano level not milli level
  • [SCB-383] - metrics subscribe invocation life event and do statistics
  • [SCB-384] - provide invocation performance log publisher
  • [SCB-385] - metrics publisher switch to new mechanism
  • [SCB-422] - add executor metrics, not just queue size
  • [SCB-440] - Provide Maven Archetype of business-service-pojo
  • [SCB-441] - Provide Maven Archetype of business-service-jaxrs
  • [SCB-442] - Provide Maven Archetype of business-service-springmvc
  • [SCB-445] - delete old metrics mechanism
  • [SCB-446] - metrics-prometheus switch to new mechanism
  • [SCB-450] - documents for metrics initializer/publisher, and how to extend
  • [SCB-462] - cloud eye publisher switch to new mechanism
  • [SCB-470] - Provide Maven Archetype of business-service-spring-boot-starter
  • [SCB-484] - servlet rest support download
  • [SCB-485] - jaxrs mode support file download
  • [SCB-486] - edge support route file download invocation
  • [SCB-487] - consumer support download file
  • [SCB-494] - support delete temp file after download
  • [SCB-501] - document for download
  • [SCB-527] - Reorganization All Archetype For Enable Auto Publish
  • [SCB-529] - producer download file from byte[]
  • [SCB-531] - x-java-interface change from require to optional
  • [SCB-532] - support recursive dependence
  • [SCB-533] - javassistUtils create class from CtClass, not only JavaType
  • [SCB-534] - generic class generate optimize
  • [SCB-538] - create SwaggerToClassGenerator to convert swagger to class
  • [SCB-540] - Delete archetypes from java-chassis-dependencies

Bug

  • [SCB-72] - Can isolation information of provider and consumer been discovered through capability of release and subscription?
  • [SCB-449] - Typo in LICENSE
  • [SCB-455] - Base on 1.0.0-m2-SNAPSHOT version, execution of the metrics UT failed
  • [SCB-474] - 使用zuul做网关进行路由,当同一个微服务接口同时开放rest和highway方式时,出现无法调用情况。
  • [SCB-481] - Fix qps handler assertion errors when schemaid or microservice name contails . (dot)
  • [SCB-490] - Service Center verrsion is not forward compatible and needs to be noted in releasenote.
  • [SCB-495] - Compile java-chassis 1.0.0-m2-SNAPSHOT failed
  • [SCB-502] - logs日志没有输出
  • [SCB-503] - When using WeighedResponseTimeRule, there are some initialize and stateless access problems
  • [SCB-507] - poll task in MetricsBootstrap did not really measure meters
  • [SCB-512] - download support chinese file name
  • [SCB-516] - AccessLog of EdgeService does not print traceId
  • [SCB-520] - resolve service with env re-registered will fail
  • [SCB-521] - change the priority of ServiceComb config and SpringBoot config
  • [SCB-562] - Java Chassis will throw NPE when producer impl do not contain any method
  • [SCB-567] - treat warning as errors, modify the compilerArgments
  • [SCB-579] - NullPointerException is thrown when consumer upload null
  • [SCB-580] - When upload file size exceeds limitation of provider, consumer will return a confusing response
  • [SCB-587] - Fix archetypes readme
  • [SCB-588] - Set archetypes sourceEncoding to UTF-8
  • [SCB-591] - configcenter need to do encode
  • [SCB-593] - Change log level to remind user to specify loadbalance handler
  • [SCB-597] - update spring boot version from 1.4.5 to 1.5.12 in starter archetype
  • [SCB-617] - graceful shutdown with standalone tomcat
  • [SCB-652] - Fix schema registry environment configuration
  • [SCB-653] - When provider returns Transfer-Encoding header and Edge will cause problem
  • [SCB-654] - DiscoveryTree has concurrency problems.
  • [SCB-656] - When provider returns non 200 code Edge Service will all convert to 502
  • [SCB-658] - leak of MicroserviceVersions register to EventBus
  • [SCB-659] - Fix build failed in Springmvc Integration Test
  • [SCB-667] - gracefully shutdown is not work in some case

New Feature

  • [SCB-6] - ServiceComb Java Chassis Metrics
  • [SCB-136] - Improvement and New Features of Java Chassis Metrics in version 1.0.0-m2
  • [SCB-201] - As a SDK user, I want to send file/stream data so that I can use ServiceComb to handle the music or image data
  • [SCB-257] - As a developer, I want to download file from microservice
  • [SCB-292] - As a developer, I want to use annotation to validate input parameter
  • [SCB-406] - Chassis must support standard parameter validation handler
  • [SCB-439] - Provide Maven Archetypes in Java Chassis
  • [SCB-482] - Http2 support for java chassis
  • [SCB-582] - Provide a way to protection for instance removal
  • [SCB-607] - Support printing invocation context in access log
  • [SCB-611] - Provide a default Edge service dispatcher to make developer edge easy

Improvement

  • [SCB-350] - Vertx ssl file config error execption approvement
  • [SCB-355] - As a operator, when sdk config a fault ak/sk on HuaweiCloud, then will auth token fail, but it continues to register, will cause may fault in server
  • [SCB-373] - As a developer, i want to do something around serialize/deserialize, so that we should make a aspect to eanable others can do this work
  • [SCB-431] - Add Rat check on the travis CI
  • [SCB-444] - try to optimize autodiscovery function
  • [SCB-447] - optimize SPIServiceUtils to avoid get different instance for the same type
  • [SCB-467] - Contributing & Reporting Issues in java-chassis README.md is not direct to any contents
  • [SCB-477] - sdk guava‘s version need to update from 16.0.1 to 19.0
  • [SCB-488] - Retry/Metrics some default behavior cause unnecessary retry and logs
  • [SCB-498] - Configuration Center IP Addresses need to meet general specifications
  • [SCB-514] - update pom and code, so that we can treat warnings as errors
  • [SCB-517] - service center starter for spring boot/cloud improvement
  • [SCB-518] - ServiceCenter ip address need to config default port
  • [SCB-523] - maven-remote-resource-plugin execute very slow
  • [SCB-526] - When creating dynamic configuration, we need to fetch once for the configuration when startup
  • [SCB-543] - optimize registry procedure
  • [SCB-546] - As a developer, want to reregistry schemas in the dev environment
  • [SCB-548] - Support Gracefully Shutdown
  • [SCB-570] - reformat everything
  • [SCB-575] - Publish the Java doc of ServiceComb projects
  • [SCB-576] - javassist License file need to be updated
  • [SCB-585] - Add ServiceComb-java-chassis reference guide to project
  • [SCB-625] - ProduceProcessor use SPI to support extends
  • [SCB-627] - Java Chassis- Client Request Timeout support for operation/schema/service level
  • [SCB-636] - As a OM staff, i want to use the lb endpoint as the servicecenter/configcenter address config
  • [SCB-646] - if local swagger exists, not generate swagger according to class
  • [SCB-649] - when port can't been listened,log warn and show more detail message

Wish

  • [SCB-504] - Upgrade to Spring boot 1.5.12.RELEASE
  • [SCB-515] - change all configuration from 'cse.xxx' to 'servicecomb.xxx'
  • [SCB-672] - Edge Service support calls from different ApplicationIds
  • [SCB-673] - Edge Service support calls from different ApplicationIds

Task

  • [SCB-324] - Chassis must support network failure simulation, so that I can developers can enhance the robustness of the app
  • [SCB-352] - Support operation level flow control on provider side
  • [SCB-354] - metrics上报的统计数据可能需要支持加上业务自己的维度,方便统计分析,比如APP版本,机型等,业务可以把参数作为invocation参数传递到框架,需要框架支持
  • [SCB-420] - Change default HTTP header length restriction to 32K
  • [SCB-424] - Get configuration interface to add header: x-environment
  • [SCB-443] - Fix randomly UT failure of TestProviderQpsFlowControlHandler
  • [SCB-453] - Read configuration from application.yml/application.properties
  • [SCB-456] - Provider a way to input configuration from a Map, instead of micreservice.yaml
  • [SCB-457] - Verify if gradle can manage the ServiceComb java Chassis jars in a remote or local maven repository
  • [SCB-471] - vertx upgrade causes use config center push mode error
  • [SCB-542] - Update netty's version to 4.1.24
  • [SCB-589] - allow consumer upgrade before producer
  • [SCB-590] - Update the validator version to latest(6.0.2)
  • [SCB-595] - Compatible with old SC versions
  • [SCB-599] - Service registry failed when service before Service Center start
  • [SCB-601] - ServiceComb integrated to spring boot or tomcat will print too many logs
  • [SCB-637] - enhance HttpServletRequestEx impl
  • [SCB-647] - Update LICENSE/NOTICE for release
    Release Notes - Apache ServiceComb - Version Java-Chassis-1.0.0-m1

Major improvements:

  • Java Chassis can now use Apollo as configuration center. Users can now change configurations like load balancing policy and those changes will come into effect on the fly. See here for more details.

  • Metrics was re-factored. We now uses events for collecting invocation data instead of Hystrix. This reduces the performance penalty of computing metrics. Metrics can now be fetched via ‘/metrics’ using HTTP. See here for more details.

Other Noticeable Changes:

  • The Java Chassis libraries are now under group “org.apache.servicecomb”.
  • We provide out of the box metrics support now. Prometheus is supported.
  • Configuration center was re-factored and moved out from foundation. Support for Apollo was added.
  • Users can now use Object type for calling services.
  • Users can now use Generics for calling services.
  • Better integration with Spring MVC.
  • Upgraded to zipkin2 internally, Java Chassis can now work with zipkin server v1 and v2.
  • We are in the process of supporting reactive programming. Pojo consumer and provider now supports CompletableFuture.

For more detailed information please checkout here