Saving data to external TIBCO Spotfire library fails with the error message "java.io.IOException: No space left on device"

Saving data to external TIBCO Spotfire library fails with the error message "java.io.IOException: No space left on device"

book

Article ID: KB0077240

calendar_today

Updated On:

Products Versions
Spotfire Server All Versions

Description

To minimize the size of your TIBCO Spotfire database, you can store your organization's Spotfire library content (analyses and analysis data) in the cloud using Amazon Web Services S3 (AWS), or in a file system elsewhere. In a typical Spotfire installation, the largest part of database storage consists of the library content. When you move the library content to external storage, only the metadata about the library files remains in the database. See Library content storage outside of the Spotfire database for more details.

When saving a large analysis to the external library (like an Amazon S3 bucket), the operation may fail with the the following error message in server.log:
DEBUG 2019-08-28T18:50:48,523-0400 [sf_admin, #32, #28173] ws.attachment.InnerAttachment: Added temp file att8044446325104769982.tmp to inner attachment bcd77052-c71a-41d4-bf72-54c6781ec682
WARN 2019-08-28T18:50:48,539-0400 [sf_admin, #32, #28173] server.util.StreamUtil: Unable to close stream
java.io.IOException: No space left on device
    at java.io.FileOutputStream.writeBytes(Native Method) ~[?:1.8.0_171]
    at java.io.FileOutputStream.write(FileOutputStream.java:313) ~[?:1.8.0_171]
    at javax.crypto.CipherOutputStream.flush(CipherOutputStream.java:189) ~[?:1.8.0_171]
    at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) ~[?:1.8.0_171]
    at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) ~[?:1.8.0_171]
    at java.io.FilterOutputStream.close(FilterOutputStream.java:158) ~[?:1.8.0_171]
    at com.spotfire.server.util.StreamUtil.close(StreamUtil.java:48) ~[server.jar:?]
	
Spotfire.Dxp.SupportDiagnostics.log:-

Error message: Could not save data file.

TargetInvocationException at Spotfire.Dxp.Framework:
Exception has been thrown by the target of an invocation. (HRESULT: 80131604)

Stack Trace:
   at Spotfire.Dxp.Framework.ApplicationModel.ProgressService.ExecuteWithProgressCancelable(String title, String description, ProgressOperation operation, Boolean showCancelButton)
   at Spotfire.Dxp.Forms.Data.DataFormsUserActions.ExportToLibrary(Object sender, EventArgs e)

LibraryException at Spotfire.Dxp.Framework:
The server could not be reached (HRESULT: 80131500)

Stack Trace:
   at Spotfire.Dxp.Framework.Library.InternalLibraryManager.UploadAttachment(Action`1 streamWriter, String progressText, Boolean embedInSubtaskProgress)
   at Spotfire.Dxp.Framework.Library.InternalLibraryManager.Save(LibraryEntry entry, Action`1 streamWriter, Fields fields, Boolean embedInSubtaskProgress)
   at Spotfire.Dxp.Application.Export.ExportHandler.ExportDataTableAsSbdfToLibrary(DataTable table, String dataSelectionName, String libraryPath, String libraryDescription, String libraryKeywords, AnalysisApplication application)
   at Spotfire.Dxp.Forms.Data.DataFormsUserActions.<>c__DisplayClass25.<ExportToLibrary>b__20()
   at Spotfire.Dxp.Forms.Application.FormsProgressService.ProgressThread.DoOperationLoop()

LibraryServiceException at Spotfire.Dxp.Services:
The server could not be reached (HRESULT: 80131509)

Stack Trace:
   at Spotfire.Dxp.Services.WebServiceBase`1.InvokeService[T](ServiceMethod`1 serviceMethod, ExceptionFactoryMethod exceptionFactoryMethod)
   at Spotfire.Dxp.Services.Library.LibraryService.UploadAttachment(Action`1 streamWriter)
   at Spotfire.Dxp.Framework.Library.InternalLibraryManager.UploadAttachment(Action`1 streamWriter, String progressText, Boolean embedInSubtaskProgress)

WebException at Spotfire.Dxp.Framework:
The remote server returned an error: (500) Internal Server Error . (HRESULT: 80131509)

Stack Trace:
   at Spotfire.Dxp.Framework.HttpClient.NativeWebRequest.GetResponse()
   at Spotfire.Dxp.Services.CommunicationUtilities.AttachmentServletConnection.Uploadstream.SendRequest()
   at Spotfire.Dxp.Services.CommunicationUtilities.AttachmentServletConnection.Uploadstream.Close()
   at Spotfire.Dxp.Services.CommunicationUtilities.AttachmentServletConnection.Upload(Attachment attachment)
   at Spotfire.Dxp.Services.Library.LibraryService.<>c__DisplayClass35.<UploadAttachment>b__34()
   at Spotfire.Dxp.Services.WebServiceBase`1.InvokeService[T](ServiceMethod`1 serviceMethod, ExceptionFactoryMethod exceptionFactoryMethod)

 

Issue/Introduction

Saving data to external TIBCO Spotfire library fails with the error message "java.io.IOException: No space left on device"

Resolution

When saving an analysis to the library, the entire file is first uploaded from the TIBCO Spotfire Analyst client to the TIBCO Spotfire Server. The Spotfire Server breaks the analysis file up into multiple temporary files, as necessary, and this collection of temporary files is called a cache and temporarily stored on the Spotfire Server disk. Then the Spotfire Server writes the analysis to the external Library database.

If the Spotfire Server does not have the storage capacity to hold the temporary files (which comprise the file being saved) before sending it to the external library storage, then the above "No space left on device" error may occur.

To resolve, ensure there is sufficient free disk space on the TIBCO Spotfire Server to accommodate the size of the files being saved. This may involving increasing the disk space or removing other files on the existing disk to free up sufficient space.
 

Additional Information

Doc: Library content storage outside of the Spotfire database Doc: config-library-external-s3-storage