11
11
* Portions Copyright (c) 1994, Regents of the University of California
12
12
*
13
13
* IDENTIFICATION
14
- * $PostgreSQL: pgsql/src/backend/storage/ipc/standby.c,v 1.12 2010/02/13 01:32:19 sriggs Exp $
14
+ * $PostgreSQL: pgsql/src/backend/storage/ipc/standby.c,v 1.13 2010/02/13 16:29:38 sriggs Exp $
15
15
*
16
16
*-------------------------------------------------------------------------
17
17
*/
@@ -164,6 +164,7 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
164
164
ProcSignalReason reason )
165
165
{
166
166
char waitactivitymsg [100 ];
167
+ char oldactivitymsg [101 ];
167
168
168
169
while (VirtualTransactionIdIsValid (* waitlist ))
169
170
{
@@ -186,17 +187,21 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
186
187
TimestampDifference (waitStart , now , & wait_s , & wait_us );
187
188
if (!logged && (wait_s > 0 || wait_us > 500000 ))
188
189
{
189
- const char * oldactivitymsg ;
190
+ const char * oldactivitymsgp ;
190
191
int len ;
191
192
192
- oldactivitymsg = get_ps_display (& len );
193
+ oldactivitymsgp = get_ps_display (& len );
194
+
195
+ if (len > 100 )
196
+ len = 100 ;
197
+
198
+ memcpy (oldactivitymsg , oldactivitymsgp , len );
199
+ oldactivitymsg [len ] = 0 ;
200
+
193
201
snprintf (waitactivitymsg , sizeof (waitactivitymsg ),
194
202
"waiting for max_standby_delay (%u s)" ,
195
203
MaxStandbyDelay );
196
204
set_ps_display (waitactivitymsg , false);
197
- if (len > 100 )
198
- len = 100 ;
199
- memcpy (waitactivitymsg , oldactivitymsg , len );
200
205
201
206
pgstat_report_waiting (true);
202
207
@@ -226,7 +231,7 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
226
231
/* Reset ps display */
227
232
if (logged )
228
233
{
229
- set_ps_display (waitactivitymsg , false);
234
+ set_ps_display (oldactivitymsg , false);
230
235
pgstat_report_waiting (false);
231
236
}
232
237
0 commit comments