@@ -2,16 +2,17 @@ package mysql
22
33import (
44 "errors"
5- "fmt"
65 "github.com/jmoiron/sqlx"
76 "github.com/qa-dev/jsonwire-grid/pool"
87 "sort"
98 "strconv"
10- "strings"
119 "time"
10+ "fmt"
11+ "strings"
1212)
1313
1414type MysqlNodeModel struct {
15+ ID string `db:"id"`
1516 Type string `db:"type"`
1617 Address string `db:"address"`
1718 Status string `db:"status"`
@@ -53,7 +54,7 @@ func (s *MysqlStorage) Add(node pool.Node) error {
5354 err = errors .New ("[MysqlStorage/Add] Can't insert new node: " + err .Error ())
5455 return err
5556 }
56- _ , err = s . db .Exec ("DELETE FROM capabilities WHERE nodeAddress = ?" , node .Address )
57+ _ , err = tx .Exec ("DELETE FROM capabilities WHERE nodeAddress = ?" , node .Address )
5758 if err != nil {
5859 tx .Rollback ()
5960 err = errors .New ("[MysqlStorage/Add] Can't delete old capabilities: " + err .Error ())
@@ -74,7 +75,7 @@ func (s *MysqlStorage) Add(node pool.Node) error {
7475 }
7576
7677 for _ , preparedCapability := range preparedCapabilities {
77- _ , err = s . db .NamedExec (
78+ _ , err = tx .NamedExec (
7879 "INSERT INTO capabilities (nodeAddress, setId, name, value) " +
7980 "VALUES (:nodeAddress, :setId, :name, :value)" ,
8081 preparedCapability ,
@@ -144,26 +145,26 @@ func (s *MysqlStorage) ReserveAvailable(capabilities pool.Capabilities) (node po
144145 err = tx .QueryRowx (
145146 `
146147 SELECT
148+ n.id,
147149 n.type,
148150 n.status,
149151 n.address,
150152 n.sessionId,
151153 n.updated,
152154 n.registred
153155 FROM node n
154- LEFT JOIN capabilities c ON n.address = c.nodeAddress
155- WHERE ` + where + `
156+ LEFT JOIN capabilities c ON n.address = c.nodeAddress AND ` + where + `
156157 GROUP BY c.setId
157158 HAVING count(c.setId) = ` + countCapabilities + `
158- ORDER BY n.updated DESC
159+ ORDER BY n.updated ASC
159160 LIMIT 1
160161 FOR UPDATE
161162 ` ,
162163 args ... ).
163164 StructScan (nodeModel )
164165 default :
165166 err = tx .QueryRowx (
166- `SELECT n.* FROM node n WHERE ` + where + ` ORDER BY n.updated DESC LIMIT 1 FOR UPDATE` ,
167+ `SELECT n.* FROM node n WHERE ` + where + ` ORDER BY n.updated ASC LIMIT 1 FOR UPDATE` ,
167168 args ... ).
168169 StructScan (nodeModel )
169170 }
0 commit comments