v0.4.1 Release
New Features and Improvements:
Breaking changes
- Upgrade client to thriftrw changes (#246)
Note: we switched RPC from directly using tchannel to yarpc. Part of that change is switching from using thrift to thriftrw to generate thrift client code (#246). This means the thrift client is now workflowserviceclient.Interface instead of cadence.TChanWorkflowService. Below APIs which used to require cadence.TChanWorkflowService are now requiring workflowserviceclient.Interface. Calls to those APIs will needs a proper update:
- cadence.NewClient(...)
- cadence.NewDomainClient(...)
- cadence.NewWorker(...)
To create a workflowserviceclient.Interface instance, you need a yarpc.Dispatcher. Below is a simplified sample code to do so:
import (
"go.uber.org/cadence/.gen/go/cadence/workflowserviceclient"
"go.uber.org/yarpc"
"go.uber.org/yarpc/transport/tchannel"
)
var _cadenceFrontendService = "cadence-frontend"
func createCadenceServiceClient() workflowserviceclient.Interface {
tch, _ := tchannel.NewChannelTransport(tchannel.ServiceName(_cadenceFrontendService))
dispatcher = yarpc.NewDispatcher(yarpc.Config{
Name: "cadence-client",
Outbounds: yarpc.Outbounds{
_cadenceFrontendService: {Unary: tch.NewSingleOutbound("127.0.0.1:7933")},
},
})
serviceClient := workflowserviceclient.New(dispatcher.ClientConfig(_cadenceFrontendService))
return serviceClient
}
Sticky decision
- add sticky decision task list (#267)
- fix sticky attributes (#270)
- add lru cache (#273)
- partial history (#277)
- drain sticky task list first (#286)
- fix sticky state (#303)
New features
Bug fixes
- fix coroutinue leak before workflow completed (#245)
- fix race candition in test framework (#284)
- fix mock behavior (#261)