You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

server_config.go 5.1 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package config
  2. import (
  3. "fmt"
  4. "github.com/pkg/errors"
  5. "gopkg.in/yaml.v2"
  6. "io/ioutil"
  7. "path"
  8. "time"
  9. )
  10. var (
  11. conf ServerConfig
  12. )
  13. func GetServerConfig() ServerConfig {
  14. return conf
  15. }
  16. type ServerConfig struct {
  17. Host string `default:"127.0.0.1" yaml:"host" json:"host,omitempty"`
  18. Port string `default:"8091" yaml:"port" json:"port,omitempty"`
  19. MaxRollbackRetryTimeout int64 `default:"-1" yaml:"max_rollback_retry_timeout" json:"max_rollback_retry_timeout,omitempty"`
  20. RollbackRetryTimeoutUnlockEnable bool `default:"false" yaml:"rollback_retry_timeout_unlock_enable" json:"rollback_retry_timeout_unlock_enable,omitempty"`
  21. MaxCommitRetryTimeout int64 `default:"-1" yaml:"max_commit_retry_timeout" json:"max_commit_retry_timeout,omitempty"`
  22. TimeoutRetryPrd string `default:"1s" yaml:"timeout_retry_period" json:"timeout_retry_period,omitempty"`
  23. TimeoutRetryPeriod time.Duration
  24. RollbackingRetryPrd string `default:"1s" yaml:"rollbacking_retry_period" json:"rollbacking_retry_period,omitempty"`
  25. RollbackingRetryPeriod time.Duration
  26. CommittingRetryPrd string `default:"1s" yaml:"committing_retry_period" json:"committing_retry_period,omitempty"`
  27. CommittingRetryPeriod time.Duration
  28. AsynCommittingRetryPrd string `default:"1s" yaml:"aync_committing_retry_period" json:"aync_committing_retry_period,omitempty"`
  29. AsynCommittingRetryPeriod time.Duration
  30. LogDeletePrd string `default:"24h" yaml:"log_delete_period" json:"log_delete_period,omitempty"`
  31. LogDeletePeriod time.Duration
  32. GettyConfig GettyConfig `required:"true" yaml:"getty_config" json:"getty_config,omitempty"`
  33. UndoConfig UndoConfig `required:"true" yaml:"undo_config" json:"undo_config,omitempty"`
  34. StoreConfig StoreConfig `required:"true" yaml:"store_config" json:"store_config,omitempty"`
  35. }
  36. func InitConf(confFile string) error {
  37. var err error
  38. if confFile == "" {
  39. return errors.WithMessagef(err,fmt.Sprintf("application configure file name is nil"))
  40. }
  41. if path.Ext(confFile) != ".yml" {
  42. return errors.WithMessagef(err,fmt.Sprintf("application configure file name{%v} suffix must be .yml", confFile))
  43. }
  44. conf = ServerConfig{}
  45. confFileStream, err := ioutil.ReadFile(confFile)
  46. if err != nil {
  47. return errors.WithMessagef(err,fmt.Sprintf("ioutil.ReadFile(file:%s) = error:%s", confFile, err))
  48. }
  49. err = yaml.Unmarshal(confFileStream, &conf)
  50. if err != nil {
  51. return errors.WithMessagef(err,fmt.Sprintf("yaml.Unmarshal() = error:%s", err))
  52. }
  53. if conf.TimeoutRetryPeriod, err = time.ParseDuration(conf.TimeoutRetryPrd); err != nil {
  54. return errors.WithMessagef(err, "time.ParseDuration(TimeoutRetryPrd{%#v})", conf.TimeoutRetryPrd)
  55. }
  56. conf.RollbackingRetryPeriod, err = time.ParseDuration(conf.RollbackingRetryPrd)
  57. if err != nil {
  58. return errors.WithMessagef(err,"time.ParseDuration(RollbackingRetryPrd{%#v})", conf.RollbackingRetryPrd)
  59. }
  60. if conf.CommittingRetryPeriod, err = time.ParseDuration(conf.CommittingRetryPrd); err != nil {
  61. return errors.WithMessagef(err, "time.ParseDuration(CommittingRetryPrd{%#v})", conf.CommittingRetryPrd)
  62. }
  63. if conf.AsynCommittingRetryPeriod, err = time.ParseDuration(conf.AsynCommittingRetryPrd); err != nil {
  64. return errors.WithMessagef(err, "time.ParseDuration(AsynCommittingRetryPrd{%#v})", conf.AsynCommittingRetryPrd)
  65. }
  66. if conf.LogDeletePeriod, err = time.ParseDuration(conf.LogDeletePrd); err != nil {
  67. return errors.WithMessagef(err, "time.ParseDuration(LogDeletePrd{%#v})", conf.LogDeletePrd)
  68. }
  69. conf.GettyConfig.SessionTimeout, err = time.ParseDuration(conf.GettyConfig.SessionTmt)
  70. if err != nil {
  71. return errors.WithMessagef(err,fmt.Sprintf("time.ParseDuration(SessionTimeout{%#v}) = error{%v}", conf.GettyConfig.SessionTmt, err))
  72. }
  73. if conf.GettyConfig.GettySessionParam.KeepAlivePeriod, err = time.ParseDuration(conf.GettyConfig.GettySessionParam.KeepAlivePrd); err != nil {
  74. return errors.WithMessagef(err, "time.ParseDuration(KeepAlivePeriod{%#v})", conf.GettyConfig.GettySessionParam.KeepAlivePrd)
  75. }
  76. if conf.GettyConfig.GettySessionParam.TcpReadTimeout, err = time.ParseDuration(conf.GettyConfig.GettySessionParam.TcpReadTmt); err != nil {
  77. return errors.WithMessagef(err, "time.ParseDuration(TcpReadTimeout{%#v})", conf.GettyConfig.GettySessionParam.TcpReadTmt)
  78. }
  79. if conf.GettyConfig.GettySessionParam.TcpWriteTimeout, err = time.ParseDuration(conf.GettyConfig.GettySessionParam.TcpWriteTmt); err != nil {
  80. return errors.WithMessagef(err, "time.ParseDuration(TcpWriteTimeout{%#v})", conf.GettyConfig.GettySessionParam.TcpWriteTmt)
  81. }
  82. if conf.GettyConfig.GettySessionParam.WaitTimeout, err = time.ParseDuration(conf.GettyConfig.GettySessionParam.WaitTmt); err != nil {
  83. return errors.WithMessagef(err, "time.ParseDuration(WaitTimeout{%#v})", conf.GettyConfig.GettySessionParam.WaitTmt)
  84. }
  85. storeConfig = conf.StoreConfig
  86. return nil
  87. }

Go Implementation For Seata