{"action":"created","issue":{"url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/667","repository_url":"https://api.github.com/repos/mysql-net/MySqlConnector","labels_url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/667/labels{/name}","comments_url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/667/comments","events_url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/667/events","html_url":"https://github.com/mysql-net/MySqlConnector/issues/667","id":464313059,"node_id":"MDU6SXNzdWU0NjQzMTMwNTk=","number":667,"title":"MySqlDataReader.CreateAsync throws misleading exception","user":{"login":"carlos-ferreira","id":472873,"node_id":"MDQ6VXNlcjQ3Mjg3Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/472873?v=4","gravatar_id":"","url":"https://api.github.com/users/carlos-ferreira","html_url":"https://github.com/carlos-ferreira","followers_url":"https://api.github.com/users/carlos-ferreira/followers","following_url":"https://api.github.com/users/carlos-ferreira/following{/other_user}","gists_url":"https://api.github.com/users/carlos-ferreira/gists{/gist_id}","starred_url":"https://api.github.com/users/carlos-ferreira/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlos-ferreira/subscriptions","organizations_url":"https://api.github.com/users/carlos-ferreira/orgs","repos_url":"https://api.github.com/users/carlos-ferreira/repos","events_url":"https://api.github.com/users/carlos-ferreira/events{/privacy}","received_events_url":"https://api.github.com/users/carlos-ferreira/received_events","type":"User","site_admin":false},"labels":[{"id":350772930,"node_id":"MDU6TGFiZWwzNTA3NzI5MzA=","url":"https://api.github.com/repos/mysql-net/MySqlConnector/labels/bug","name":"bug","color":"ee0701","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2019-07-04T15:07:46Z","updated_at":"2019-09-06T03:30:00Z","closed_at":null,"author_association":"NONE","body":"We're experiencing an issue with MySQLConnector when facing a timeout.\r\nWe call a stored procedure using Dapper, the timeout happens and we get the following log from **MySqlConnectorLogger**\r\n\r\n```\r\n2019-07-04 15:56:04,449 \r\nMySqlConnector.ConnectionPool[(null)] \r\nDEBUG >Pool1 recovered no sessions\r\n\r\n\r\n2019-07-04 15:56:09,664 \r\nMySqlConnector.ServerSession[(null)] \r\nINFO >Session1.2 failed in ReceiveReplyAsync\r\nMySql.Data.MySqlClient.MySqlException (0x80004005): The Command Timeout expired before the operation completed. ---System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond\r\n   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   --- End of inner exception stack trace ---\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)\r\n   at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)\r\n   at MySqlConnector.Protocol.Serialization.StreamByteHandler.<ReadBytesAsync>g__DoReadBytesSync|6_0(ArraySegment`1 buffer_) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StreamByteHandler.cs:line 38\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.BufferedByteReader.<ReadBytesAsync>d__2.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\BufferedByteReader.cs:line 36\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.ReadPacketAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 407\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 460\r\n   at MySqlConnector.Protocol.Serialization.StandardPayloadHandler.ReadPayloadAsync(ArraySegmentHolder`1 cache, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StandardPayloadHandler.cs:line 37\r\n   at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\ServerSession.cs:line 669\r\n\r\n\r\n2019-07-04 15:56:10,639 \r\nMySqlConnector.ServerSession[(null)] \r\nINFO >Session1.2 setting state to Failed\r\nMySql.Data.MySqlClient.MySqlException (0x80004005): The Command Timeout expired before the operation completed. ---System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond\r\n   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   --- End of inner exception stack trace ---\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)\r\n   at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)\r\n   at MySqlConnector.Protocol.Serialization.StreamByteHandler.<ReadBytesAsync>g__DoReadBytesSync|6_0(ArraySegment`1 buffer_) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StreamByteHandler.cs:line 38\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.BufferedByteReader.<ReadBytesAsync>d__2.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\BufferedByteReader.cs:line 36\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.ReadPacketAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 407\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 460\r\n   at MySqlConnector.Protocol.Serialization.StandardPayloadHandler.ReadPayloadAsync(ArraySegmentHolder`1 cache, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StandardPayloadHandler.cs:line 37\r\n   at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\ServerSession.cs:line 669\r\n\r\n\r\n2019-07-04 15:56:10,896 \r\nMySqlConnector.ServerSession[(null)] \r\nINFO >Session1.2 setting state to Failed\r\nMySql.Data.MySqlClient.MySqlException (0x80004005): The Command Timeout expired before the operation completed. ---System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond\r\n   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   --- End of inner exception stack trace ---\r\n   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n   at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)\r\n   at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)\r\n   at System.Net.Security.SslStream.Read(Byte[] buffer, Int32 offset, Int32 count)\r\n   at MySqlConnector.Protocol.Serialization.StreamByteHandler.<ReadBytesAsync>g__DoReadBytesSync|6_0(ArraySegment`1 buffer_) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StreamByteHandler.cs:line 38\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.BufferedByteReader.<ReadBytesAsync>d__2.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\BufferedByteReader.cs:line 36\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.ReadPacketAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 407\r\n   at MySqlConnector.Protocol.Serialization.ProtocolUtility.DoReadPayloadAsync(BufferedByteReader bufferedByteReader, IByteHandler byteHandler, Func`1 getNextSequenceNumber, ArraySegmentHolder`1 previousPayloads, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\ProtocolUtility.cs:line 460\r\n   at MySqlConnector.Protocol.Serialization.StandardPayloadHandler.ReadPayloadAsync(ArraySegmentHolder`1 cache, ProtocolErrorBehavior protocolErrorBehavior, IOBehavior ioBehavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Protocol\\Serialization\\StandardPayloadHandler.cs:line 37\r\n   at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\ServerSession.cs:line 669\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task`1 task) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\ServerSession.cs:line 1336\r\n   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()\r\n   at System.Threading.Tasks.Task.Execute()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Threading.Tasks.ValueTask`1.get_Result()\r\n   at MySqlConnector.Core.ResultSet.<ReadResultSetHeaderAsync>d__1.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\ResultSet.cs:line 43\r\n\r\n\r\n2019-07-04 15:56:11,112 \r\nMySqlConnector.ServerSession[(null)] \r\nDEBUG >Session1.2 entering FinishQuerying; SessionState=Failed\r\n\r\n\r\n2019-07-04 15:57:08,033 \r\nMySqlConnector.ConnectionPool[(null)] \r\nDEBUG >Pool1 reaping connection pool\r\n```\r\n\r\n**But**, the exception that we get on the catch of the business object is the following:\r\n\r\n```\r\nConnection must be Open; current state is Closed\r\n   at MySql.Data.MySqlClient.MySqlConnection.get_Session() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlConnection.cs:line 422\r\n   at MySqlConnector.Core.TextCommandExecutor.<ExecuteReaderAsync>d__1.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\TextCommandExecutor.cs:line 28\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Core.StoredProcedureCommandExecutor.SetParams() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\StoredProcedureCommandExecutor.cs:line 99\r\n   at MySql.Data.MySqlClient.MySqlCommand.ReaderClosed() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlCommand.cs:line 452\r\n   at MySql.Data.MySqlClient.MySqlDataReader.DoClose() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line 445\r\n   at MySql.Data.MySqlClient.MySqlDataReader.Dispose(Boolean disposing) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line 282\r\n   at System.Data.Common.DbDataReader.Dispose()\r\n   at MySql.Data.MySqlClient.MySqlDataReader.<CreateAsync>d__95.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlDataReader.cs:line 306\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)\r\n   at MySqlConnector.Core.TextCommandExecutor.<ExecuteReaderAsync>d__1.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\TextCommandExecutor.cs:line 37\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySqlConnector.Core.StoredProcedureCommandExecutor.<ExecuteReaderAsync>d__1.MoveNext() in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\Core\\StoredProcedureCommandExecutor.cs:line 79\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\\projects\\mysqlconnector\\src\\MySqlConnector\\MySql.Data.MySqlClient\\MySqlCommand.cs:line 267\r\n   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)\r\n   at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) in C:\\projects\\dapper\\Dapper\\SqlMapper.cs:line 1053\r\n   at Dapper.SqlMapper.<QueryImpl>d__138`1.MoveNext() in C:\\projects\\dapper\\Dapper\\SqlMapper.cs:line 1081\r\n   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in C:\\projects\\dapper\\Dapper\\SqlMapper.cs:line 723\r\n```\r\n\r\nThis is causing some confusion, as we have similar messages in other places, it makes us wonder if the bug is because the next execution tries to make a call to MySQL Server and the connection is on an unexpected state.\r\n\r\nWe're using AWS Aurora, and the only thing \"extra\" on the connection string is CharSet=utf8mb4;\r\n\r\n\r\nCan you clarify the meaning of \"Connection must be Open; current state is Closed\" ?"},"comment":{"url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/comments/528692824","html_url":"https://github.com/mysql-net/MySqlConnector/issues/667#issuecomment-528692824","issue_url":"https://api.github.com/repos/mysql-net/MySqlConnector/issues/667","id":528692824,"node_id":"MDEyOklzc3VlQ29tbWVudDUyODY5MjgyNA==","user":{"login":"bgrainger","id":188129,"node_id":"MDQ6VXNlcjE4ODEyOQ==","avatar_url":"https://avatars2.githubusercontent.com/u/188129?v=4","gravatar_id":"","url":"https://api.github.com/users/bgrainger","html_url":"https://github.com/bgrainger","followers_url":"https://api.github.com/users/bgrainger/followers","following_url":"https://api.github.com/users/bgrainger/following{/other_user}","gists_url":"https://api.github.com/users/bgrainger/gists{/gist_id}","starred_url":"https://api.github.com/users/bgrainger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bgrainger/subscriptions","organizations_url":"https://api.github.com/users/bgrainger/orgs","repos_url":"https://api.github.com/users/bgrainger/repos","events_url":"https://api.github.com/users/bgrainger/events{/privacy}","received_events_url":"https://api.github.com/users/bgrainger/received_events","type":"User","site_admin":false},"created_at":"2019-09-06T03:30:00Z","updated_at":"2019-09-06T03:30:00Z","author_association":"MEMBER","body":"> We call a stored procedure using Dapper\r\n\r\nI never noticed this in your original post. And I assume (from the call stack) that you have `OUT` parameters in your stored procedure?\r\n\r\nI was able to reproduce this with 0.56.0, but not 0.57.0-beta9. I believe this was already fixed in 8220c3e7a51aea35c22ccc4aba64cb03cf5087f7 (which was authored before you opened this issue), but hasn't shipped in a stable release yet.\r\n\r\nUpdating to the latest beta should fix this issue, but note that #672 is still potentially affecting the execution of stored procedures."}}
{"actor":{"display_login":"bgrainger"}}