sonic-net / sonic-gnmi

SONiC gNMI server and gNOI repo
Other
17 stars 47 forks source link

Unordered map serialization, cause different results of the same operation #42

Closed Wick324 closed 1 year ago

Wick324 commented 1 year ago

When I use gnmi_get to get data, if the path contains 2 or more keys, the result of the same operation is different.

As I know, it is caused by the unordered map of proto serialization. For example, the path "/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]" convert to [sonic-acl:sonic-aclACL_RULE ACL_RULE_LIST map[aclname:1 rulename:2]],but the map is not ordered, so the result of proto serialization cannot be accurate.

Operation record:

root@sonic:/# gnmi_get -xpath_target SONiC-YANG -xpath /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2] -target_addr 127.0.0.1:8090 -insecure true
== getRequest:
prefix: <
  target: "SONiC-YANG"
>
path: <
  elem: <
    name: "sonic-acl:sonic-acl"
  >
  elem: <
    name: "ACL_RULE"
  >
  elem: <
    name: "ACL_RULE_LIST"
    key: <
      key: "aclname"
      value: "1"
    >
    key: <
      key: "rulename"
      value: "2"
    >
  >
>
encoding: JSON_IETF

== getResponse:
notification: <
  timestamp: 1663901622269512774
  prefix: <
    target: "SONiC-YANG"
  >
  update: <
    path: <
      elem: <
        name: "sonic-acl:sonic-acl"
      >
      elem: <
        name: "ACL_RULE"
      >
      elem: <
        name: "ACL_RULE_LIST"
        key: <
          key: "aclname"
          value: "1"
        >
        key: <
          key: "rulename"
          value: "2"
        >
      >
    >
    val: <
      json_ietf_val: "{\"sonic-acl:ACL_RULE_LIST\":[{\"DST_IP\":\"192.168.110.5\",\"IP_TYPE\":\"IP\",\"PACKET_ACTION\":\"REDIRECT\",\"SRC_IP\":\"192.168.110.4\",\"aclname\":\"1\",\"rulename\":\"2\"}]}"
    >
  >
>

root@sonic:/# gnmi_get -xpath_target SONiC-YANG -xpath /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2] -target_addr 127.0.0.1:8090 -insecure true
== getRequest:
prefix: <
  target: "SONiC-YANG"
>
path: <
  elem: <
    name: "sonic-acl:sonic-acl"
  >
  elem: <
    name: "ACL_RULE"
  >
  elem: <
    name: "ACL_RULE_LIST"
    key: <
      key: "aclname"
      value: "1"
    >
    key: <
      key: "rulename"
      value: "2"
    >
  >
>
encoding: JSON_IETF

F0923 02:53:45.447613     195 gnmi_get.go:142] Get failed: rpc error: code = NotFound desc = Resource not found
root@sonic:/# 

server log:

