File tree Expand file tree Collapse file tree 3 files changed +48
-12
lines changed Expand file tree Collapse file tree 3 files changed +48
-12
lines changed Original file line number Diff line number Diff line change 6
6
runs-on : ubuntu-latest
7
7
strategy :
8
8
matrix :
9
- go-version : [1.17 .x]
9
+ go-version : [1.20 .x]
10
10
name : Build with Go ${{ matrix.go-version }}
11
11
steps :
12
12
- name : Checkout repository
@@ -21,13 +21,15 @@ jobs:
21
21
stable : false
22
22
go-version : ${{ matrix.go-version }}
23
23
24
- - name : Install staticcheck
25
- run : go get honnef.co/go/tools/cmd/staticcheck@2022.1.3
24
+ - name : Run vet
25
+ run : go vet ./...
26
26
27
- - name : Run linters
28
- run : |
29
- go vet ./...
30
- staticcheck ./...
27
+ - name : Run staticcheck
28
+ uses : dominikh/staticcheck-action@v1.3.0
29
+ with :
30
+ version : " 2023.1.2"
31
+ install-go : false
32
+ cache-key : ${{ matrix.go-version }}
31
33
32
34
- name : Run tests
33
35
run : go test -v ./...
Original file line number Diff line number Diff line change @@ -735,14 +735,15 @@ func (s *LineSender) At(ctx context.Context, ts int64) error {
735
735
err := s .lastErr
736
736
s .lastErr = nil
737
737
if err != nil {
738
- // Discard the partially written message.
739
- s .buf .Truncate (s .lastMsgPos )
738
+ s .discardPendingMsg ()
740
739
return err
741
740
}
742
741
if ! s .hasTable {
742
+ s .discardPendingMsg ()
743
743
return fmt .Errorf ("table name was not provided: %w" , ErrInvalidMsg )
744
744
}
745
745
if ! s .hasTags && ! s .hasFields {
746
+ s .discardPendingMsg ()
746
747
return fmt .Errorf ("no symbols or columns were provided: %w" , ErrInvalidMsg )
747
748
}
748
749
@@ -753,9 +754,7 @@ func (s *LineSender) At(ctx context.Context, ts int64) error {
753
754
s .buf .WriteByte ('\n' )
754
755
755
756
s .lastMsgPos = s .buf .Len ()
756
- s .hasTable = false
757
- s .hasTags = false
758
- s .hasFields = false
757
+ s .resetMsgFlags ()
759
758
760
759
if s .buf .Len () > s .bufCap {
761
760
return s .Flush (ctx )
@@ -776,8 +775,13 @@ func (s *LineSender) Flush(ctx context.Context) error {
776
775
err := s .lastErr
777
776
s .lastErr = nil
778
777
if err != nil {
778
+ s .discardPendingMsg ()
779
779
return err
780
780
}
781
+ if s .hasTable {
782
+ s .discardPendingMsg ()
783
+ return errors .New ("pending ILP message must be finalized with At or AtNow before calling Flush" )
784
+ }
781
785
782
786
if err = ctx .Err (); err != nil {
783
787
return err
@@ -804,6 +808,17 @@ func (s *LineSender) Flush(ctx context.Context) error {
804
808
return nil
805
809
}
806
810
811
+ func (s * LineSender ) discardPendingMsg () {
812
+ s .buf .Truncate (s .lastMsgPos )
813
+ s .resetMsgFlags ()
814
+ }
815
+
816
+ func (s * LineSender ) resetMsgFlags () {
817
+ s .hasTable = false
818
+ s .hasTags = false
819
+ s .hasFields = false
820
+ }
821
+
807
822
// Messages returns a copy of accumulated ILP messages that are not
808
823
// flushed to the TCP connection yet. Useful for debugging purposes.
809
824
func (s * LineSender ) Messages () string {
Original file line number Diff line number Diff line change @@ -309,6 +309,7 @@ func TestErrorOnLengthyNames(t *testing.T) {
309
309
310
310
err = tc .writerFn (sender )
311
311
assert .ErrorContains (t , err , tc .expectedErrMsg )
312
+ assert .Empty (t , sender .Messages ())
312
313
313
314
sender .Close ()
314
315
srv .close ()
@@ -519,6 +520,24 @@ func TestErrorOnSymbolCallAfterColumn(t *testing.T) {
519
520
}
520
521
}
521
522
523
+ func TestErrorOnFlushWhenMessageIsPending (t * testing.T ) {
524
+ ctx := context .Background ()
525
+
526
+ srv , err := newTestServer (readAndDiscard )
527
+ assert .NoError (t , err )
528
+ defer srv .close ()
529
+
530
+ sender , err := qdb .NewLineSender (ctx , qdb .WithAddress (srv .addr ))
531
+ assert .NoError (t , err )
532
+ defer sender .Close ()
533
+
534
+ sender .Table (testTable )
535
+ err = sender .Flush (ctx )
536
+
537
+ assert .ErrorContains (t , err , "pending ILP message must be finalized with At or AtNow before calling Flush" )
538
+ assert .Empty (t , sender .Messages ())
539
+ }
540
+
522
541
func TestInvalidMessageGetsDiscarded (t * testing.T ) {
523
542
ctx := context .Background ()
524
543
You can’t perform that action at this time.
0 commit comments