Tencent/WeKnora · error

failed to check OSS bucket: %w

Error message

failed to check OSS bucket: %w

What it means

OSS bucket bootstrap: IsBucketExist errored while checking the configured bucket (credentials, endpoint, or network failure), so bucket existence cannot be determined and ensure/create cannot proceed.

Source

Thrown at internal/application/service/file/oss.go:55

	if err := utils.ValidateURLForSSRF(endpoint); err != nil {
		return nil, fmt.Errorf("unsafe OSS endpoint: %w", err)
	}
	creds := credentials.NewStaticCredentialsProvider(accessKey, secretKey, "")

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(creds).
		WithRegion(region).
		WithEndpoint(endpoint).
		WithHttpClient(utils.NewSSRFSafeHTTPClient(utils.DefaultSSRFSafeHTTPClientConfig()))

	return oss.NewClient(cfg), nil
}

// ossEnsureBucket checks if the bucket exists and creates it if missing.
func ossEnsureBucket(client *oss.Client, bucketName string) error {
	exists, err := client.IsBucketExist(context.Background(), bucketName)
	if err != nil {
		return fmt.Errorf("failed to check OSS bucket: %w", err)
	}
	if exists {
		return nil
	}

	_, err = client.PutBucket(context.Background(), &oss.PutBucketRequest{
		Bucket: oss.Ptr(bucketName),
	})
	if err != nil {
		var svcErr *oss.ServiceError
		if errors.As(err, &svcErr) && svcErr.StatusCode == http.StatusConflict {
			return nil
		}
		return fmt.Errorf("failed to create OSS bucket: %w", err)
	}
	return nil
}

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Verify OSS endpoint, region, and credentials
  2. Check network egress to the OSS endpoint
  3. Retry the existence check on transient errors
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at internal/application/service/file/oss.go:55 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/fd4dea280da66b88. Report an issue: GitHub.