File-Upload stops with Error "Ein Fehler ist aufgetreten" - ErrorCode: 611A:JB59

If i try to upload a file bigger than 2 GB the process stops with the following error:

Android-Version 1.10
The vault is mounted with WebDAV on a Hetzner Storagebox.

W	20231202084502.194	Message	Ein Fehler ist aufgetreten
D	20231202084502.216	AssertUnlockedUseCase	started 2949ccd4
D	20231202084502.217	AssertUnlockedUseCase	finished 2949ccd4
D	20231202084533.714	AssertUnlockedUseCase	started 2949ccd5
D	20231202084533.714	AssertUnlockedUseCase	finished 2949ccd5
D	20231202084534.168	ActivityLifecycle	finish org.cryptomator.presentation.ui.activity.BrowseFilesActivity@45ad89
V	20231202084534.178	FragmentLifecycle	onPause BrowseFilesFragment{11867bb} (77d89917-e5e8-49b4-b7db-36b3e4797e21 id=0x7f0a0120)
D	20231202084534.179	ActivityLifecycle	onPause org.cryptomator.presentation.ui.activity.BrowseFilesActivity@45ad89
D	20231202084534.179	PresenterLifecycle	pause org.cryptomator.presentation.presenter.BrowseFilesPresenter@fe5552f
D	20231202084534.189	ActivityLifecycle	onRestart org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
V	20231202084534.190	FragmentLifecycle	onStart VaultListFragment{cfd89be} (3b317558-7b4b-41e0-9580-b460f7f2afd6 id=0x7f0a0120)
D	20231202084534.191	ActivityLifecycle	onStart org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
I	20231202084534.193	ActivityLifecycle	onResume org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
V	20231202084534.193	FragmentLifecycle	onResume VaultListFragment{cfd89be} (3b317558-7b4b-41e0-9580-b460f7f2afd6 id=0x7f0a0120)
D	20231202084534.193	ActivityLifecycle	onResumeFragments org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
D	20231202084534.193	PresenterLifecycle	resume org.cryptomator.presentation.presenter.VaultListPresenter@d484c48
D	20231202084534.193	GetVaultListUseCase	started 294633f7
D	20231202084534.194	GetVaultListUseCase	finished 294633f7
D	20231202084534.244	GetVaultListUseCase	started 294633f8
D	20231202084534.245	GetVaultListUseCase	finished 294633f8
V	20231202084534.660	FragmentLifecycle	onStop BrowseFilesFragment{11867bb} (77d89917-e5e8-49b4-b7db-36b3e4797e21 id=0x7f0a0120)
D	20231202084534.661	ActivityLifecycle	onStop org.cryptomator.presentation.ui.activity.BrowseFilesActivity@45ad89
V	20231202084534.661	FragmentLifecycle	onDestroyView BrowseFilesFragment{11867bb} (77d89917-e5e8-49b4-b7db-36b3e4797e21 id=0x7f0a0120)
V	20231202084534.662	FragmentLifecycle	onDestroy BrowseFilesFragment{11867bb} (77d89917-e5e8-49b4-b7db-36b3e4797e21 id=0x7f0a0120)
D	20231202084534.662	ActivityLifecycle	onDestroy org.cryptomator.presentation.ui.activity.BrowseFilesActivity@45ad89
D	20231202084534.662	PresenterLifecycle	destroy org.cryptomator.presentation.presenter.BrowseFilesPresenter@fe5552f
V	20231202084536.699	FragmentLifecycle	onPause VaultListFragment{cfd89be} (3b317558-7b4b-41e0-9580-b460f7f2afd6 id=0x7f0a0120)
D	20231202084536.699	ActivityLifecycle	onPause org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
D	20231202084536.699	PresenterLifecycle	pause org.cryptomator.presentation.presenter.VaultListPresenter@d484c48
D	20231202084536.707	ActivityLifecycle	onCreate org.cryptomator.presentation.ui.activity.SettingsActivity@c12505e
D	20231202084536.716	ActivityLifecycle	onStart org.cryptomator.presentation.ui.activity.SettingsActivity@c12505e
I	20231202084536.718	ActivityLifecycle	onResume org.cryptomator.presentation.ui.activity.SettingsActivity@c12505e
D	20231202084536.718	ActivityLifecycle	onResumeFragments org.cryptomator.presentation.ui.activity.SettingsActivity@c12505e
D	20231202084536.718	PresenterLifecycle	resume org.cryptomator.presentation.presenter.SettingsPresenter@540299c
V	20231202084537.183	FragmentLifecycle	onStop VaultListFragment{cfd89be} (3b317558-7b4b-41e0-9580-b460f7f2afd6 id=0x7f0a0120)
D	20231202084537.183	ActivityLifecycle	onStop org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
D	20231202084537.183	ActivityLifecycle	onSaveInstanceState org.cryptomator.presentation.ui.activity.VaultListActivity@a32e837
V	20231202084541.464	Progress	UNKNOWN_MIMETYPE -1%

Do you have any suggestions how i can fix this?

Thanks in advance!

Can you please enable debug mode, reproduce the problem and send us the full log?

Thank you!

Done,
i sent the log-files to the support and added the thread title.

I can reproduce it with a 2.62GB file, but not with a 1GB file. There seems to be a problem with our WebDAV implementation and large files.

Content-Length: 0 is the problem, will have a look why the content length is set to 0 but trying to upload the first 8 byte chunk :thinking:

