Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System.InvalidOperationException: key 'net.transport' still ocours, #1376

Closed
ThomasX12 opened this issue Sep 28, 2023 · 4 comments
Closed

System.InvalidOperationException: key 'net.transport' still ocours, #1376

ThomasX12 opened this issue Sep 28, 2023 · 4 comments

Comments

@ThomasX12
Copy link

ThomasX12 commented Sep 28, 2023

Software versions
MySqlConnector version: 2.2.7
Server type (MySQL, MariaDB, Aurora, etc.) and version: 10.10.6-MariaDB-1:10.10.6+maria~ubu2204
.NET version:

The Exception: The collection already contains item with same key 'net.transport' still ocours, when I use DevExpress UI Framework with XPO-Persistent Objects in a windows service.

Exception

DevExpress.Xpo.DB.Exceptions.UnableToOpenDatabaseException
  HResult=0x80131500
  Nachricht = Unable to open database. Connection string: XXX;'; Error: 'System.InvalidOperationException: "The collection already contains item with same key 'net.transport''"
   bei System.Diagnostics.ActivityTagsCollection.Add(String key, Object value)
   bei MySqlConnector.Core.ServerSession.<OpenTcpSocketAsync>d__99.MoveNext() in /_/src/MySqlConnector/Core/ServerSession.cs:Zeile 1038.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei MySqlConnector.Core.ServerSession.<ConnectAsync>d__83.MoveNext() in /_/src/MySqlConnector/Core/ServerSession.cs:Zeile 439.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei MySqlConnector.Core.ConnectionPool.<ConnectSessionAsync>d__22.MoveNext() in /_/src/MySqlConnector/Core/ConnectionPool.cs:Zeile 410.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei MySqlConnector.Core.ConnectionPool.<ConnectSessionAsync>d__22.MoveNext() in /_/src/MySqlConnector/Core/ConnectionPool.cs:Zeile 415.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei MySqlConnector.Core.ConnectionPool.<GetSessionAsync>d__10.MoveNext() in /_/src/MySqlConnector/Core/ConnectionPool.cs:Zeile 105.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei MySqlConnector.Core.ConnectionPool.<GetSessionAsync>d__10.MoveNext() in /_/src/MySqlConnector/Core/ConnectionPool.cs:Zeile 135.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei MySqlConnector.MySqlConnection.<CreateSessionAsync>d__124.MoveNext() in /_/src/MySqlConnector/MySqlConnection.cs:Zeile 929.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei MySqlConnector.MySqlConnection.<OpenAsync>d__26.MoveNext() in /_/src/MySqlConnector/MySqlConnection.cs:Zeile 423.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei MySqlConnector.MySqlConnection.Open() in /_/src/MySqlConnector/MySqlConnection.cs:Zeile 382.
   bei DevExpress.Xpo.DB.MySqlConnectionProvider.CreateDataBase()'
  Quelle = DevExpress.Xpo.v23.1
  Stapelüberwachung:
   bei DevExpress.Xpo.DB.MySqlConnectionProvider.CreateDataBase()
   bei DevExpress.Xpo.DB.ConnectionProviderSql..ctor(IDbConnection connection, AutoCreateOption autoCreateOption)
   bei DevExpress.Xpo.DB.MySqlConnectionProvider..ctor(IDbConnection connection, AutoCreateOption autoCreateOption)

Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
[Externer Code]

Innere Ausnahme 1:
InvalidOperationException: "The collection already contains item with same key 'net.transport''"

Code sample

/* A concise code sample to reproduce the bug */
    ServicePointManager.ServerCertificateValidationCallback += (message, cert, chain, errors) => { return true; };
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                MySqlConnectionProvider.Register();
                MySqlConnection conn = new MySqlConnection(p_sConn);
                MySqlConnectionProvider provider = new MySqlConnectionProvider(conn, AutoCreateOption.SchemaAlreadyExists);
                session = new Session(new SimpleDataLayer(provider), null);
                session.Connect();

Expected behavior
The same code works in a simple Windows-Forms-Application, but not in the Windows-Service-Environment in a thread.

Additional context
I am not able to produce the error in a simple example application.

@bgrainger
Copy link
Member

It seems possible that this could happen if the do { ... } while (shouldRetrySsl); loop executes more than once.

@bgrainger
Copy link
Member

It doesn't happen in that scenario because ShutdownSocket clears the activity tags collection.

I am not able to produce the error in a simple example application.

If you can't create a simple repro, are you able to get Trace-level logging from this happening in production and attach that?

@bgrainger
Copy link
Member

Moving new problem report to #1381.

@bgrainger
Copy link
Member

Duplicate of #1381

@bgrainger bgrainger marked this as a duplicate of #1381 Nov 3, 2023
@bgrainger bgrainger closed this as not planned Won't fix, can't repro, duplicate, stale Nov 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants