@@ -325,6 +325,7 @@ function createRepl(inspector) {
325325 const history = { control : [ ] , debug : [ ] } ;
326326 const watchedExpressions = [ ] ;
327327 const knownBreakpoints = [ ] ;
328+ let heapSnapshotPromise = null ;
328329 let pauseOnExceptionState = 'none' ;
329330 let lastCommand ;
330331
@@ -961,7 +962,13 @@ function createRepl(inspector) {
961962 } ,
962963
963964 takeHeapSnapshot ( filename = 'node.heapsnapshot' ) {
964- return new Promise ( ( resolve , reject ) => {
965+ if ( heapSnapshotPromise ) {
966+ print (
967+ 'Cannot take heap snapshot because another snapshot is in progress.'
968+ ) ;
969+ return heapSnapshotPromise ;
970+ }
971+ heapSnapshotPromise = new Promise ( ( resolve , reject ) => {
965972 const absoluteFile = Path . resolve ( filename ) ;
966973 const writer = FS . createWriteStream ( absoluteFile ) ;
967974 let sizeWritten = 0 ;
@@ -983,6 +990,7 @@ function createRepl(inspector) {
983990 writer . end ( ( ) => {
984991 teardown ( ) ;
985992 print ( `Wrote snapshot: ${ absoluteFile } ` ) ;
993+ heapSnapshotPromise = null ;
986994 resolve ( ) ;
987995 } ) ;
988996 }
@@ -1006,6 +1014,7 @@ function createRepl(inspector) {
10061014 HeapProfiler . takeHeapSnapshot ( { reportProgress : true } ) ,
10071015 onResolve , onReject ) ;
10081016 } ) ;
1017+ return heapSnapshotPromise ;
10091018 } ,
10101019
10111020 get watchers ( ) {
0 commit comments