mongodb-user
[Arriba] [Todas las Listas]

[mongodb-Usuario] Re: C# Conductor 2.0.1 bug: timeout cuándo authentica

To: mongodb-user <mongodb-user@xxxxxxxxxxxxxxxx>
Subject: [mongodb-Usuario] Re: C# Conductor 2.0.1 bug: timeout cuándo authenticating con nulo credentials
From: Craig Wilson <craig.wilson@xxxxxxxxxxx>
Date: Tue, 15 Sep 2015 12:56:10 -0700 (PDT)
Delivery-date: Tue, 15 Sep 2015 16:07:38 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=date:from:to:message-id:in-reply-to:references:subject:mime-version :content-type:x-original-sender:reply-to:precedence:mailing-list :list-id:x-spam-checked-in-group:list-post:list-help:list-archive :sender:list-subscribe:list-unsubscribe; bh=WF6IYQaic/fwHxaJRoTRBScGOEYNWm2fNDooe/f8TAY=; b=LjiNy018VPMxZ6uwgyTcLlPmniEK1tWFr0eeV7bgvpthLm+pcU+oV3WC6yhaDKAdIK ACtHxRnyJoPNvFPn9O8p3NN+oi6jhlKJPSLadpCWyxZt8bC0hWekO0A3LE+d/HeMqUvs T4mR/F9Fd3O7A6fFioNrzlVS5ygUNXy1pLBSdpKNd0Mm8UxkvbckP0ZTccw0UtLNFLXj HJrrmii856JkEp2Haw36sbQUI999P37w+FjyftLgZ8AYGh4t4CSFGibo+itrSeHfVXG/ 2BeXYNw5mz4bZOU8FC3D1XneW6eCH8rASojIesg+BWVIlLXv0R2pJqHDYXsX3bNOs1oL EXLA==
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mongodb.com; s=google; h=date:from:to:message-id:in-reply-to:references:subject:mime-version :content-type:x-original-sender:reply-to:precedence:mailing-list :list-id:x-spam-checked-in-group:list-post:list-help:list-archive :sender:list-subscribe:list-unsubscribe; bh=WF6IYQaic/fwHxaJRoTRBScGOEYNWm2fNDooe/f8TAY=; b=YGmT5QQnCJtyDy21bzVXb5T8xXNbrJxj7+vZ+uYQfT0pPSZiH/bv0gCKaiUus/jvXX XG5ZRNb6AU6QT14xIYMLZognHSNjijey+hle/JiVwv7MAahF4mWb1ep9fMeJXNfkeTbD SAFo7K1PbPZW8G3+d4jUk9JdBQxW17fsinuMk=
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <7285f26b-1818-492c-8a59-577706578c07@googlegroups.com>
List-archive: <http://groups.google.com/group/mongodb-use>
List-help: <http://groups.google.com/support/>, <mailto:mongodb-user+help@googlegroups.com>
List-id: <mongodb-user.googlegroups.com>
List-post: <http://groups.google.com/group/mongodb-user/post>, <mailto:mongodb-user@googlegroups.com>
List-subscribe: <http://groups.google.com/group/mongodb-user/subscribe>, <mailto:mongodb-user+subscribe@googlegroups.com>
List-unsubscribe: <mailto:googlegroups-manage+1044811755470+unsubscribe@googlegroups.com>, <http://groups.google.com/group/mongodb-user/subscribe>
Mailing-list: list mongodb-user@xxxxxxxxxxxxxxxx; contact mongodb-user+owners@xxxxxxxxxxxxxxxx
References: <baaae090-47e0-42f8-914d-c8c3a91a6023@googlegroups.com> <2511ab8b-f00f-4983-b0ff-5bb7f61b8600@googlegroups.com> <7285f26b-1818-492c-8a59-577706578c07@googlegroups.com>
Reply-to: mongodb-user@xxxxxxxxxxxxxxxx
Sender: mongodb-user@xxxxxxxxxxxxxxxx
Mike, con el 2.0.*x  Versión del conductor, puedes todavía puesto 
este poniendo. Mi *apologies cuando no realicé esto no fue expuesto en 2.0.*x. 
 Puedes utilizar el 
[*ClusterConfigurator](*https://*github.*com/*mongodb/*mongo-*csharp-Conductor/*blob/*v2.0.1/*src/*MongoDB.Conductor/*MongoClientSettings.*cs#*L97) 
propiedad para poner esto en el *underlying grupo *settings.

*var *settings = Nuevo *MongoClientSettings
    #unknown{^*ClusterConfigurator = *cb => *cb.*ConfigureCluster(*settings => 
*settings.Con(*serverSelectionTimeout: *TimeSpan.*FromSeconds(5)));
};


