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

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this 
push:
     new ea9a4c33026 Try to unlink the symlink target directory after test
ea9a4c33026 is described below

commit ea9a4c3302696652c3ee63bb742dd833d1f8d929
Author: Jinbao Chen <[email protected]>
AuthorDate: Thu Mar 19 23:23:18 2026 -0400

    Try to unlink the symlink target directory after test
---
 src/backend/commands/tablespace.c | 73 +++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 37 deletions(-)

diff --git a/src/backend/commands/tablespace.c 
b/src/backend/commands/tablespace.c
index c9fbea7b895..370aebf79ee 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -1221,43 +1221,6 @@ remove_symlink:
        linkloc = pstrdup(linkloc_with_version_dir);
        get_parent_directory(linkloc);
 
-       /* Remove the symlink target directory if it exists or is valid. */
-       rllen = readlink(linkloc, link_target_dir, sizeof(link_target_dir));
-       if(rllen < 0)
-       {
-               ereport(redo ? LOG : ERROR,
-                               (errcode_for_file_access(),
-                                       errmsg("could not read symbolic link 
\"%s\": %m",
-                                                  linkloc)));
-       }
-       else if(rllen >= sizeof(link_target_dir))
-       {
-               ereport(redo ? LOG : ERROR,
-                               (errcode_for_file_access(),
-                                       errmsg("symbolic link \"%s\" target is 
too long",
-                                                  linkloc)));
-       }
-       else
-       {
-               link_target_dir[rllen] = '\0';
-               if (access(link_target_dir, F_OK) != 0)
-               {
-                       ereport(redo? LOG : ERROR,
-                                       (errcode_for_file_access(),
-                                                       errmsg("could not open 
directory \"%s\": %m",
-                                                                  
link_target_dir)));
-               }
-               else
-               {
-                       if(directory_is_empty(link_target_dir) && 
rmdir(link_target_dir) < 0)
-                               ereport(redo ? LOG : ERROR,
-                                               (errcode_for_file_access(),
-                                                               errmsg("could 
not remove directory \"%s\": %m",
-                                                                          
link_target_dir)));
-               }
-       }
-
-
        if (lstat(linkloc, &st) < 0)
        {
                int                     saved_errno = errno;
@@ -1281,6 +1244,42 @@ remove_symlink:
        }
        else if (S_ISLNK(st.st_mode))
        {
+               /* Remove the symlink target directory if it exists or is 
valid. */
+               rllen = readlink(linkloc, link_target_dir, 
sizeof(link_target_dir));
+               if(rllen < 0)
+               {
+                       ereport(redo ? LOG : ERROR,
+                                       (errcode_for_file_access(),
+                                        errmsg("could not read symbolic link 
\"%s\": %m",
+                                                    linkloc)));
+               }
+               else if(rllen >= sizeof(link_target_dir))
+               {
+                       ereport(redo ? LOG : ERROR,
+                                       (errcode_for_file_access(),
+                                        errmsg("symbolic link \"%s\" target is 
too long",
+                                                       linkloc)));
+               }
+               else
+               {
+                       link_target_dir[rllen] = '\0';
+                       if (access(link_target_dir, F_OK) != 0)
+                       {
+                               ereport(redo? LOG : ERROR,
+                                               (errcode_for_file_access(),
+                                                errmsg("could not open 
directory \"%s\": %m",
+                                                               
link_target_dir)));
+                       }
+                       else
+                       {
+                               if(directory_is_empty(link_target_dir) && 
rmdir(link_target_dir) < 0)
+                                       ereport(redo ? LOG : ERROR,
+                                                       
(errcode_for_file_access(),
+                                                        errmsg("could not 
remove directory \"%s\": %m",
+                                                                       
link_target_dir)));
+                       }
+               }
+
                if (unlink(linkloc) < 0)
                {
                        int                     saved_errno = errno;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to