Skip to content

Commit 7d67a78

Browse files
committed
message
1 parent 8e39bb2 commit 7d67a78

File tree

3 files changed

+73
-27
lines changed

3 files changed

+73
-27
lines changed

connection.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -661,13 +661,15 @@ func (conn *Connection) runReconnects(ctx context.Context) error {
661661

662662
select {
663663
case <-ctx.Done():
664+
// Since the context is cancelled, we don't need to do anything.
665+
// Conn.connect() will return the correct error.
664666
case <-t.C:
665667
}
666668

667669
conn.mutex.Lock()
668670
}
669671

670-
conn.logEvent(LastReconnectFailedEvent{
672+
conn.logEvent(ReconnectFailedEvent{
671673
baseEvent: newBaseEvent(conn.addr),
672674
Error: err,
673675
})

connection_events.go

Lines changed: 68 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package tarantool
22

33
import (
4+
"fmt"
45
"log/slog"
56
"net"
67
"time"
78
)
89

910
type LogEvent interface {
1011
EventName() string
12+
Message() string
1113
LogLevel() slog.Level
1214
LogAttrs() []slog.Attr
1315
}
@@ -41,14 +43,35 @@ type ReconnectFailedEvent struct {
4143
MaxReconnects uint
4244
Error error
4345
IsInitial bool
46+
IsLast bool
47+
}
48+
49+
func (e ReconnectFailedEvent) EventName() string {
50+
if e.IsLast {
51+
return "last_reconnect_failed"
52+
}
53+
return "reconnect_failed"
54+
}
55+
56+
func (e ReconnectFailedEvent) Message() string {
57+
if e.IsInitial {
58+
if e.IsLast {
59+
return "Initial connection failed, giving up"
60+
}
61+
return "Initial connection failed"
62+
}
63+
if e.IsLast {
64+
return "Last reconnect attempt failed, giving up"
65+
}
66+
return "Reconnect attempt failed"
4467
}
4568

46-
func (e ReconnectFailedEvent) EventName() string { return "reconnect_failed" }
4769
func (e ReconnectFailedEvent) LogLevel() slog.Level { return slog.LevelError }
4870
func (e ReconnectFailedEvent) LogAttrs() []slog.Attr {
4971
attrs := e.baseAttrs()
5072
attrs = append(attrs,
5173
slog.String("event", e.EventName()),
74+
slog.String("message", e.Message()),
5275
slog.Uint64("reconnects", uint64(e.Reconnects)),
5376
slog.Uint64("max_reconnects", uint64(e.MaxReconnects)),
5477
slog.String("error", e.Error.Error()),
@@ -57,28 +80,15 @@ func (e ReconnectFailedEvent) LogAttrs() []slog.Attr {
5780
return attrs
5881
}
5982

60-
type LastReconnectFailedEvent struct {
61-
baseEvent
62-
Error error
63-
}
64-
65-
func (e LastReconnectFailedEvent) EventName() string { return "last_reconnect_failed" }
66-
func (e LastReconnectFailedEvent) LogLevel() slog.Level { return slog.LevelError }
67-
func (e LastReconnectFailedEvent) LogAttrs() []slog.Attr {
68-
attrs := e.baseAttrs()
69-
attrs = append(attrs,
70-
slog.String("event", e.EventName()),
71-
slog.String("error", e.Error.Error()),
72-
)
73-
return attrs
74-
}
75-
7683
type UnexpectedResultIdEvent struct {
7784
baseEvent
7885
RequestId uint32
7986
}
8087

81-
func (e UnexpectedResultIdEvent) EventName() string { return "unexpected_result_id" }
88+
func (e UnexpectedResultIdEvent) EventName() string { return "unexpected_result_id" }
89+
func (e UnexpectedResultIdEvent) Message() string {
90+
return fmt.Sprintf("Received response with unexpected request ID %d", e.RequestId)
91+
}
8292
func (e UnexpectedResultIdEvent) LogLevel() slog.Level { return slog.LevelWarn }
8393
func (e UnexpectedResultIdEvent) LogAttrs() []slog.Attr {
8494
attrs := e.baseAttrs()
@@ -94,7 +104,10 @@ type WatchEventReadFailedEvent struct {
94104
Error error
95105
}
96106

97-
func (e WatchEventReadFailedEvent) EventName() string { return "watch_event_read_failed" }
107+
func (e WatchEventReadFailedEvent) EventName() string { return "watch_event_read_failed" }
108+
func (e WatchEventReadFailedEvent) Message() string {
109+
return fmt.Sprintf("Failed to parse watch event: %s", e.Error)
110+
}
98111
func (e WatchEventReadFailedEvent) LogLevel() slog.Level { return slog.LevelWarn }
99112
func (e WatchEventReadFailedEvent) LogAttrs() []slog.Attr {
100113
attrs := e.baseAttrs()
@@ -110,7 +123,10 @@ type BoxSessionPushUnsupportedEvent struct {
110123
RequestId uint32
111124
}
112125

113-
func (e BoxSessionPushUnsupportedEvent) EventName() string { return "box_session_push_unsupported" }
126+
func (e BoxSessionPushUnsupportedEvent) EventName() string { return "box_session_push_unsupported" }
127+
func (e BoxSessionPushUnsupportedEvent) Message() string {
128+
return fmt.Sprintf("Unsupported box.session.push() for request %d", e.RequestId)
129+
}
114130
func (e BoxSessionPushUnsupportedEvent) LogLevel() slog.Level { return slog.LevelWarn }
115131
func (e BoxSessionPushUnsupportedEvent) LogAttrs() []slog.Attr {
116132
attrs := e.baseAttrs()
@@ -126,7 +142,13 @@ type ConnectedEvent struct {
126142
Reconnects uint
127143
}
128144

129-
func (e ConnectedEvent) EventName() string { return "connected" }
145+
func (e ConnectedEvent) EventName() string { return "connected" }
146+
func (e ConnectedEvent) Message() string {
147+
if e.Reconnects == 0 {
148+
return "Connected to Tarantool"
149+
}
150+
return "Reconnected to Tarantool"
151+
}
130152
func (e ConnectedEvent) LogLevel() slog.Level { return slog.LevelInfo }
131153
func (e ConnectedEvent) LogAttrs() []slog.Attr {
132154
attrs := e.baseAttrs()
@@ -142,7 +164,13 @@ type DisconnectedEvent struct {
142164
Reason error
143165
}
144166

145-
func (e DisconnectedEvent) EventName() string { return "disconnected" }
167+
func (e DisconnectedEvent) EventName() string { return "disconnected" }
168+
func (e DisconnectedEvent) Message() string {
169+
if e.Reason != nil {
170+
return fmt.Sprintf("Disconnected from Tarantool: %s", e.Reason)
171+
}
172+
return "Disconnected from Tarantool"
173+
}
146174
func (e DisconnectedEvent) LogLevel() slog.Level { return slog.LevelWarn }
147175
func (e DisconnectedEvent) LogAttrs() []slog.Attr {
148176
attrs := e.baseAttrs()
@@ -169,6 +197,7 @@ type ClosedEvent struct {
169197
}
170198

171199
func (e ClosedEvent) EventName() string { return "closed" }
200+
func (e ClosedEvent) Message() string { return "Connection closed" }
172201
func (e ClosedEvent) LogLevel() slog.Level { return slog.LevelInfo }
173202
func (e ClosedEvent) LogAttrs() []slog.Attr {
174203
attrs := e.baseAttrs()
@@ -183,7 +212,19 @@ type ConnectionPoolEvent struct {
183212
Event string
184213
}
185214

186-
func (e ConnectionPoolEvent) EventName() string { return "connection_pool_" + e.Event }
215+
func (e ConnectionPoolEvent) EventName() string { return "connection_pool_" + e.Event }
216+
func (e ConnectionPoolEvent) Message() string {
217+
switch e.Event {
218+
case "added":
219+
return "Connection added to pool"
220+
case "removed":
221+
return "Connection removed from pool"
222+
case "full":
223+
return "Connection pool is full"
224+
default:
225+
return "Connection pool event: " + e.Event
226+
}
227+
}
187228
func (e ConnectionPoolEvent) LogLevel() slog.Level { return slog.LevelInfo }
188229
func (e ConnectionPoolEvent) LogAttrs() []slog.Attr {
189230
attrs := e.baseAttrs()
@@ -202,7 +243,10 @@ type TimeoutEvent struct {
202243
Timeout time.Duration
203244
}
204245

205-
func (e TimeoutEvent) EventName() string { return "timeout" }
246+
func (e TimeoutEvent) EventName() string { return "timeout" }
247+
func (e TimeoutEvent) Message() string {
248+
return fmt.Sprintf("Request %d timed out after %s", e.RequestId, e.Timeout)
249+
}
206250
func (e TimeoutEvent) LogLevel() slog.Level { return slog.LevelWarn }
207251
func (e TimeoutEvent) LogAttrs() []slog.Attr {
208252
attrs := e.baseAttrs()

logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func (l SlogLogger) Report(event LogEvent, conn *Connection) {
5757
}
5858
}
5959

60-
l.logger.LogAttrs(l.ctx, event.LogLevel(), event.EventName(), attrs...)
60+
l.logger.LogAttrs(l.ctx, event.LogLevel(), event.Message(), attrs...)
6161
}
6262

6363
type SimpleLogger struct{}
@@ -70,7 +70,7 @@ func (l SimpleLogger) Report(event LogEvent, conn *Connection) {
7070
addrStr = event.Addr().String()
7171
}
7272

73-
log.Printf("[%s] %s (addr: %s)", event.LogLevel(), event.EventName(), addrStr)
73+
log.Printf("[%s] %s (addr: %s)", event.LogLevel(), event.Message(), addrStr)
7474

7575
for _, attr := range attrs {
7676
if attr.Key == "error" {

0 commit comments

Comments
 (0)