From 4b6933989a6119f330f9d02e7ff848fac9d8e3d0 Mon Sep 17 00:00:00 2001 From: Piotr Fus Date: Tue, 19 Dec 2023 10:35:39 +0100 Subject: [PATCH] SNOW-976500 Do not drop errors from chunk downloader starting (#994) --- async.go | 7 ++++++- monitoring.go | 4 ++-- rows.go | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/async.go b/async.go index 47da1b7b4..e5d7e5230 100644 --- a/async.go +++ b/async.go @@ -134,12 +134,17 @@ func (sr *snowflakeRestful) getAsync( if isMultiStmt(&respd.Data) { if err = sc.handleMultiQuery(ctx, respd.Data, rows); err != nil { rows.errChannel <- err + close(rows.errChannel) return err } } else { rows.addDownloader(populateChunkDownloader(ctx, sc, respd.Data)) } - rows.ChunkDownloader.start() + if err = rows.ChunkDownloader.start(); err != nil { + rows.errChannel <- err + close(rows.errChannel) + return err + } rows.errChannel <- nil // mark query status complete } } else { diff --git a/monitoring.go b/monitoring.go index 444a7c4bf..a138ecc85 100644 --- a/monitoring.go +++ b/monitoring.go @@ -265,6 +265,6 @@ func (sc *snowflakeConn) buildRowsForRunningQuery( if err := sc.rowsForRunningQuery(ctx, qid, rows); err != nil { return nil, err } - rows.ChunkDownloader.start() - return rows, nil + err := rows.ChunkDownloader.start() + return rows, err } diff --git a/rows.go b/rows.go index 3d3fcbb0f..f8e5d50f1 100644 --- a/rows.go +++ b/rows.go @@ -217,7 +217,9 @@ func (rows *snowflakeRows) NextResultSet() error { return io.EOF } rows.ChunkDownloader = rows.ChunkDownloader.getNextChunkDownloader() - rows.ChunkDownloader.start() + if err := rows.ChunkDownloader.start(); err != nil { + return err + } } return rows.ChunkDownloader.nextResultSet() }