@@ -78,7 +78,7 @@ var hintExplainDmlWords = []string{"insert", "select", "update", "delete", "with
78
78
var hintExecDdlWords = []string {"alter" , "create" , "drop" , "set" }
79
79
80
80
// runSession starts a user session if not exists.
81
- func (s * ProcessingService ) runSession (ctx context.Context , user * usermanager.User , incomingMessage models.IncomingMessage ) error {
81
+ func (s * ProcessingService ) runSession (ctx context.Context , user * usermanager.User , incomingMessage models.IncomingMessage ) ( err error ) {
82
82
sMsg := models .NewMessage (incomingMessage )
83
83
84
84
if user .Session .Clone != nil {
@@ -104,11 +104,17 @@ func (s *ProcessingService) runSession(ctx context.Context, user *usermanager.Us
104
104
105
105
user .Session .PlatformSessionID = sessionID
106
106
107
+ defer func () {
108
+ if err != nil {
109
+ if failErr := s .messenger .Fail (sMsg , err .Error ()); failErr != nil {
110
+ log .Err (failErr )
111
+ }
112
+ }
113
+ }()
114
+
107
115
clone , err := s .createDBLabClone (ctx , user , sessionID )
108
116
if err != nil {
109
- s .messenger .Fail (sMsg , err .Error ())
110
-
111
- return err
117
+ return errors .Wrap (err , "failed to create a Database Lab clone" )
112
118
}
113
119
114
120
sMsg .AppendText (
@@ -120,7 +126,6 @@ func (s *ProcessingService) runSession(ctx context.Context, user *usermanager.Us
120
126
))
121
127
122
128
if err := s .messenger .UpdateText (sMsg ); err != nil {
123
- s .messenger .Fail (sMsg , err .Error ())
124
129
return errors .Wrap (err , "failed to append message with a foreword" )
125
130
}
126
131
@@ -142,15 +147,13 @@ func (s *ProcessingService) runSession(ctx context.Context, user *usermanager.Us
142
147
143
148
if s .config .Platform .HistoryEnabled && incomingMessage .SessionID == "" {
144
149
if err := s .createPlatformSession (ctx , user , sMsg .ChannelID ); err != nil {
145
- s .messenger .Fail (sMsg , err .Error ())
146
- return err
150
+ return errors .Wrap (err , "failed to create a platform session" )
147
151
}
148
152
}
149
153
150
154
sMsg .AppendText (fmt .Sprintf ("Session started: `%s`" , sessionID ))
151
155
152
156
if err := s .messenger .UpdateText (sMsg ); err != nil {
153
- s .messenger .Fail (sMsg , err .Error ())
154
157
return errors .Wrap (err , "failed to append message about session start" )
155
158
}
156
159
@@ -210,6 +213,11 @@ func (s *ProcessingService) createDBLabClone(ctx context.Context, user *usermana
210
213
211
214
clone .DB .Password = pwd
212
215
216
+ // To get an accessible address in case running the assistant inside a container.
217
+ if clone .DB .Host == "localhost" || clone .DB .Host == "127.0.0.1" {
218
+ clone .DB .Host = s .DBLab .URL ("" ).Hostname ()
219
+ }
220
+
213
221
return clone , nil
214
222
}
215
223
0 commit comments