sync_pid_ops+test.patch
text/x-patch
Filename: sync_pid_ops+test.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/utils/init/miscinit.c | 7 | 0 |
| src/bin/pg_ctl/pg_ctl.c | 8 | 0 |
| src/test/restart/t/001_restart.pl | 20 | 0 |
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index de554e28cf..0594b6649f 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -838,6 +838,13 @@ UnlinkLockFiles(int status, Datum arg)
{
ListCell *l;
+#ifdef WIN32
+{
+FILETIME time;
+do { GetSystemTimePreciseAsFileTime(&time); }
+while (((((ULONGLONG) time.dwHighDateTime) << 32) + time.dwLowDateTime) % 10000000L > (10000L));
+}
+#endif
foreach(l, lock_files)
{
char *curfile = (char *) lfirst(l);
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index b0858411ed..3ab1608a5d 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -276,6 +276,14 @@ get_pgpid(bool is_status_request)
exit(is_status_request ? 4 : 1);
}
+#ifdef WIN32
+{
+FILETIME time;
+do { GetSystemTimePreciseAsFileTime(&time); }
+while (((((ULONGLONG) time.dwHighDateTime) << 32) + time.dwLowDateTime) % 10000000L > (10000L));
+}
+#endif
+
pidf = fopen(pid_file, "r");
if (pidf == NULL)
{
diff --git a/src/test/restart/t/001_restart.pl b/src/test/restart/t/001_restart.pl
new file mode 100644
index 0000000000..f0621d7f27
--- /dev/null
+++ b/src/test/restart/t/001_restart.pl
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+use PostgresNode;
+use TestLib;
+use Test::More;
+use Config;
+
+my $node = get_new_node('master');
+$node->init();
+
+for ( my $i = 1; $i <= 1000; $i++ ) {
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+ diag( sprintf("%02d:%02d:%02d iteration %d", $hour, $min, $sec, $i) );
+ $node->start;
+ $node->stop;
+}
+
+ok(1, 'node start/stop test');
+
+done_testing();