Skip to content
Snippets Groups Projects
  1. Apr 20, 2012
    • Michael Hanselmann's avatar
      Stop acquiring BGL for LUXI queries · dc4bdf73
      Michael Hanselmann authored
      
      Short description: This fixes an issue whereby masterd would become
      unresponsive on the LUXI socket, leading to client timeouts. While made
      worse in 2.5, the underlying issue was already present in 2.4.
      
      Longer description: Until now all LUXI queries would acquire the BGL
      (big Ganeti lock) in shared mode. With the exception of OpNodeAdd and
      OpNodeRemove, this was also the case for all opcodes before version 2.5.
      In 2.5 we split OpClusterVerify into multiple opcodes, one of which
      (OpClusterVerifyConfig) now acquires the BGL in exclusive mode. Whether
      or not doing so is good is a separate discussion: OpNodeAdd and
      OpNodeRemove, as of this writing, still require an exclusive BGL.
      OpClusterVerifyConfig is run more often than OpNodeAdd or OpNodeRemove
      in normal clusters, which is why we only recognized this issue in 2.5.
      
      What would happen is that once OpClusterVerifyConfig tried to acquire
      its exclusive BGL while it was actually held by other opcodes (e.g.
      OpInstanceReplaceDisks), the locking code would not grant shared
      acquires for the BGL, even when the exclusive acquire is removed from
      the queue for a short amount of time after a timeout. This is necessary
      to prevent lock starvation.
      
      In this situation further LUXI queries requiring the BGL in shared mode,
      e.g. OpClusterQuery, would block and the client eventually time out.
      Over time they fill the client request workerpool's queue and at that
      point even requests not requiring the BGL stop working. Once the
      long-running operation(s) holding the BGL in shared mode finished,
      OpClusterVerifyConfig gets it in exclusive mode and everything returns
      to normal. LUXI recovers very soon too.
      
      I'd like to thank Bernardo Dal Seno for his contribution to this bugfix.
      
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarBernardo Dal Seno <bdalseno@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      (cherry picked from commit 0fa753ba)
      dc4bdf73
    • Michael Hanselmann's avatar
      Stop using locks in LUXI "QueryTags" · cfdf561d
      Michael Hanselmann authored
      
      Also mark it as deprecated in NEWS as normal queries can be used
      instead.
      
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      cfdf561d
    • Michael Hanselmann's avatar
      Convert LUClusterConfigQuery to query2 · dff5f600
      Michael Hanselmann authored
      
      The main intention of this patch is to make it possible to retrieve
      cluster tags via query2. While at it I decided to convert
      LUClusterConfigQuery right away. Some of the values returned by
      LUClusterQuery are also included, but the conversion of LUClusterQuery
      is not yet complete.
      
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      dff5f600
    • Michael Hanselmann's avatar
      496d5ac8
    • Michael Hanselmann's avatar
      Remove unused constants · b31176b0
      Michael Hanselmann authored
      
      These are not used anywhere in Python or Haskell.
      
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      b31176b0
  2. Apr 19, 2012
  3. Apr 18, 2012
  4. Apr 17, 2012
  5. Apr 16, 2012
  6. Apr 13, 2012
  7. Apr 12, 2012
  8. Apr 11, 2012
  9. Mar 30, 2012
Loading