adobe / adobe/aio-cli-plugin-app-dev

dev command should run actions in an isolated process

Open
#110 3 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
JavaScript
Stars
2
Forks
5
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
Currently all action code is executed in the same process, which could potentially lead to errors if any action code is modifying process.env it affects the global space.

**To Reproduce**
write 2 actions where 1 is has a sleep function
```
const sleep = async (ms) => new Promise(resolve => setTimeout(resolve, ms))

// main function that will be executed by Adobe I/O Runtime
async function main (params) {

let before = process.env.__OW_ACTIVATION_ID
console.log('before', before)
await sleep(10000)
let after = process.env.__OW_ACTIVATION_ID
console.log('after', after)
return {
statusCode: 200,
body: {
before,
after,
wasCorrupted: (before !== after)
}
}
}

exports.main = main
```

aio app dev and call this action
while it is running, use curl to call the other action

**Expected behavior**
activationId has not changed when sleeper returns
```
time: 10015 ms
{
"before": "d5afdd731a1d2384c55b8bcdb1a453e6",
"after": "d5afdd731a1d2384c55b8bcdb1a453e6",
"wasCorrupted": false
}
```

**Screenshots**
```
time: 10015 ms
{
"before": "d5afdd731a1d2384c55b8bcdb1a453e6",
"after": "f53548458df5870656339859f7af28e6",
"wasCorrupted": true
}
```

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.

Contributor guide

Open the contributing guide

Research direction

Start with the `aio app dev` command and the action `main` entry point shown in the reproduction. Run two actions concurrently, including the 10-second sleep, and observe whether `process.env.__OW_ACTIVATION_ID` changes between `before` and `after`. Done means concurrent actions no longer affect each other's process environment.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.