• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

snivilised / extendio / 6076382833

04 Sep 2023 05:45PM UTC coverage: 90.75% (-0.01%) from 90.76%
6076382833

push

github

plastikfan
ref(nav): move async cleanup to accelerator (314)

ref(nav): minor refactoring (314)

ref(nav): move async cleanup to accelerator (314)

60 of 60 new or added lines in 4 files covered. (100.0%)

2443 of 2692 relevant lines covered (90.75%)

3.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.98
/xfs/nav/navigator-abstract.go
1
package nav
2

3
import (
4
        "fmt"
5
        "io/fs"
6
        "strings"
7

8
        "github.com/google/uuid"
9
        "github.com/snivilised/extendio/internal/log"
10
        "github.com/snivilised/extendio/xfs/utils"
11
)
12

13
type navigator struct {
14
        o     *TraverseOptions
15
        agent *navigationAgent
16
        log   utils.RoProp[log.Logger]
17
}
18

19
func (n *navigator) options() *TraverseOptions {
4✔
20
        return n.o
4✔
21
}
4✔
22

23
func (n *navigator) ensync(frame *navigationFrame, ai *AsyncInfo) {
4✔
24
        decorated := frame.client
4✔
25
        decorator := &LabelledTraverseCallback{
4✔
26
                Label: "boost decorator",
4✔
27
                Fn: func(item *TraverseItem) error {
8✔
28
                        defer func() {
8✔
29
                                pe := recover()
4✔
30
                                if err, ok := pe.(error); !ok || !strings.Contains(err.Error(),
4✔
31
                                        "send on closed channel") {
8✔
32
                                        fmt.Printf("---> ☠️☠️☠️ ENSYNC-NAV-CALLBACK(panic on close): '%v' (err:'%v')\n",
4✔
33
                                                item.Path, pe,
4✔
34
                                        )
4✔
35
                                }
4✔
36
                        }()
37
                        fmt.Printf("---> 🐬 ENSYNC-NAV-CALLBACK: '%v' \n", item.Path)
4✔
38

4✔
39
                        var err error
4✔
40
                        select {
4✔
41
                        case <-ai.Context.Done():
×
42
                                err = fs.SkipDir
×
43
                        default:
4✔
44
                                job := TraverseItemJob{
4✔
45
                                        ID: fmt.Sprintf("JOB-ID:%v", uuid.NewString()),
4✔
46
                                        Input: TraverseItemInput{
4✔
47
                                                Item: item,
4✔
48
                                                Fn:   decorated.Fn,
4✔
49
                                        },
4✔
50
                                        SequenceNo: -999,
4✔
51
                                }
4✔
52

4✔
53
                                select {
4✔
54
                                case <-ai.Context.Done():
×
55
                                        err = fs.SkipDir
×
56

57
                                case ai.JobsChanOut <- job:
4✔
58
                                        //
4✔
59
                                        // intermittent panic: send on closed channel, in fastward resume scenarios
4✔
60
                                        // 'gr:observable-navigator'
4✔
61

4✔
62
                                        fmt.Printf("-->> 🍆🍆 sending job(%v)\n", job.ID)
4✔
63
                                }
64
                        }
65

66
                        return err
4✔
67
                },
68
        }
69

70
        frame.decorate("boost decorator", decorator)
4✔
71
}
72

73
func (n *navigator) logger() log.Logger {
4✔
74
        return n.log.Get()
4✔
75
}
4✔
76

77
func (n *navigator) descend(navi *NavigationInfo) {
4✔
78
        navi.Frame.periscope.descend()
4✔
79
        navi.Frame.notifiers.descend.invoke(navi.Item)
4✔
80
}
4✔
81

82
func (n *navigator) ascend(navi *NavigationInfo) {
4✔
83
        navi.Frame.periscope.ascend()
4✔
84
        navi.Frame.notifiers.ascend.invoke(navi.Item)
4✔
85
}
4✔
86

87
func (n *navigator) finish() error {
4✔
88
        return n.log.Get().Sync()
4✔
89
}
4✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc