Skip to content

Commit bea21d5

Browse files
committed
Improve ondemand entry disposing logic.
1 parent 620e838 commit bea21d5

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

server/on-demand-entry-handler.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ export default function onDemandEntryHandler (devMiddleware, compiler, {
1010
maxInactiveAge = 1000 * 25
1111
}) {
1212
const entries = {}
13-
let doingEntries = {}
13+
let buildingEntries = {}
1414
let completedEntries = {}
1515

1616
const doneCallbacks = new EventEmitter()
1717

1818
compiler.plugin('make', function (compilation, done) {
1919
const allEntries = Object.keys(entries).map((page) => {
2020
const { name, entry } = entries[page]
21-
doingEntries[page] = true
21+
buildingEntries[page] = true
2222
return addEntry(compilation, this.context, name, entry)
2323
})
2424

@@ -29,13 +29,13 @@ export default function onDemandEntryHandler (devMiddleware, compiler, {
2929

3030
compiler.plugin('done', function (stats) {
3131
// Call all the doneCallbacks
32-
Object.keys(doingEntries).forEach((page) => {
32+
Object.keys(buildingEntries).forEach((page) => {
3333
entries[page].lastActiveTime = Date.now()
3434
doneCallbacks.emit(page)
3535
})
3636

37-
completedEntries = doingEntries
38-
doingEntries = {}
37+
completedEntries = buildingEntries
38+
buildingEntries = {}
3939
})
4040

4141
setInterval(function () {
@@ -88,6 +88,9 @@ export default function onDemandEntryHandler (devMiddleware, compiler, {
8888
const page = normalizePage(query.page)
8989
const entry = entries[page]
9090

91+
// We don't need to maintain active state for currently building entries
92+
if (buildingEntries[page]) return
93+
9194
// If there's an entry
9295
if (entry) {
9396
entry.lastActiveTime = Date.now()
@@ -122,6 +125,11 @@ function disposeInactiveEntries (devMiddleware, entries, maxInactiveAge) {
122125

123126
Object.keys(entries).forEach((page) => {
124127
const { lastActiveTime } = entries[page]
128+
129+
// This means this entry is currently building
130+
// We don't need to dispose those entries.
131+
if (!lastActiveTime) return
132+
125133
if (Date.now() - lastActiveTime > maxInactiveAge) {
126134
disposingPages.push(page)
127135
}

0 commit comments

Comments
 (0)