e2SubsDb: CreateSdl(),
restSubsDb: CreateRESTSdl(),
Counters: xapp.Metric.RegisterCounterGroup(GetMetricsOpts(), "SUBMGR"),
- LoggerLevel: 4,
+ LoggerLevel: 1,
}
e2IfState.Init(c)
xapp.Resource.InjectRoute("/ric/v1/restsubscriptions", c.GetAllRestSubscriptions, "GET")
xapp.Resource.InjectRoute("/ric/v1/symptomdata", c.SymptomDataHandler, "GET")
- if readSubsFromDb == "false" {
- return c
+ if readSubsFromDb == "true" {
+ // Read subscriptions from db
+ c.ReadE2Subscriptions()
+ c.ReadRESTSubscriptions()
}
- // Read subscriptions from db
- c.ReadE2Subscriptions()
- c.ReadRESTSubscriptions()
-
go xapp.Subscription.Listen(c.RESTSubscriptionHandler, c.RESTQueryHandler, c.RESTSubscriptionDeleteHandler)
-
return c
}
xapp.Logger.Debug("ReadConfigParameters")
c.LoggerLevel = int(xapp.Logger.GetLevel())
- xapp.Logger.Debug("LoggerLevel= %v", c.LoggerLevel)
+ xapp.Logger.Info("LoggerLevel = %v", c.LoggerLevel)
+ c.e2ap.SetASN1DebugPrintStatus(c.LoggerLevel)
// viper.GetDuration returns nanoseconds
e2tSubReqTimeout = viper.GetDuration("controls.e2tSubReqTimeout_ms") * 1000000
if duplicate {
err := fmt.Errorf("Retransmission blocker direct ACK for request of restSubsId %s restSubId MD5sum %s as retransmission", restSubId, md5sum)
xapp.Logger.Debug("%s", err)
+ c.registry.DeleteRESTSubscription(&restSubId)
c.UpdateCounter(cRestSubRespToXapp)
return &subResp, common.SubscribeCreatedCode
}
e2SubscriptionDirectives, err := c.GetE2SubscriptionDirectives(p)
if err != nil {
xapp.Logger.Error("%s", err)
+ c.registry.DeleteRESTSubscription(&restSubId)
return nil, common.SubscribeBadRequestCode
}
go c.processSubscriptionRequests(restSubscription, &subReqList, p.ClientEndpoint, p.Meid, &restSubId, xAppRmrEndpoint, md5sum, e2SubscriptionDirectives)
clientEndpoint *models.SubscriptionParamsClientEndpoint, meid *string, restSubId *string, xAppRmrEndpoint string, md5sum string, e2SubscriptionDirectives *E2SubscriptionDirectives) {
c.SubscriptionProcessingStartDelay()
- xapp.Logger.Debug("Subscription Request count=%v ", len(subReqList.E2APSubscriptionRequests))
+ xapp.Logger.Debug("E2 SubscriptionRequest count =%v ", len(subReqList.E2APSubscriptionRequests))
var xAppEventInstanceID int64
var e2EventInstanceID int64
c.RemoveSubscriptionFromDb(subs)
err = fmt.Errorf("E2 interface down")
errorInfo.SetInfo(err.Error(), models.SubscriptionInstanceErrorSourceE2Node, "")
- return nil, &errorInfo, err
}
case *e2ap.E2APSubscriptionFailure:
err = fmt.Errorf("E2 SubscriptionFailure received")
errorInfo.SetInfo(err.Error(), models.SubscriptionInstanceErrorSourceE2Node, "")
- return nil, &errorInfo, err
case *PackSubscriptionRequestErrortEvent:
err = fmt.Errorf("E2 SubscriptionRequest pack failure")
- return nil, &themsg.ErrorInfo, err
+ errorInfo = themsg.ErrorInfo
case *SDLWriteErrortEvent:
err = fmt.Errorf("SDL write failure")
- return nil, &themsg.ErrorInfo, err
+ errorInfo = themsg.ErrorInfo
default:
err = fmt.Errorf("Unexpected E2 subscription response received")
errorInfo.SetInfo(err.Error(), models.SubscriptionInstanceErrorSourceE2Node, "")
break
}
} else {
+ // Timer expiry
err = fmt.Errorf("E2 subscription response timeout")
errorInfo.SetInfo(err.Error(), "", models.SubscriptionInstanceTimeoutTypeE2Timeout)
if subs.PolicyUpdate == true {
c.UpdateCounter(cRestSubFailNotifToXapp)
xapp.Subscription.Notify(resp, *clientEndpoint)
+ // E2 is down. Delete completely processed request safely now
if c.e2IfState.IsE2ConnectionUp(&restSubscription.Meid) == false && restSubscription.SubReqOngoing == false {
c.registry.DeleteRESTSubscription(restSubId)
c.RemoveRESTSubscriptionFromDb(*restSubId)
c.UpdateCounter(cRestSubNotifToXapp)
xapp.Subscription.Notify(resp, *clientEndpoint)
+ // E2 is down. Delete completely processed request safely now
if c.e2IfState.IsE2ConnectionUp(&restSubscription.Meid) == false && restSubscription.SubReqOngoing == false {
c.registry.DeleteRESTSubscription(restSubId)
c.RemoveRESTSubscriptionFromDb(*restSubId)
return common.UnsubscribeBadRequestCode
} else if restSubscription.SubDelReqOngoing == true {
// Previous request for same restSubId still ongoing
- c.UpdateCounter(cRestSubDelFailToXapp)
- return common.UnsubscribeBadRequestCode
+ c.UpdateCounter(cRestSubDelRespToXapp)
+ return common.UnsubscribeNoContentCode
}
}
}
removeSubscriptionFromDb = true
subRfMsg, valid = subs.SetCachedResponse(event, false)
xapp.Logger.Debug("SUBS-SubReq: internal delete due failure event(%s) %s", typeofSubsMessage(event), idstring(nil, trans, subs, parentTrans))
- c.sendE2TSubscriptionDeleteRequest(subs, trans, parentTrans)
case *SubmgrRestartTestEvent:
// This simulates that no response has been received and after restart subscriptions are restored from db
xapp.Logger.Debug("Test restart flag is active. Dropping this transaction to test restart case")
case *PackSubscriptionRequestErrortEvent, *SDLWriteErrortEvent:
+ removeSubscriptionFromDb = true
subRfMsg, valid = subs.SetCachedResponse(event, false)
default:
+ // Timer expiry
if subs.PolicyUpdate == false {
xapp.Logger.Debug("SUBS-SubReq: internal delete due default event(%s) %s", typeofSubsMessage(event), idstring(nil, trans, subs, parentTrans))
removeSubscriptionFromDb = true
subReqMsg.RequestId.Id = ricRequestorId
trans.Mtype, trans.Payload, err = c.e2ap.PackSubscriptionRequest(subReqMsg)
if err != nil {
- xapp.Logger.Error("SUBS-SubReq: %s", idstring(err, trans, subs, parentTrans))
+ xapp.Logger.Error("SUBS-SubReq ASN1 pack error: %s", idstring(err, trans, subs, parentTrans))
return &PackSubscriptionRequestErrortEvent{
ErrorInfo{
ErrorSource: models.SubscriptionInstanceErrorSourceASN1,