func (mysql *mysqlPlugin) receivedMysqlResponse(msg *mysqlMessage) { trans := mysql.getTransaction(msg.tcpTuple.Hashable()) if trans == nil { logp.Debug("mysql", "Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } // check if the request was received if trans.mysql == nil { logp.Debug("mysql", "Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } // save json details trans.mysql.Update(common.MapStr{ "affected_rows": msg.affectedRows, "insert_id": msg.insertID, "num_rows": msg.numberOfRows, "num_fields": msg.numberOfFields, "iserror": msg.isError, "error_code": msg.errorCode, "error_message": msg.errorInfo, }) trans.bytesOut = msg.size trans.path = msg.tables trans.responseTime = int32(msg.ts.Sub(trans.ts).Nanoseconds() / 1e6) // resp_time in milliseconds // save Raw message if len(msg.raw) > 0 { fields, rows := mysql.parseMysqlResponse(msg.raw) trans.responseRaw = common.DumpInCSVFormat(fields, rows) } trans.notes = append(trans.notes, msg.notes...) mysql.publishTransaction(trans) mysql.transactions.Delete(trans.tuple.Hashable()) logp.Debug("mysql", "Mysql transaction completed: %s", trans.mysql) logp.Debug("mysql", "%s", trans.responseRaw) }
func (pgsql *Pgsql) receivedPgsqlResponse(msg *PgsqlMessage) { tuple := msg.TcpTuple transList := pgsql.getTransaction(tuple.Hashable()) if transList == nil || len(transList) == 0 { debugf("Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } // extract the first transaction from the array trans := pgsql.removeTransaction(transList, tuple, 0) // check if the request was received if trans.Pgsql == nil { debugf("Response from unknown transaction. Ignoring.") unmatchedResponses.Add(1) return } trans.Pgsql.Update(common.MapStr{ "iserror": msg.IsError, "num_rows": msg.NumberOfRows, "num_fields": msg.NumberOfFields, "error_code": msg.ErrorCode, "error_message": msg.ErrorInfo, "error_severity": msg.ErrorSeverity, }) trans.BytesOut = msg.Size trans.ResponseTime = int32(msg.Ts.Sub(trans.ts).Nanoseconds() / 1e6) // resp_time in milliseconds trans.Response_raw = common.DumpInCSVFormat(msg.Fields, msg.Rows) trans.Notes = append(trans.Notes, msg.Notes...) pgsql.publishTransaction(trans) debugf("Postgres transaction completed: %s\n%s", trans.Pgsql, trans.Response_raw) }