Skip to content

Commit

Permalink
Merge pull request #506 from HumairAK/issue_505
Browse files Browse the repository at this point in the history
fix: DSPO crashes when external connections failed
  • Loading branch information
HumairAK authored Dec 12, 2023
2 parents 28dbeb8 + 2ba42fb commit 569d614
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
22 changes: 16 additions & 6 deletions controllers/dspipeline_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,17 @@ func (r *DSPAReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
}

// Get Prereq Status (DB and ObjStore Ready)
dbAvailable, dbAvailableError := r.isDatabaseAccessible(ctx, dspa, params)
objStoreAvailable, objStoreAvailableError := r.isObjectStorageAccessible(ctx, dspa, params)
dbAvailableErrorMsg, objStoreAvailableErrorMsg := "", ""
dbAvailable, err := r.isDatabaseAccessible(ctx, dspa, params)

if err != nil {
dbAvailableErrorMsg = err.Error()
}
objStoreAvailable, err := r.isObjectStorageAccessible(ctx, dspa, params)
if err != nil {
objStoreAvailableErrorMsg = err.Error()
}

dspaPrereqsReady := dbAvailable && objStoreAvailable

if dspaPrereqsReady {
Expand Down Expand Up @@ -270,7 +279,7 @@ func (r *DSPAReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
return ctrl.Result{}, err
}

conditions, err := r.GenerateStatus(ctx, dspa, params, dbAvailable, objStoreAvailable, dbAvailableError, objStoreAvailableError)
conditions, err := r.GenerateStatus(ctx, dspa, params, dbAvailable, objStoreAvailable, dbAvailableErrorMsg, objStoreAvailableErrorMsg)
if err != nil {
log.Info(err.Error())
return ctrl.Result{}, err
Expand Down Expand Up @@ -412,14 +421,15 @@ func (r *DSPAReconciler) handleReadyCondition(ctx context.Context, dspa *dspav1a
}

func (r *DSPAReconciler) GenerateStatus(ctx context.Context, dspa *dspav1alpha1.DataSciencePipelinesApplication,
params *DSPAParams, dbAvailableStatus bool, objStoreAvailableStatus bool, dbAvailableError error, objStoreAvailableError error) ([]metav1.Condition, error) {
params *DSPAParams, dbAvailableStatus bool, objStoreAvailableStatus bool, dbAvailableErrorMsg string,
objStoreAvailableErrorMsg string) ([]metav1.Condition, error) {
// Create Database Availability Condition
databaseAvailable := r.buildCondition(config.DatabaseAvailable, dspa, config.DatabaseAvailable)
if dbAvailableStatus {
databaseAvailable.Status = metav1.ConditionTrue
databaseAvailable.Message = "Database connectivity successfully verified"
} else {
databaseAvailable.Message = error.Error(dbAvailableError)
databaseAvailable.Message = dbAvailableErrorMsg
}

// Create Object Storage Availability Condition
Expand All @@ -428,7 +438,7 @@ func (r *DSPAReconciler) GenerateStatus(ctx context.Context, dspa *dspav1alpha1.
objStoreAvailable.Status = metav1.ConditionTrue
objStoreAvailable.Message = "Object Store connectivity successfully verified"
} else {
objStoreAvailable.Message = error.Error(objStoreAvailableError)
objStoreAvailable.Message = objStoreAvailableErrorMsg
}

// Create APIServer Readiness Condition
Expand Down
2 changes: 1 addition & 1 deletion controllers/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ var ConnectAndQueryObjStore = func(ctx context.Context, log logr.Logger, endpoin

// Every other error means the endpoint in inaccessible, or the credentials provided do not have, at a minimum GetObject, permissions
errorMessage := fmt.Sprintf("Could not connect to (%s), Error: %s", endpoint, err.Error())
log.Error(err, errorMessage)
log.Info(errorMessage)
return false, errors.New(errorMessage)
}

Expand Down

0 comments on commit 569d614

Please sign in to comment.