Error synchronizing maps

Hello,
I’m preparing a survey using the PDS. I’ve uploaded the maps to the server, along with the user assignments. But when a user tries to sync the map from their tablet, an error appears stating that it was interrupted by an “unexpected exception.” The device log shows the following: Software caused connection abort.

This happened with three different maps, and the sync stopped at a lower download percentage when the map size was larger (the downloaded portion is saved in the device’s storage folder).

We’re using a Lenovo Tab K10 tablet with Android 12.0.

I would appreciate it if you could guide me with this problem.

Thanks

This doesn’t look like a message coming from Survey Solutions.

What happens when you try to synchronize and receive the same maps from a stable office connection?

Don’t do any actual data collection on a PDS.

Hi Sergiy and thank you for your answer.
We’re not collecting real data, we’re testing the map funcionality on the PDS until we have our own sever.

Do you mean doing it from a PC? We tested it using different Wi-Fi connections within the office.

Below is part of the device log (which I also attached)
Log2025-09-16.pdf (143.2 KB)
:
15:08:08[EnumeratorAuditLogService][Info][SynchronizationFailed {“ExceptionMessage”:“Software caused connection abort”,“StackTrace”:" at Android.Runtime.InputStreamInvoker.Read(Byte buffer, Int32 offset, Int32 count)\n at System.IO.Stream.<>c.b__38_0(Object )\n at System.Threading.Tasks.Task1[[System.Int32, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke()\n at System.Threading.Tasks.Task.<>c.<.cctor>b__292_0(Object obj)\n at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)\n--- End of stack trace from previous location ---\n at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)\n--- End of stack trace from previous location ---\n at System.IO.BufferedStream.ReadFromUnderlyingStreamAsync(Memory1 buffer, CancellationToken cancellationToken, Int32 bytesAlreadySatisfied, Task semaphoreLockTask)\n at WB.Core.SharedKernels.Enumerator.Implementation.Services.MapSynchronization.MapSyncProviderBase.Synchronize(IProgress1 progress, CancellationToken cancellationToken, SynchronizationStatistics statistics)\n at WB.Core.SharedKernels.Enumerator.Implementation.Services.Synchronization.AbstractSynchronizationProcess.SynchronizeAsync(IProgress1 progress, CancellationToken cancellationToken)",“Type”:“SynchronizationFailed”}]
15:08:08[MapSyncProvider][Error][Synchronization. Unexpected exception]System.IO.IOException: Software caused connection abort
—> Java.Net.SocketException: Software caused connection abort
at Java.Interop.JniEnvironment.InstanceMethods.CallIntMethod(JniObjectReference , JniMethodInfo , JniArgumentValue* )
at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualInt32Method(String , IJavaPeerable , JniArgumentValue* )
at Java.IO.InputStream.Read(Byte , Int32 , Int32 )
at Android.Runtime.InputStreamInvoker.Read(Byte buffer, Int32 offset, Int32 count)
— End of managed Java.Net.SocketException stack trace —

The sources linked below tie this error with a network quality/configuration. Depending of how much control you have over it, you may want to reconfigure or choose another network and see if it improves:

1 Like

Hi, I wanted to update this topic.
Although there were no changes in the connection quality or configuration, we were able to sync the maps. However, we were able to do so individually:
Map #1 (.tif / 28MB) was assigned to the interviewers and they synced.
Then the map/user link was updated, and Map #2 (.tif / 46MB) was also assigned to the interviewers, and the interviewers synced again.

Could the problem be that the sync doesn’t support a certain size of the transferred map files? Because we then tried to sync by assigning two maps at once (for a total of 63MB), and the sync failed again.

Thanks again!

For Survey Solutions it is known:

But your infrastructure may impose a different size limit. Or a different dimension limit, for example, not size but duration (random idea: connection is open for 30 seconds max, then reset), or anything else. In any case, 63 MB doesn’t even sound large but rather normal.

1 Like