Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions phpmainthread_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,14 @@ func TestFinishBootingAWorkerScript(t *testing.T) {
assert.Nil(t, phpThreads)
}

func TestReturnAnErrorIf2WorkersHaveTheSameFileName(t *testing.T) {
_, err1 := newWorker(workerOpt{fileName: "filename.php"})
_, err2 := newWorker(workerOpt{fileName: "filename.php"})

assert.NoError(t, err1)
assert.Error(t, err2, "2 workers cannot have the same filename")
}

func getDummyWorker(fileName string) *worker {
if workers == nil {
workers = make(map[string]*worker)
Expand Down
11 changes: 9 additions & 2 deletions worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ func initWorkers(opt []workerOpt) error {

for _, o := range opt {
worker, err := newWorker(o)
worker.threads = make([]*phpThread, 0, o.num)
workersReady.Add(o.num)
if err != nil {
return err
}

workersReady.Add(o.num)
for i := 0; i < worker.num; i++ {
thread := getInactivePHPThread()
convertToWorkerThread(thread, worker)
Expand Down Expand Up @@ -81,7 +81,14 @@ func newWorker(o workerOpt) (*worker, error) {
num: o.num,
env: o.env,
requestChan: make(chan *frankenPHPContext),
threads: make([]*phpThread, 0, o.num),
}

// ensure the filename is not already registered
if _, ok := workers[absFileName]; ok {
return w, fmt.Errorf("2 workers cannot have the same filename: %q.", absFileName)
}

workers[absFileName] = w

return w, nil
Expand Down