mirror of
https://github.com/dunglas/frankenphp.git
synced 2025-12-24 13:38:11 +08:00
address feedback
Signed-off-by: Robert Landers <landers.robert@gmail.com>
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user