You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/01/10 09:34:52 UTC

[dubbo-go] 01/01: Merge pull request #932 from cityiron/feature/fix-config_center-file

This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git

commit cc3e8d608571c47c0e02330d3a15011b4427cf0e
Merge: 374a01a cc7fb2e
Author: Xin.Zh <dr...@foxmail.com>
AuthorDate: Sun Jan 10 17:07:31 2021 +0800

    Merge pull request #932 from cityiron/feature/fix-config_center-file
    
    [Fix] file service discovery path can run in windows

 config_center/file/impl.go         | 99 +++++++++++++++++++++++++++++---------
 registry/file/service_discovery.go |  2 +-
 2 files changed, 76 insertions(+), 25 deletions(-)

diff --cc config_center/file/impl.go
index 9afe7c6,0233f63..ee2ed9c
--- a/config_center/file/impl.go
+++ b/config_center/file/impl.go
@@@ -41,13 -40,29 +40,21 @@@ import 
  	"github.com/apache/dubbo-go/config_center/parser"
  )
  
 -var osType string
 -var path string
++var (
++	osType = runtime.GOOS
++)
+ 
+ const (
 -	windows = "windows"
++	windowsOS = "windows"
+ )
+ 
  const (
- 	PARAM_NAME_PREFIX                 = "dubbo.config-center."
- 	CONFIG_CENTER_DIR_PARAM_NAME      = PARAM_NAME_PREFIX + "dir"
- 	CONFIG_CENTER_ENCODING_PARAM_NAME = PARAM_NAME_PREFIX + "encoding"
- 	DEFAULT_CONFIG_CENTER_ENCODING    = "UTF-8"
+ 	ParamNamePrefix               = "dubbo.config-center."
+ 	ConfigCenterDirParamName      = ParamNamePrefix + "dir"
+ 	ConfigCenterEncodingParamName = ParamNamePrefix + "encoding"
+ 	defaultConfigCenterEncoding   = "UTF-8"
  )
  
 -func init() {
 -	osType = runtime.GOOS
 -	if os.IsPathSeparator('\\') {
 -		path = "\\"
 -	} else {
 -		path = "/"
 -	}
 -}
 -
  // FileSystemDynamicConfiguration
  type FileSystemDynamicConfiguration struct {
  	config_center.BaseDynamicConfiguration
@@@ -206,7 -211,7 +203,7 @@@ func (fsdc *FileSystemDynamicConfigurat
  }
  
  func (fsdc *FileSystemDynamicConfiguration) deleteDelay(path string) (bool, error) {
--	if path == "" {
++	if len(path) == 0 {
  		return false, nil
  	}
  
@@@ -264,7 -269,7 +261,7 @@@ func Home() (string, error) 
  	}
  
  	// cross compile support
--	if "windows" == runtime.GOOS {
++	if windowsOS == osType {
  		return homeWindows()
  	}
  
@@@ -307,3 -312,57 +304,57 @@@ func homeWindows() (string, error) 
  
  	return home, nil
  }
+ 
+ func mkdirIfNecessary(urlRoot string) (string, error) {
+ 	if !legalPath(urlRoot) {
+ 		// not exist, use default, mac is: /XXX/xx/.dubbo/config-center
+ 		rp, err := Home()
+ 		if err != nil {
+ 			return "", perrors.WithStack(err)
+ 		}
+ 
+ 		urlRoot = adapterUrl(rp)
+ 	}
+ 
+ 	if _, err := os.Stat(urlRoot); err != nil {
+ 		// it must be dir, if not exist, will create
+ 		if err = createDir(urlRoot); err != nil {
+ 			return "", perrors.WithStack(err)
+ 		}
+ 	}
+ 
+ 	return urlRoot, nil
+ }
+ 
+ func legalPath(path string) bool {
+ 	if len(path) == 0 {
+ 		return false
+ 	}
+ 	if _, err := os.Stat(path); err != nil {
+ 		return false
+ 	}
+ 
+ 	return true
+ }
+ 
+ func adapterUrl(rp string) string {
 -	if osType == windows {
++	if osType == windowsOS {
+ 		return filepath.Join(rp, "_dubbo", "config-center")
+ 	}
+ 
+ 	return filepath.Join(rp, ".dubbo", "config-center")
+ }
+ 
+ // used for GetPath. param key default is instance's id.
+ // e.g: (ip:port) 127.0.0.1:20081, in windows env, will change to 127_0_0_1_20081
+ func adapterKey(key string) string {
+ 	if len(key) == 0 {
+ 		return ""
+ 	}
+ 
 -	if osType == windows {
++	if osType == windowsOS {
+ 		return strings.ReplaceAll(strings.ReplaceAll(key, ".", "_"), ":", "_")
+ 	}
+ 
+ 	return key
+ }