@@ -652,13 +652,26 @@ func createWorkspace(
652
652
claimedWorkspace , err = claimPrebuild (ctx , prebuildsClaimer , db , api .Logger , req , owner )
653
653
// If claiming fails with an expected error (no claimable prebuilds or AGPL does not support prebuilds),
654
654
// we fall back to creating a new workspace. Otherwise, propagate the unexpected error.
655
- if err != nil &&
656
- ! errors .Is (err , prebuilds .ErrNoClaimablePrebuiltWorkspaces ) &&
657
- ! errors .Is (err , prebuilds .ErrAGPLDoesNotSupportPrebuiltWorkspaces ) {
658
- api .Logger .Error (ctx , "failed to claim prebuilt workspace" , slog .Error (err ),
659
- slog .F ("workspace_name" , req .Name ), slog .F ("template_version_preset_id" , req .TemplateVersionPresetID ))
655
+ if err != nil {
656
+ isExpectedError := errors .Is (err , prebuilds .ErrNoClaimablePrebuiltWorkspaces ) ||
657
+ errors .Is (err , prebuilds .ErrAGPLDoesNotSupportPrebuiltWorkspaces )
658
+ fields := []any {
659
+ slog .Error (err ),
660
+ slog .F ("workspace_name" , req .Name ),
661
+ slog .F ("template_version_preset_id" , req .TemplateVersionPresetID ),
662
+ }
663
+
664
+ if ! isExpectedError {
665
+ // if it's an unexpected error - use error log level
666
+ api .Logger .Error (ctx , "failed to claim prebuilt workspace" , fields ... )
667
+
668
+ return xerrors .Errorf ("failed to claim prebuilt workspace: %w" , err )
669
+ }
670
+
671
+ // if it's an expected error - use warn log level
672
+ api .Logger .Warn (ctx , "failed to claim prebuilt workspace" , fields ... )
660
673
661
- return xerrors . Errorf ( "failed to claim prebuilt workspace: %w" , err )
674
+ // fall back to creating a new workspace
662
675
}
663
676
}
664
677
0 commit comments