22
33namespace Aternos \Etcd ;
44
5+ use Aternos \Etcd \Exception \InvalidLeaseException ;
6+ use Aternos \Etcd \Exception \NoResponseException ;
57use Aternos \Etcd \Exception \Status \InvalidResponseStatusCodeException ;
68use Aternos \Etcd \Exception \Status \ResponseStatusCodeExceptionFactory ;
79use Etcdserverpb \AuthClient ;
2729use Etcdserverpb \ResponseOp ;
2830use Etcdserverpb \TxnRequest ;
2931use Etcdserverpb \TxnResponse ;
30- use Exception ;
3132use Grpc \ChannelCredentials ;
3233use Mvccpb \KeyValue ;
3334
@@ -197,7 +198,6 @@ public function delete(string $key)
197198 * @param bool $returnNewValueOnFail
198199 * @return bool|string
199200 * @throws InvalidResponseStatusCodeException
200- * @throws \Exception
201201 */
202202 public function putIf (string $ key , string $ value , $ compareValue , bool $ returnNewValueOnFail = false )
203203 {
@@ -217,7 +217,6 @@ public function putIf(string $key, string $value, $compareValue, bool $returnNew
217217 * @param bool $returnNewValueOnFail
218218 * @return bool|string
219219 * @throws InvalidResponseStatusCodeException
220- * @throws \Exception
221220 */
222221 public function deleteIf (string $ key , $ compareValue , bool $ returnNewValueOnFail = false )
223222 {
@@ -270,8 +269,7 @@ public function revokeLeaseID(int $leaseID)
270269 *
271270 * @param int $leaseID
272271 * @return int lease TTL
273- * @throws InvalidResponseStatusCodeException
274- * @throws Exception
272+ * @throws InvalidResponseStatusCodeException|NoResponseException|InvalidLeaseException
275273 */
276274 public function refreshLease (int $ leaseID )
277275 {
@@ -285,18 +283,21 @@ public function refreshLease(int $leaseID)
285283 /** @var LeaseKeepAliveResponse $response */
286284 $ response = $ leaseBidi ->read ();
287285 $ leaseBidi ->cancel ();
288- if (empty ($ response ->getID ()) || (int )$ response ->getID () !== $ leaseID )
289- throw new Exception ('Could not refresh lease ID: ' . $ leaseID );
286+ if ($ response === null || empty ($ response ->getID ()) || (int )$ response ->getID () !== $ leaseID )
287+ throw new NoResponseException ('Could not refresh lease ID: ' . $ leaseID );
288+
289+ if ((int )$ response ->getTTL () === 0 )
290+ throw new InvalidLeaseException ('Invalid lease ID or expired lease ' );
290291
291292 return (int )$ response ->getTTL ();
292293 }
293294
294295 /**
295296 * Execute $requestOperations if Compare succeeds, execute $failureOperations otherwise if defined
296297 *
297- * @param array $requestOperations operations to perform on success, array of RequestOp objects
298- * @param array |null $failureOperations operations to perform on failure, array of RequestOp objects
299- * @param array $compare array of Compare objects
298+ * @param RequestOp[] $requestOperations operations to perform on success, array of RequestOp objects
299+ * @param RequestOp[] |null $failureOperations operations to perform on failure, array of RequestOp objects
300+ * @param Compare[] $compare array of Compare objects
300301 * @return TxnResponse
301302 * @throws InvalidResponseStatusCodeException
302303 */
0 commit comments