Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
I have a few reports which source from multiple Azure Data Lake Store CSV files (lists a directory, expands the file contents, and parses them as CSV to create one or more datasets). Nearly every time I refresh the data I encounter an error loading from the data lake:
OLE DB or ODBC Error: [DataSource.Error] Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host..
It appears someone else had this issue as well but the thread didn't go anywhere: https://community.powerbi.com/t5/Developer/Power-BI-frequent-OLE-DB-or-ODBC-errors-with-ADLS-as-data...
Below is a trace log which shows the actual error. Looking at the WebHDFS call, it seems as though there's some non-zero chance that any chunk read will fail, and because there is no retry logic, loading many large files is sure to cause an overall load failure.
DataMashup.Trace Error: 24579 : { "Start":"2018-05-11T17:22:16.8552586Z", "Action":"Engine/IO/Web/Request/LogError", "HostProcessId":"17952", "RequestMethod":"GET", "RequestUri":"https://<REDACTED>.csv?op=OPEN&read=true&offset=83886080&length=4194304", "RequestHasContent":"False", "RequestHasHeaders":"False", "RequestHasTimeout":"True", "UseCache":"True", "Exception":"Exception:\r\nExceptionType: System.IO.IOException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<REDACTED>\r\nMessage: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.\r\nStackTrace:\n at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n at Microsoft.Mashup.Engine1.Library.Web.ErrorLoggingReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)\r\n\r\nInnerException\r\nException:\r\nExceptionType: System.Net.Sockets.SocketException, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<REDACTED>\r\nMessage: An existing connection was forcibly closed by the remote host\r\nStackTrace:\n at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)\r\n\r\n\r\n\r\n\r\n", "ProductVersion":"2.58.5103.501 (PBIDesktop)", "ActivityId":"c9dcb403-e61c-4eab-a065-3bdf8e9a110e", "Process":"Microsoft.Mashup.Container.NetFX40", "Pid":12804, "Tid":1, "Duration":"00:00:00.0048887" }
Here is the exception from the above JSON with newlines expanded:
ExceptionType: System.IO.IOException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<REDACTED> Message: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. StackTrace: at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size) at Microsoft.Mashup.Engine1.Library.Web.ErrorLoggingReadStream.Read(Byte[] buffer, Int32 offset, Int32 count) InnerException Exception: ExceptionType: System.Net.Sockets.SocketException, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=<redacted> Message: An existing connection was forcibly closed by the remote host StackTrace: at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
Perhaps this could be fixed just by wrapping the ADLS file chunk reads with some retry logic?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.