Dear Horiguchi-san, Fujii-san, > > I understood here as removing following mechanism from core: > > > > * disable timeout at end of tx. > > * skip if held off or read commands > > I think we're on the same page. Anyway query cancel interrupt is > ignored while rading input. > > > > - If an existing connection is found to be dead, just try canceling > > > the query (or sending query cancel). > > > One issue with it is how to show the decent message for the query > > > cancel, but maybe we can have a global variable that suggests the > > > reason for the cancel. > > > > Currently I have no good idea for that but I'll try. > > However, I would like to hear others' opnions about the direction, of > course. >
Based on the idea, I re-implemented the feature. Almost all feature is moved to postgres_fdw. The abstract of my patch is as follows: # core * Exposes QueryCancelMessage for error reporting * Uses above if it was not NULL # postgres_fdw * Defines new GUC postgres_fdw.health_check_interval. It is renamed simpler. * Registers a timeout when initializing connection hash. * Raises SIGINT and sets QueryCancelMessage to message. if detects a connection lost. I also attached a test as zipped file for keep cfbot quiet. When connection lost is detected, the following message will show: ``` ERROR: Foreign Server (servername) might be down. ``` How do you think? Best Regards, Hayato Kuroda FUJITSU LIMITED
v10_0001_expose_cancel_message.patch
Description: v10_0001_expose_cancel_message.patch
v10_0002_add_health_check.patch
Description: v10_0002_add_health_check.patch
v10_0003_add_doc.patch
Description: v10_0003_add_doc.patch
<<attachment: v10_0004_add_test.zip>>