I0923 02:53:42.269340      73 server.go:299] GetRequest paths: [elem:{name:"sonic-acl:sonic-acl"}  elem:{name:"ACL_RULE"}  elem:{name:"ACL_RULE_LIST"  key:{key:"aclname"  value:"1"}  key:{key:"rulename"  value:"2"}}]
I0923 02:53:42.269426      73 transl_utils.go:86] index 0 elem : "sonic-acl:sonic-acl" map[string]string(nil)
I0923 02:53:42.269450      73 transl_utils.go:86] index 1 elem : "ACL_RULE" map[string]string(nil)
I0923 02:53:42.269459      73 transl_utils.go:86] index 2 elem : "ACL_RULE_LIST" map[string]string{"aclname":"1", "rulename":"2"}
I0923 02:53:42.269483      73 transl_utils.go:97] elem : "aclname" "1"
I0923 02:53:42.269500      73 transl_utils.go:97] elem : "rulename" "2"
I0923 02:53:42.269519      73 translib.go:491] Received Get request for path = /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.269535      73 app_interface.go:129] getAppModule called for path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.269549      73 app_interface.go:136] found the entry in the map for path =/sonic-
I0923 02:53:42.269563      73 app_interface.go:164] cast to appInterface worked&{<nil> [] <nil> <nil> false map[] map[] map[] {0 false}}
W0923 02:53:42.269774      73 request_binder.go:128] Translib: RequestBinder: Skipping the vaidatiion of the given sonic yang model request..
I0923 02:53:42.269789      73 common_app.go:80] initialize:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.269817      73 db.go:334] NewDB: Begin: opt: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:42.269875      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.269889      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:0>, Opts: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.269930      73 db.go:334] NewDB: Begin: opt: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:42.269964      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.269979      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:1>, Opts: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270020      73 db.go:334] NewDB: Begin: opt: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:42.270060      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.270072      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:2>, Opts: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270107      73 db.go:334] NewDB: Begin: opt: { DBNo: 3, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
W0923 02:53:42.270135      73 db.go:346] TableNameSeparator '|' in the Options is different from the one configured in the Db config. file for the Db name LOGLEVEL_DB
I0923 02:53:42.270157      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.270167      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:3>, Opts: { DBNo: 3, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270201      73 db.go:334] NewDB: Begin: opt: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
I0923 02:53:42.270236      73 db.go:394] NewDB: Init indication not requested
I0923 02:53:42.270251      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:4>, Opts: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270275      73 db.go:334] NewDB: Begin: opt: { DBNo: 5, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
W0923 02:53:42.270294      73 db.go:346] TableNameSeparator '|' in the Options is different from the one configured in the Db config. file for the Db name FLEX_COUNTER_DB
I0923 02:53:42.270313      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.270325      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:5>, Opts: { DBNo: 5, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270345      73 db.go:334] NewDB: Begin: opt: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
I0923 02:53:42.270369      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:42.270398      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:6>, Opts: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:42.270424      73 common_app.go:128] translateGet:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.270439      73 common_app.go:249] processGet:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.270498      73 xlate_utils.go:976] [xlate.go:380]received xpath = /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.270549      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2])
I0923 02:53:42.270668      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(1|2), tableName(ACL_RULE)
I0923 02:53:42.270736      73 db.go:474] GetEntry: Begin: ts: &{ACL_RULE 0 false} key: { Comp: [1|2] }
I0923 02:53:42.270782      73 db.go:431] key2redis: Begin: ACL_RULE|1|2
I0923 02:53:42.271294      73 db.go:500] GetEntry: End: value: "IP_TYPE": "IP"
"PACKET_ACTION": "REDIRECT"
"SRC_IP": "192.168.110.4"
"DST_IP": "192.168.110.5"
 e: <nil>
