aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-08-09 18:52:35 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-08-09 18:52:35 -0400
commit74d099494c5853a44188316ba117a8909b299d40 (patch)
treeaa2fbacddea1adff84819e1d752a1b4a29881c1b
parent6760a4d4029121981bf3ec24847ddfbacecc070d (diff)
downloadpostgresql-74d099494c5853a44188316ba117a8909b299d40.tar.gz
postgresql-74d099494c5853a44188316ba117a8909b299d40.zip
Measure WaitLatch's timeout parameter in milliseconds, not microseconds.
The original definition had the problem that timeouts exceeding about 2100 seconds couldn't be specified on 32-bit machines. Milliseconds seem like sufficient resolution, and finer grain than that would be fantasy anyway on many platforms. Back-patch to 9.1 so that this aspect of the latch API won't change between 9.1 and later releases. Peter Geoghegan
-rw-r--r--src/backend/access/transam/xlog.c2
-rw-r--r--src/backend/port/unix_latch.c6
-rw-r--r--src/backend/port/win32_latch.c2
-rw-r--r--src/backend/replication/syncrep.c2
-rw-r--r--src/backend/replication/walsender.c2
5 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index eca7a4038dc..fc3bed8d3f8 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -10161,7 +10161,7 @@ retry:
/*
* Wait for more WAL to arrive, or timeout to be reached
*/
- WaitLatch(&XLogCtl->recoveryWakeupLatch, 5000000L);
+ WaitLatch(&XLogCtl->recoveryWakeupLatch, 5000L);
ResetLatch(&XLogCtl->recoveryWakeupLatch);
}
else
diff --git a/src/backend/port/unix_latch.c b/src/backend/port/unix_latch.c
index 727c5fca816..047e9def61b 100644
--- a/src/backend/port/unix_latch.c
+++ b/src/backend/port/unix_latch.c
@@ -134,7 +134,7 @@ DisownLatch(volatile Latch *latch)
* Wait for given latch to be set or until timeout is exceeded.
* If the latch is already set, the function returns immediately.
*
- * The 'timeout' is given in microseconds, and -1 means wait forever.
+ * The 'timeout' is given in milliseconds, and -1 means wait forever.
* On some platforms, signals cause the timeout to be restarted, so beware
* that the function can sleep for several times longer than the specified
* timeout.
@@ -173,8 +173,8 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead,
/* Initialize timeout */
if (timeout >= 0)
{
- tv.tv_sec = timeout / 1000000L;
- tv.tv_usec = timeout % 1000000L;
+ tv.tv_sec = timeout / 1000L;
+ tv.tv_usec = (timeout % 1000L) * 1000L;
tvp = &tv;
}
diff --git a/src/backend/port/win32_latch.c b/src/backend/port/win32_latch.c
index 3da5085a1a8..ccb5771b52b 100644
--- a/src/backend/port/win32_latch.c
+++ b/src/backend/port/win32_latch.c
@@ -137,7 +137,7 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead,
}
rc = WaitForMultipleObjects(numevents, events, FALSE,
- (timeout >= 0) ? (timeout / 1000) : INFINITE);
+ (timeout >= 0) ? timeout : INFINITE);
if (rc == WAIT_FAILED)
elog(ERROR, "WaitForMultipleObjects() failed: error code %d", (int) GetLastError());
else if (rc == WAIT_TIMEOUT)
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index 7fcbec24400..8713b9700dc 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -251,7 +251,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN)
* cancel/die signal or postmaster death regularly while waiting. Note
* that timeout here does not necessarily release from loop.
*/
- WaitLatch(&MyProc->waitLatch, 60000000L);
+ WaitLatch(&MyProc->waitLatch, 60000L);
}
/*
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 7ed13c7e226..aaa048525b4 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -807,7 +807,7 @@ WalSndLoop(void)
/* Sleep */
WaitLatchOrSocket(&MyWalSnd->latch, MyProcPort->sock,
true, pq_is_send_pending(),
- sleeptime * 1000L);
+ sleeptime);
/* Check for replication timeout */
if (replication_timeout > 0 &&