1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-05 09:19:17 +03:00
Robert Haas d18e75664a Remove CheckpointLock.
Up until now, we've held this lock when performing a checkpoint or
restartpoint, but commit 076a055acf3c55314de267c62b03191586d79cf6 back
in 2004 and commit 7e48b77b1cebb9a43f9fdd6b17128a0ba36132f9 from 2009,
taken together, have removed all need for this. In the present code,
there's only ever one process entitled to attempt a checkpoint: either
the checkpointer, during normal operation, or the postmaster, during
single-user operation. So, we don't need the lock.

One possible concern in making this change is that it means that
a substantial amount of code where HOLD_INTERRUPTS() was previously
in effect due to the preceding LWLockAcquire() will now be
running without that. This could mean that ProcessInterrupts()
gets called in places from which it didn't before. However, this
seems unlikely to do very much, because the checkpointer doesn't
have any signal mapped to die(), so it's not clear how,
for example, ProcDiePending = true could happen in the first
place. Similarly with ClientConnectionLost and recovery conflicts.

Also, if there are any such problems, we might want to fix them
rather than reverting this, since running lots of code with
interrupt handling suspended is generally bad.

Patch by me, per an inquiry by Amul Sul. Review by Tom Lane
and Michael Paquier.

Discussion: http://postgr.es/m/CAAJ_b97XnBBfYeSREDJorFsyoD1sHgqnNuCi=02mNQBUMnA=FA@mail.gmail.com
2021-01-25 12:34:38 -05:00
..
2020-07-05 15:37:57 +02:00
2020-09-10 14:15:26 +02:00
2020-11-07 12:26:24 +01:00
2020-10-26 19:17:05 -04:00
2020-02-26 13:05:30 -08:00
2020-03-29 11:15:11 +02:00
2018-10-11 11:43:56 -07:00
2020-11-25 09:49:00 +01:00
2019-09-08 10:27:29 +02:00
2020-10-19 19:28:54 +03:00
2020-11-21 08:26:20 +01:00
2020-07-18 22:43:35 +09:00
2020-12-01 14:36:30 +02:00
2020-12-20 07:20:33 +03:00
2020-10-19 13:48:00 +02:00
2020-06-07 13:18:36 +02:00
2020-07-18 22:43:35 +09:00
2019-10-25 20:39:41 +02:00
2020-07-18 22:43:35 +09:00
2020-10-19 19:28:54 +03:00
2020-12-01 14:36:30 +02:00
2021-01-02 13:06:25 -05:00
2019-09-08 10:27:29 +02:00
2020-10-19 19:28:54 +03:00
2021-01-25 12:34:38 -05:00
2020-10-19 19:28:54 +03:00
2021-01-05 14:26:37 -05:00
2020-10-19 19:28:54 +03:00
2020-08-28 08:19:12 +02:00
2020-12-23 09:33:20 -05:00
2020-12-23 09:33:20 -05:00
2020-12-23 09:33:20 -05:00
2020-11-19 09:32:47 +01:00
2020-06-07 17:16:30 -04:00
2020-06-07 17:16:30 -04:00
2020-10-19 19:28:54 +03:00
2020-10-19 19:28:54 +03:00
2019-09-08 10:27:29 +02:00
2019-08-13 08:40:17 +02:00
2019-03-27 23:10:23 +01:00
2019-09-08 10:27:29 +02:00

<!-- doc/src/sgml/README.links -->

Linking within DocBook documents can be confusing, so here is a summary:


Intra-document Linking
----------------------

<xref>
	use to get chapter/section number from the title of the target
	link, or xreflabel if defined at the target, or refentrytitle if target
        is a refentry;  has no close tag
	http://www.oasis-open.org/docbook/documentation/reference/html/xref.html

linkend=
	controls the target of the link/xref, required

endterm=
	for <xref>, allows the text of the link/xref to be taken from a
	different link target title

<link>
	use to supply text for the link, only uses linkend, requires </link>
	http://www.oasis-open.org/docbook/documentation/reference/html/link.html


External Linking
----------------

<ulink>
	like <link>, but uses a URL (not a document target);  requires
	</ulink>; if no text is specified, the URL appears as the link
	text
	http://www.oasis-open.org/docbook/documentation/reference/html/ulink.html

url=
	used by <ulink> to specify the URL, required


Guidelines
----------

- For an internal link, if you want to supply text, use <link>, else
  <xref>.

- Specific nouns like GUC variables, SQL commands, and contrib modules
  usually have xreflabels.

- For an external link, use <ulink>, with or without link text.

- xreflabels added to tags prevent the chapter/section for id's from being
  referenced;  only the xreflabel is accessible.  Therefore, use xreflabels
  only when linking is common, and chapter/section information is unneeded.