@@ -121,17 +121,12 @@ func (n *NodeServiceImpl) Create(tx interface{}, namespace string, node *specV1.
121121 return nil , err
122122 }
123123
124- shadow , err := n .Shadow .Create (tx , models .NewShadowFromNode (res ))
125- if err != nil {
126- return nil , err
127- }
128-
129124 _ , err = n .SysAppService .GenApps (tx , namespace , node )
130125 if err != nil {
131126 return nil , err
132127 }
133128
134- if err = n .updateNodeAndAppIndex (tx , namespace , res , shadow ); err != nil {
129+ if err = n .insertOrUpdateNodeAndAppIndex (tx , namespace , res , models . NewShadowFromNode ( res ), true ); err != nil {
135130 return nil , err
136131 }
137132 return res , err
@@ -154,7 +149,7 @@ func (n *NodeServiceImpl) Update(namespace string, node *specV1.Node) (*specV1.N
154149 return nil , err
155150 }
156151
157- if err = n .updateNodeAndAppIndex (nil , namespace , res , shadow ); err != nil {
152+ if err = n .insertOrUpdateNodeAndAppIndex (nil , namespace , res , shadow , false ); err != nil {
158153 return nil , err
159154 }
160155 return res , nil
@@ -363,7 +358,7 @@ func (n *NodeServiceImpl) GetDesire(namespace, name string) (*specV1.Desire, err
363358 return & shadow .Desire , nil
364359}
365360
366- func (n * NodeServiceImpl ) updateNodeAndAppIndex (tx interface {}, namespace string , node * specV1.Node , shadow * models.Shadow ) error {
361+ func (n * NodeServiceImpl ) insertOrUpdateNodeAndAppIndex (tx interface {}, namespace string , node * specV1.Node , shadow * models.Shadow , flag bool ) error {
367362 apps , err := n .app .ListApplication (tx , namespace , & models.ListOptions {})
368363 if err != nil {
369364 log .L ().Error ("list application error" , log .Error (err ))
@@ -374,9 +369,16 @@ func (n *NodeServiceImpl) updateNodeAndAppIndex(tx interface{}, namespace string
374369
375370 node .Desire = desire
376371
377- if _ , err = n .updateDesire (tx , shadow , desire ); err != nil {
378- log .L ().Error ("update node desired node failed" , log .Error (err ))
379- return err
372+ if flag {
373+ shadow .Desire = desire
374+ if _ , err = n .Shadow .Create (tx , shadow ); err != nil {
375+ return err
376+ }
377+ } else {
378+ if _ , err = n .updateDesire (tx , shadow , desire ); err != nil {
379+ log .L ().Error ("update node desired node failed" , log .Error (err ))
380+ return err
381+ }
380382 }
381383
382384 if err = n .indexService .RefreshAppsIndexByNode (tx , namespace , node .Name , appNames ); err != nil {
0 commit comments