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]