mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-04-19 15:44:22 +00:00
fix #508
This commit is contained in:
parent
65f530047a
commit
d9f2e7528c
3
.gitignore
vendored
3
.gitignore
vendored
@ -35,4 +35,5 @@ test/report
|
||||
doc_compiled.md
|
||||
docs-md/cn/doc.md
|
||||
docs-md/en/doc.md
|
||||
docs/gitbook/gitbook-plugin-livereload/
|
||||
docs/gitbook/gitbook-plugin-livereload/
|
||||
node_modules
|
||||
|
@ -86,11 +86,22 @@ class Recorder extends events.EventEmitter {
|
||||
this.globalId = 1;
|
||||
this.cachePath = getCacheDir();
|
||||
this.db = new Datastore();
|
||||
this.db.persistence.setAutocompactionInterval(5001);
|
||||
|
||||
this.recordBodyMap = []; // id - body
|
||||
}
|
||||
|
||||
setDbAutoCompact() {
|
||||
this.db.persistence.setAutocompactionInterval(5001);
|
||||
}
|
||||
|
||||
stopDbAutoCompact() {
|
||||
try {
|
||||
this.db.persistence.stopAutocompaction();
|
||||
} catch (e) {
|
||||
logUtil.printLog(e, logUtil.T_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
emitUpdate(id, info) {
|
||||
const self = this;
|
||||
if (info) {
|
||||
@ -333,6 +344,7 @@ class Recorder extends events.EventEmitter {
|
||||
}
|
||||
|
||||
clear() {
|
||||
logUtil.printLog('clearing cache file...');
|
||||
const self = this;
|
||||
proxyUtil.deleteFolderContentsRecursive(self.cachePath, true);
|
||||
}
|
||||
|
@ -216,8 +216,6 @@ function deleteFolderContentsRecursive(dirPath, ifClearFolderItself) {
|
||||
throw new Error('can_not_delete_this_dir');
|
||||
}
|
||||
|
||||
logUtil.info('==>>> clearing cache ', dirPath);
|
||||
|
||||
if (fs.existsSync(dirPath)) {
|
||||
fs.readdirSync(dirPath).forEach((file) => {
|
||||
const curPath = path.join(dirPath, file);
|
||||
|
@ -308,11 +308,15 @@ class webInterface extends events.EventEmitter {
|
||||
}
|
||||
|
||||
close() {
|
||||
this.server && this.server.close();
|
||||
this.wsServer && this.wsServer.closeAll();
|
||||
this.server = null;
|
||||
this.wsServer = null;
|
||||
this.proxyInstance = null;
|
||||
const self = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
self.server && self.server.close();
|
||||
self.wsServer && self.wsServer.closeAll();
|
||||
self.server = null;
|
||||
self.wsServer = null;
|
||||
self.proxyInstance = null;
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
68
proxy.js
68
proxy.js
@ -248,7 +248,6 @@ class ProxyCore extends events.EventEmitter {
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* close the proxy server
|
||||
*
|
||||
@ -326,54 +325,47 @@ class ProxyServer extends ProxyCore {
|
||||
}
|
||||
|
||||
start() {
|
||||
if (this.recorder) {
|
||||
this.recorder.setDbAutoCompact();
|
||||
}
|
||||
|
||||
// start web interface if neeeded
|
||||
if (this.proxyWebinterfaceConfig && this.proxyWebinterfaceConfig.enable) {
|
||||
this.webServerInstance = new WebInterface(this.proxyWebinterfaceConfig, this.recorder);
|
||||
// start web server
|
||||
this.webServerInstance.start().then(() => {
|
||||
// start proxy core
|
||||
super.start();
|
||||
})
|
||||
.catch((e) => {
|
||||
this.emit('error', e);
|
||||
});
|
||||
this.webServerInstance.start()
|
||||
// start proxy core
|
||||
.then(() => {
|
||||
super.start();
|
||||
})
|
||||
.catch((e) => {
|
||||
this.emit('error', e);
|
||||
});
|
||||
} else {
|
||||
super.start();
|
||||
}
|
||||
}
|
||||
|
||||
close() {
|
||||
return new Promise((resolve, reject) => {
|
||||
super.close()
|
||||
.then((error) => {
|
||||
if (error) {
|
||||
resolve(error);
|
||||
}
|
||||
});
|
||||
const self = this;
|
||||
// release recorder
|
||||
if (self.recorder) {
|
||||
self.recorder.stopDbAutoCompact();
|
||||
self.recorder.clear();
|
||||
}
|
||||
self.recorder = null;
|
||||
|
||||
if (this.recorder) {
|
||||
logUtil.printLog('clearing cache file...');
|
||||
this.recorder.clear();
|
||||
}
|
||||
const tmpWebServer = this.webServerInstance;
|
||||
this.recorder = null;
|
||||
this.webServerInstance = null;
|
||||
if (tmpWebServer) {
|
||||
logUtil.printLog('closing webserver...');
|
||||
tmpWebServer.close((error) => {
|
||||
if (error) {
|
||||
console.error(error);
|
||||
logUtil.printLog(`proxy web server close FAILED: ${error.message}`, logUtil.T_ERR);
|
||||
} else {
|
||||
logUtil.printLog(`proxy web server closed at ${this.proxyHostName} : ${this.webPort}`);
|
||||
}
|
||||
|
||||
resolve(error);
|
||||
})
|
||||
} else {
|
||||
resolve(null);
|
||||
}
|
||||
});
|
||||
// close ProxyCore
|
||||
return super.close()
|
||||
// release webInterface
|
||||
.then(() => {
|
||||
if (self.webServerInstance) {
|
||||
const tmpWebServer = self.webServerInstance;
|
||||
self.webServerInstance = null;
|
||||
logUtil.printLog('closing webInterface...');
|
||||
return tmpWebServer.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user