Skip to content

OFX export fails with FileNotFoundException #448

Closed
@rivaldi8

Description

@rivaldi8

Exporting transactions in OFX format fail if there's a difference in the wall clock time between the start and end of the export.

E/ExportAsyncTask: /data/data/org.gnucash.android.devel/cache/OFX/20151204_175635_gnucash_export.ofx (No such file or directory)
E/SchedulerService: org.gnucash.android.export.Exporter$ExporterException: Failed to generate Open Financial eXchange-/data/data/org.gnucash.android.devel/cache/OFX/20151204_175635_gnucash_export.ofx (No such file or directory)
W/dalvikvm: threadid=17: thread exiting with uncaught exception (group=0x401e1560)
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
                  java.lang.RuntimeException: An error occured while executing doInBackground()
                      at android.os.AsyncTask$3.done(AsyncTask.java:200)
                      at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
                      at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
                      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
                      at java.lang.Thread.run(Thread.java:1019)
                   Caused by: org.gnucash.android.export.Exporter$ExporterException: Failed to generate Open Financial eXchange-/data/data/org.gnucash.android.devel/cache/OFX/20151204_175635_gnucash_export.ofx (No such file or directory)
                      at org.gnucash.android.export.ExportAsyncTask.moveExportToSDCard(ExportAsyncTask.java:355)
                      at org.gnucash.android.export.ExportAsyncTask.doInBackground(ExportAsyncTask.java:184)
                      at org.gnucash.android.export.ExportAsyncTask.doInBackground(ExportAsyncTask.java:79)
                      at android.os.AsyncTask$2.call(AsyncTask.java:185)
                      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
                      at java.lang.Thread.run(Thread.java:1019) 
                   Caused by: java.io.FileNotFoundException: /data/data/org.gnucash.android.devel/cache/OFX/20151204_175635_gnucash_export.ofx (No such file or directory)
                      at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
                      at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
                      at java.io.FileInputStream.<init>(FileInputStream.java:80)
                      at org.gnucash.android.export.ExportAsyncTask.moveFile(ExportAsyncTask.java:457)
                      at org.gnucash.android.export.ExportAsyncTask.moveExportToSDCard(ExportAsyncTask.java:350)
                      at org.gnucash.android.export.ExportAsyncTask.doInBackground(ExportAsyncTask.java:184) 
                      at org.gnucash.android.export.ExportAsyncTask.doInBackground(ExportAsyncTask.java:79) 
                      at android.os.AsyncTask$2.call(AsyncTask.java:185) 
                      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
                      at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
                      at java.lang.Thread.run(Thread.java:1019) 

It happens when the second call to Export.getExportCacheFilePath() in
OfxExporter.generateExport() returns a file name with a time stamp different to
the first call in the same method. The root of the problem is
getExportCacheFilePath(), which builds the file name with the current time.

Received through Crashlitics as issue #129.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions