Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <git@zjvandeweg.nl>2019-03-19 15:47:51 +0300
committerZeger-Jan van de Weg <git@zjvandeweg.nl>2019-04-05 15:28:30 +0300
commit73cdfc41cc30624c2c7d9924e816b31581d344a8 (patch)
tree37ee92984af40b46bc9ea0c52f98d3cd00be7cc4
parent25ab5d2bf337e12c0f76ac24d6b24aa7ddd011ec (diff)
Renaming RPC returns InvalidArgument if target existszj-revert-namespace-ensure-namespace
Previously the status code returned when the target directory already existed was Internal. Even before that it was InvalidArgument. Some clients depend on the old behaviour, which is now reverted to.
-rw-r--r--internal/service/namespace/namespace.go11
-rw-r--r--internal/service/namespace/namespace_test.go2
2 files changed, 11 insertions, 2 deletions
diff --git a/internal/service/namespace/namespace.go b/internal/service/namespace/namespace.go
index f1682cee8..abbe9ba88 100644
--- a/internal/service/namespace/namespace.go
+++ b/internal/service/namespace/namespace.go
@@ -115,7 +115,8 @@ func directoryExists(storagePath, namespace string) (bool, error) {
}
func validateRenameNamespaceRequest(req *gitalypb.RenameNamespaceRequest) error {
- if _, err := helper.GetStorageByName(req.GetStorageName()); err != nil {
+ storePath, err := helper.GetStorageByName(req.GetStorageName())
+ if err != nil {
return err
}
@@ -126,5 +127,13 @@ func validateRenameNamespaceRequest(req *gitalypb.RenameNamespaceRequest) error
return errors.New("to field cannot be empty")
}
+ if found, err := directoryExists(storePath, req.GetTo()); found || err != nil {
+ if err != nil {
+ return err
+ }
+
+ return errors.New("target directory already exists")
+ }
+
return nil
}
diff --git a/internal/service/namespace/namespace_test.go b/internal/service/namespace/namespace_test.go
index 2469d8cc0..9a1f5f4f7 100644
--- a/internal/service/namespace/namespace_test.go
+++ b/internal/service/namespace/namespace_test.go
@@ -271,7 +271,7 @@ func TestRenameNamespace(t *testing.T) {
To: "existing",
StorageName: "default",
},
- errorCode: codes.Internal,
+ errorCode: codes.InvalidArgument,
},
{
desc: "non existing to parent directory",