Skip to content

Commit

Permalink
chore: Linking trace for event bus with HTTP request
Browse files Browse the repository at this point in the history
Signed-off-by: Vincent Boutour <[email protected]>
  • Loading branch information
ViBiOh committed Oct 8, 2022
1 parent 3461ed8 commit 1896436
Show file tree
Hide file tree
Showing 10 changed files with 24 additions and 13 deletions.
2 changes: 1 addition & 1 deletion pkg/crud/crud.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (a App) start(ctx context.Context) {
}

item = a.sanitizeName(ctx, item)
a.notify(provider.NewStartEvent(item))
a.notify(ctx, provider.NewStartEvent(item))

return nil
})
Expand Down
3 changes: 2 additions & 1 deletion pkg/crud/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/ViBiOh/fibr/pkg/provider"
"github.com/ViBiOh/httputils/v4/pkg/model"
"github.com/ViBiOh/httputils/v4/pkg/renderer"
"github.com/ViBiOh/httputils/v4/pkg/tracer"
)

// Delete given path from filesystem
Expand Down Expand Up @@ -47,7 +48,7 @@ func (a App) Delete(w http.ResponseWriter, r *http.Request, request provider.Req
provider.SetPrefsCookie(w, request)
}

go a.notify(provider.NewDeleteEvent(request, info, a.rendererApp))
go a.notify(tracer.CopyToBackground(ctx), provider.NewDeleteEvent(request, info, a.rendererApp))

