Skip to content

Commit 5dae760

Browse files
amrutasaliGitHub Enterprise
authored and
GitHub Enterprise
committed
Log in/out messages/params from overloaded xfmr callbacks - Xfmr infra logging enhancements to improve debuggability - (sonic-net#48)
* Xfmr infra logging enhancements to improve debuggability - Log in/out messages/params from overloaded xfmr callbacks * Addressed code review comment to change log messsages around callbacks to have before and after
1 parent 5202e5c commit 5dae760

File tree

5 files changed

+79
-22
lines changed

5 files changed

+79
-22
lines changed

translib/transformer/xlate.go

-1
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,6 @@ func XlateFromDb(uri string, ygRoot *ygot.GoStruct, dbs [db.MaxDB]*db.DB, data R
512512
log.Warningf("value-xfmr:fldpath(\"%v\") val(\"%v\"):err(\"%v\").", dbSpecField, leafListInstVal, err)
513513
return []byte(""), true, err
514514
}
515-
log.Info("valueXfmrHandler() retuned ", retVal)
516515
leafListInstVal = retVal
517516
}
518517
if leafListInstExists(dbData[cdb][tableName][keyStr].Field[fieldName], leafListInstVal) {

translib/transformer/xlate_from_db.go

-1
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,6 @@ func terminalNodeProcess(inParamsForGet xlateFromDbParams, terminalNodeQuery boo
961961
log.Warningf("value-xfmr:fldpath(\"%v\") val(\"%v\"):err(\"%v\").", dbSpecField, leafListInstVal, valXfmrErr)
962962
return resFldValMap, valXfmrErr
963963
}
964-
log.Info("valueXfmrHandler() retuned ", retVal)
965964
leafListInstVal = retVal
966965
}
967966
if !leafListInstExists((*dbDataMap)[cdb][tbl][tblKey].Field[dbFldName], leafListInstVal) {

translib/transformer/xlate_qp.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,6 @@ func (qp *QueryParams) isFieldsEnabled() bool {
6565
return len(qp.fields) != 0
6666
}
6767

68-
func (qp *QueryParams) String() string {
69-
return fmt.Sprintf("depthEnabled: %v curDepth: %d content: %s fields: %s",
70-
qp.depthEnabled, qp.curDepth, qp.content, qp.fields)
71-
}
72-
7368
func (ct ContentType) String() string {
7469
ret := "Unknown"
7570
switch ct {
@@ -84,3 +79,9 @@ func (ct ContentType) String() string {
8479
}
8580
return ret
8681
}
82+
83+
func (qp QueryParams) String() string {
84+
return fmt.Sprintf("QueryParams{depthEnabled: %v, curDepth: %v, content: %v, fields: %v, fieldsFillAll: %v, "+
85+
"allowFieldsXpath: %v, tgtFieldsXpathMap: %v", qp.depthEnabled, qp.curDepth, qp.content,
86+
qp.fields, qp.fieldsFillAll, qp.allowFieldsXpath, qp.tgtFieldsXpathMap)
87+
}

translib/transformer/xlate_utils.go

+37
Original file line numberDiff line numberDiff line change
@@ -2374,3 +2374,40 @@ func (appParams *AppParams) GetUser() AppUser {
23742374
func (e *qpSubtreePruningErr) Error() string {
23752375
return fmt.Sprintf("Query Parameter pruning unsuccessful for subtree - %s", e.subtreePath)
23762376
}
2377+
2378+
func (inPm XfmrParams) String() string {
2379+
return fmt.Sprintf("{d(config Db ptr): %p, dbs(Dbs ptrs to following Dbs): %v, Current Node DB: %v, ygRoot: %v, xpath: %v, "+
2380+
"uri: %v, requestUri: %v, oper: %v, table: %v, key: %v, dbDataMap: %v, subOpDataMap: %v, "+
2381+
"param: %v, txCache: %v, skipOrdTblChk: %v, isVirtualTbl: %v, pCascadeDelTbl: %v, "+
2382+
"yangDefValMap: %v, queryParams: %v, pruneDone: %v, invokeCRUSubtreeOnce: %v", inPm.d, dbPtrsToNames(inPm.dbs), inPm.curDb.Name(),
2383+
inPm.ygRoot, inPm.xpath, inPm.uri, inPm.requestUri, inPm.oper, inPm.table, inPm.key, inPm.dbDataMap, inPm.subOpDataMap,
2384+
inPm.param, inPm.txCache, boolPtrToString(inPm.skipOrdTblChk), boolPtrToString(inPm.isVirtualTbl), inPm.pCascadeDelTbl,
2385+
inPm.yangDefValMap, inPm.queryParams, boolPtrToString(inPm.pruneDone), boolPtrToString(inPm.invokeCRUSubtreeOnce))
2386+
}
2387+
2388+
func dbPtrsToNames(dbs [db.MaxDB]*db.DB) string {
2389+
dbNms := ""
2390+
for _, val := range dbs {
2391+
if val != nil && val.Opts != nil {
2392+
dbNms = dbNms + " " + val.Opts.DBNo.Name()
2393+
}
2394+
}
2395+
return dbNms
2396+
}
2397+
2398+
func boolPtrToString(boolPtr *bool) string {
2399+
if boolPtr == nil {
2400+
return "<nil>"
2401+
} else {
2402+
return fmt.Sprintf("%v", *boolPtr)
2403+
}
2404+
}
2405+
2406+
func (inPm XfmrDbParams) String() string {
2407+
return fmt.Sprintf("{oper: %v, dbNum: %v, tableName: %v, key: %v, fieldName: %v, value: %v", inPm.oper, inPm.dbNum, inPm.tableName,
2408+
inPm.key, inPm.fieldName, inPm.value)
2409+
}
2410+
2411+
func (inPm SonicXfmrParams) String() string {
2412+
return fmt.Sprintf("{dbNum: %v, tableName: %v, key: %v, xpath: %v", inPm.dbNum, inPm.tableName, inPm.key, inPm.xpath)
2413+
}

translib/transformer/xlate_xfmr_handler.go

+36-15
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525

2626
func xfmrHandlerFunc(inParams XfmrParams, xfmrFuncNm string) error {
2727
const DBTY_SBT_XFMR_RET_ERR_INDX = 0
28-
xfmrLogInfoAll("Received inParams %v Subtree function name %v", inParams, xfmrFuncNm)
2928
if inParams.uri != inParams.requestUri {
3029
_, yerr := xlateUnMarshallUri(inParams.ygRoot, inParams.uri)
3130
if yerr != nil {
@@ -34,7 +33,9 @@ func xfmrHandlerFunc(inParams XfmrParams, xfmrFuncNm string) error {
3433
}
3534

3635
inParams.pruneDone = new(bool)
36+
xfmrLogInfoAll("Before calling dbToYang subtree xfmr %v, inParams %v", xfmrFuncNm, inParams)
3737
ret, err := XlateFuncCall(dbToYangXfmrFunc(xfmrFuncNm), inParams)
38+
xfmrLogInfoAll("After calling dbToYang subtree xfmr %v, inParams %v", xfmrFuncNm, inParams)
3839
if err != nil {
3940
xfmrLogInfoAll("Failed to retrieve data for xpath(\"%v\") err(%v).", inParams.uri, err)
4041
return err
@@ -73,8 +74,9 @@ func leafXfmrHandlerFunc(inParams XfmrParams, xfmrFieldFuncNm string) (map[strin
7374
var err error
7475
var fldValMap map[string]interface{}
7576

76-
xfmrLogInfoAll("Received inParams %v to invoke Field transformer %v", inParams, xfmrFieldFuncNm)
77+
xfmrLogInfoAll("Before calling dbToYang field xfmr %v, inParams %v", xfmrFieldFuncNm, inParams)
7778
ret, err := XlateFuncCall(dbToYangXfmrFunc(xfmrFieldFuncNm), inParams)
79+
xfmrLogInfoAll("After calling dbToYang field xfmr %v, inParams %v", xfmrFieldFuncNm, inParams)
7880
if err != nil {
7981
return fldValMap, err
8082
}
@@ -91,6 +93,7 @@ func leafXfmrHandlerFunc(inParams XfmrParams, xfmrFieldFuncNm string) (map[strin
9193

9294
if ret[DBTY_FLD_XFMR_RET_VAL_INDX].Interface() != nil {
9395
fldValMap = ret[DBTY_FLD_XFMR_RET_VAL_INDX].Interface().(map[string]interface{})
96+
xfmrLogInfoAll("Field transformer returned %v", fldValMap)
9497
}
9598
}
9699
return fldValMap, err
@@ -102,13 +105,13 @@ func keyXfmrHandlerFunc(inParams XfmrParams, xfmrFuncNm string) (map[string]inte
102105
DBTY_KEY_XFMR_RET_VAL_INDX = 0
103106
DBTY_KEY_XFMR_RET_ERR_INDX = 1
104107
)
105-
xfmrLogInfoAll("Received inParams %v key transformer function name %v", inParams, xfmrFuncNm)
108+
xfmrLogInfoAll("Before calling dbToYang key xfmr %v, inParams %v", xfmrFuncNm, inParams)
106109
ret, err := XlateFuncCall(dbToYangXfmrFunc(xfmrFuncNm), inParams)
110+
xfmrLogInfoAll("After calling dbToYang key xfmr %v, inParams %v", xfmrFuncNm, inParams)
107111
retVal := make(map[string]interface{})
108112
if err != nil {
109113
return retVal, err
110114
}
111-
112115
if (ret != nil) && (len(ret) > 0) {
113116
if len(ret) == DBTY_KEY_XFMR_RET_ARGS {
114117
// key xfmr returns err as second value in return data list from <xfmr_func>.Call()
@@ -122,19 +125,23 @@ func keyXfmrHandlerFunc(inParams XfmrParams, xfmrFuncNm string) (map[string]inte
122125
}
123126
if ret[DBTY_KEY_XFMR_RET_VAL_INDX].Interface() != nil {
124127
retVal = ret[DBTY_KEY_XFMR_RET_VAL_INDX].Interface().(map[string]interface{})
128+
xfmrLogInfoAll("Key transformer returned %v", retVal)
125129
return retVal, nil
126130
}
127131
}
128132
return retVal, nil
129133
}
130134

131135
func validateHandlerFunc(inParams XfmrParams, validateFuncNm string) bool {
132-
xfmrLogInfoAll("Received inParams %v, validate transformer function name %v", inParams, validateFuncNm)
136+
xfmrLogInfoAll("Before calling validate xfmr %v, inParams %v", validateFuncNm, inParams)
133137
ret, err := XlateFuncCall(validateFuncNm, inParams)
138+
xfmrLogInfoAll("After calling validate xfmr %v, inParams %v", validateFuncNm, inParams)
134139
if err != nil {
135140
return false
136141
}
137-
return ret[0].Interface().(bool)
142+
result := ret[0].Interface().(bool)
143+
xfmrLogInfoAll("Validate transformer returned %v", result)
144+
return result
138145
}
139146

140147
func xfmrTblHandlerFunc(xfmrTblFunc string, inParams XfmrParams, xfmrTblKeyCache map[string]tblKeyCache) ([]string, error) {
@@ -143,17 +150,19 @@ func xfmrTblHandlerFunc(xfmrTblFunc string, inParams XfmrParams, xfmrTblKeyCache
143150
TBL_XFMR_RET_VAL_INDX = 0
144151
TBL_XFMR_RET_ERR_INDX = 1
145152
)
146-
xfmrLogInfoAll("Received inParams %v, table transformer function name %v", inParams, xfmrTblFunc)
153+
xfmrLogInfoAll("Before calling table xfmr %v, inParams %v", xfmrTblFunc, inParams)
147154
if inParams.oper == GET && xfmrTblKeyCache != nil {
148155
if tkCache, _ok := xfmrTblKeyCache[inParams.uri]; _ok {
149156
if len(tkCache.dbTblList) > 0 {
157+
xfmrLogInfoAll("Returning table list from cache %v", tkCache.dbTblList)
150158
return tkCache.dbTblList, nil
151159
}
152160
}
153161
}
154162

155163
var retTblLst []string
156164
ret, err := XlateFuncCall(xfmrTblFunc, inParams)
165+
xfmrLogInfoAll("After calling table xfmr %v, inParams %v", xfmrTblFunc, inParams)
157166
if err != nil {
158167
return retTblLst, err
159168
}
@@ -182,6 +191,7 @@ func xfmrTblHandlerFunc(xfmrTblFunc string, inParams XfmrParams, xfmrTblKeyCache
182191
xfmrTblKeyCache[inParams.uri] = tkCache
183192
}
184193

194+
xfmrLogInfoAll("Table transformer returned : %v", retTblLst)
185195
return retTblLst, err
186196
}
187197

@@ -192,9 +202,9 @@ func valueXfmrHandler(inParams XfmrDbParams, xfmrValueFuncNm string) (string, er
192202
YTDB_FLD_XFMR_RET_ERR_INDX = 1
193203
)
194204

195-
xfmrLogInfoAll("Received inParams %v Value transformer name %v", inParams, xfmrValueFuncNm)
196-
205+
xfmrLogInfoAll("Before calling value xfmr %v, inParams %v", xfmrValueFuncNm, inParams)
197206
ret, err := XlateFuncCall(xfmrValueFuncNm, inParams)
207+
xfmrLogInfoAll("After calling value xfmr %v, inParams %v", xfmrValueFuncNm, inParams)
198208
if err != nil {
199209
return "", err
200210
}
@@ -213,6 +223,7 @@ func valueXfmrHandler(inParams XfmrDbParams, xfmrValueFuncNm string) (string, er
213223

214224
if ret[YTDB_FLD_XFMR_RET_VAL_INDX].Interface() != nil {
215225
retVal := ret[YTDB_FLD_XFMR_RET_VAL_INDX].Interface().(string)
226+
xfmrLogInfoAll("Value transformer returned : %v", retVal)
216227
return retVal, nil
217228
}
218229
}
@@ -227,8 +238,9 @@ func leafXfmrHandler(inParams XfmrParams, xfmrFieldFuncNm string) (map[string]st
227238
YTDB_FLD_XFMR_RET_ERR_INDX = 1
228239
)
229240

230-
xfmrLogInfoAll("Received inParams %v Field transformer name %v", inParams, xfmrFieldFuncNm)
241+
xfmrLogInfoAll("Before calling yangToDb field xfmr %v, inParams %v", xfmrFieldFuncNm, inParams)
231242
ret, err := XlateFuncCall(yangToDbXfmrFunc(xfmrFieldFuncNm), inParams)
243+
xfmrLogInfoAll("After calling yangToDb field xfmr %v, inParams %v", xfmrFieldFuncNm, inParams)
232244
if err != nil {
233245
return nil, err
234246
}
@@ -246,6 +258,7 @@ func leafXfmrHandler(inParams XfmrParams, xfmrFieldFuncNm string) (map[string]st
246258

247259
if ret[YTDB_FLD_XFMR_RET_VAL_INDX].Interface() != nil {
248260
fldValMap := ret[YTDB_FLD_XFMR_RET_VAL_INDX].Interface().(map[string]string)
261+
xfmrLogInfoAll("Field transformer returned %v", fldValMap)
249262
return fldValMap, nil
250263
}
251264
} else {
@@ -263,8 +276,9 @@ func xfmrHandler(inParams XfmrParams, xfmrFuncNm string) (map[string]map[string]
263276
YTDB_SBT_XFMR_RET_ERR_INDX = 1
264277
)
265278

266-
xfmrLogInfoAll("Received inParams %v Subtree function name %v", inParams, xfmrFuncNm)
279+
xfmrLogInfoAll("Before calling yangToDb subtree xfmr %v, inParams %v", xfmrFuncNm, inParams)
267280
ret, err := XlateFuncCall(yangToDbXfmrFunc(xfmrFuncNm), inParams)
281+
xfmrLogInfoAll("After calling yangToDb subtree xfmr %v, inParams %v", xfmrFuncNm, inParams)
268282
if err != nil {
269283
return nil, err
270284
}
@@ -282,6 +296,7 @@ func xfmrHandler(inParams XfmrParams, xfmrFuncNm string) (map[string]map[string]
282296
}
283297
if ret[YTDB_SBT_XFMR_RET_VAL_INDX].Interface() != nil {
284298
retMap := ret[YTDB_SBT_XFMR_RET_VAL_INDX].Interface().(map[string]map[string]db.Value)
299+
xfmrLogInfoAll("Subtree function returned %v", retMap)
285300
return retMap, nil
286301
}
287302
}
@@ -295,8 +310,9 @@ func keyXfmrHandler(inParams XfmrParams, xfmrFuncNm string) (string, error) {
295310
YTDB_KEY_XFMR_RET_ERR_INDX = 1
296311
)
297312

298-
xfmrLogInfoAll("Received inParams %v key transformer function name %v", inParams, xfmrFuncNm)
313+
xfmrLogInfoAll("Before calling yangToDb key xfmr %v, inParams %v", xfmrFuncNm, inParams)
299314
ret, err := XlateFuncCall(yangToDbXfmrFunc(xfmrFuncNm), inParams)
315+
xfmrLogInfoAll("After calling yangToDb key xfmr %v, inParams %v", xfmrFuncNm, inParams)
300316
retVal := ""
301317
if err != nil {
302318
return retVal, err
@@ -315,6 +331,7 @@ func keyXfmrHandler(inParams XfmrParams, xfmrFuncNm string) (string, error) {
315331
}
316332
if ret[YTDB_KEY_XFMR_RET_VAL_INDX].Interface() != nil {
317333
retVal = ret[YTDB_KEY_XFMR_RET_VAL_INDX].Interface().(string)
334+
xfmrLogInfoAll("Key Transformer returned %v", retVal)
318335
return retVal, nil
319336
}
320337
}
@@ -329,8 +346,9 @@ func postXfmrHandlerFunc(xfmrPost string, inParams XfmrParams) (map[string]map[s
329346
POST_XFMR_RET_ERR_INDX = 1
330347
)
331348
retData := make(map[string]map[string]db.Value)
332-
xfmrLogInfoAll("Received inParams %v, post transformer function name %v", inParams, xfmrPost)
349+
xfmrLogInfoAll("Before calling post xfmr %v, inParams %v", xfmrPost, inParams)
333350
ret, err := XlateFuncCall(xfmrPost, inParams)
351+
xfmrLogInfoAll("After calling post xfmr %v, inParams %v", xfmrPost, inParams)
334352
if err != nil {
335353
return nil, err
336354
}
@@ -360,8 +378,9 @@ func preXfmrHandlerFunc(xfmrPre string, inParams XfmrParams) error {
360378
PRE_XFMR_RET_ERR_INDX = 0
361379
)
362380

363-
xfmrLogInfoAll("Received inParams %v, pre transformer function name %v", inParams, xfmrPre)
381+
xfmrLogInfoAll("Before calling pre xfmr %v, inParams %v", xfmrPre, inParams)
364382
ret, err := XlateFuncCall(xfmrPre, inParams)
383+
xfmrLogInfoAll("After calling pre xfmr %v, inParams %v", xfmrPre, inParams)
365384
if err != nil {
366385
log.Warningf("Pre-transformer function(\"%v\") returned error - %v.", xfmrPre, err)
367386
return err
@@ -385,8 +404,9 @@ func sonicKeyXfmrHandlerFunc(inParams SonicXfmrParams, xfmrKeyNm string) (map[st
385404
DBTY_KEY_XFMR_RET_ERR_INDX = 1
386405
)
387406

388-
xfmrLogInfoAll("Received inParams %v key transformer function name %v", inParams, xfmrKeyNm)
407+
xfmrLogInfoAll("Before calling dbToYang sonic key xfmr %v, inParams %v", xfmrKeyNm, inParams)
389408
ret, err := XlateFuncCall(dbToYangXfmrFunc(xfmrKeyNm), inParams)
409+
xfmrLogInfoAll("After calling dbToYang sonic key xfmr %v, inParams %v", xfmrKeyNm, inParams)
390410
retVal := make(map[string]interface{})
391411
if err != nil {
392412
return retVal, err
@@ -405,6 +425,7 @@ func sonicKeyXfmrHandlerFunc(inParams SonicXfmrParams, xfmrKeyNm string) (map[st
405425
}
406426
if ret[DBTY_KEY_XFMR_RET_VAL_INDX].Interface() != nil {
407427
retVal = ret[DBTY_KEY_XFMR_RET_VAL_INDX].Interface().(map[string]interface{})
428+
xfmrLogInfoAll("Sonic key transformer returned %v", retVal)
408429
return retVal, nil
409430
}
410431
}

0 commit comments

Comments
 (0)