Resolving the Feature Scripts conflicts
After orca
finishes the major upgrade in the first node, there might be Feature Scripts conflicts which need to be solved and applied to the system
for correct operation.
The files in the feature-scripts
path will contain the scripts with:
-
the proposed merged version
-
the installed version
-
the new version (uplevel version)
-
the original downlevel version
The cases that require full manual intervention are ones where the file presents this line:
<merge conflict: some message>
, e.g, <merge conflict: all three versions differ>
In order to show how to solve conflict in the Feature Scripts consider the examples below.
Example of default_Post_SipAccess_SubscriberCheck
:
<merge conflict: all three versions differ> ### Write your script above. This line, and anything below it, will be removed === Currently installed version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run RecordTimestamps mode "inbound" run ExtractNetworkInfo run RemoveHeadersFromOutgoingMessages } >>> New version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run RecordTimestamps mode "outbound" run ExtractNetworkInfo run ExternalSessionTracking run RemoveHeadersFromOutgoingMessages } <<< Original version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run ExtractNetworkInfo run RemoveHeadersFromOutgoingMessages }
This case shows all 3 versions are different, specifically run RecordTimestamps mode "inbound"
changed to run RecordTimestamps mode "outbound"
and
run ExternalSessionTracking
was added.
One correct solution would be to keep the new version of the script. The file after editing would have:
featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run RecordTimestamps mode "outbound" run ExtractNetworkInfo run ExternalSessionTracking run RemoveHeadersFromOutgoingMessages } ### Write your script above. This line, and anything below it, will be removed === Currently installed version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run RecordTimestamps mode "inbound" run ExtractNetworkInfo run RemoveHeadersFromOutgoingMessages } >>> New version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run RecordTimestamps mode "outbound" run ExtractNetworkInfo run ExternalSessionTracking run RemoveHeadersFromOutgoingMessages } <<< Original version of script featurescript SipAccessSubscriberCheck-SysPost-Default { if not session.MonitorCallOnly { run B2BUAScurPostFeature } run SDPRewriter run SDPMonitor mode "post" run ExtractNetworkInfo run RemoveHeadersFromOutgoingMessages }
Example file MMTelTerm_SipAccess_PartyRequest
:
featurescript SipAccessPartyRequest-User-MmtelTerm { if session.ICBBarredWithAnnouncement or session.PlayCDIVAnnouncement or session.PlayCWAnnouncement or session.EndSessionWithAnnouncement { run SipPlayAnnouncement } if not session.FlexibleAlertingMode.NONE { if session.FlexibleAlertingMode.PARALLEL { run MMTelParallelFA } else { run MMTelSequentialFA } } run MMTelOIP run MMTelECT run MMTelStodProcessHandover run DetermineChargeableLeg if session.AccessLegTrackingActive { run AccessLegTracking } } ### Write your script above. This line, and anything below it, will be removed === Currently installed version of script featurescript SipAccessPartyRequest-User-MmtelTerm { if session.ICBBarredWithAnnouncement or session.PlayCDIVAnnouncement or session.PlayCWAnnouncement or session.EndSessionWithAnnouncement { run SipPlayAnnouncement } if not session.FlexibleAlertingMode.NONE { if session.FlexibleAlertingMode.PARALLEL { run MMTelParallelFA } else { run MMTelSequentialFA } } run MMTelOIP run MMTelECT run MMTelStodProcessHandover run DetermineChargeableLeg } >>> New version of script featurescript SipAccessPartyRequest-User-MmtelTerm { if session.ICBBarredWithAnnouncement or session.PlayCDIVAnnouncement or session.PlayCWAnnouncement or session.EndSessionWithAnnouncement { run SipPlayAnnouncement } if not session.FlexibleAlertingMode.NONE { if session.FlexibleAlertingMode.PARALLEL { run MMTelParallelFA } else { run MMTelSequentialFA } } run MMTelOIP run MMTelECT run MMTelStodProcessHandover run DetermineChargeableLeg if session.AccessLegTrackingActive { run AccessLegTracking } } <<< Original version of script featurescript SipAccessPartyRequest-User-MmtelTerm { if session.ICBBarredWithAnnouncement or session.PlayCDIVAnnouncement or session.PlayCWAnnouncement or session.EndSessionWithAnnouncement { run SipPlayAnnouncement } if not session.FlexibleAlertingMode.NONE { if session.FlexibleAlertingMode.PARALLEL { run MMTelParallelFA } else { run MMTelSequentialFA } } run MMTelOIP run MMTelECT run MMTelStodProcessHandover run DetermineChargeableLeg }
The change is that the new version introduces the change
if session.AccessLegTrackingActive { run AccessLegTracking }
It matches the case 2, so the uplevel version is the correct one to use and no changes in the file is required.
Importing the Feature Scripts after resolving the conflicts
After the conflicts are solved run the command from the same path you ran to do the major upgrade:
./orca --hosts <first host> import-feature-scripts
The output should be:
Importing feature script SCCTerm_HLR_SipAccess_ServiceTimer... Importing feature script default_Post_SipMidSession_ChargingReauth... Importing feature script MMTelOrig_SipMidSession_PartyRequest... Importing feature script MMTelConf_SipAccess_SubscriberCheck... Importing feature script SCCTermAnchor_SipAccess_ServiceTimer... Importing feature script SCC_Post_SipEndSession... Importing feature script MMTel_Pre_SipAccess_SessionStart... Importing feature script SCC_SipAccess_PartyRequest... ... other feature scripts ... Done on localhost
If some Feature Script files are not correct orca will print warnings:
5 scripts could not be imported (see above for errors): - MMTel_Pre_SipMidSession_PartyRequest - SCC_Post_SipAccess_PartyRequest - MMTel_Post_SipMidSession_PartyRequest - default_Post_SipMidSession_PartyResponse - MMTelOrig_Post_SubscriptionSipResponse
You can fix them and do the same import procedure as indicated above.