const CONN_TRX_AUTOCOMMIT = 1;
/** @var int Return null on connection failure instead of throwing an exception */
const CONN_SILENCE_ERRORS = 2;
+ /** @var int Caller is requesting the master DB server for possibly writes */
+ const CONN_INTENT_WRITABLE = 4;
/** @var string Manager of ILoadBalancer instances is running post-commit callbacks */
const STAGE_POSTCOMMIT_CALLBACKS = 'stage-postcommit-callbacks';
* @param string[]|string $groups Query group(s) or [] to use the default group
* @param string|bool $domain DB domain ID or false for the local domain
* @param int $flags Bitfield of CONN_* class constants
- * @return IDatabase|bool Live connection handle or false on failure
+ *
+ * @note This method throws DBAccessError if ILoadBalancer::disable() was called
+ *
+ * @return IDatabase|bool This returns false on failure if CONN_SILENCE_ERRORS is set
* @throws DBError If no live handle can be obtained and CONN_SILENCE_ERRORS is not set
* @throws DBAccessError If disable() was previously called
+ * @throws InvalidArgumentException
*/
public function getConnection( $i, $groups = [], $domain = false, $flags = 0 );
+ /**
+ * Get a live handle for a server index
+ *
+ * This is a simpler version of getConnection() that does not accept virtual server
+ * indexes (e.g. DB_MASTER/DB_REPLICA), does not assure that master DB handles have
+ * read-only mode when there is high replication lag, and can only trigger attempts
+ * to connect to a single server (the one with the specified server index).
+ *
+ * @see ILoadBalancer::getConnection()
+ *
+ * @param int $i Specific server index
+ * @param string $domain Resolved DB domain
+ * @param int $flags Bitfield of class CONN_* constants
+ * @return IDatabase|bool
+ */
+ public function getServerConnection( $i, $domain, $flags = 0 );
+
/**
* Mark a live handle as being available for reuse under a different database domain
*
/**
* Wait for a replica DB to reach a specified master position
*
- * This will connect to the master to get an accurate position if $pos is not given
+ * If $conn is not a replica server connection, then this will return true.
+ * Otherwise, if $pos is not provided, this will connect to the master server
+ * to get an accurate position.
*
* @param IDatabase $conn Replica DB
* @param DBMasterPos|bool $pos Master position; default: current position