Skip to content

Commit 0e31dc5

Browse files
committed
Fix deadlock in trackfile
1 parent 425097b commit 0e31dc5

2 files changed

Lines changed: 9 additions & 8 deletions

File tree

internal/application/parse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (a *app) parse(ctx context.Context, in <-chan Message[string], out chan<- M
2121
}
2222
}
2323

24-
// parseText parses a single transcribed transmission, publisgubg any successfully parsed requests to the output channel.
24+
// parseText parses a single transcribed transmission, publishing any successfully parsed requests to the output channel.
2525
func (a *app) parseText(ctx context.Context, text string, out chan<- Message[any]) {
2626
logger := log.Logger
2727
if a.enableTranscriptionLogging {

pkg/trackfiles/trackfile.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ func NewTrackfile(labels Labels) *Trackfile {
6363
}
6464

6565
func (t *Trackfile) String() string {
66-
point := t.LastKnown().Point
66+
frame := t.LastKnown()
6767
return fmt.Sprintf(
6868
"%d %s (%f.3, %f.3) %f.0 ft %f.0 kts %q",
6969
t.Contact.ID,
7070
t.Contact.ACMIName,
71-
point.Lon(),
72-
point.Lat(),
73-
t.LastKnown().Altitude.Feet(),
71+
frame.Point.Lon(),
72+
frame.Point.Lat(),
73+
frame.Altitude.Feet(),
7474
t.Speed().Knots(),
7575
t.Contact.Name,
7676
)
@@ -115,7 +115,8 @@ func (t *Trackfile) IsLastKnownPointZero() bool {
115115
}
116116

117117
func (t *Trackfile) bestAvailableDeclination() unit.Angle {
118-
declincation, err := bearings.Declination(t.LastKnown().Point, t.LastKnown().Time)
118+
latest := t.LastKnown()
119+
declincation, err := bearings.Declination(latest.Point, latest.Time)
119120
if err != nil {
120121
return 0
121122
}
@@ -128,10 +129,10 @@ func (t *Trackfile) bestAvailableDeclination() unit.Angle {
128129
func (t *Trackfile) Course() bearings.Bearing {
129130
t.lock.RLock()
130131
defer t.lock.RUnlock()
131-
if t.track.Len() < 2 {
132+
if t.track.Len() == 1 {
132133
return bearings.NewTrueBearing(
133134
unit.Angle(
134-
t.LastKnown().Heading,
135+
t.track.Front().Heading,
135136
) * unit.Degree,
136137
).Magnetic(t.bestAvailableDeclination())
137138
}

0 commit comments

Comments
 (0)