Triggered by Gerrit: https://gerrit.opensdn.io/c/opensdn-io/tf-controller/+/2862 Obtained pipelines/main.groovy from git https://github.com/opensdn-io/tf-jenkins.git [Pipeline] Start of Pipeline [Pipeline] timestamps [Pipeline] { [Pipeline] timeout [2026-06-23T08:18:19.723Z] Timeout set to expire in 8 hr 0 min [Pipeline] { [Pipeline] node [2026-06-23T08:18:19.764Z] Running on slave-openstack-gz1_1 in /home/jenkins/workspace/pipeline-post-merge [Pipeline] { [Pipeline] stage [Pipeline] { (init) [Pipeline] cleanWs [2026-06-23T08:18:19.835Z] [WS-CLEANUP] Deleting project workspace... [2026-06-23T08:18:19.835Z] [WS-CLEANUP] Deferred wipeout is disabled by the job configuration... [2026-06-23T08:18:19.935Z] [WS-CLEANUP] done [Pipeline] checkout [2026-06-23T08:18:19.960Z] The recommended git tool is: git [2026-06-23T08:18:19.965Z] No credentials specified [2026-06-23T08:18:19.967Z] Cloning the remote Git repository [2026-06-23T08:18:19.970Z] Cloning repository https://github.com/opensdn-io/tf-jenkins.git [2026-06-23T08:18:19.970Z] > git init /home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins # timeout=10 [2026-06-23T08:18:19.976Z] Fetching upstream changes from https://github.com/opensdn-io/tf-jenkins.git [2026-06-23T08:18:19.976Z] > git --version # timeout=10 [2026-06-23T08:18:19.978Z] > git --version # 'git version 2.25.1' [2026-06-23T08:18:19.978Z] > git fetch --tags --force --progress -- https://github.com/opensdn-io/tf-jenkins.git +refs/heads/*:refs/remotes/origin/* # timeout=10 [2026-06-23T08:18:21.510Z] Avoid second fetch [2026-06-23T08:18:21.516Z] Checking out Revision 81e14a30fe552a3fbc160b54e29b3e3ffe070cc2 (refs/remotes/origin/master) [2026-06-23T08:18:21.563Z] Commit message: "reduce templates for nighlty build" [2026-06-23T08:18:21.501Z] > git config remote.origin.url https://github.com/opensdn-io/tf-jenkins.git # timeout=10 [2026-06-23T08:18:21.504Z] > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 [2026-06-23T08:18:21.512Z] > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 [2026-06-23T08:18:21.518Z] > git config core.sparsecheckout # timeout=10 [2026-06-23T08:18:21.520Z] > git checkout -f 81e14a30fe552a3fbc160b54e29b3e3ffe070cc2 # timeout=10 [2026-06-23T08:18:21.565Z] > git rev-list --no-walk 81e14a30fe552a3fbc160b54e29b3e3ffe070cc2 # timeout=10 [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/utils/gerrit.groovy) [Pipeline] } [Pipeline] // load [Pipeline] echo [2026-06-23T08:18:21.853Z] INFO: resolved gerrit URL is https://gerrit.opensdn.io/ [Pipeline] sh [2026-06-23T08:18:22.156Z] + /home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/infra/gerrit/resolve_patchsets.py --gerrit https://gerrit.opensdn.io/ --review Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe --branch master --changed_files --output /home/jenkins/workspace/pipeline-post-merge/patchsets-info.json [Pipeline] archiveArtifacts [2026-06-23T08:18:22.187Z] Archiving artifacts [Pipeline] sh [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/utils/gerrit.groovy) [Pipeline] } [Pipeline] // load [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/constants.groovy) [Pipeline] } [Pipeline] // load [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/utils/config.groovy) [Pipeline] } [Pipeline] // load [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/utils/jobs.groovy) [Pipeline] } [Pipeline] // load [Pipeline] load [Pipeline] { (/home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/pipelines/utils/gate.groovy) [Pipeline] } [Pipeline] // load [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Pre-build) [Pipeline] echo [2026-06-23T08:18:24.114Z] Logs URL: http://nexus.gz1.opensdn.io:8082/jenkins_logs/gerrit/62/2862/9/post-merge_905 [Pipeline] echo [2026-06-23T08:18:24.141Z] terminate_runs_by_review_number: start [Pipeline] echo [2026-06-23T08:18:24.401Z] terminate_runs_by_review_number: terminated builds = [] [Pipeline] sh [Pipeline] echo [2026-06-23T08:18:24.727Z] Pipeline to run: post-merge [Pipeline] sh [Pipeline] sh [Pipeline] archiveArtifacts [2026-06-23T08:18:25.355Z] Archiving artifacts [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] readYaml [Pipeline] echo [2026-06-23T08:18:26.166Z] WARNING: project opensdn-io/tf-controller doesn't define pipeline post-merge [Pipeline] echo [2026-06-23T08:18:26.184Z] Streams from config: [:] [Pipeline] echo [2026-06-23T08:18:26.201Z] Jobs from config: [:] [Pipeline] echo [2026-06-23T08:18:26.218Z] Post Jobs from config: [:] [Pipeline] echo [2026-06-23T08:18:26.248Z] Notify gerrit verified=null, submit=false, msg= [2026-06-23T08:18:26.248Z] TF CI Build Started (post-merge) https://jenkins.opensdn.io/job/pipeline-post-merge/905/ [Pipeline] withCredentials [2026-06-23T08:18:26.275Z] Masking supported pattern matches of $GERRIT_API_PASSWORD [Pipeline] { [Pipeline] echo [2026-06-23T08:18:26.374Z] INFO: resolved gerrit URL is https://gerrit.opensdn.io/ [Pipeline] sh [2026-06-23T08:18:26.669Z] + /home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/infra/gerrit/notify.py --gerrit https://gerrit.opensdn.io/ --user tf-gerrit --password **** --review Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe --patchset 9 --branch master --message 'TF CI Build Started (post-merge) https://jenkins.opensdn.io/job/pipeline-post-merge/905/' [2026-06-23T08:18:26.669Z] DEBUG: Change: {'id': 'opensdn-io%2Ftf-controller~master~Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe', 'project': 'opensdn-io/tf-controller', 'branch': 'master', 'topic': 'fix_ksync', 'attention_set': {}, 'removed_from_attention_set': {'1000003': {'account': {'_account_id': 1000003}, 'last_update': '2026-06-23 05:50:57.000000000', 'reason': ' replied on the change', 'reason_account': {'_account_id': 1000003}}, '1000001': {'account': {'_account_id': 1000001}, 'last_update': '2026-06-22 13:51:41.000000000', 'reason': 'removed on reply'}, '1000010': {'account': {'_account_id': 1000010}, 'last_update': '2026-06-23 08:18:02.000000000', 'reason': 'Change was submitted'}, '1000012': {'account': {'_account_id': 1000012}, 'last_update': '2026-06-19 11:13:27.000000000', 'reason': ' replied on the change', 'reason_account': {'_account_id': 1000012}}}, 'hashtags': [], 'change_id': 'Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe', 'subject': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges', 'status': 'MERGED', 'created': '2026-06-17 09:22:28.000000000', 'updated': '2026-06-23 08:18:02.000000000', 'submitted': '2026-06-23 08:18:02.000000000', 'submitter': {'_account_id': 1000001}, 'insertions': 249, 'deletions': 11, 'total_comment_count': 6, 'unresolved_comment_count': 0, 'has_review_started': True, 'submission_id': '2862-fix_ksync', 'meta_rev_id': '3c6a3342a2b7bb0c17d9583129cdfcc16544ad52', '_number': 2862, 'owner': {'_account_id': 1000010}, 'labels': {'Code-Review': {'all': [{'value': 2, 'date': '2026-06-23 05:50:57.000000000', 'permitted_voting_range': {'min': 2, 'max': 2}, '_account_id': 1000003}, {'value': 0, '_account_id': 1000001}, {'value': 1, 'date': '2026-06-22 18:16:00.000000000', 'permitted_voting_range': {'min': 1, 'max': 1}, '_account_id': 1000012}], 'values': {'-2': 'This shall not be submitted', '-1': 'I would prefer this is not submitted as is', ' 0': 'No score', '+1': 'Looks good to me, but someone else must approve', '+2': 'Looks good to me, approved'}, 'description': '', 'default_value': 0}, 'Verified': {'all': [{'value': 0, '_account_id': 1000003}, {'value': 2, 'date': '2026-06-23 08:17:52.000000000', 'permitted_voting_range': {'min': 2, 'max': 2}, '_account_id': 1000001}, {'value': 0, '_account_id': 1000012}], 'values': {'-2': 'Fails', '-1': 'Fails', ' 0': 'No score', '+1': 'Verified', '+2': 'Gating'}, 'description': '', 'default_value': 0}}, 'permitted_labels': {'Code-Review': [' 0', '+1', '+2'], 'Verified': ['+2']}, 'removable_labels': {}, 'removable_reviewers': [], 'reviewers': {'REVIEWER': [{'_account_id': 1000001}, {'_account_id': 1000003}, {'_account_id': 1000012}]}, 'pending_reviewers': {}, 'current_revision': 'af0a7a34aad30deeb9d0946f7d578983c214088d', 'revisions': {'af0a7a34aad30deeb9d0946f7d578983c214088d': {'kind': 'REWORK', '_number': 9, 'created': '2026-06-22 14:01:43.000000000', 'uploader': {'_account_id': 1000010}, 'ref': 'refs/changes/62/2862/9', 'fetch': {'ssh': {'url': 'ssh://tf-gerrit@gerrit.opensdn.io:29418/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}, 'anonymous http': {'url': 'https://gerrit.opensdn.io/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}, 'http': {'url': 'https://tf-gerrit@gerrit.opensdn.io/a/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}}, 'commit': {'parents': [{'commit': '4dd3371690f0cc8c5ba1a476d04ba71f15ce27c2', 'subject': 'Merge "fix: Missing /32 route after VM hard reboot in vxlan-routing topology."'}], 'author': {'name': 'Mikhail Samoylov', 'email': 'mikhailsamoiloff@gmail.com', 'date': '2026-06-17 09:03:09.000000000', 'tz': 420}, 'committer': {'name': 'Mikhail Samoylov', 'email': 'mikhailsamoiloff@gmail.com', 'date': '2026-06-22 14:01:28.000000000', 'tz': 420}, 'subject': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges', 'message': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges\n\nProblem\n-------\nKSyncEntry::IsResolved() returns true for SYNC_WAIT (entry sent to\nvRouter, kernel ACK pending) and NEED_SYNC. All UnresolvedReference()\nimplementations gated on IsResolved() alone therefore consider a\ndependency "ready" while it is still in-flight. A dependent object\nsent against an in-flight dependency is rejected by vRouter\n(EINVAL / "Entry not present"); the error ACK is swallowed by\nErrorHandler (log-only), the state machine still promotes the\ndependent to IN_SYNC, and because no back-reference was registered\nthe object is never retried. Result: agent KSync believes the object\nis programmed; vRouter datapath does not have it.\n\nEdges and production impact per edge\n-------------------------------------\nARP/NDP -> interface\n Gateway / neighbour routes disappear when physical interface\n flaps (link-down, firmware update). BGP sessions on that interface\n drop; traffic to other VRFs blackholes until interface recovers.\n\nRECEIVE -> interface\n Local host routes break on vhost interface re-init (agent restart,\n ksync reload). VM-to-host traffic (local LB, DNS stub) drops.\n\nTUNNEL(crypt) -> crypt-interface\n IPSec tunnel NH loses its crypt-interface reference on interface\n re-creation. Encrypted traffic stops or goes unencrypted.\n\nPBB -> child-NH\n Provider Backbone Bridge NH loses child reference on outer link\n flap. All traffic through PBB tunnel drops until recovery.\n\nCOMPOSITE -> component-NH\n ECMP / flood composite NH misses one or more component NHs after\n a component-interface flap. Traffic load-balances only over\n remaining paths; lost paths never recover without config change.\n\nRoute -> NH\n /32 route in bridge-VRF lost when NH is in SYNC_WAIT.\n Fixed in stage 1; refactored here.\n\nRoute -> stitched-MAC bridge-route\n Inet route with stitched MAC loses its bridge-route dependency\n during EVPN MAC-IP reconvergence (BGP path change, NH update).\n VM neighbours unreachable through LR until VIF reconnect.\n\nMPLS -> NH\n MPLS label loses its NH during next-hop failover or BGP\n reconvergence. MPLS LSP breaks; inter-DC traffic over that\n LSP drops until label is reprogrammed by config change.\n\nVrfAssign -> interface/NH\n VLAN sub-interface VRF assignment loses interface or NH reference\n on VLAN config change or interface re-creation. Traffic on that\n VLAN segment goes to wrong VRF or drops entirely.\n\nChange-Id: Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe\nSigned-off-by: Mikhail Samoylov \nCloses-bug: https://github.com/OpenSDN-io/community/issues/121\n'}}}, 'requirements': [], 'submit_records': [{'rule_name': 'gerrit~DefaultSubmitRule', 'status': 'CLOSED', 'labels': [{'label': 'Code-Review', 'status': 'OK', 'applied_by': {'_account_id': 1000003}}, {'label': 'Verified', 'status': 'OK', 'applied_by': {'_account_id': 1000001}}]}]} [2026-06-23T08:18:26.670Z] DEBUG: push message data: {'labels': {}, 'message': 'TF CI Build Started (post-merge) https://jenkins.opensdn.io/job/pipeline-post-merge/905/'} [Pipeline] } [Pipeline] // withCredentials [Pipeline] echo [2026-06-23T08:18:26.754Z] Notify discord for new job is started [Pipeline] echo [2026-06-23T08:18:26.793Z] INFO: resolved gerrit URL is https://gerrit.opensdn.io/ [Pipeline] echo [2026-06-23T08:18:26.821Z] Notify discord msg= [2026-06-23T08:18:26.821Z] The review was merged. [2026-06-23T08:18:26.821Z] [vrouter/ksync: fix SYNC_WAIT race on all dependenc](https://gerrit.opensdn.io/c/opensdn-io/tf-controller/+/2862) [Pipeline] withCredentials [2026-06-23T08:18:26.850Z] Masking supported pattern matches of $DISCORD_WEBHOOK_URL [Pipeline] { [Pipeline] writeFile [Pipeline] sh [2026-06-23T08:18:27.272Z] % Total % Received % Xferd Average Speed Time Time Time Current [2026-06-23T08:18:27.272Z] Dload Upload Total Spent Left Speed [2026-06-23T08:18:27.529Z] [2026-06-23T08:18:27.529Z] 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [2026-06-23T08:18:27.529Z] 100 184 0 0 100 184 0 525 --:--:-- --:--:-- --:--:-- 525 [Pipeline] } [Pipeline] // withCredentials [Pipeline] } [Pipeline] // stage [Pipeline] echo [2026-06-23T08:18:27.678Z] Jobs results: [:] [Pipeline] stage [Pipeline] { (gerrit vote) [Pipeline] echo [2026-06-23T08:18:27.762Z] Notify gerrit verified=null, submit=false, msg= [2026-06-23T08:18:27.765Z] TF CI Build Succeeded (post-merge) in 0h 0m 3s [2026-06-23T08:18:27.765Z] [2026-06-23T08:18:27.765Z] Succeeded checks: [Pipeline] withCredentials [2026-06-23T08:18:27.790Z] Masking supported pattern matches of $GERRIT_API_PASSWORD [Pipeline] { [Pipeline] echo [2026-06-23T08:18:27.856Z] INFO: resolved gerrit URL is https://gerrit.opensdn.io/ [Pipeline] sh [2026-06-23T08:18:28.153Z] + /home/jenkins/workspace/pipeline-post-merge/src/opensdn-io/tf-jenkins/infra/gerrit/notify.py --gerrit https://gerrit.opensdn.io/ --user tf-gerrit --password **** --review Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe --patchset 9 --branch master --message 'TF CI Build Succeeded (post-merge) in 0h 0m 3s [2026-06-23T08:18:28.153Z] [2026-06-23T08:18:28.153Z] Succeeded checks:' [2026-06-23T08:18:28.154Z] DEBUG: Change: {'id': 'opensdn-io%2Ftf-controller~master~Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe', 'project': 'opensdn-io/tf-controller', 'branch': 'master', 'topic': 'fix_ksync', 'attention_set': {}, 'removed_from_attention_set': {'1000003': {'account': {'_account_id': 1000003}, 'last_update': '2026-06-23 05:50:57.000000000', 'reason': ' replied on the change', 'reason_account': {'_account_id': 1000003}}, '1000001': {'account': {'_account_id': 1000001}, 'last_update': '2026-06-22 13:51:41.000000000', 'reason': 'removed on reply'}, '1000010': {'account': {'_account_id': 1000010}, 'last_update': '2026-06-23 08:18:02.000000000', 'reason': 'Change was submitted'}, '1000012': {'account': {'_account_id': 1000012}, 'last_update': '2026-06-19 11:13:27.000000000', 'reason': ' replied on the change', 'reason_account': {'_account_id': 1000012}}}, 'hashtags': [], 'change_id': 'Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe', 'subject': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges', 'status': 'MERGED', 'created': '2026-06-17 09:22:28.000000000', 'updated': '2026-06-23 08:18:26.000000000', 'submitted': '2026-06-23 08:18:02.000000000', 'submitter': {'_account_id': 1000001}, 'insertions': 249, 'deletions': 11, 'total_comment_count': 6, 'unresolved_comment_count': 0, 'has_review_started': True, 'submission_id': '2862-fix_ksync', 'meta_rev_id': 'ea5708397b694241af0bc32e108a41152983e645', '_number': 2862, 'owner': {'_account_id': 1000010}, 'labels': {'Code-Review': {'all': [{'value': 2, 'date': '2026-06-23 05:50:57.000000000', 'permitted_voting_range': {'min': 2, 'max': 2}, '_account_id': 1000003}, {'value': 0, '_account_id': 1000001}, {'value': 1, 'date': '2026-06-22 18:16:00.000000000', 'permitted_voting_range': {'min': 1, 'max': 1}, '_account_id': 1000012}], 'values': {'-2': 'This shall not be submitted', '-1': 'I would prefer this is not submitted as is', ' 0': 'No score', '+1': 'Looks good to me, but someone else must approve', '+2': 'Looks good to me, approved'}, 'description': '', 'default_value': 0}, 'Verified': {'all': [{'value': 0, '_account_id': 1000003}, {'value': 2, 'date': '2026-06-23 08:17:52.000000000', 'permitted_voting_range': {'min': 2, 'max': 2}, '_account_id': 1000001}, {'value': 0, '_account_id': 1000012}], 'values': {'-2': 'Fails', '-1': 'Fails', ' 0': 'No score', '+1': 'Verified', '+2': 'Gating'}, 'description': '', 'default_value': 0}}, 'permitted_labels': {'Code-Review': [' 0', '+1', '+2'], 'Verified': ['+2']}, 'removable_labels': {}, 'removable_reviewers': [], 'reviewers': {'REVIEWER': [{'_account_id': 1000001}, {'_account_id': 1000003}, {'_account_id': 1000012}]}, 'pending_reviewers': {}, 'current_revision': 'af0a7a34aad30deeb9d0946f7d578983c214088d', 'revisions': {'af0a7a34aad30deeb9d0946f7d578983c214088d': {'kind': 'REWORK', '_number': 9, 'created': '2026-06-22 14:01:43.000000000', 'uploader': {'_account_id': 1000010}, 'ref': 'refs/changes/62/2862/9', 'fetch': {'ssh': {'url': 'ssh://tf-gerrit@gerrit.opensdn.io:29418/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}, 'anonymous http': {'url': 'https://gerrit.opensdn.io/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}, 'http': {'url': 'https://tf-gerrit@gerrit.opensdn.io/a/opensdn-io/tf-controller', 'ref': 'refs/changes/62/2862/9'}}, 'commit': {'parents': [{'commit': '4dd3371690f0cc8c5ba1a476d04ba71f15ce27c2', 'subject': 'Merge "fix: Missing /32 route after VM hard reboot in vxlan-routing topology."'}], 'author': {'name': 'Mikhail Samoylov', 'email': 'mikhailsamoiloff@gmail.com', 'date': '2026-06-17 09:03:09.000000000', 'tz': 420}, 'committer': {'name': 'Mikhail Samoylov', 'email': 'mikhailsamoiloff@gmail.com', 'date': '2026-06-22 14:01:28.000000000', 'tz': 420}, 'subject': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges', 'message': 'vrouter/ksync: fix SYNC_WAIT race on all dependency edges\n\nProblem\n-------\nKSyncEntry::IsResolved() returns true for SYNC_WAIT (entry sent to\nvRouter, kernel ACK pending) and NEED_SYNC. All UnresolvedReference()\nimplementations gated on IsResolved() alone therefore consider a\ndependency "ready" while it is still in-flight. A dependent object\nsent against an in-flight dependency is rejected by vRouter\n(EINVAL / "Entry not present"); the error ACK is swallowed by\nErrorHandler (log-only), the state machine still promotes the\ndependent to IN_SYNC, and because no back-reference was registered\nthe object is never retried. Result: agent KSync believes the object\nis programmed; vRouter datapath does not have it.\n\nEdges and production impact per edge\n-------------------------------------\nARP/NDP -> interface\n Gateway / neighbour routes disappear when physical interface\n flaps (link-down, firmware update). BGP sessions on that interface\n drop; traffic to other VRFs blackholes until interface recovers.\n\nRECEIVE -> interface\n Local host routes break on vhost interface re-init (agent restart,\n ksync reload). VM-to-host traffic (local LB, DNS stub) drops.\n\nTUNNEL(crypt) -> crypt-interface\n IPSec tunnel NH loses its crypt-interface reference on interface\n re-creation. Encrypted traffic stops or goes unencrypted.\n\nPBB -> child-NH\n Provider Backbone Bridge NH loses child reference on outer link\n flap. All traffic through PBB tunnel drops until recovery.\n\nCOMPOSITE -> component-NH\n ECMP / flood composite NH misses one or more component NHs after\n a component-interface flap. Traffic load-balances only over\n remaining paths; lost paths never recover without config change.\n\nRoute -> NH\n /32 route in bridge-VRF lost when NH is in SYNC_WAIT.\n Fixed in stage 1; refactored here.\n\nRoute -> stitched-MAC bridge-route\n Inet route with stitched MAC loses its bridge-route dependency\n during EVPN MAC-IP reconvergence (BGP path change, NH update).\n VM neighbours unreachable through LR until VIF reconnect.\n\nMPLS -> NH\n MPLS label loses its NH during next-hop failover or BGP\n reconvergence. MPLS LSP breaks; inter-DC traffic over that\n LSP drops until label is reprogrammed by config change.\n\nVrfAssign -> interface/NH\n VLAN sub-interface VRF assignment loses interface or NH reference\n on VLAN config change or interface re-creation. Traffic on that\n VLAN segment goes to wrong VRF or drops entirely.\n\nChange-Id: Iab8c4a5f7244c3bc4fc7447e8bd551b09a9eeabe\nSigned-off-by: Mikhail Samoylov \nCloses-bug: https://github.com/OpenSDN-io/community/issues/121\n'}}}, 'requirements': [], 'submit_records': [{'rule_name': 'gerrit~DefaultSubmitRule', 'status': 'CLOSED', 'labels': [{'label': 'Code-Review', 'status': 'OK', 'applied_by': {'_account_id': 1000003}}, {'label': 'Verified', 'status': 'OK', 'applied_by': {'_account_id': 1000001}}]}]} [2026-06-23T08:18:28.154Z] DEBUG: push message data: {'labels': {}, 'message': 'TF CI Build Succeeded (post-merge) in 0h 0m 3s\n\nSucceeded checks:'} [Pipeline] } [Pipeline] // withCredentials [Pipeline] sh [Pipeline] archiveArtifacts [2026-06-23T08:18:28.524Z] Archiving artifacts [Pipeline] withCredentials [2026-06-23T08:18:28.580Z] Masking supported pattern matches of $LOGS_HOST_SSH_KEY [Pipeline] { [Pipeline] writeFile [Pipeline] sh [2026-06-23T08:18:28.922Z] Warning: Permanently added 'nexus.gz1.opensdn.io,212.233.90.199' (ECDSA) to the list of known hosts. [2026-06-23T08:18:29.486Z] Warning: Permanently added 'nexus.gz1.opensdn.io,212.233.90.199' (ECDSA) to the list of known hosts. [Pipeline] } [Pipeline] // withCredentials [Pipeline] } [Pipeline] // stage [Pipeline] echo [2026-06-23T08:18:30.166Z] URL of console output = https://jenkins.opensdn.io/job/pipeline-post-merge/905/consoleText [Pipeline] withCredentials [2026-06-23T08:18:30.201Z] Masking supported pattern matches of $LOGS_HOST_SSH_KEY [Pipeline] { [Pipeline] sh