a.rendererApp.Redirect(w, r, fmt.Sprintf("?d=%s", request.Display), renderer.NewSuccessMessage("%s successfully deleted", info.Name))
}
4 changes: 2 additions & 2 deletions pkg/crud/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (a App) handleFile(w http.ResponseWriter, r *http.Request, request provider
if query.GetBool(r, "browser") {
provider.SetPrefsCookie(w, request)

go a.notify(provider.NewAccessEvent(item, r))
go a.notify(tracer.CopyToBackground(r.Context()), provider.NewAccessEvent(item, r))

return a.browse(r.Context(), request, item, message)
}
Expand Down Expand Up @@ -127,7 +127,7 @@ func (a App) handleDir(w http.ResponseWriter, r *http.Request, request provider.
return errorReturn(request, err)
}

go a.notify(provider.NewAccessEvent(item, r))
go a.notify(tracer.CopyToBackground(r.Context()), provider.NewAccessEvent(item, r))

if query.GetBool(r, "search") {
return a.search(r, request, items)
Expand Down
3 changes: 2 additions & 1 deletion pkg/crud/post.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/ViBiOh/fibr/pkg/provider"
"github.com/ViBiOh/httputils/v4/pkg/model"
"github.com/ViBiOh/httputils/v4/pkg/renderer"
"github.com/ViBiOh/httputils/v4/pkg/tracer"
)

func parseMultipart(r *http.Request) (map[string]string, *multipart.Part, error) {
Expand Down Expand Up @@ -181,7 +182,7 @@ func (a App) handlePostDescription(w http.ResponseWriter, r *http.Request, reque
return
}

go a.notify(provider.NewDescriptionEvent(item, a.bestSharePath(item.Pathname), exif.Description, a.rendererApp))
go a.notify(tracer.CopyToBackground(ctx), provider.NewDescriptionEvent(item, a.bestSharePath(item.Pathname), exif.Description, a.rendererApp))

a.rendererApp.Redirect(w, r, fmt.Sprintf("?d=%s#%s", request.Display, item.ID), renderer.NewSuccessMessage("Description successfully edited"))
}
Expand Down
7 changes: 6 additions & 1 deletion pkg/crud/push.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package crud

import (
"context"

"github.com/ViBiOh/fibr/pkg/provider"
"github.com/ViBiOh/httputils/v4/pkg/logger"
"go.opentelemetry.io/otel/trace"
)

func (a App) notify(event provider.Event) {
func (a App) notify(ctx context.Context, event provider.Event) {
if a.pushEvent == nil {
return
}

event.TraceLink = trace.LinkFromContext(ctx)

if err := a.pushEvent(event); err != nil {
logger.Error("push event %+v: %s", event, err)
}
Expand Down
8 changes: 5 additions & 3 deletions pkg/crud/regenerate.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package crud

import (
"context"
"errors"
"net/http"

Expand All @@ -9,6 +10,7 @@ import (
"github.com/ViBiOh/httputils/v4/pkg/logger"
"github.com/ViBiOh/httputils/v4/pkg/model"
"github.com/ViBiOh/httputils/v4/pkg/renderer"
"github.com/ViBiOh/httputils/v4/pkg/tracer"
)

func (a App) regenerate(w http.ResponseWriter, r *http.Request, request provider.Request) {
Expand All @@ -33,15 +35,15 @@ func (a App) regenerate(w http.ResponseWriter, r *http.Request, request provider
return
}

go func() {
go func(ctx context.Context) {
err := a.storageApp.Walk(ctx, pathname, func(item absto.Item) error {
a.notify(provider.NewRestartEvent(item, subset))
a.notify(ctx, provider.NewRestartEvent(item, subset))
return nil
})
if err != nil {
logger.Error("error during regenerate of `%s`: %s", pathname, err)
}
}()
}(tracer.CopyToBackground(ctx))

a.rendererApp.Redirect(w, r, "?stats", renderer.NewSuccessMessage("Regeneration of %s in progress...", subset))
}
3 changes: 2 additions & 1 deletion pkg/crud/rename.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/ViBiOh/fibr/pkg/provider"
"github.com/ViBiOh/httputils/v4/pkg/model"
"github.com/ViBiOh/httputils/v4/pkg/renderer"
"github.com/ViBiOh/httputils/v4/pkg/tracer"
)

func (a App) doRename(ctx context.Context, oldPath, newPath string, oldItem absto.Item) (absto.Item, error) {
Expand All @@ -23,7 +24,7 @@ func (a App) doRename(ctx context.Context, oldPath, newPath string, oldItem abst
return absto.Item{}, fmt.Errorf("get info of new item: %w", err)
}

go a.notify(provider.NewRenameEvent(oldItem, newItem, a.bestSharePath(newPath), a.rendererApp))
go a.notify(tracer.CopyToBackground(ctx), provider.NewRenameEvent(oldItem, newItem, a.bestSharePath(newPath), a.rendererApp))

return newItem, nil
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/crud/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (a App) saveUploadedFile(ctx context.Context, request provider.Request, inp
if info, infoErr := a.storageApp.Info(ctx, filePath); infoErr != nil {
logger.Error("get info for upload event: %s", infoErr)
} else {
a.notify(provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp))
a.notify(ctx, provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp))
}
}(tracer.CopyToBackground(ctx))
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/crud/upload_chunk.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func (a App) mergeChunk(w http.ResponseWriter, r *http.Request, request provider
if info, infoErr := a.storageApp.Info(ctx, filePath); infoErr != nil {
logger.Error("get info for upload event: %s", infoErr)
} else {
a.notify(provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp))
a.notify(ctx, provider.NewUploadEvent(request, info, a.bestSharePath(filePath), a.rendererApp))
}
}(tracer.CopyToBackground(ctx))
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/provider/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ type Event struct {
ShareableURL string `json:"shareable_url,omitempty"`
Item absto.Item `json:"item"`
Type EventType `json:"type"`
TraceLink trace.Link `json:"-"`
}

// IsForcedFor check if event is forced for given key
Expand Down Expand Up @@ -330,7 +331,7 @@ func (e EventBus) Start(ctx context.Context, storageApp absto.Storage, renamers
}()

for event := range e.bus {
ctx, end := tracer.StartSpan(context.Background(), e.tracer, "event", trace.WithAttributes(attribute.String("type", event.Type.String())))
ctx, end := tracer.StartSpan(context.Background(), e.tracer, "event", trace.WithAttributes(attribute.String("type", event.Type.String())), trace.WithLinks(event.TraceLink))

if event.Type == RenameEvent && event.Item.IsDir {
RenameDirectory(ctx, storageApp, renamers, event.Item, *event.New)
Expand Down

0 comments on commit 1896436

Please sign in to comment.