зеркало из https://github.com/mozilla/mig.git
[minor] Apply filtering in FinishCommand()
Move filtering logic added in b3dddf1
This commit is contained in:
Родитель
6dee9d490f
Коммит
9f1ec22a7d
|
@ -155,20 +155,6 @@ func (db *DB) InsertCommands(cmds []mig.Command) (insertCount int64, err error)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return int64(i), err
|
return int64(i), err
|
||||||
}
|
}
|
||||||
// XXX Filter any unicode NULL escape sequences present in the command
|
|
||||||
// results before we insert. Postgres disallows this value to be present;
|
|
||||||
// if an entry containing this value is present and JSON processing is done
|
|
||||||
// on the entry by the database it will result in an error.
|
|
||||||
//
|
|
||||||
// See Postgres 9.4.1 release notes for details:
|
|
||||||
// http://www.postgresql.org/docs/9.4/static/release-9-4-1.html
|
|
||||||
jRes = bytes.Replace(jRes, []byte("\\u0000"), []byte("NULL"), -1)
|
|
||||||
// Validate the result is still valid JSON before the insert
|
|
||||||
var tmpres []modules.Result
|
|
||||||
err = json.Unmarshal(jRes, &tmpres)
|
|
||||||
if err != nil {
|
|
||||||
return int64(i), err
|
|
||||||
}
|
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
sql += ", "
|
sql += ", "
|
||||||
}
|
}
|
||||||
|
@ -223,6 +209,22 @@ func (db *DB) FinishCommand(cmd mig.Command) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to marshal results: '%v'", err)
|
return fmt.Errorf("Failed to marshal results: '%v'", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XXX Filter any unicode NULL escape sequences present in the command
|
||||||
|
// results before we insert. Postgres disallows this value to be present;
|
||||||
|
// if an entry containing this value is present and JSON processing is done
|
||||||
|
// on the entry by the database it will result in an error.
|
||||||
|
//
|
||||||
|
// See Postgres 9.4.1 release notes for details:
|
||||||
|
// http://www.postgresql.org/docs/9.4/static/release-9-4-1.html
|
||||||
|
jResults = bytes.Replace(jResults, []byte("\\u0000"), []byte("NULL"), -1)
|
||||||
|
// Validate the result is still valid JSON before the insert
|
||||||
|
var tmpres []modules.Result
|
||||||
|
err = json.Unmarshal(jResults, &tmpres)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
res, err := db.c.Exec(`UPDATE commands SET status=$1, results=$2, finishtime=$3
|
res, err := db.c.Exec(`UPDATE commands SET status=$1, results=$2, finishtime=$3
|
||||||
WHERE id=$4 AND status!=$5 AND agentid IN (
|
WHERE id=$4 AND status!=$5 AND agentid IN (
|
||||||
SELECT id FROM agents
|
SELECT id FROM agents
|
||||||
|
|
Загрузка…
Ссылка в новой задаче