I0923 02:53:42.271329      73 xlate_utils.go:982] [xlate_utils.go:1059]Received  resultMap(map[1:map[0:map[] 1:map[] 2:map[] 3:map[] 4:map[ACL_RULE:map[1|2:"IP_TYPE": "IP"
"PACKET_ACTION": "REDIRECT"
"SRC_IP": "192.168.110.4"
"DST_IP": "192.168.110.5"
]] 5:map[] 6:map[] 7:map[] 8:map[] 9:map[]]])
I0923 02:53:42.271379      73 xlate_utils.go:982] [xlate_utils.go:1105]Transformed resultMap(map[1:map[0:map[] 1:map[] 2:map[] 3:map[] 4:map[ACL_RULE:map[1|2:"SRC_IP": "192.168.110.4"
"DST_IP": "192.168.110.5"
"IP_TYPE": "IP"
"PACKET_ACTION": "REDIRECT"
]] 5:map[] 6:map[] 7:map[] 8:map[] 9:map[]]])
I0923 02:53:42.271433      73 xlate_utils.go:982] [xlate_to_db.go:983]Checking for Parent table existence for uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]
I0923 02:53:42.271449      73 xlate_utils.go:982] [xlate_utils.go:1185]uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2] 
I0923 02:53:42.271459      73 xlate_utils.go:982] [xlate_utils.go:1186]uri path elems: [sonic-acl:sonic-acl ACL_RULE ACL_RULE_LIST[aclname=1][rulename=2]]
I0923 02:53:42.271469      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2])
I0923 02:53:42.271500      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(1|2), tableName(ACL_RULE)
I0923 02:53:42.271513      73 xlate_utils.go:982] [xlate_to_db.go:932]uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2] xpath: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST table: ACL_RULE, key: 1|2
I0923 02:53:42.271526      73 xlate_utils.go:982] [xlate_utils.go:1240]received Db no - 4, table - ACL_RULE, dbkey - 1|2
I0923 02:53:42.271540      73 xlate_utils.go:982] [xlate.go:420]verifyParentTable() returned - exists - true, err - <nil>
I0923 02:53:42.271554      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2])
I0923 02:53:42.271573      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(1|2), tableName(ACL_RULE)
I0923 02:53:42.271587      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2])
I0923 02:53:42.271604      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[aclname=1][rulename=2]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(1|2), tableName(ACL_RULE)
I0923 02:53:42.271664      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(rulename)
I0923 02:53:42.271687      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(IP_TYPE)
I0923 02:53:42.271700      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/IP_TYPE, yngTerminalNdDtType enumeration and Db field value IP to be converted to yang data-type.
I0923 02:53:42.271713      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/IP_TYPE
I0923 02:53:42.271724      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(IP_PROTOCOL)
I0923 02:53:42.271733      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(ETHER_TYPE)
I0923 02:53:42.271744      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(DSCP)
I0923 02:53:42.271757      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(SRC_IP)
I0923 02:53:42.271766      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/SRC_IP, yngTerminalNdDtType string and Db field value 192.168.110.4 to be converted to yang data-type.
I0923 02:53:42.271776      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/SRC_IP
I0923 02:53:42.271786      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(DST_IP)
I0923 02:53:42.271795      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/DST_IP, yngTerminalNdDtType string and Db field value 192.168.110.5 to be converted to yang data-type.
I0923 02:53:42.271805      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/DST_IP
I0923 02:53:42.271817      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(SRC_IPV6)
I0923 02:53:42.271831      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(DST_IPV6)
I0923 02:53:42.271843      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(L4_DST_PORT)
I0923 02:53:42.271857      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(L4_DST_PORT_RANGE)
I0923 02:53:42.271870      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(aclname)
I0923 02:53:42.271885      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(RULE_DESCRIPTION)
I0923 02:53:42.271897      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(PACKET_ACTION)
I0923 02:53:42.271912      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/PACKET_ACTION, yngTerminalNdDtType enumeration and Db field value REDIRECT to be converted to yang data-type.
I0923 02:53:42.271922      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/PACKET_ACTION
I0923 02:53:42.271931      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(TCP_FLAGS)
I0923 02:53:42.271942      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(L4_SRC_PORT)
I0923 02:53:42.271956      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(L4_SRC_PORT_RANGE)
I0923 02:53:42.271971      73 xlate_utils.go:982] [xlate_from_db.go:314]tbl(ACL_RULE), k(1|2), yc(PRIORITY)
I0923 02:53:42.271982      73 xlate_utils.go:982] [xlate_utils.go:326]sonicKeyDataAdd keyNameList:[aclname rulename], keyStr:1|2
I0923 02:53:42.271999      73 xlate_utils.go:982] [xlate_utils.go:373]yang keys list - [aclname rulename], xpathprefix - ACL_RULE, DB-key string - 1|2, DB-key list after db key separator split - [1 2], dbIndex - 4
I0923 02:53:42.272014      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/aclname, yngTerminalNdDtType leafref and Db field value 1 to be converted to yang data-type.
I0923 02:53:42.272028      73 xlate_utils.go:982] [xlate_from_db.go:67]Received path ../../../ACL_TABLE/ACL_TABLE_LIST/aclname for FieldXpath ACL_RULE/aclname
I0923 02:53:42.272047      73 xlate_utils.go:982] [xlate_from_db.go:89]yangLeaf datatype string
I0923 02:53:42.272059      73 xlate_utils.go:982] [xlate_from_db.go:120]yangLeaf datatype string
I0923 02:53:42.272072      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/aclname
I0923 02:53:42.272084      73 xlate_utils.go:982] [xlate_from_db.go:126]Received FieldXpath ACL_RULE/rulename, yngTerminalNdDtType string and Db field value 2 to be converted to yang data-type.
I0923 02:53:42.272096      73 xlate_utils.go:982] [xlate_from_db.go:174]Yenum/Ystring/Yunion(having all members as strings) type for yangXpath ACL_RULE/rulename
I0923 02:53:42.272132      73 xlate_utils.go:982] [xlate.go:503]Payload generated : {"DST_IP":"192.168.110.5","IP_TYPE":"IP","PACKET_ACTION":"REDIRECT","SRC_IP":"192.168.110.4","aclname":"1","rulename":"2"}
I0923 02:53:42.272144      73 xlate_utils.go:976] [xlate.go:509]Created json response from DB data.
I0923 02:53:42.272720      73 app_utils.go:87] pathList[0]: name:"sonic-acl:sonic-acl"
I0923 02:53:42.272746      73 app_utils.go:87] pathList[1]: name:"ACL_RULE"
I0923 02:53:42.272757      73 app_utils.go:87] pathList[2]: name:"ACL_RULE_LIST"  key:{key:"aclname"  value:"1"}  key:{key:"rulename"  value:"2"}
I0923 02:53:42.272831      73 app_utils.go:136] Target yang name: ACL_RULE_LIST  OC Field name: ACL_RULE_LIST
I0923 02:53:42.272884      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:0>, Opts: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.272902      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:1>, Opts: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.272913      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:2>, Opts: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.272925      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:3>, Opts: { DBNo: 3, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.272936      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:4>, Opts: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.272988      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:5>, Opts: { DBNo: 5, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.273010      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:6>, Opts: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:42.273042      73 transl_data_client.go:93] TranslClient : Getting #[prefix:<target:"SONiC-YANG" > path:<elem:<name:"sonic-acl:sonic-acl" > elem:<name:"ACL_RULE" > elem:<name:"ACL_RULE_LIST" key:<key:"aclname" value:"1" > key:<key:"rulename" value:"2" > > > timestamp:1663901622269512774 val:<json_ietf_val:"{\"sonic-acl:ACL_RULE_LIST\":[{\"DST_IP\":\"192.168.110.5\",\"IP_TYPE\":\"IP\",\"PACKET_ACTION\":\"REDIRECT\",\"SRC_IP\":\"192.168.110.4\",\"aclname\":\"1\",\"rulename\":\"2\"}]}" > ]
I0923 02:53:42.273108      73 transl_data_client.go:94] TranslClient :Get done, total time taken: 3 ms

