本文整理汇总了Golang中github.com/cloudfoundry-incubator/bbs/models.ConvertError函数的典型用法代码示例。如果您正苦于以下问题:Golang ConvertError函数的具体用法?Golang ConvertError怎么用?Golang ConvertError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ConvertError函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: DesireDesiredLRP_r0
func (h *DesiredLRPHandler) DesireDesiredLRP_r0(w http.ResponseWriter, req *http.Request) {
logger := h.logger.Session("desire-lrp")
request := &models.DesireLRPRequest{}
response := &models.DesiredLRPLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err := parseRequestForDesireDesiredLRP_r0(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
err = h.desiredLRPDB.DesireLRP(logger, request.DesiredLrp)
if err != nil {
response.Error = models.ConvertError(err)
return
}
desiredLRP, err := h.desiredLRPDB.DesiredLRPByProcessGuid(logger, request.DesiredLrp.ProcessGuid)
if err != nil {
response.Error = models.ConvertError(err)
return
}
go h.desiredHub.Emit(models.NewDesiredLRPCreatedEvent(desiredLRP))
schedulingInfo := request.DesiredLrp.DesiredLRPSchedulingInfo()
h.startInstanceRange(logger, 0, schedulingInfo.Instances, &schedulingInfo)
}
开发者ID:timani,项目名称:bbs,代码行数:31,代码来源:desired_lrp_handlers_deprecated.go
示例2: CompleteTask
func (h *TaskHandler) CompleteTask(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("complete-task")
request := &models.CompleteTaskRequest{}
response := &models.TaskLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
task, err := h.db.CompleteTask(logger, request.TaskGuid, request.CellId, request.Failed, request.FailureReason, request.Result)
if err != nil {
response.Error = models.ConvertError(err)
return
}
if task.CompletionCallbackUrl != "" {
logger.Info("task-client-completing-task")
go h.taskCompletionClient.Submit(h.db, task)
}
}
开发者ID:timani,项目名称:bbs,代码行数:27,代码来源:task_handlers.go
示例3: Cells
func (db *serviceClient) Cells(logger lager.Logger) (models.CellSet, error) {
kvPairs, _, err := db.consulClient.KV().List(CellSchemaRoot(), nil)
if err != nil {
bbsErr := models.ConvertError(convertConsulError(err))
if bbsErr.Type != models.Error_ResourceNotFound {
return nil, bbsErr
}
}
if kvPairs == nil {
err = consuladapter.NewPrefixNotFoundError(CellSchemaRoot())
bbsErr := models.ConvertError(convertConsulError(err))
if bbsErr.Type != models.Error_ResourceNotFound {
return nil, bbsErr
}
}
cellPresences := models.NewCellSet()
for _, kvPair := range kvPairs {
if kvPair.Session == "" {
continue
}
cell := kvPair.Value
presence := new(models.CellPresence)
err := models.FromJSON(cell, presence)
if err != nil {
logger.Error("failed-to-unmarshal-cells-json", err)
continue
}
cellPresences.Add(presence)
}
return cellPresences, nil
}
开发者ID:timani,项目名称:bbs,代码行数:35,代码来源:service_client.go
示例4: StartActualLRP
func (h *ActualLRPLifecycleHandler) StartActualLRP(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("start-actual-lrp")
request := &models.StartActualLRPRequest{}
response := &models.ActualLRPLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
before, after, err := h.db.StartActualLRP(logger, request.ActualLrpKey, request.ActualLrpInstanceKey, request.ActualLrpNetInfo)
if err != nil {
response.Error = models.ConvertError(err)
return
}
if before == nil {
go h.actualHub.Emit(models.NewActualLRPCreatedEvent(after))
} else if !before.Equal(after) {
go h.actualHub.Emit(models.NewActualLRPChangedEvent(before, after))
}
}
开发者ID:timani,项目名称:bbs,代码行数:29,代码来源:actual_lrp_lifecycle_handler.go
示例5: ClaimActualLRP
func (h *ActualLRPLifecycleHandler) ClaimActualLRP(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("claim-actual-lrp")
request := &models.ClaimActualLRPRequest{}
response := &models.ActualLRPLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
before, after, err := h.db.ClaimActualLRP(logger, request.ProcessGuid, request.Index, request.ActualLrpInstanceKey)
if err != nil {
response.Error = models.ConvertError(err)
return
}
if !after.Equal(before) {
go h.actualHub.Emit(models.NewActualLRPChangedEvent(before, after))
}
}
开发者ID:timani,项目名称:bbs,代码行数:25,代码来源:actual_lrp_lifecycle_handler.go
示例6: DesireTask
func (h *TaskHandler) DesireTask(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("desire-task")
request := &models.DesireTaskRequest{}
response := &models.TaskLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
logger = logger.WithData(lager.Data{"task_guid": request.TaskGuid})
err = h.db.DesireTask(logger, request.TaskDefinition, request.TaskGuid, request.Domain)
if err != nil {
response.Error = models.ConvertError(err)
return
}
logger.Debug("start-task-auction-request")
taskStartRequest := auctioneer.NewTaskStartRequestFromModel(request.TaskGuid, request.Domain, request.TaskDefinition)
err = h.auctioneerClient.RequestTaskAuctions([]*auctioneer.TaskStartRequest{&taskStartRequest})
if err != nil {
logger.Error("failed-requesting-task-auction", err)
// The creation succeeded, the auction request error can be dropped
} else {
logger.Debug("succeeded-requesting-task-auction")
}
}
开发者ID:timani,项目名称:bbs,代码行数:33,代码来源:task_handlers.go
示例7: RemoveActualLRP
func (h *ActualLRPLifecycleHandler) RemoveActualLRP(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("remove-actual-lrp")
request := &models.RemoveActualLRPRequest{}
response := &models.ActualLRPLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
beforeActualLRPGroup, err := h.db.ActualLRPGroupByProcessGuidAndIndex(logger, request.ProcessGuid, request.Index)
if err != nil {
response.Error = models.ConvertError(err)
return
}
err = h.db.RemoveActualLRP(logger, request.ProcessGuid, request.Index, request.ActualLrpInstanceKey)
if err != nil {
response.Error = models.ConvertError(err)
return
}
go h.actualHub.Emit(models.NewActualLRPRemovedEvent(beforeActualLRPGroup))
}
开发者ID:timani,项目名称:bbs,代码行数:30,代码来源:actual_lrp_lifecycle_handler.go
示例8: ConvergeTasks
func (h *TaskHandler) ConvergeTasks(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("converge-tasks")
request := &models.ConvergeTasksRequest{}
response := &models.ConvergeTasksResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
}
logger.Debug("listing-cells")
cellSet, err := h.serviceClient.Cells(logger)
if err == models.ErrResourceNotFound {
logger.Debug("no-cells-found")
cellSet = models.CellSet{}
} else if err != nil {
logger.Debug("failed-listing-cells")
response.Error = models.ConvertError(err)
return
}
logger.Debug("succeeded-listing-cells")
tasksToAuction, tasksToComplete := h.db.ConvergeTasks(
logger,
cellSet,
time.Duration(request.KickTaskDuration),
time.Duration(request.ExpirePendingTaskDuration),
time.Duration(request.ExpireCompletedTaskDuration),
)
if len(tasksToAuction) > 0 {
logger.Debug("requesting-task-auctions", lager.Data{"num_tasks_to_auction": len(tasksToAuction)})
if err := h.auctioneerClient.RequestTaskAuctions(tasksToAuction); err != nil {
taskGuids := make([]string, len(tasksToAuction))
for i, task := range tasksToAuction {
taskGuids[i] = task.TaskGuid
}
logger.Error("failed-to-request-auctions-for-pending-tasks", err,
lager.Data{"task_guids": taskGuids})
}
logger.Debug("done-requesting-task-auctions", lager.Data{"num_tasks_to_auction": len(tasksToAuction)})
}
logger.Debug("submitting-tasks-to-be-completed", lager.Data{"num_tasks_to_complete": len(tasksToComplete)})
for _, task := range tasksToComplete {
h.taskCompletionClient.Submit(h.db, task)
}
logger.Debug("done-submitting-tasks-to-be-completed", lager.Data{"num_tasks_to_complete": len(tasksToComplete)})
}
开发者ID:timani,项目名称:bbs,代码行数:55,代码来源:task_handlers.go
示例9: UnclaimActualLRP
func (db *ETCDDB) UnclaimActualLRP(logger lager.Logger, key *models.ActualLRPKey) (*models.ActualLRPGroup, *models.ActualLRPGroup, error) {
actualLRP, modifiedIndex, err := db.rawActualLRPByProcessGuidAndIndex(logger, key.ProcessGuid, key.Index)
bbsErr := models.ConvertError(err)
if bbsErr != nil {
return nil, nil, bbsErr
}
beforeActualLRP := *actualLRP
if actualLRP.State == models.ActualLRPStateUnclaimed {
logger.Debug("already-unclaimed")
return nil, nil, models.ErrActualLRPCannotBeUnclaimed
}
actualLRP.State = models.ActualLRPStateUnclaimed
actualLRP.ActualLRPKey = *key
actualLRP.ActualLRPInstanceKey = models.ActualLRPInstanceKey{}
actualLRP.ActualLRPNetInfo = models.EmptyActualLRPNetInfo()
actualLRP.Since = db.clock.Now().UnixNano()
actualLRP.ModificationTag.Increment()
data, err := db.serializeModel(logger, actualLRP)
if err != nil {
return nil, nil, err
}
_, err = db.client.CompareAndSwap(ActualLRPSchemaPath(key.ProcessGuid, key.Index), data, 0, modifiedIndex)
if err != nil {
logger.Error("failed-compare-and-swap", err)
return nil, nil, ErrorFromEtcdError(logger, err)
}
return &models.ActualLRPGroup{Instance: &beforeActualLRP}, &models.ActualLRPGroup{Instance: actualLRP}, nil
}
开发者ID:timani,项目名称:bbs,代码行数:33,代码来源:actual_lrp_db.go
示例10: StopApp
func (h *StopAppHandler) StopApp(resp http.ResponseWriter, req *http.Request) {
processGuid := req.FormValue(":process_guid")
logger := h.logger.Session("stop-app", lager.Data{"process-guid": processGuid})
if processGuid == "" {
logger.Error("missing-process-guid", missingParameterErr)
resp.WriteHeader(http.StatusBadRequest)
return
}
logger.Info("stop-request-from-cc", lager.Data{"processGuid": processGuid})
err := h.bbsClient.RemoveDesiredLRP(processGuid)
if err != nil {
logger.Error("failed-to-delete-desired-lrp", err)
bbsError := models.ConvertError(err)
if bbsError.Type == models.Error_ResourceNotFound {
resp.WriteHeader(http.StatusNotFound)
return
}
resp.WriteHeader(http.StatusServiceUnavailable)
return
}
resp.WriteHeader(http.StatusAccepted)
}
开发者ID:emc-xchallenge,项目名称:nsync,代码行数:28,代码来源:stop_app_handler.go
示例11: Run
func (m Encryptor) Run(signals <-chan os.Signal, ready chan<- struct{}) error {
logger := m.logger.Session("encryptor")
currentEncryptionKey, err := m.db.EncryptionKeyLabel(logger)
if err != nil {
if models.ConvertError(err) != models.ErrResourceNotFound {
return err
}
} else {
if m.keyManager.DecryptionKey(currentEncryptionKey) == nil {
return errors.New("Existing encryption key version (" + currentEncryptionKey + ") is not among the known keys")
}
}
close(ready)
if currentEncryptionKey != m.keyManager.EncryptionKey().Label() {
encryptionStart := m.clock.Now()
logger.Debug("encryption-started")
m.performEncryption(logger)
m.db.SetEncryptionKeyLabel(logger, m.keyManager.EncryptionKey().Label())
totalTime := m.clock.Since(encryptionStart)
logger.Debug("encryption-finished", lager.Data{"total-time": totalTime})
encryptionDuration.Send(totalTime)
}
select {
case <-signals:
return nil
}
}
开发者ID:emc-xchallenge,项目名称:bbs,代码行数:31,代码来源:encryptor.go
示例12: DesiredLRPs_r1
func (h *DesiredLRPHandler) DesiredLRPs_r1(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("desired-lrps", lager.Data{"revision": 0})
request := &models.DesiredLRPsRequest{}
response := &models.DesiredLRPsResponse{}
err = parseRequest(logger, req, request)
if err == nil {
var lrps []*models.DesiredLRP
filter := models.DesiredLRPFilter{Domain: request.Domain}
lrps, err = h.desiredLRPDB.DesiredLRPs(logger, filter)
if err == nil {
for i := range lrps {
transformedLRP := lrps[i].VersionDownTo(format.V1)
response.DesiredLrps = append(response.DesiredLrps, transformedLRP)
}
}
}
response.Error = models.ConvertError(err)
writeResponse(w, response)
exitIfUnrecoverable(logger, h.exitChan, response.Error)
}
开发者ID:timani,项目名称:bbs,代码行数:26,代码来源:desired_lrp_handlers_deprecated.go
示例13: completeTask
func (p *taskProcessor) completeTask(logger lager.Logger, container executor.Container) {
var result string
var err error
if !container.RunResult.Failed {
result, err = p.containerDelegate.FetchContainerResultFile(logger, container.Guid, container.Tags[rep.ResultFileTag])
if err != nil {
p.failTask(logger, container.Guid, TaskCompletionReasonFailedToFetchResult)
return
}
}
logger.Info("completing-task")
err = p.bbsClient.CompleteTask(container.Guid, p.cellID, container.RunResult.Failed, container.RunResult.FailureReason, result)
if err != nil {
logger.Error("failed-completing-task", err)
bbsErr := models.ConvertError(err)
if bbsErr.Type == models.Error_InvalidStateTransition {
p.failTask(logger, container.Guid, TaskCompletionReasonInvalidTransition)
}
return
}
logger.Info("succeeded-completing-task")
}
开发者ID:jiangytcn,项目名称:rep,代码行数:25,代码来源:task_processor.go
示例14: CrashActualLRP
func (h *ActualLRPLifecycleHandler) CrashActualLRP(w http.ResponseWriter, req *http.Request) {
logger := h.logger.Session("crash-actual-lrp")
request := &models.CrashActualLRPRequest{}
response := &models.ActualLRPLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err := parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
actualLRPKey := request.ActualLrpKey
actualLRPInstanceKey := request.ActualLrpInstanceKey
before, after, shouldRestart, err := h.db.CrashActualLRP(logger, actualLRPKey, actualLRPInstanceKey, request.ErrorMessage)
if err != nil {
response.Error = models.ConvertError(err)
return
}
if shouldRestart {
desiredLRP, err := h.desiredLRPDB.DesiredLRPByProcessGuid(logger, actualLRPKey.ProcessGuid)
if err != nil {
logger.Error("failed-fetching-desired-lrp", err)
response.Error = models.ConvertError(err)
return
}
schedInfo := desiredLRP.DesiredLRPSchedulingInfo()
startRequest := auctioneer.NewLRPStartRequestFromSchedulingInfo(&schedInfo, int(actualLRPKey.Index))
logger.Info("start-lrp-auction-request", lager.Data{"app_guid": schedInfo.ProcessGuid, "index": int(actualLRPKey.Index)})
err = h.auctioneerClient.RequestLRPAuctions([]*auctioneer.LRPStartRequest{&startRequest})
logger.Info("finished-lrp-auction-request", lager.Data{"app_guid": schedInfo.ProcessGuid, "index": int(actualLRPKey.Index)})
if err != nil {
logger.Error("failed-requesting-auction", err)
response.Error = models.ConvertError(err)
return
}
}
actualLRP, _ := after.Resolve()
go h.actualHub.Emit(models.NewActualLRPCrashedEvent(actualLRP))
go h.actualHub.Emit(models.NewActualLRPChangedEvent(before, after))
}
开发者ID:timani,项目名称:bbs,代码行数:47,代码来源:actual_lrp_lifecycle_handler.go
示例15: CancelTask
func (h *TaskHandler) CancelTask(w http.ResponseWriter, req *http.Request) {
logger := h.logger.Session("cancel-task")
request := &models.TaskGuidRequest{}
response := &models.TaskLifecycleResponse{}
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err := parseRequest(logger, req, request)
if err != nil {
logger.Error("failed-parsing-request", err)
response.Error = models.ConvertError(err)
return
}
task, cellID, err := h.db.CancelTask(logger, request.TaskGuid)
if err != nil {
response.Error = models.ConvertError(err)
return
}
if task.CompletionCallbackUrl != "" {
logger.Info("task-client-completing-task")
go h.taskCompletionClient.Submit(h.db, task)
}
if cellID == "" {
return
}
logger.Info("start-check-cell-presence", lager.Data{"cell_id": cellID})
cellPresence, err := h.serviceClient.CellById(logger, cellID)
if err != nil {
logger.Error("failed-fetching-cell-presence", err)
return
}
logger.Info("finished-check-cell-presence", lager.Data{"cell_id": cellID})
repClient := h.repClientFactory.CreateClient(cellPresence.RepAddress)
logger.Info("start-rep-cancel-task", lager.Data{"task_guid": request.TaskGuid})
repClient.CancelTask(request.TaskGuid)
if err != nil {
logger.Error("failed-rep-cancel-task", err)
return
}
logger.Info("finished-rep-cancel-task", lager.Data{"task_guid": request.TaskGuid})
}
开发者ID:timani,项目名称:bbs,代码行数:47,代码来源:task_handlers.go
示例16: Domains
func (h *DomainHandler) Domains(w http.ResponseWriter, req *http.Request) {
var err error
logger := h.logger.Session("domains")
response := &models.DomainsResponse{}
response.Domains, err = h.db.Domains(logger)
response.Error = models.ConvertError(err)
writeResponse(w, response)
}
开发者ID:emc-xchallenge,项目名称:bbs,代码行数:8,代码来源:domain_handlers.go
示例17: RetireActualLRP
func (h *ActualLRPLifecycleHandler) RetireActualLRP(w http.ResponseWriter, req *http.Request) {
logger := h.logger.Session("retire-actual-lrp")
request := &models.RetireActualLRPRequest{}
response := &models.ActualLRPLifecycleResponse{}
var err error
defer func() { exitIfUnrecoverable(logger, h.exitChan, response.Error) }()
defer writeResponse(w, response)
err = parseRequest(logger, req, request)
if err != nil {
response.Error = models.ConvertError(err)
return
}
err = h.retirer.RetireActualLRP(logger, request.ActualLrpKey.ProcessGuid, request.ActualLrpKey.Index)
response.Error = models.ConvertError(err)
}
开发者ID:timani,项目名称:bbs,代码行数:18,代码来源:actual_lrp_lifecycle_handler.go
示例18: StartActualLRP
func (db *ETCDDB) StartActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey, netInfo *models.ActualLRPNetInfo) (*models.ActualLRPGroup, *models.ActualLRPGroup, error) {
logger = logger.WithData(lager.Data{
"actual_lrp_key": key,
"actual_lrp_instance_key": instanceKey,
"net_info": netInfo,
})
logger.Info("starting")
defer logger.Info("completed")
lrp, prevIndex, err := db.rawActualLRPByProcessGuidAndIndex(logger, key.ProcessGuid, key.Index)
bbsErr := models.ConvertError(err)
if bbsErr != nil {
if bbsErr.Type == models.Error_ResourceNotFound {
lrp, err := db.createRunningActualLRP(logger, key, instanceKey, netInfo)
return nil, &models.ActualLRPGroup{Instance: lrp}, err
}
logger.Error("failed-to-get-actual-lrp", err)
return nil, nil, err
}
beforeActualLRP := *lrp
if lrp.ActualLRPKey.Equal(key) &&
lrp.ActualLRPInstanceKey.Equal(instanceKey) &&
lrp.ActualLRPNetInfo.Equal(netInfo) &&
lrp.State == models.ActualLRPStateRunning {
lrpGroup := &models.ActualLRPGroup{Instance: lrp}
return lrpGroup, lrpGroup, nil
}
if !lrp.AllowsTransitionTo(key, instanceKey, models.ActualLRPStateRunning) {
logger.Error("failed-to-transition-actual-lrp-to-started", nil)
return nil, nil, models.ErrActualLRPCannotBeStarted
}
lrp.ModificationTag.Increment()
lrp.State = models.ActualLRPStateRunning
lrp.Since = db.clock.Now().UnixNano()
lrp.ActualLRPInstanceKey = *instanceKey
lrp.ActualLRPNetInfo = *netInfo
lrp.PlacementError = ""
lrpData, serializeErr := db.serializeModel(logger, lrp)
if serializeErr != nil {
return nil, nil, serializeErr
}
_, err = db.client.CompareAndSwap(ActualLRPSchemaPath(key.ProcessGuid, key.Index), lrpData, 0, prevIndex)
if err != nil {
logger.Error("failed", err)
return nil, nil, models.ErrActualLRPCannotBeStarted
}
return &models.ActualLRPGroup{Instance: &beforeActualLRP}, &models.ActualLRPGroup{Instance: lrp}, nil
}
开发者ID:timani,项目名称:bbs,代码行数:55,代码来源:actual_lrp_db.go
示例19: claimLRPContainer
func (p *ordinaryLRPProcessor) claimLRPContainer(logger lager.Logger, lrpContainer *lrpContainer) bool {
err := p.bbsClient.ClaimActualLRP(lrpContainer.ProcessGuid, int(lrpContainer.Index), lrpContainer.ActualLRPInstanceKey)
bbsErr := models.ConvertError(err)
if err != nil {
if bbsErr.Type == models.Error_ActualLRPCannotBeClaimed {
p.containerDelegate.DeleteContainer(logger, lrpContainer.Guid)
}
return false
}
return true
}
开发者ID:jiangytcn,项目名称:rep,代码行数:11,代码来源:ordinary_lrp_processor.go
示例20: RetireActualLRP
func (db *ETCDDB) RetireActualLRP(logger lager.Logger, key *models.ActualLRPKey) error {
logger = logger.Session("retire-actual-lrp", lager.Data{"actual_lrp_key": key})
var err error
var prevIndex uint64
var lrp *models.ActualLRP
processGuid := key.ProcessGuid
index := key.Index
for i := 0; i < models.RetireActualLRPRetryAttempts; i++ {
lrp, prevIndex, err = db.rawActuaLLRPByProcessGuidAndIndex(logger, processGuid, index)
if err != nil {
break
}
switch lrp.State {
case models.ActualLRPStateUnclaimed, models.ActualLRPStateCrashed:
err = db.removeActualLRP(logger, lrp, prevIndex)
default:
var cell *models.CellPresence
key := lrp.ActualLRPKey
instanceKey := lrp.ActualLRPInstanceKey
cell, err = db.serviceClient.CellById(logger, instanceKey.CellId)
if err != nil {
bbsErr := models.ConvertError(err)
if bbsErr.Type == models.Error_ResourceNotFound {
err = db.removeActualLRP(logger, lrp, prevIndex)
}
err = err
break
}
logger.Info("stopping-lrp-instance", lager.Data{
"actual-lrp-key": key,
})
repClient := db.repClientFactory.CreateClient(cell.RepAddress)
cellErr := repClient.StopLRPInstance(key, instanceKey)
if cellErr != nil {
err = models.ErrActualLRPCannotBeStopped
}
}
if err == nil {
break
}
if i+1 < models.RetireActualLRPRetryAttempts {
logger.Error("retrying-failed-retire-of-actual-lrp", err, lager.Data{"attempt": i + 1})
}
}
return err
}
开发者ID:emc-xchallenge,项目名称:bbs,代码行数:53,代码来源:actual_lrp_db.go
注:本文中的github.com/cloudfoundry-incubator/bbs/models.ConvertError函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论