Con respecto a rendimiento con nodo,  no equivocación que hay diferencia 
de rendimiento de esto. Los conductores sencillamente *behave *differently. Es probablemente 
.La RED ha realizado el fallado *authentication tan rápido pero está decidiendo hacer algo diferente con aquel conocimiento según el [*server 
especificación 
de selección](*https://*github.*com/*mongodb/Especificaciones/*blob/fuente/maestra/*server-selección/*server-selección.*rst#*server-Selección-errores). 
Recientemente ha sido cambiado, yo justo *noticed, para incorporar una salida temprana 
si todos los errores de cada *server es exactamente igual. He archivado 
[*CSHARP-1415](*https://*jira.*mongodb.*org/*browse/*CSHARP-1415) a pista esto 
consiguiendo completado. No será en 2.1 y lo he planificado para 2.2, pero 
desde entonces es un no-cambio de API, podemos ser capaces a *backport a 2.1.1.

También, yo *noticed te no está comparando manzanas a manzanas aquí. En el .Versión 
NETA, has colocado el *credentials en la cadena de conexión, pero no tan 
en el conductor de nodo. No estoy diciéndolo hará una diferencia aun así


En martes, septiembre 15, 2015 en 2:26:28 PM *UTC-5, *Mika *Ryynänen escribió:
>
>
> Hola Craig,
>
> soy seguro eres bien que casos complejos con múltiple *servers, 
> *clustering *etc. Puede ser problemático de manejar. Es grande que 2.1 conductor 
>  haber *ServerSelectionTimeout poniendo, pero pienso que es una culpa de diseño 
> si el conductor tiene que confiar en un *timeout para detectar nulo *credentials. Justo 
> para comparación hice un programa de prueba rápido con el *Javascript conductor. Aquí 
> es los resultados compararon:
>
> *C:\*Temp>nodo *auth #default{^[*MongoError: *Authentication falló.]
>   Nombre: '*MongoError',
>   mensaje: '*Authentication falló.',
>   *ok: 0,
>   código: 18,
>   *errmsg: '*Authentication falló.' }
> *auth: 40*ms
>
> *C:\*Temp>*csharp
> Un *timeout *occured después de 30000*ms seleccionando un *server utilizando 
> *CompositeServerSelecto
> Hecho en 30014 *ms!
>
> Si tuve la 2.1 versión del *C# el conductor disponible podría utilizar 
> *ServerSelectionTimeout, pero todavía el *Javascript el conductor maneja este caso 
> mejor. Aquí es las aplicaciones de prueba utilicé. Son mayoritariamente igual, 
> la diferencia principal es que *C# el conductor requiere una orden (*ListCollectionsAsync) 
> para actuar el *authentication y *Javascript  él inmediatamente cuándo 
> *authenticate es llamado.
>
> *Javascript: *http://*pastebin.*com/8*rKrbyw7
> *C#: *http://*pastebin.*com/6*twqChrc
>
> soy seguro hay alguna manera de emparejar rendimiento del *C# conductor con el 
> *Javascript versión.. Incluso pensaba de utilizar *runCommand con *saslStart 
> a mano pero que sonidos como demasiado trabajo para #un cosa tan sencilla. En 
> el fin *ServerSelectionTimeout en 2.1 conductor es probablemente bien bastante solución :)
>
> *Thanks! 
> *Mika
>
> *tiistai 15. *syyskuuta 2015 16.20.15 *UTC+3 Craig Wilson *kirjoitti:
>>
>> *Hi *mikar,
>>
>> El *bug el reportero es libre y abierto. Todo necesitas es una cuenta para utilizarlo. 
>> Aquel ser dicho, esto no es un *bug en el sentido que esto es *behaving cuando 
>> diseñado. Ciertamente lo podrías desear a *behave *differently y tenemos y está 
>> considerando cómo para manejar levantando un más *suitable excepción. Mucho de las 
>> raíces de problema del hecho que podemos ser conectados a más que un 
>> *server, tan hay una posibilidad que eras con éxito capaz a *login a 2 
>> *servers pero no otro. Qué excepción  echamos para aquello? Y dado un 
>> no-preferencia leída Primaria, esta excepción puede ser intermitente haciéndolo 
>> *troubling y difícil de depurar. 
>>
>> Por ahora, el [*ServerSelectionTimeout](
>> *https://*github.*com/*mongodb/*mongo-*csharp-Conductor/*blob/maestro/*src/*MongoDB.Conductor/*MongoClientSettings.*cs#*L331) 
>> es el *timeout que controla el, por *default, 30 segundo periodo. Siente libre 
>> de bajar este poniendo a algo mejor convenido para vuestro entorno.
>>
>> Craig
>>
>

-- 
recibiste este mensaje porque eres *subscribed al *Google Grupos "*mongodb-grupo"
de usuario.

Para otro *MongoDB opciones de apoyo técnico, ve: *http://www.mongodb.org/sobre/apoyo/.
--- 
Recibiste este mensaje porque eres *subscribed al *Google Grupos "*mongodb-grupo" de usuario.
A *unsubscribe de este grupo y la parón que recibe *emails de él, enviar un *email a *mongodb-usuario+unsubscribe@xxxxxxxxxxxxxxxx.
A correo a este grupo, envía *email a *mongodb-user@xxxxxxxxxxxxxxxx.
Visita este grupo en *http://grupos.*google.*com/Grupo/*mongodb-usuario.
Para ver esta discusión en la visita de web *https://grupos.*google.*com/*d/*msgid/*mongodb-Usuario/*d97#uno22*f9-3713-4*f4*b-988un-3*bb42*e270*ff4%40*googlegroups.*com.
Para más opciones, visita *https://grupos.*google.*com/*d/*optout.
Mike, with the 2.0.x  version of the driver, you can still set this 
setting. My apologies as I didn't realize this wasn't exposed in 2.0.x. 
 You can use the 
[ClusterConfigurator](https://github.com/mongodb/mongo-csharp-driver/blob/v2.0.1/src/MongoDB.Driver/MongoClientSettings.cs#L97) 
property to set this in the underlying cluster settings.

var settings = new MongoClientSettings
{
    ClusterConfigurator = cb => cb.ConfigureCluster(settings => 
settings.With(serverSelectionTimeout: TimeSpan.FromSeconds(5)));
};


Regarding performance with node, don't mistake that there is performance 
difference from this. The drivers simply behave differently. It's likely 
.NET has realized the failed authentication just as fast but is deciding to 
do something different with that knowledge according to the [server 
selection 
specification](https://github.com/mongodb/specifications/blob/master/source/server-selection/server-selection.rst#server-selection-errors). 
It has recently been changed, I just noticed, to incorporate an early exit 
if all the errors of each server are exactly the same. I've filed 
[CSHARP-1415](https://jira.mongodb.org/browse/CSHARP-1415) to track this 
getting completed. It will not be in 2.1 and I've scheduled it for 2.2, but 
since it's a non-API change, we may be able to backport to 2.1.1.

Also, I noticed you aren't comparing apples to apples here. In the .NET 
version, you've placed the credentials in the connection string, but not so 
in the node driver. I'm not saying it will make a difference though


On Tuesday, September 15, 2015 at 2:26:28 PM UTC-5, Mika Ryynänen wrote:
>
>
> Hello Craig,
>
> I'm sure you are right that complex cases with multiple servers, 
> clustering etc. can be problematic to handle. It's great that 2.1 driver 
> will have ServerSelectionTimeout setting, but I think it's a design fault 
> if the driver must rely on a timeout to detect invalid credentials. Just 
> for comparison I made a quick test program with the Javascript driver. Here 
> are the results compared:
>
> C:\Temp>node auth
> { [MongoError: Authentication failed.]
>   name: 'MongoError',
>   message: 'Authentication failed.',
>   ok: 0,
>   code: 18,
>   errmsg: 'Authentication failed.' }
> auth: 40ms
>
> C:\Temp>csharp
> A timeout occured after 30000ms selecting a server using 
> CompositeServerSelecto
> Done in 30014 ms!
>
> If I had the 2.1 version of the C# driver available I could use 
> ServerSelectionTimeout, but still the Javascript driver handles this case 
> better. Here are the test applications I used. They are mostly the same, 
> main difference is that C# driver requires a command (ListCollectionsAsync) 
> to perform the authentication and Javascript does it immediately when 
> authenticate is called.
>
> Javascript: http://pastebin.com/8rKrbyw7
> C#: http://pastebin.com/6twqChrc
>
> I'm sure there's some way to match performance from the C# driver with the 
> Javascript version.. I was even thinking of using runCommand with saslStart 
> manually but that sounds like too much work for such a simple thing. In the 
> end ServerSelectionTimeout in 2.1 driver is probably good enough solution :)
>
> Thanks! 
> Mika
>
> tiistai 15. syyskuuta 2015 16.20.15 UTC+3 Craig Wilson kirjoitti:
>>
>> Hi mikar,
>>
>> The bug reporter is free and open. All you need is an account to use it. 
>> That being said, this is not a bug in the sense that this is behaving as 
>> designed. You certainly might wish it to behave differently and we have and 
>> are considering how to handle raising an more suitable exception. Much of 
>> the problem stems from the fact that we may be connected to more than one 
>> server, so there is a chance that you were successfully able to login to 2 
>> servers but not another. What exception do we throw for that? And given a 
>> non-Primary read preference, this exception may be intermittent making it 
>> troubling and difficult to debug. 
>>
>> For now, the [ServerSelectionTimeout](
>> https://github.com/mongodb/mongo-csharp-driver/blob/master/src/MongoDB.Driver/MongoClientSettings.cs#L331) 
>> is the timeout that controls the, by default, 30 second period. Feel free 
>> to lower this setting to something better suited for your environment.
>>
>> Craig
>>
>

-- 
You received this message because you are subscribed to the Google Groups "mongodb-user"
group.

For other MongoDB technical support options, see: http://www.mongodb.org/about/support/.
--- 
You received this message because you are subscribed to the Google Groups "mongodb-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to mongodb-user@xxxxxxxxxxxxxxxx.
Visit this group at http://groups.google.com/group/mongodb-user.
To view this discussion on the web visit https://groups.google.com/d/msgid/mongodb-user/d97a22f9-3713-4f4b-988a-3bb42e270ff4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
<Anterior por Tema] Tema Actual [Siguiente por Tema>