1. 10 5月, 2012 8 次提交
    • T
      Improve tests for postmaster death in auxiliary processes. · fd71421b
      Tom Lane 提交于
      In checkpointer and walwriter, avoid calling PostmasterIsAlive unless
      WaitLatch has reported WL_POSTMASTER_DEATH.  This saves a kernel call per
      iteration of the process's outer loop, which is not all that much, but a
      cycle shaved is a cycle earned.  I had already removed the unconditional
      PostmasterIsAlive calls in bgwriter and pgstat in previous patches, but
      forgot that WL_POSTMASTER_DEATH is supposed to be treated as untrustworthy
      (per comment in unix_latch.c); so adjust those two cases to match.
      
      There are a few other places where the same idea might be applied, but only
      after substantial code rearrangement, so I didn't bother.
      fd71421b
    • B
      Update 9.2 SSL release note links. · e78cc624
      Bruce Momjian 提交于
      e78cc624
    • T
      Further tweaking of nomenclature in checkpointer.c. · d3ae406f
      Tom Lane 提交于
      Get rid of some more naming choices that only make sense if you know that
      this code used to be in the bgwriter, as well as some stray comments
      referencing the bgwriter.
      d3ae406f
    • T
      Improve control logic for bgwriter hibernation mode. · 6308ba05
      Tom Lane 提交于
      Commit 6d90eaaa added a hibernation mode
      to the bgwriter to reduce the server's idle-power consumption.  However,
      its interaction with the detailed behavior of BgBufferSync's feedback
      control loop wasn't very well thought out.  That control loop depends
      primarily on the rate of buffer allocation, not the rate of buffer
      dirtying, so the hibernation mode has to be designed to operate only when
      no new buffer allocations are happening.  Also, the check for whether the
      system is effectively idle was not quite right and would fail to detect
      a constant low level of activity, thus allowing the bgwriter to go into
      hibernation mode in a way that would let the cycle time vary quite a bit,
      possibly further confusing the feedback loop.  To fix, move the wakeup
      support from MarkBufferDirty and SetBufferCommitInfoNeedsSave into
      StrategyGetBuffer, and prevent the bgwriter from entering hibernation mode
      unless no buffer allocations have happened recently.
      
      In addition, fix the delaying logic to remove the problem of possibly not
      responding to signals promptly, which was basically caused by trying to use
      the process latch's is_set flag for multiple purposes.  I can't prove it
      but I'm suspicious that that hack was responsible for the intermittent
      "postmaster does not shut down" failures we've been seeing in the buildfarm
      lately.  In any case it did nothing to improve the readability or
      robustness of the code.
      
      In passing, express the hibernation sleep time as a multiplier on
      BgWriterDelay, not a constant.  I'm not sure whether there's any value in
      exposing the longer sleep time as an independently configurable setting,
      but we can at least make it act like this for little extra code.
      6308ba05
    • B
      668f959d
    • P
      Add make dependency so that postgres.bki is rebuilt in major version change · 5d39807a
      Peter Eisentraut 提交于
      Every time since the current rule for postgres.bki was put in place
      when we change the major version, people complain that their tests
      fail in strange ways.  This is because the version number in
      postgres.bki is not updated, because it has no dependency for that.
      And you can't even force the rebuild manually if you don't happen to
      know which file has the problem.  Fix that now before it will happen
      again.
      
      The only remaining problem with switching major versions, as far as
      the regression tests are concerned, is that contrib needs to be
      rebuilt.  But that's easily invoked, and in any case the failure modes
      are more friendly if you forget that.
      5d39807a
    • P
      Split contrib documentation into extensions and programs · 1c882e07
      Peter Eisentraut 提交于
      Create separate appendixes for contrib extensions and other server
      plugins on the one hand, and utility programs on the other.  Recast
      the documentation of the latter as refentries, so that man pages are
      generated.
      1c882e07
    • P
  2. 09 5月, 2012 13 次提交
    • S
      8f28789b
    • S
      Rename BgWriterCommLock to CheckpointerCommLock · bbd3ec9d
      Simon Riggs 提交于
      bbd3ec9d
    • S
      58293873
    • B
      Add another URL for HTML entity codes. · 773b5e0e
      Bruce Momjian 提交于
      773b5e0e
    • T
      Fix an issue in recent walwriter hibernation patch. · acd4c7d5
      Tom Lane 提交于
      Users of asynchronous-commit mode expect there to be a guaranteed maximum
      delay before an async commit's WAL records get flushed to disk.  The
      original version of the walwriter hibernation patch broke that.  Add an
      extra shared-memory flag to allow async commits to kick the walwriter out
      of hibernation mode, without adding any noticeable overhead in cases where
      no action is needed.
      acd4c7d5
    • B
      8b77e226
    • T
      Reduce idle power consumption of stats collector process. · 49340037
      Tom Lane 提交于
      Latch-ify the stats collector, so that it does not need an arbitrary wakeup
      cycle to check for postmaster death.  The incremental savings in idle power
      is pretty marginal, since we only had it waking every two seconds; but I
      believe that this patch may also improve the collector's performance under
      load, by reducing the number of kernel calls made per message when messages
      are arriving constantly (we now avoid a select/poll call except when we
      need to sleep).  The change also reduces the time needed for a normal
      database shutdown on platforms where signals don't interrupt select().
      49340037
    • T
      Reduce idle power consumption of walwriter and checkpointer processes. · 5461564a
      Tom Lane 提交于
      This patch modifies the walwriter process so that, when it has not found
      anything useful to do for many consecutive wakeup cycles, it extends its
      sleep time to reduce the server's idle power consumption.  It reverts to
      normal as soon as it's done any successful flushes.  It's still true that
      during any async commit, backends check for completed, unflushed pages of
      WAL and signal the walwriter if there are any; so that in practice the
      walwriter can get awakened and returned to normal operation sooner than the
      sleep time might suggest.
      
      Also, improve the checkpointer so that it uses a latch and a computed delay
      time to not wake up at all except when it has something to do, replacing a
      previous hardcoded 0.5 sec wakeup cycle.  This also is primarily useful for
      reducing the server's power consumption when idle.
      
      In passing, get rid of the dedicated latch for signaling the walwriter in
      favor of using its procLatch, since that comports better with possible
      generic signal handlers using that latch.  Also, fix a pre-existing bug
      with failure to save/restore errno in walwriter's signal handlers.
      
      Peter Geoghegan, somewhat simplified by Tom
      5461564a
    • P
      Tweak contrib --help output to match common style · 081ca7a0
      Peter Eisentraut 提交于
      Placeholders such as OPTION are typically kept in singular.
      081ca7a0
    • P
      psql: Add variable to control keyword case in tab completion · db84ba65
      Peter Eisentraut 提交于
      This adds the variable COMP_KEYWORD_CASE, which controls in what case
      keywords are completed.  This is partially to let users configure the
      change from commit 69f4f1c3, but it
      also offers more behaviors than were available before.
      db84ba65
    • P
      Update config.guess and config.sub · cf09230e
      Peter Eisentraut 提交于
      cf09230e
    • P
      Fix dependency tracking for src/port/%_srv.o files · 3420b241
      Peter Eisentraut 提交于
      Because they use their own compilation rule, they don't use the
      dependency tracking logic from Makefile.global.  To make sure that
      dependency tracking works anyway for the *_srv.o files, depend on
      their *.o siblings as well, which do have proper dependencies.  It's a
      hack that might fail someday if there is a *_srv.o without a
      corresponding *.o, but it works for now (and those would probably go
      into src/backend/port/ anyway).
      3420b241
    • P
      Fix misleading comments · dcb2c583
      Peter Eisentraut 提交于
      Josh Kupershmidt
      dcb2c583
  3. 08 5月, 2012 3 次提交
    • P
      Remove strdup, strtol, strtoul from libpgport · 3284e03d
      Peter Eisentraut 提交于
      These should not be needed anymore, at least after the recent port
      removals.  So let's see whether we can do without them.
      3284e03d
    • P
      Fix pg_config.h make rule · d7b2cd9d
      Peter Eisentraut 提交于
      According to the Autoconf documentation, there should be a make rule
      
      pg_config.h: stamp-h
      
      so that with the right setup around this, a change in pg_config.h.in
      will trigger a rebuild of everything that depends on pg_config.h.  But
      this doesn't always work, sometimes you need to run make twice to get
      everything up to date after a change of pg_config.h.in.
      
      The fix is to write the rule as
      
      pg_config.h: stamp-h ;
      
      instead (with an empty command instead of no command).  This is what
      Automake-generated makefiles effectively do, so it seems safe to be on
      this side.
      
      It's not actually clear why this is (apparently) more correct.  It's
      been posted to
      <http://lists.gnu.org/archive/html/help-make/2012-04/msg00058.html>
      without response so far.
      d7b2cd9d
    • M
      Make "unexpected EOF" messages DEBUG1 unless in an open transaction · 916d589a
      Magnus Hagander 提交于
      "Unexpected EOF on client connection" without an open transaction
      is mostly noise, so turn it into DEBUG1. With an open transaction it's
      still indicating a problem, so keep those as ERROR, and change the message
      to indicate that it happened in a transaction.
      916d589a
  4. 07 5月, 2012 1 次提交
  5. 06 5月, 2012 2 次提交
  6. 05 5月, 2012 1 次提交
    • T
      Overdue code review for transaction-level advisory locks patch. · 71b9549d
      Tom Lane 提交于
      Commit 62c7bd31 had assorted problems, most
      visibly that it broke PREPARE TRANSACTION in the presence of session-level
      advisory locks (which should be ignored by PREPARE), as per a recent
      complaint from Stephen Rees.  More abstractly, the patch made the
      LockMethodData.transactional flag not merely useless but outright
      dangerous, because in point of fact that flag no longer tells you anything
      at all about whether a lock is held transactionally.  This fix therefore
      removes that flag altogether.  We now rely entirely on the convention
      already in use in lock.c that transactional lock holds must be owned by
      some ResourceOwner, while session holds are never so owned.  Setting the
      locallock struct's owner link to NULL thus denotes a session hold, and
      there is no redundant marker for that.
      
      PREPARE TRANSACTION now works again when there are session-level advisory
      locks, and it is also able to transfer transactional advisory locks to the
      prepared transaction, but for implementation reasons it throws an error if
      we hold both types of lock on a single lockable object.  Perhaps it will be
      worth improving that someday.
      
      Assorted other minor cleanup and documentation editing, as well.
      
      Back-patch to 9.1, except that in the 9.1 branch I did not remove the
      LockMethodData.transactional flag for fear of causing an ABI break for
      any external code that might be examining those structs.
      71b9549d
  7. 04 5月, 2012 1 次提交
    • P
      doc: Fix for too many brackets in command synopses on man pages · 1715ff11
      Peter Eisentraut 提交于
      The default for the choice attribute of the <arg> element is "opt",
      which would normally put the argument inside brackets.  But the DSSSL
      stylesheets contain a hack that treats <arg> directly inside <group>
      specially, so that <group><arg>-x</arg><arg>-y</arg></group> comes out
      as [ -x | -y ] rather than [ [-x] | [-y] ], which it would technically
      be.  But when building man pages, this doesn't work, and so the
      command synopses on the man pages contain lots of extra brackets.
      
      By putting choice="opt" or choice="plain" explicitly on every <arg>
      and <group> element, we avoid any toolchain dependencies like that,
      and it also makes it clearer in the source code what is meant.
      
      In passing, make some small corrections in the documentation about
      which arguments are really optional or not.
      1715ff11
  8. 03 5月, 2012 7 次提交
  9. 02 5月, 2012 4 次提交