dependabot[bot] opened a new pull request, #59391:
URL: https://github.com/apache/spark/pull/59391

   Bumps 
[net.snowflake:snowflake-jdbc-thin](https://github.com/snowflakedb/snowflake-jdbc)
 from 4.1.0 to 4.3.4.
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/snowflakedb/snowflake-jdbc/releases";>net.snowflake:snowflake-jdbc-thin's
 releases</a>.</em></p>
   <blockquote>
   <h2>v4.3.4</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   <h2>v4.3.3</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   <h2>v4.3.2</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   <h2>v4.3.1</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   <h2>v4.3.0</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   <h2>v4.2.0</h2>
   <ul>
   <li>Please Refer to Release Notes at <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/snowflakedb/snowflake-jdbc/blob/master/CHANGELOG.md";>net.snowflake:snowflake-jdbc-thin's
 changelog</a>.</em></p>
   <blockquote>
   <h4>For all official JDBC Release Notes please refer to <a 
href="https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc";>https://docs.snowflake.com/en/release-notes/clients-drivers/jdbc</a></h4>
   <h1>Changelog</h1>
   <ul>
   <li>
   <p>v4.4.1-SNAPSHOT</p>
   <ul>
   <li>Fixed pooled HTTP connections being checked for closure after 30 
milliseconds by default, because the idle-connection timeout in seconds was 
passed to an API that expects milliseconds. Connections are now checked after 2 
seconds, matching JDBC 3.28.0. 
<code>net.snowflake.jdbc.idle_connection_timeout</code> still controls only how 
long an idle connection stays in the pool (SNOW-4242824, <a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/39";>snowflakedb/snowflake-jdbc#39</a>).</li>
   <li>Added an agent skill that walks an application from JDBC 3.x to 4.x, 
including the public API move and the 4.0 behavior that later releases repaired 
(<code>.claude/skills/jdbc-3-to-4-migration/</code>). Not part of the release 
artifacts.</li>
   </ul>
   </li>
   <li>
   <p>v4.4.0</p>
   <ul>
   <li>Hardened external-browser callback handling by checking the 
<code>Origin</code><code>snowflakedb/snowflake-jdbc#27</code></li>
   <li>OCSP revocation checking is now off by default. Enable it by setting 
<code>ocspFailOpen</code> (<code>true</code> = fail-open, <code>false</code> = 
fail-closed). <code>disableOCSPChecks=false</code> and 
<code>insecureMode=false</code> are the old default values and do not opt in. 
<code>disableOCSPChecks=true</code> and the deprecated 
<code>insecureMode=true</code> always turn OCSP off, including when 
<code>ocspFailOpen</code> is set; the ignored fail-open is logged at warn. The 
deprecated <code>insecureMode</code> property no longer selects the OCSP mode 
and no longer throws when it disagrees with <code>disableOCSPChecks</code>; 
leftover OCSP cache/server settings are logged at warn as ignored while OCSP is 
off.</li>
   <li>Removed the SSE-S3 (<code>AES256</code>) header from PUT to unencrypted 
S3 stages so objects inherit the bucket default encryption instead of 
overriding it; client-side-encrypted stages are unchanged (SNOW-3701700).</li>
   <li>Added <code>workloadIdentityHost</code> connection property that 
overrides the STS host used by AWS Workload Identity Federation, for endpoints 
the driver cannot derive from the region (such as an interface VPC endpoint). 
The default STS host is now resolved via the AWS SDK so partitions that do not 
use <code>amazonaws.com</code> (ISO, European Sovereign Cloud, ...) get the 
correct hostname. A privately routed host cannot be reached by Snowflake on the 
default GetCallerIdentity path, so a VPC or PrivateLink STS endpoint also 
requires <code>workloadIdentityAwsUseOutboundToken=true</code> 
(SNOW-4017201).</li>
   <li>Added <code>ci/scripts/generate_sbom.sh</code>, which generates a 
CycloneDX SBOM (<code>target/bom.json</code>) covering both the driver and FIPS 
JAR dependency trees; not part of the release artifacts.</li>
   <li>Removed the unused Conscrypt library 
(<code>org.conscrypt:conscrypt-openjdk-uber</code>) from the self-contained 
(fat) and FIPS JARs. It was only transitive weight from 
<code>google-cloud-storage</code> and is never used by the driver 
(SNOW-4071987).</li>
   <li>Fixed the <code>platformDetectionTimeoutMs</code> connection property 
having no effect: platform detection always ran with the hardcoded 200 ms 
default, so the documented 
<code>platformDetectionTimeoutMs=0</code><code>snowflakedb/snowflake-jdbc#9</code></li>
   <li>Added JVM-wide fallbacks for both platform-detection settings, so 
air-gapped deployments can suppress instance-metadata probes for the whole 
process instead of per connection: <code>disablePlatformDetection</code> now 
also reads the <code>net.snowflake.jdbc.disablePlatformDetection</code> system 
property and the <code>SNOWFLAKE_DISABLE_PLATFORM_DETECTION</code> environment 
variable (both accepting only a case-insensitive <code>true</code>), and 
<code>platformDetectionTimeoutMs</code> reads 
<code>net.snowflake.jdbc.platformDetectionTimeoutMs</code> / 
<code>SNOWFLAKE_PLATFORM_DETECTION_TIMEOUT_MS</code>; the connection property 
takes precedence over the system property, which takes precedence over the 
environment variable. A negative timeout is now treated as <code>0</code> 
instead of still issuing the requests, and a timeout above 5000 ms is clamped 
to that maximum, since detection holds a process-wide lock and an unbounded 
value would stall every other connection attempt for i
 ts full duration. When detection is disabled the driver reports 
<code>PLATFORM=[&quot;disabled&quot;]</code><code>snowflakedb/snowflake-jdbc#9</code></li>
   <li>Deprecated the <code>MIN_TLS_VERSION</code> and 
<code>MAX_TLS_VERSION</code> connection properties in favour of the JVM-wide 
<code>jdk.tls.client.protocols</code><code>snowflakedb/snowflake-jdbc#10</code></li>
   <li>Fixed the TLS version settings being held in process-global static 
fields and omitted from the HTTP client cache key, so a connection could 
silently inherit another connection's enabled TLS protocols; they are now part 
of <code>HttpClientSettingsKey</code> and scoped per connection. As a 
consequence they no longer reach HTTP clients built outside a session (Workload 
Identity platform detection, the sessionless <code>SnowflakeFileTransfer</code> 
entry point, and result sets rebuilt from a serialized form), which use the 
driver defaults of TLS 1.2-1.3; use 
<code>jdk.tls.client.protocols</code><code>snowflakedb/snowflake-jdbc#10</code></li>
   <li>Fixed invalid <code>MIN_TLS_VERSION</code>/<code>MAX_TLS_VERSION</code> 
values and an inverted version range surfacing as an unwrapped 
<code>IllegalArgumentException</code> from socket factory construction instead 
of a <code>SnowflakeSQLException</code> when the property is set, and fixed TLS 
version availability being resolved from the protocols the JSSE provider 
implements rather than the ones it will actually enable, so a version banned 
through the 
<code>jdk.tls.disabledAlgorithms</code><code>snowflakedb/snowflake-jdbc#10</code></li>
   <li>Fixed cipher suite selection using <code>SSLServerSocketFactory</code>'s 
server-side default suites for the driver's client connections, which both 
discarded the JVM-wide <code>jdk.tls.client.cipherSuites</code> and 
<code>jdk.tls.disabledAlgorithms</code> settings and bypassed Apache 
HttpClient's weak-suite filtering. Selection is now left to JSSE unless 
<code>https.cipherSuites</code> is set, whose value is also trimmed. This 
covers the Snowflake connection and result-set chunk downloads only; PUT/GET 
stage transfers go through cloud storage SDKs that supply their own cipher 
list, where 
<code>jdk.tls.disabledAlgorithms</code><code>snowflakedb/snowflake-jdbc#14</code></li>
   <li>Fixed GET from a client-side-encrypted GCS stage on the 
<code>GCSAccessStrategyAwsSdk</code> strategy (<code>useVirtualUrl</code>) 
writing ciphertext and reporting success: encryption metadata returned as 
<code>x-goog-meta-*</code> is now read from the raw response headers instead of 
the empty S3 metadata map.</li>
   <li>Fixed the GCS <code>GCSAccessStrategyAwsSdk</code> strategy 
(<code>useVirtualUrl</code>) leaking a thread pool on every PUT and GET; the 
per-call executor passed to <code>S3TransferManager</code> is now shut down in 
a <code>finally</code> on both the upload and download paths, mirroring the 
earlier S3 fix in <a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2602";>snowflakedb/snowflake-jdbc#2602</a>
 (SNOW-4098951).</li>
   <li>Bumped the following dependencies:
   <ul>
   <li>netty to 4.1.138.Final from 4.1.137.Final.</li>
   <li>zstd-jni to 1.5.7-16 from 1.5.6-5.</li>
   <li>BouncyCastle to 1.86 from 1.85.</li>
   <li>jackson-databind to 2.18.11 from 2.18.10.</li>
   </ul>
   </li>
   </ul>
   </li>
   <li>
   <p>v4.3.4</p>
   <ul>
   <li>Added validation of <code>account</code>, <code>port</code> and 
<code>protocol</code> in the auto-configuration (<code>connections.toml</code>) 
path, where the connect string's host is synthesized from <code>account</code>, 
so that none of the interpolated components can alter the resulting URL 
authority. Each dot-separated label of <code>account</code> may contain only 
letters, digits, underscores and hyphens (mirroring the Python connector), 
<code>port</code> must be a number in 1-65535, and <code>protocol</code> must 
be <code>http</code> or <code>https</code>. Absent or empty values keep their 
existing &quot;not specified&quot; meaning. As defense in depth, the 
<code>ACCOUNT</code><code>snowflakedb/snowflake-jdbc#2752</code></li>
   <li>Reduced sensitive detail in debug and response logging: the chunk 
result-master key is logged as a presence flag instead of its value, HTTP 
response header values are no longer logged (only header names), and 
chunk-download responses are rendered as a status line plus header names 
instead of <code>HttpResponse.toString()</code>, which would render every 
header value. <code>SecretDetector</code> additionally masks the 
<code>X-Amz-Credential</code> and <code>X-Amz-Security-Token</code> URL 
parameters, <code>qrmk</code><code>snowflakedb/snowflake-jdbc#2751</code></li>
   <li>Restricted <code>WORKLOAD_IDENTITY</code> authentication to recognized 
Snowflake hosts: the attestation flow now verifies the target host before any 
ambient cloud credential is fetched and otherwise fails with 
<code>WORKLOAD_IDENTITY_FLOW_ERROR</code> naming the rejected host. Additional 
host suffixes can be permitted for local or test setups through the 
<code>SNOWFLAKE_WIF_ALLOWED_HOST_SUFFIXES</code><code>snowflakedb/snowflake-jdbc#2750</code></li>
   <li>Improved robustness of OCSP revocation checking: a definitive revocation 
result is now authoritative regardless of OCSP mode instead of being downgraded 
to a tolerable failure under the default <code>FAIL_OPEN</code> mode, each OCSP 
response entry is verified to describe the certificate being validated (issuer 
name hash, issuer key hash and serial number), and the cache entry is evicted 
on a definitive failure so it is not retained indefinitely. Recognized 
Snowflake host suffixes are now an explicit list 
(<code>snowflakecomputing.com</code>, <code>snowflakecomputing.cn</code>, 
<code>snowflakecomputing.mil</code>) matched on a label boundary, so a host on 
any other top-level domain is no longer detected as PrivateLink 
(SNOW-3649698).</li>
   <li>Fixed <code>PrivateLinkDetector.isPrivateLink()</code> accepting any 
hostname that merely contained <code>.privatelink.snowflakecomputing.</code> as 
a substring, so a host such as 
<code>evil.privatelink.snowflakecomputing.attacker.com</code> was classified as 
a PrivateLink Snowflake host; a hostname must now actually end with 
<code>.snowflakecomputing.&lt;tld&gt;</code>. The OCSP response cache server 
URL, which is held in a JVM-wide static field, is now rejected when its host is 
not a Snowflake host (SNOW-3649698).</li>
   <li>Fixed <code>DecorrelatedJitterBackoff.nextSleepTime</code> throwing 
<code>IllegalArgumentException: bound must be greater than 
origin</code><code>snowflakedb/snowflake-jdbc#2744</code></li>
   <li>Fixed <code>DatabaseMetaData.getTablePrivileges()</code> concatenating 
unescaped table and schema names into SQL string literals, which allowed a 
quote character to break out of the query (SNOW-3236395).</li>
   <li>Fixed DECFLOAT <code>ResultSet.getString()</code> using engineering 
notation (<code>120E+198</code>) instead of normalized scientific notation 
(<code>1.2e200</code>); values whose unsigned plain form fits in 38 characters 
stay in plain decimal (SNOW-3229469).</li>
   <li>Fixed null nested structured-type fields throwing 
<code>NullPointerException</code> in <code>JsonSqlOutput</code> when binding 
via <code>SQLOutput</code> reference writers such as <code>writeObject</code>, 
<code>writeBigDecimal</code>, <code>writeBytes</code>, <code>writeDate</code>, 
and <code>writeTimestamp</code> (SNOW-1449489).</li>
   <li><code>snowflakedb/snowflake-jdbc#2377</code></li>
   <li>Fixed 
<code>SnowflakeBasicDataSource</code><code>snowflakedb/snowflake-jdbc#2621</code></li>
   <li>Fixed <code>SFFormatter</code> omitting the associated stack trace when 
a log record has a thrown exception (SNOW-466174).</li>
   <li>Fixed Linux credential cache parsing checking the root JSON node type a 
second time instead of the <code>tokens</code> child, which could fail the 
cache load when <code>tokens</code> was present but not an object 
(SNOW-4009235).</li>
   <li>Fixed <code>DatabaseMetaData.getColumns()</code> discarding 
<code>trim()</code> on column default values and throwing 
<code>NullPointerException</code> when SHOW COLUMNS returns a SQL NULL default 
(SNOW-4009234).</li>
   <li>Fixed <code>PreparedStatement.setObject(parameterIndex, byte[], 
Types.BINARY)</code> (and 
<code>Types.VARBINARY</code>/<code>Types.LONGVARBINARY</code>) binding the 
array's object reference (<code>[B@..</code>) instead of its hex value, causing 
a server-side <code>Invalid bind value ... for type (BINARY)</code> error; 
<code>byte[]</code> is now hex-encoded as 
<code>setBytes</code><code>snowflakedb/snowflake-jdbc#2731</code></li>
   <li>Fixed slow PUT uploads to client-side-encrypted (internal/temporary) 
stages on the AWS SDK v2 async upload path — S3, and the GCS 
<code>GCSAccessStrategyAwsSdk</code> strategy (<code>useVirtualUrl</code>); the 
default GCP path (<code>GCSDefaultAccessStrategy</code>) is unchanged — where 
the 
<code>CipherInputStream</code><code>snowflakedb/snowflake-jdbc#2746</code></li>
   <li>Bumped the following dependencies:
   <ul>
   <li><code>snowflakedb/snowflake-jdbc#2747</code></li>
   <li><code>snowflakedb/snowflake-jdbc#2735</code></li>
   </ul>
   </li>
   <li>Fixed <code>CertificateDiagnosticCheck</code> completing its TLS probe 
without SNI for allowlist hosts containing underscores (Snowflake account 
names): such hosts are rejected by <code>SNIHostName</code> per the RFC 952 
Letter-Digit-Hyphen rule, causing the JDK to silently send no 
<code>server_name</code> extension and the check to report on a default 
certificate rather than the one a real client would be served. The check now 
probes the hyphenated host variant that Snowflake also serves. Host 
normalization is unified across the diagnostic checks and connect-string 
parsing in a single <code>SnowflakeUtil.normalizeSnowflakeHost</code> helper 
and is scoped to Snowflake hosts, so third-party allowlist hosts (cloud 
storage, OCSP responders, Duo, ...) are left unchanged. The 
<code>allowUnderscoresInHost</code><code>snowflakedb/snowflake-jdbc#2729</code></li>
   </ul>
   </li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/43731aeb32f1a8e766b38322963611da2c5c019e";><code>43731ae</code></a>
 NO-SNOW: Bump version to 4.3.4 (<a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2753";>#2753</a>)</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/08e48c3bd092e82b8f64c179788bee1a641af99d";><code>08e48c3</code></a>
 NO-SNOW: Validate account, port and protocol before synthesizing the JDBC 
URL...</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/0760449e6612d8748cee0e87869afca44a8a9891";><code>0760449</code></a>
 SNOW-3954279: Trim sensitive detail from response logging and extend secret 
m...</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/2b579f5d0e7ded033262323bfd716fc1cd87d50d";><code>2b579f5</code></a>
 NO-SNOW: Restrict WORKLOAD_IDENTITY authentication to recognized Snowflake 
ho...</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/b409c29e6e04a1ee8c00c5ef88f5f4a4fffe40de";><code>b409c29</code></a>
 SNOW-3649698: Treat definitive OCSP results as authoritative and bind 
respons...</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/e9c7a0cc563cb93bd4122a7d65c2560fca0f28b2";><code>e9c7a0c</code></a>
 SNOW-3649698: Validate PrivateLink and OCSP cache server hosts against the 
Sn...</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/6893424a9f871833ca3f6b2a335a5ce87108271d";><code>6893424</code></a>
 Bump grpc-java to 1.84.0 from 1.83.1 (<a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2747";>#2747</a>)</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/bd013fb8f10d4ef5ff6fe6d45ba62f7983af6496";><code>bd013fb</code></a>
 SNOW-4039899: fix slow PUT to client-side-encrypted stages (<a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2746";>#2746</a>)</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/a59169ad3975d89221d0c406a153b8b543cb6796";><code>a59169a</code></a>
 SNOW-4036693: Clamp DecorrelatedJitterBackoff previous sleep to base (<a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2744";>#2744</a>)</li>
   <li><a 
href="https://github.com/snowflakedb/snowflake-jdbc/commit/56e500b5e791ebbc9c17733a0b951abfa86a89b8";><code>56e500b</code></a>
 SNOW-3236395: Escape quotes in getTablePrivileges SQL literals (<a 
href="https://redirect.github.com/snowflakedb/snowflake-jdbc/issues/2742";>#2742</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/snowflakedb/snowflake-jdbc/compare/v4.1.0...v4.3.4";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=net.snowflake:snowflake-jdbc-thin&package-manager=maven&previous-version=4.1.0&new-version=4.3.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   Dependabot will resolve any conflicts with this PR as long as you don't 
alter it yourself. You can also trigger a rebase manually by commenting 
`@dependabot rebase`.
   
   [//]: # (dependabot-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   You can trigger Dependabot actions by commenting on this PR:
   - `@dependabot rebase` will rebase this PR
   - `@dependabot recreate` will recreate this PR, overwriting any edits that 
have been made to it
   - `@dependabot show <dependency name> ignore conditions` will show all of 
the ignore conditions of the specified dependency
   - `@dependabot ignore this major version` will close this PR and stop 
Dependabot creating any more for this major version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this minor version` will close this PR and stop 
Dependabot creating any more for this minor version (unless you reopen the PR 
or upgrade to it yourself)
   - `@dependabot ignore this dependency` will close this PR and stop 
Dependabot creating any more for this dependency (unless you reopen the PR or 
upgrade to it yourself)
   You can disable automated security fix PRs for this repo from the [Security 
Alerts page](https://github.com/apache/spark/network/alerts).
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to