address feedback

Signed-off-by: Robert Landers <landers.robert@gmail.com>
This commit is contained in:
Robert Landers
2025-11-25 16:54:19 +01:00
parent 4177175649
commit c2124e806f
3 changed files with 24 additions and 14 deletions

View File

@@ -7,6 +7,7 @@ import (
)
func acquireSemaphoreWithAdmissionControl(
ctx context.Context,
sem *semaphore.Weighted,
scaleChan chan *frankenPHPContext,
fc *frankenPHPContext,
@@ -16,8 +17,8 @@ func acquireSemaphoreWithAdmissionControl(
}
if maxWaitTime > 0 && scaleChan != nil {
ctx, cancel := context.WithTimeout(context.Background(), minStallTime)
err := sem.Acquire(ctx, 1)
ct, cancel := context.WithTimeout(ctx, minStallTime)
err := sem.Acquire(ct, 1)
cancel()
if err != nil {
@@ -26,22 +27,30 @@ func acquireSemaphoreWithAdmissionControl(
default:
}
ctx, cancel := context.WithTimeout(context.Background(), maxWaitTime)
ctx, cancel := context.WithTimeout(ctx, maxWaitTime)
defer cancel()
if err := sem.Acquire(ctx, 1); err != nil {
return ErrMaxWaitTimeExceeded
}
}
} else if maxWaitTime > 0 {
ctx, cancel := context.WithTimeout(context.Background(), maxWaitTime)
return nil
}
if maxWaitTime > 0 {
ctx, cancel := context.WithTimeout(ctx, maxWaitTime)
defer cancel()
if err := sem.Acquire(ctx, 1); err != nil {
return ErrMaxWaitTimeExceeded
}
} else if scaleChan != nil {
ctx, cancel := context.WithTimeout(context.Background(), minStallTime)
return nil
}
if scaleChan != nil {
ctx, cancel := context.WithTimeout(ctx, minStallTime)
err := sem.Acquire(ctx, 1)
cancel()
@@ -51,14 +60,15 @@ func acquireSemaphoreWithAdmissionControl(
default:
}
if err := sem.Acquire(context.Background(), 1); err != nil {
if err := sem.Acquire(ctx, 1); err != nil {
return ErrMaxWaitTimeExceeded
}
}
} else {
if err := sem.Acquire(context.Background(), 1); err != nil {
return ErrMaxWaitTimeExceeded
}
return nil
}
if err := sem.Acquire(ctx, 1); err != nil {
return ErrMaxWaitTimeExceeded
}
return nil

View File

@@ -113,7 +113,7 @@ func handleRequestWithRegularPHPThreads(ch contextHolder) error {
metrics.StartRequest()
metrics.QueuedRequest()
if err := acquireSemaphoreWithAdmissionControl(regularSemaphore, scaleChan, ch.frankenPHPContext); err != nil {
if err := acquireSemaphoreWithAdmissionControl(ch.ctx, regularSemaphore, scaleChan, ch.frankenPHPContext); err != nil {
ch.frankenPHPContext.reject(err)
metrics.StopRequest()
return err

View File

@@ -258,7 +258,7 @@ func (worker *worker) handleRequest(ch contextHolder) error {
workerScaleChan = nil
}
if err := acquireSemaphoreWithAdmissionControl(worker.semaphore, workerScaleChan, ch.frankenPHPContext); err != nil {
if err := acquireSemaphoreWithAdmissionControl(ch.ctx, worker.semaphore, workerScaleChan, ch.frankenPHPContext); err != nil {
metrics.DequeuedWorkerRequest(worker.name)
ch.frankenPHPContext.reject(err)
metrics.StopWorkerRequest(worker.name, time.Since(ch.frankenPHPContext.startedAt))