forcedotcom / forcedotcom/wsc

internal network error is not exposed

Open
#55 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
276
Forks
223
PR merge metrics
No merged PRs in 30d

Description

I met an error "input stream can not be null" when running dataloader with Bulk API.

It finally turned out that it was caused by the following exception due to proxy authentication error.

```
java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 Proxy Authentication Required"
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.sforce.async.BulkConnection.doHttpGet(BulkConnection.java:466)
at com.sforce.async.BulkConnection.getJobStatus(BulkConnection.java:530)
at com.salesforce.dataloader.action.visitor.BulkApiVisitorUtil.periodicCheckStatus(BulkApiVisitorUtil.java:148)
at com.salesforce.dataloader.action.visitor.BulkLoadVisitor.doOneBatch(BulkLoadVisitor.java:190)
at com.salesforce.dataloader.action.visitor.BulkLoadVisitor.createBatches(BulkLoadVisitor.java:167)
at com.salesforce.dataloader.action.visitor.BulkLoadVisitor.loadBatch(BulkLoadVisitor.java:134)
at com.salesforce.dataloader.action.visitor.DAOLoadVisitor.flushRemaining(DAOLoadVisitor.java:125)
at com.salesforce.dataloader.action.visitor.BulkLoadVisitor.flushRemaining(BulkLoadVisitor.java:281)
at com.salesforce.dataloader.action.AbstractLoadAction.flush(AbstractLoadAction.java:92)
at com.salesforce.dataloader.action.AbstractAction.execute(AbstractAction.java:131)
at com.salesforce.dataloader.controller.Controller.executeAction(Controller.java:121)
at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:149)
at com.salesforce.dataloader.process.ProcessRunner.run(ProcessRunner.java:100)
at com.salesforce.dataloader.process.ProcessRunner.main(ProcessRunner.java:253)
```

Here is the place where the exception occured.
https://github.com/forcedotcom/wsc/blob/29.0.0/src/main/java/com/sforce/async/BulkConnection.java#L466

It was very difficult to know the root cause because the exception is hidden.
It would be better if wsc exposes it in any way.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at src/main/java/com/sforce/async/BulkConnection.java:466, then trace how doHttpGet and getJobStatus handle the IOException shown in the report. The work is done when the underlying proxy authentication or other internal network error is exposed instead of surfacing only the misleading null-input error.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.