D	OkHttp	--> PUT https://foo/bar.c9r http/1.1 (0-byte body)
D	OkHttp	Content-Type: application/octet-stream
D	OkHttp	Content-Length: 0
D	OkHttp	--> END PUT
V	Progress	org.cryptomator.domain.usecases.cloud.UploadState@ae8a5ec: 0%
D	OkHttp	<-- HTTP FAILED: java.net.ProtocolException: expected 0 bytes but received 8192
D	UploadFilesUseCase	failed 36e83133
D	ExceptionHandler	Unexpected error
org.cryptomator.domain.exception.FatalBackendException: java.net.ProtocolException: expected 0 bytes but received 8192
	at org.cryptomator.data.cloud.webdav.network.WebDavClient.writeFile(WebDavClient.kt:170)
	at org.cryptomator.data.cloud.webdav.network.ConnectionHandlerHandlerImpl.writeFile(ConnectionHandlerHandlerImpl.kt:31)
	at org.cryptomator.data.cloud.webdav.WebDavImpl.write(WebDavImpl.kt:136)
	at org.cryptomator.data.cloud.webdav.WebDavCloudContentRepository$Intercepted.write(WebDavCloudContentRepository.kt:165)
	at org.cryptomator.data.cloud.webdav.WebDavCloudContentRepository$Intercepted.write(WebDavCloudContentRepository.kt:95)
	at org.cryptomator.data.cloud.InterceptingCloudContentRepository.write(InterceptingCloudContentRepository.kt:155)
	at org.cryptomator.data.repository.DispatchingCloudContentRepository.write(DispatchingCloudContentRepository.kt:149)
	at org.cryptomator.data.cloud.crypto.CryptoImplDecorator.writeFromTmpFile(CryptoImplDecorator.kt:262)
	at org.cryptomator.data.cloud.crypto.CryptoImplDecorator.writeShortNameFile(CryptoImplDecorator.kt:453)
	at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.write(CryptoImplVaultFormat7.kt:460)
	at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.write(CryptoCloudContentRepository.kt:90)
	at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.write(CryptoCloudContentRepository.kt:21)
	at org.cryptomator.data.repository.DispatchingCloudContentRepository.write(DispatchingCloudContentRepository.kt:149)
	at org.cryptomator.domain.usecases.cloud.UploadFiles.writeCloudFile(UploadFiles.java:117)
	at org.cryptomator.domain.usecases.cloud.UploadFiles.upload(UploadFiles.java:94)
	at org.cryptomator.domain.usecases.cloud.UploadFiles.upload(UploadFiles.java:82)
	at org.cryptomator.domain.usecases.cloud.UploadFiles.upload(UploadFiles.java:74)
	at org.cryptomator.domain.usecases.cloud.UploadFiles.execute(UploadFiles.java:61)
	at org.cryptomator.domain.usecases.cloud.UploadFilesUseCase$Launcher$2.subscribe(UploadFilesUseCase.java:119)
	at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
	at io.reactivex.Flowable.subscribe(Flowable.java:14935)
	at io.reactivex.Flowable.subscribe(Flowable.java:14882)
	at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
	at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
	at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.ProtocolException: expected 0 bytes but received 8192
	at okhttp3.internal.connection.Exchange$RequestBodySink.write(Exchange.kt:214)
	at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.kt:255)
	at okio.RealBufferedSink.writeAll(RealBufferedSink.kt:194)
	at org.cryptomator.data.cloud.webdav.network.InputStreamSourceBasedRequestBody.writeTo(InputStreamSourceBasedRequestBody.kt:26)
	at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:59)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion.provideCacheInterceptor$lambda$1(WebDavCompatibleHttpClient.kt:97)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion.$r8$lambda$FEXxZ7SrPDCRzX39O94E81VyuVA(Unknown Source:0)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion$$ExternalSyntheticLambda1.intercept(Unknown Source:0)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion.provideOfflineCacheInterceptor$lambda$0(WebDavCompatibleHttpClient.kt:91)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion.$r8$lambda$mK1oDRmeIibu1Q57fFrYEwIb5dg(Unknown Source:0)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$Companion$$ExternalSyntheticLambda0.intercept(Unknown Source:0)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient$UserAgentInterceptor.intercept(WebDavCompatibleHttpClient.kt:153)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at com.burgstaller.okhttp.AuthenticationCacheInterceptor.intercept(AuthenticationCacheInterceptor.java:49)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at org.cryptomator.data.cloud.okhttplogging.HttpLoggingInterceptor.getResponseLoggingExceptions(HttpLoggingInterceptor.kt:51)
	at org.cryptomator.data.cloud.okhttplogging.HttpLoggingInterceptor.getAndLogResponse(HttpLoggingInterceptor.kt:42)
	at org.cryptomator.data.cloud.okhttplogging.HttpLoggingInterceptor.proceedWithLogging(HttpLoggingInterceptor.kt:28)
	at org.cryptomator.data.cloud.okhttplogging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.kt:18)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
	at org.cryptomator.data.cloud.webdav.network.WebDavRedirectHandler.executeFollowingRedirects(WebDavRedirectHandler.kt:21)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient.execute(WebDavCompatibleHttpClient.kt:44)
	at org.cryptomator.data.cloud.webdav.network.WebDavCompatibleHttpClient.execute(WebDavCompatibleHttpClient.kt:39)
	at org.cryptomator.data.cloud.webdav.network.WebDavClient.writeFile(WebDavClient.kt:158)
	... 27 more

ErrorCode: 611A:JB59
2 Likes

Found the cause:

This is the fix:

return if (inputStream.available() == 0) -1 else inputStream.available().toLong()

Thanks for reporting. Will create an ticket for it tomorrow and provide the mentioned fix.

2 Likes

Thank you for the fast response and the quick fix. I will test it when it is available.