diff --git a/main.go b/main.go index 39c7972..a05574d 100644 --- a/main.go +++ b/main.go @@ -3,13 +3,14 @@ package main import ( "flag" "fmt" + sd "github.com/zr-hebo/sniffer-agent/session-dealer" + "github.com/zr-hebo/sniffer-agent/session-dealer/mysql" "os" log "github.com/sirupsen/logrus" "github.com/zr-hebo/sniffer-agent/capture" - "github.com/zr-hebo/sniffer-agent/exporter" "github.com/zr-hebo/sniffer-agent/communicator" - sd "github.com/zr-hebo/sniffer-agent/session-dealer" + "github.com/zr-hebo/sniffer-agent/exporter" ) var ( @@ -39,8 +40,7 @@ func initLog() { func main() { flag.Parse() - initLog() - sd.CheckParams() + prepareEnv() go communicator.Server() mainServer() @@ -60,4 +60,10 @@ func mainServer() { log.Errorf("cannot get network package from %s", capture.DeviceName) os.Exit(1) +} + +func prepareEnv() { + initLog() + sd.CheckParams() + mysql.PrepareEnv() } \ No newline at end of file diff --git a/session-dealer/mysql/config.go b/session-dealer/mysql/config.go index 6215386..ea6e904 100644 --- a/session-dealer/mysql/config.go +++ b/session-dealer/mysql/config.go @@ -16,11 +16,10 @@ var ( strictMode bool adminUser string adminPasswd string - // MaxMysqlPacketLen is the max packet payload length. - MaxMysqlPacketLen int - coverRangePool = NewCoveragePool() - localStmtCache = util.NewSliceBufferPool("statement cache", MaxMysqlPacketLen) - + // MaxMySQLPacketLen is the max packet payload length. + MaxMySQLPacketLen int + coverRangePool = NewCoveragePool() + localStmtCache *util.SliceBufferPool PrepareStatement = []byte(":prepare") ) @@ -28,7 +27,11 @@ func init() { flag.BoolVar(&strictMode,"strict_mode", false, "strict mode. Default is false") flag.StringVar(&adminUser,"admin_user", "", "admin user name. When set strict mode, must set admin user to query session info") flag.StringVar(&adminPasswd,"admin_passwd", "", "admin user passwd. When use strict mode, must set admin user to query session info") - flag.IntVar(&MaxMysqlPacketLen, "max_packet_length", 128 * 1024, "max mysql packet length. Default is 128 * 1024") + flag.IntVar(&MaxMySQLPacketLen, "max_packet_length", 128 * 1024, "max mysql packet length. Default is 128 * 1024") +} + +func PrepareEnv() { + localStmtCache = util.NewSliceBufferPool("statement cache", MaxMySQLPacketLen) } func CheckParams() { diff --git a/session-dealer/mysql/session.go b/session-dealer/mysql/session.go index 270587c..a32df2f 100644 --- a/session-dealer/mysql/session.go +++ b/session-dealer/mysql/session.go @@ -158,8 +158,8 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) { ms.expectReceiveSize = extractMysqlPayloadSize(bytes[:4]) // ignore too big mysql packet - if ms.expectReceiveSize >= MaxMysqlPacketLen { - log.Infof("expect receive size is bigger than max deal size: %d", MaxMysqlPacketLen) + if ms.expectReceiveSize >= MaxMySQLPacketLen { + log.Infof("expect receive size is bigger than max deal size: %d", MaxMySQLPacketLen) return } @@ -185,7 +185,7 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) { } else { // ignore too big mysql packet - if ms.expectReceiveSize >= MaxMysqlPacketLen { + if ms.expectReceiveSize >= MaxMySQLPacketLen { return }