@@ -235,6 +235,10 @@ const (
235
235
// Defines the per-server socket pool limit. Defaults to 4096.
236
236
// See Session.SetPoolLimit for details.
237
237
//
238
+ // appName=<appName>
239
+ //
240
+ // The identifier of the client application which ran the operation. This
241
+ // param can't exceed 128 bytes
238
242
//
239
243
// Relevant documentation:
240
244
//
@@ -279,6 +283,7 @@ func ParseURL(url string) (*DialInfo, error) {
279
283
source := ""
280
284
setName := ""
281
285
poolLimit := 0
286
+ appName := ""
282
287
readPreferenceMode := Primary
283
288
var readPreferenceTagSets []bson.D
284
289
for _ , opt := range uinfo .options {
@@ -296,6 +301,11 @@ func ParseURL(url string) (*DialInfo, error) {
296
301
if err != nil {
297
302
return nil , errors .New ("bad value for maxPoolSize: " + opt .value )
298
303
}
304
+ case "appName" :
305
+ if len (opt .value ) > 128 {
306
+ return nil , errors .New ("appName too long, must be < 128 bytes: " + opt .value )
307
+ }
308
+ appName = opt .value
299
309
case "readPreference" :
300
310
switch opt .value {
301
311
case "nearest" :
@@ -350,6 +360,7 @@ func ParseURL(url string) (*DialInfo, error) {
350
360
Service : service ,
351
361
Source : source ,
352
362
PoolLimit : poolLimit ,
363
+ AppName : appName ,
353
364
ReadPreference : & ReadPreference {
354
365
Mode : readPreferenceMode ,
355
366
TagSets : readPreferenceTagSets ,
@@ -409,6 +420,9 @@ type DialInfo struct {
409
420
// See Session.SetPoolLimit for details.
410
421
PoolLimit int
411
422
423
+ // The identifier of the client application which ran the operation.
424
+ AppName string
425
+
412
426
// ReadPreference defines the manner in which servers are chosen. See
413
427
// Session.SetMode and Session.SelectServers.
414
428
ReadPreference * ReadPreference
@@ -472,7 +486,7 @@ func DialWithInfo(info *DialInfo) (*Session, error) {
472
486
}
473
487
addrs [i ] = addr
474
488
}
475
- cluster := newCluster (addrs , info .Direct , info .FailFast , dialer {info .Dial , info .DialServer }, info .ReplicaSetName )
489
+ cluster := newCluster (addrs , info .Direct , info .FailFast , dialer {info .Dial , info .DialServer }, info .ReplicaSetName , info . AppName )
476
490
session := newSession (Eventual , cluster , info .Timeout )
477
491
session .defaultdb = info .Database
478
492
if session .defaultdb == "" {
0 commit comments