| @@ 98-117 (lines=20) @@ | ||
| 95 | $stmt = null; |
|
| 96 | $attempt = 0; |
|
| 97 | $retry = true; |
|
| 98 | while ($retry) { |
|
| 99 | $retry = false; |
|
| 100 | ||
| 101 | try { |
|
| 102 | $stmt = parent::executeQuery($query, $params, $types, $qcp); |
|
| 103 | } catch (Throwable $e) { |
|
| 104 | if ($this->canTryAgain($attempt) && $this->isRetryableException($e, $query)) { |
|
| 105 | $this->close(); |
|
| 106 | ++$attempt; |
|
| 107 | $retry = true; |
|
| 108 | ||
| 109 | $this->getEventManager()->dispatchEvent( |
|
| 110 | Events\Events::RECONNECT_TO_DATABASE, |
|
| 111 | new ReconnectEventArgs(__FUNCTION__, $attempt, $query) |
|
| 112 | ); |
|
| 113 | } |
|
| 114 | ||
| 115 | throw $e; |
|
| 116 | } |
|
| 117 | } |
|
| 118 | ||
| 119 | return $stmt; |
|
| 120 | } |
|
| @@ 190-209 (lines=20) @@ | ||
| 187 | $stmt = null; |
|
| 188 | $attempt = 0; |
|
| 189 | $retry = true; |
|
| 190 | while ($retry) { |
|
| 191 | $retry = false; |
|
| 192 | ||
| 193 | try { |
|
| 194 | $stmt = parent::executeUpdate($query, $params, $types); |
|
| 195 | } catch (Throwable $e) { |
|
| 196 | if ($this->canTryAgain($attempt) && $this->isRetryableException($e)) { |
|
| 197 | $this->close(); |
|
| 198 | ++$attempt; |
|
| 199 | $retry = true; |
|
| 200 | ||
| 201 | $this->getEventManager()->dispatchEvent( |
|
| 202 | Events\Events::RECONNECT_TO_DATABASE, |
|
| 203 | new ReconnectEventArgs(__FUNCTION__, $attempt, $query) |
|
| 204 | ); |
|
| 205 | } else { |
|
| 206 | throw $e; |
|
| 207 | } |
|
| 208 | } |
|
| 209 | } |
|
| 210 | ||
| 211 | return $stmt; |
|
| 212 | } |
|