I0923 02:53:45.445492      73 server.go:299] GetRequest paths: [elem:{name:"sonic-acl:sonic-acl"}  elem:{name:"ACL_RULE"}  elem:{name:"ACL_RULE_LIST"  key:{key:"aclname"  value:"1"}  key:{key:"rulename"  value:"2"}}]
I0923 02:53:45.445561      73 transl_utils.go:86] index 0 elem : "sonic-acl:sonic-acl" map[string]string(nil)
I0923 02:53:45.445577      73 transl_utils.go:86] index 1 elem : "ACL_RULE" map[string]string(nil)
I0923 02:53:45.445589      73 transl_utils.go:86] index 2 elem : "ACL_RULE_LIST" map[string]string{"aclname":"1", "rulename":"2"}
I0923 02:53:45.445610      73 transl_utils.go:97] elem : "rulename" "2"
I0923 02:53:45.445621      73 transl_utils.go:97] elem : "aclname" "1"
I0923 02:53:45.445636      73 translib.go:491] Received Get request for path = /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.445646      73 app_interface.go:129] getAppModule called for path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.445655      73 app_interface.go:136] found the entry in the map for path =/sonic-
I0923 02:53:45.445665      73 app_interface.go:164] cast to appInterface worked&{<nil> [] <nil> <nil> false map[] map[] map[] {0 false}}
W0923 02:53:45.445813      73 request_binder.go:128] Translib: RequestBinder: Skipping the vaidatiion of the given sonic yang model request..
I0923 02:53:45.445829      73 common_app.go:80] initialize:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.445852      73 db.go:334] NewDB: Begin: opt: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:45.445891      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.445903      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:0>, Opts: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.445926      73 db.go:334] NewDB: Begin: opt: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:45.445943      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.445951      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:1>, Opts: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.445972      73 db.go:334] NewDB: Begin: opt: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }
I0923 02:53:45.445996      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.446004      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:2>, Opts: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.446026      73 db.go:334] NewDB: Begin: opt: { DBNo: 3, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
W0923 02:53:45.446043      73 db.go:346] TableNameSeparator '|' in the Options is different from the one configured in the Db config. file for the Db name LOGLEVEL_DB
I0923 02:53:45.446065      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.446072      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:3>, Opts: { DBNo: 3, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.446086      73 db.go:334] NewDB: Begin: opt: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
I0923 02:53:45.446106      73 db.go:394] NewDB: Init indication not requested
I0923 02:53:45.446118      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:4>, Opts: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.446142      73 db.go:334] NewDB: Begin: opt: { DBNo: 5, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
W0923 02:53:45.446164      73 db.go:346] TableNameSeparator '|' in the Options is different from the one configured in the Db config. file for the Db name FLEX_COUNTER_DB
I0923 02:53:45.446182      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.446194      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:5>, Opts: { DBNo: 5, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.446219      73 db.go:334] NewDB: Begin: opt: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }
I0923 02:53:45.446246      73 db.go:387] NewDB: ! ConfigDB. Skip init. check.
I0923 02:53:45.446257      73 db.go:408] NewDB: End: d: { client: Redis<127.0.0.1:6379 db:6>, Opts: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] } e: <nil>
I0923 02:53:45.446275      73 common_app.go:128] translateGet:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.446285      73 common_app.go:249] processGet:path =/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.446316      73 xlate_utils.go:976] [xlate.go:380]received xpath = /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.446332      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1])
I0923 02:53:45.446368      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(2|1), tableName(ACL_RULE)
I0923 02:53:45.446407      73 db.go:474] GetEntry: Begin: ts: &{ACL_RULE 0 false} key: { Comp: [2|1] }
I0923 02:53:45.446424      73 db.go:431] key2redis: Begin: ACL_RULE|2|1
I0923 02:53:45.446748      73 db.go:493] GetEntry: HGetAll(): empty map
I0923 02:53:45.446764      73 db.go:431] key2redis: Begin: ACL_RULE|2|1
I0923 02:53:45.446773      73 db.go:500] GetEntry: End: value:  e: Translib Redis Error: Entry does not exist: ACL_RULE|2|1
W0923 02:53:45.446813      73 xlate.go:140] Couldn't get data for tbl(ACL_RULE), key({ Comp: [2|1] }) in traverseDbHelper
W0923 02:53:45.446830      73 xlate.go:99] Couldn't get data from traverseDbHelper
W0923 02:53:45.446848      73 xlate.go:393] TraverseDb() didn't fetch data.
I0923 02:53:45.446865      73 xlate_utils.go:982] [xlate_to_db.go:983]Checking for Parent table existence for uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]
I0923 02:53:45.446879      73 xlate_utils.go:982] [xlate_utils.go:1185]uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1] 
I0923 02:53:45.446890      73 xlate_utils.go:982] [xlate_utils.go:1186]uri path elems: [sonic-acl:sonic-acl ACL_RULE ACL_RULE_LIST[rulename=2][aclname=1]]
I0923 02:53:45.446903      73 xlate_utils.go:982] [xlate_utils.go:832]In uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1])
I0923 02:53:45.446942      73 xlate_utils.go:982] [xlate_utils.go:883]Return uri(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1]), xpath(/sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST), key(2|1), tableName(ACL_RULE)
I0923 02:53:45.446953      73 xlate_utils.go:982] [xlate_to_db.go:932]uri: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1] xpath: /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST table: ACL_RULE, key: 2|1
I0923 02:53:45.446961      73 xlate_utils.go:982] [xlate_utils.go:1240]received Db no - 4, table - ACL_RULE, dbkey - 2|1
W0923 02:53:45.446971      73 xlate_to_db.go:960] Parent table ACL_RULE with key 2|1 does not exist for oper 1 in DB
I0923 02:53:45.446986      73 xlate_utils.go:982] [xlate.go:420]verifyParentTable() returned - exists - false, err - Resource not found
W0923 02:53:45.447005      73 xlate.go:422] Cannot perform GET Operation on uri /sonic-acl:sonic-acl/ACL_RULE/ACL_RULE_LIST[rulename=2][aclname=1] due to - Resource not found
W0923 02:53:45.447017      73 common_app.go:259] transformer.GetAndXlateFromDB() returned : Resource not found
I0923 02:53:45.447030      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:0>, Opts: { DBNo: 0, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447056      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:1>, Opts: { DBNo: 1, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447074      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:2>, Opts: { DBNo: 2, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447090      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:3>, Opts: { DBNo: 3, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447101      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:4>, Opts: { DBNo: 4, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447157      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:5>, Opts: { DBNo: 5, InitIndicator: , TableNameSeparator: :, KeySeparator: : , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447177      73 db.go:418] DeleteDB: Begin: d: { client: Redis<127.0.0.1:6379 db:6>, Opts: { DBNo: 6, InitIndicator: , TableNameSeparator: |, KeySeparator: | , DisableCVLCheck: false }, txState: txStateNone, tsCmds: [] }
I0923 02:53:45.447200      73 transl_utils.go:135] GET operation failed with error =0, Resource not found

I wonder if this situation is correct. If so, what is the reason for this design, and what needs to be paid attention to. If not, is there a solution plan?

Wick324 commented 1 year ago

@renukamanavalan I think this is a serious bug, could you explain this?

renukamanavalan commented 1 year ago

@panyi5534 , I agree, the order of parameters in a query, should not matter. Could you raise a PR with suggested fix ?

Wick324 commented 1 year ago

@renukamanavalan I rised a pr to fix it, please check it. I will close this issue. https://github.com/sonic-net/sonic-gnmi/pull/50