Commit a777cc5a authored by Eric's avatar Eric

[Bugfix] fix cpu high when input text stuck

parent f2d74143
...@@ -65,8 +65,6 @@ func (p *DBParser) ParseStream(userInChan, srvInChan <-chan []byte) (userOut, sr ...@@ -65,8 +65,6 @@ func (p *DBParser) ParseStream(userInChan, srvInChan <-chan []byte) (userOut, sr
close(p.cmdRecordChan) close(p.cmdRecordChan)
close(p.userOutputChan) close(p.userOutputChan)
close(p.srvOutputChan) close(p.srvOutputChan)
_ = p.cmdOutputParser.Close()
_ = p.cmdInputParser.Close()
logger.Infof("DB Session %s: Parser routine done", p.id) logger.Infof("DB Session %s: Parser routine done", p.id)
}() }()
for { for {
...@@ -169,6 +167,9 @@ func (p *DBParser) Close() { ...@@ -169,6 +167,9 @@ func (p *DBParser) Close() {
default: default:
close(p.closed) close(p.closed)
} }
_ = p.cmdOutputParser.Close()
_ = p.cmdInputParser.Close()
logger.Infof("DB Session %s: Parser close", p.id)
} }
func (p *DBParser) sendCommandRecord() { func (p *DBParser) sendCommandRecord() {
......
...@@ -86,8 +86,6 @@ func (p *Parser) ParseStream(userInChan, srvInChan <-chan []byte) (userOut, srvO ...@@ -86,8 +86,6 @@ func (p *Parser) ParseStream(userInChan, srvInChan <-chan []byte) (userOut, srvO
close(p.cmdRecordChan) close(p.cmdRecordChan)
close(p.userOutputChan) close(p.userOutputChan)
close(p.srvOutputChan) close(p.srvOutputChan)
_ = p.cmdOutputParser.Close()
_ = p.cmdInputParser.Close()
logger.Infof("Session %s: Parser routine done", p.id) logger.Infof("Session %s: Parser routine done", p.id)
}() }()
for { for {
...@@ -271,6 +269,9 @@ func (p *Parser) Close() { ...@@ -271,6 +269,9 @@ func (p *Parser) Close() {
close(p.closed) close(p.closed)
} }
_ = p.cmdOutputParser.Close()
_ = p.cmdInputParser.Close()
logger.Infof("Session %s: Parser close", p.id)
} }
func (p *Parser) sendCommandRecord() { func (p *Parser) sendCommandRecord() {
......
...@@ -87,12 +87,16 @@ func (cp *CmdParser) initial() { ...@@ -87,12 +87,16 @@ func (cp *CmdParser) initial() {
for { for {
line, err := cp.term.ReadLine() line, err := cp.term.ReadLine()
if err != nil { if err != nil {
select { select {
case <-cp.closed: case <-cp.closed:
logger.Debugf("Session %s %s term err: %s break loop", cp.id, cp.name, err)
break loop break loop
default: default:
} }
logger.Debugf("Session %s %s term err: %s,loop continue", cp.id, cp.name, err)
goto loop goto loop
} }
cp.lock.Lock() cp.lock.Lock()
cp.currentLength += len(line) cp.currentLength += len(line)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment