Intermittent Optimized Row Columnar table load failures occur from Azure Data Lake Storage in SAS® Viya® 3.5


In SAS Viya 3.5, SAS® Cloud Analytic Services (CAS) or the SAS® Compute Server might intermittently fail to read an Optimized Row Columnar (ORC) file from Azure Data Lake Storage (ADLS). The load can fail for different ORC files, and later attempts of the same operation might succeed without a change to the source file. 

This issue applies to SAS Viya 3.5 environments that read ORC data from ADLS. 

As a result, errors similar to the following occur in the SAS log:

ERROR: ORC read error = bad StripeFooter from zlib(...) 

ERROR: Exception occurred while reading from ORC table: bad StripeFooter from zlib(...) 

ERROR: An error occurred during TKORC execution 

ERROR: The action stopped due to errors. 

ERROR: ORC read error = adls2Read failed 

NOTE: The tcpSockRead call failed. The system error is 'The connection was reset by a peer.'. 

Cause

A read stream from ADLS can be interrupted. In the affected SAS Viya 3.5 Azure data access code, the retry handling does not correctly process the interrupted read. As a result, an incomplete ORC read and an error (such as bad StripeFooter from zlib or adls2Read failed) occurs. 

The issue affects the Azure data access path that CAS uses and the SAS Compute Server in SAS Viya 3.5. 

Workaround

Method 1: Apply the SAS Viya 3.5 Update 

Update the applicable SAS Viya 3.5 environment with the following package version or later. Select the package that matches the operating system repository type. 

Method 2 (Temporary Workaround): Retry the Failed Load 

If you cannot apply the SAS Viya 3.5 update yet, retrying the failed ORC load might enable the operation to complete. Note that this option is only a temporary workaround because it does not correct the interrupted-read condition.