diff --git a/lib/gat/handlers/pool/pools/basic/pool.go b/lib/gat/handlers/pool/pools/basic/pool.go
index fb60015dc0e2f0b8db6334b23f851cb0cae5c950..d3674185a6235271c140b2b40e6d8d1afd714061 100644
--- a/lib/gat/handlers/pool/pools/basic/pool.go
+++ b/lib/gat/handlers/pool/pools/basic/pool.go
@@ -262,8 +262,10 @@ func (T *Pool) Serve(conn *fed.Conn) error {
 			{
 				start := time.Now()
 				err, serverErr = bouncers.Bounce(client.Conn, server.Conn, packet)
-				dur := time.Since(start)
-				prom.OperationSimple.Execution(opLabels).Observe(float64(dur) / float64(time.Millisecond))
+				if serverErr == nil {
+					dur := time.Since(start)
+					prom.OperationSimple.Execution(opLabels).Observe(float64(dur) / float64(time.Millisecond))
+				}
 			}
 		}
 
diff --git a/lib/gat/handlers/pool/pools/hybrid/pool.go b/lib/gat/handlers/pool/pools/hybrid/pool.go
index 8a017dab37e8b102c7794365d993ea9646813def..c7827cf82f2574941aebf977a4ebac4b9841ae9b 100644
--- a/lib/gat/handlers/pool/pools/hybrid/pool.go
+++ b/lib/gat/handlers/pool/pools/hybrid/pool.go
@@ -240,7 +240,7 @@ func (T *Pool) serveRW(l prom.PoolHybridLabels, conn *fed.Conn) error {
 				prom.OperationHybrid.Acquire(l.ToOperation("replica")).Observe(float64(dur) / float64(time.Millisecond))
 				start := time.Now()
 				err, serverErr = bouncers.Bounce(conn, replica.Conn, packet)
-				if serverErr != nil {
+				if serverErr == nil {
 					dur := time.Since(start)
 					prom.OperationHybrid.Execution(l.ToOperation("replica")).Observe(float64(dur) / float64(time.Millisecond))
 				}
@@ -317,7 +317,7 @@ func (T *Pool) serveRW(l prom.PoolHybridLabels, conn *fed.Conn) error {
 				prom.OperationHybrid.Acquire(l.ToOperation("primary")).Observe(float64(dur) / float64(time.Millisecond))
 				start := time.Now()
 				err, serverErr = bouncers.Bounce(conn, primary.Conn, packet)
-				if serverErr != nil {
+				if serverErr == nil {
 					dur := time.Since(start)
 					prom.OperationHybrid.Execution(l.ToOperation("primary")).Observe(float64(dur) / float64(time.Millisecond))
 				}
@@ -432,7 +432,7 @@ func (T *Pool) serveOnly(l prom.PoolHybridLabels, conn *fed.Conn, write bool) er
 			prom.OperationHybrid.Acquire(opL).Observe(float64(dur) / float64(time.Millisecond))
 			start := time.Now()
 			err, serverErr = bouncers.Bounce(conn, server.Conn, packet)
-			if serverErr != nil {
+			if serverErr == nil {
 				dur := time.Since(start)
 				prom.OperationHybrid.Execution(opL).Observe(float64(dur) / float64(time.Millisecond))
 			}