6 Commits

Author SHA1 Message Date
xuu
a3ee0b7900 fix: return on errors
All checks were successful
Go Bump / bump (push) Successful in 46s
Go Test / test (push) Successful in 52s
Deploy / deploy (push) Successful in 1m42s
2023-10-07 18:11:35 -06:00
xuu
114c7101d6 fix: add debug levels
All checks were successful
Go Bump / bump (push) Successful in 43s
Go Test / test (push) Successful in 49s
Deploy / deploy (push) Successful in 1m42s
2023-10-07 17:57:09 -06:00
xuu
41476d04a2 fix: null pointer when unable to startu peerfinder
All checks were successful
Go Bump / bump (push) Successful in 30s
Go Test / test (push) Successful in 43s
Deploy / deploy (push) Successful in 1m25s
2023-10-02 11:26:14 -06:00
xuu
a5780449fc fix: error
All checks were successful
Go Bump / bump (push) Successful in 46s
Go Test / test (push) Successful in 1m1s
Deploy / deploy (push) Successful in 2m8s
2023-10-01 17:18:28 -06:00
xuu
4784c1c380 fix: error
All checks were successful
Go Bump / bump (push) Successful in 34s
Go Test / test (push) Successful in 46s
Deploy / deploy (push) Successful in 1m44s
2023-10-01 17:06:24 -06:00
xuu
6bb1d524b9 fix: error
All checks were successful
Go Bump / bump (push) Successful in 43s
Go Test / test (push) Successful in 56s
2023-10-01 16:56:28 -06:00
6 changed files with 28 additions and 13 deletions

View File

@@ -5,7 +5,7 @@ After=syslog.target network.target
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/local/bin/ev ExecStart=/usr/local/bin/ev
User=www-data
Restart=always Restart=always
RestartSec=30 RestartSec=30

View File

@@ -10,12 +10,12 @@
owner: root owner: root
group: root group: root
- name: Copy build to remote # - name: Copy build to remote
ansible.builtin.copy: # ansible.builtin.copy:
src: ev.service # src: ev.service
dest: /etc/systemd/system/ev.service # dest: /etc/systemd/system/ev.service
owner: root # owner: root
group: root # group: root
- name: Restart service - name: Restart service
systemd: systemd:

View File

@@ -1,6 +1,8 @@
name: Deploy name: Deploy
on: on:
push:
branches: [ "main" ]
release: release:
types: [ published ] types: [ published ]

View File

@@ -206,6 +206,7 @@ func (s *service) getPending(w http.ResponseWriter, r *http.Request, peerID stri
if err != nil && !errors.Is(err, ev.ErrNotFound) { if err != nil && !errors.Is(err, ev.ErrNotFound) {
span.RecordError(fmt.Errorf("peer not found: %w", err)) span.RecordError(fmt.Errorf("peer not found: %w", err))
w.WriteHeader(http.StatusNotFound) w.WriteHeader(http.StatusNotFound)
return
} }
var req *Request var req *Request
@@ -223,6 +224,7 @@ func (s *service) getPending(w http.ResponseWriter, r *http.Request, peerID stri
if req == nil { if req == nil {
span.RecordError(fmt.Errorf("request not found")) span.RecordError(fmt.Errorf("request not found"))
w.WriteHeader(http.StatusNoContent) w.WriteHeader(http.StatusNoContent)
return
} }
negotiator := contentnegotiation.NewNegotiator("application/json", "text/environment", "text/plain", "text/html") negotiator := contentnegotiation.NewNegotiator("application/json", "text/environment", "text/plain", "text/html")
@@ -304,7 +306,7 @@ func (s *service) getResults(w http.ResponseWriter, r *http.Request) {
sort.Sort(sort.Reverse(requests)) sort.Sort(sort.Reverse(requests))
args := requestArgs(r) args := requestArgs(r)
args.Requests = requests[:maxResults] args.Requests = requests[:min(maxResults, len(requests))]
s.state.Use(ctx, func(ctx context.Context, state *state) error { s.state.Use(ctx, func(ctx context.Context, state *state) error {
args.CountPeers = len(state.peers) args.CountPeers = len(state.peers)
@@ -451,6 +453,7 @@ func (s *service) postResult(w http.ResponseWriter, r *http.Request, reqID strin
if err != nil { if err != nil {
span.RecordError(fmt.Errorf("peer not found: %w", err)) span.RecordError(fmt.Errorf("peer not found: %w", err))
w.WriteHeader(http.StatusNotFound) w.WriteHeader(http.StatusNotFound)
return
} }
if peerResults.Has(reqID) { if peerResults.Has(reqID) {

View File

@@ -91,17 +91,17 @@ func (s *service) Run(ctx context.Context) (err error) {
subRes, e := s.es.EventStream().Subscribe(ctx, queueResults, 0) subRes, e := s.es.EventStream().Subscribe(ctx, queueResults, 0)
errs = multierr.Append(errs, e) errs = multierr.Append(errs, e)
if errs != nil {
return errs
}
defer func() { defer func() {
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)
defer cancel() defer cancel()
err = multierr.Combine(subReq.Close(ctx), subRes.Close(ctx), err) err = multierr.Combine(err, subReq.Close(ctx), subRes.Close(ctx))
}() }()
if errs != nil {
return errs
}
for { for {
var events event.Events var events event.Events
select { select {

View File

@@ -4,10 +4,13 @@ import (
"context" "context"
"errors" "errors"
"log" "log"
"log/slog"
"net/http" "net/http"
"os" "os"
"os/signal" "os/signal"
"strconv"
"go.sour.is/pkg/env"
"go.sour.is/pkg/lg" "go.sour.is/pkg/lg"
"go.sour.is/pkg/service" "go.sour.is/pkg/service"
) )
@@ -27,6 +30,13 @@ func main() {
} }
} }
func run(ctx context.Context) error { func run(ctx context.Context) error {
// TODO: make this configurable.
level := slog.LevelError
if ok, _ := strconv.ParseBool(env.Default("LOG_DEBUG", "FALSE")); ok {
level = slog.LevelDebug
}
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})))
svc := &service.Harness{} svc := &service.Harness{}
ctx, stop := lg.Init(ctx, appName) ctx, stop := lg.Init(ctx, appName)
svc.OnStop(stop) svc.OnStop(stop)