Skip to content

Commit 300e94e

Browse files
authored
Merge pull request ged#420 from ennova/ruby-2-wait-cpu
Fix high CPU usage when waiting with a timeout on Ruby < 3.0
2 parents 28a3bf7 + 20bab5e commit 300e94e

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

ext/pg_connection.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,7 +2241,7 @@ pg_rb_thread_io_wait(VALUE io, VALUE events, VALUE timeout) {
22412241
GetOpenFile((io), fptr);
22422242
if( !NIL_P(timeout) ){
22432243
ptimeout.tv_sec = (time_t)(NUM2DBL(timeout));
2244-
ptimeout.tv_usec = (time_t)(NUM2DBL(timeout) - (double)ptimeout.tv_sec);
2244+
ptimeout.tv_usec = (time_t)((NUM2DBL(timeout) - (double)ptimeout.tv_sec) * 1e6);
22452245

22462246
gettimeofday(&currtime, NULL);
22472247
timeradd(&currtime, &ptimeout, &aborttime);
@@ -2332,7 +2332,7 @@ pg_rb_io_wait(VALUE io, VALUE events, VALUE timeout) {
23322332
GetOpenFile((io), fptr);
23332333
if( !NIL_P(timeout) ){
23342334
waittime.tv_sec = (time_t)(NUM2DBL(timeout));
2335-
waittime.tv_usec = (time_t)(NUM2DBL(timeout) - (double)waittime.tv_sec);
2335+
waittime.tv_usec = (time_t)((NUM2DBL(timeout) - (double)waittime.tv_sec) * 1e6);
23362336
}
23372337
res = rb_wait_for_single_fd(fptr->fd, NUM2UINT(events), NIL_P(timeout) ? NULL : &waittime);
23382338

0 commit comments

Comments
 (0)