Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
Wick324 opened this issue Sep 23, 2022 · 3 comments
Closed
Assignees

Comments

@Wick324
Copy link

Wick324 commented Sep 23, 2022

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
Copy link
Author

Wick324 commented Sep 27, 2022

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

@renukamanavalan
Copy link
Contributor

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

@Wick324
Copy link
Author

Wick324 commented Oct 25, 2022

@renukamanavalan
I rised a pr to fix it, please check it. I will close this issue.
#50

@Wick324 Wick324 closed this as completed Oct 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants