Skip to content

Commit

Permalink
[exporter] [chore] move exporter.exporterhelper.request to internal (#…
Browse files Browse the repository at this point in the history
…11042)

#### Description

This PR moves `exporter/exporterhelper/request.go` to
`exporter/internal/request.go` to avoid circular dependency.

Context: As part of the effort to move from a queue->batch pushing model
to a queue->batch pulling model in exporter, we will be depending on
`Request` from `exporter/exporterbatcher`. However,
`exporter/exporterhelper` already depends on `exporter/exporterbatcher`,
so we need to move `Request` out of `exporter/exporterhelper`

#### Link to tracking issue

#10368

#### Testing

Ran `opentelemetry-collector$ make` to make sure all tests still pass.
  • Loading branch information
sfc-gh-sili authored Sep 6, 2024
1 parent e99074d commit e922abe
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
24 changes: 24 additions & 0 deletions exporter/exporterhelper/exporterhelper.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package exporterhelper // import "go.opentelemetry.io/collector/exporter/exporterhelper"
import "go.opentelemetry.io/collector/exporter/internal"

// Request represents a single request that can be sent to an external endpoint.
// Experimental: This API is at the early stage of development and may change without backward compatibility
// until https://github.com/open-telemetry/opentelemetry-collector/issues/8122 is resolved.
type Request = internal.Request

// RequestErrorHandler is an optional interface that can be implemented by Request to provide a way handle partial
// temporary failures. For example, if some items failed to process and can be retried, this interface allows to
// return a new Request that contains the items left to be sent. Otherwise, the original Request should be returned.
// If not implemented, the original Request will be returned assuming the error is applied to the whole Request.
// Experimental: This API is at the early stage of development and may change without backward compatibility
// until https://github.com/open-telemetry/opentelemetry-collector/issues/8122 is resolved.
type RequestErrorHandler = internal.RequestErrorHandler

// extractPartialRequest returns a new Request that may contain the items left to be sent
// if only some items failed to process and can be retried. Otherwise, it returns the original Request.
func extractPartialRequest(req Request, err error) Request {
return internal.ExtractPartialRequest(req, err)
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package exporterhelper // import "go.opentelemetry.io/collector/exporter/exporterhelper"
package internal // import "go.opentelemetry.io/collector/exporter/internal"

import (
"context"
Expand Down Expand Up @@ -34,7 +34,7 @@ type RequestErrorHandler interface {

// extractPartialRequest returns a new Request that may contain the items left to be sent
// if only some items failed to process and can be retried. Otherwise, it returns the original Request.
func extractPartialRequest(req Request, err error) Request {
func ExtractPartialRequest(req Request, err error) Request {
if errReq, ok := req.(RequestErrorHandler); ok {
return errReq.OnError(err)
}
Expand Down

0 comments on commit e922abe

Please sign in to comment.