Hey guys,

i'm trying to implement a basic backup/restore mechanism in my application. 
the use case basicly is to load a previous snapshot of data. so i do a 
backup and later i want to restore this to a second "working copy database" 
to view the old data.
The db service in the following code is a simple spring bean starting an 
embedded orientdb server and retuns the graph database instance.

try {
    File backupFile = new File("testbackup.zip");
    OutputStream oS = new FileOutputStream(backupFile);

    dbService.getGraphDatabaseInstanceNoTx().getRawGraph().backup(oS, null, 
null, null, 1, 1024);

    oS.close(); // close the stream
    dbService.destroy(); // shutdown embedded server

    dbService.setGraphDatabase("restoreSnapshot" + 
System.currentTimeMillis());

    dbService.afterPropertiesSet(); // start embedded server

    FileInputStream iS = new FileInputStream(backupFile);
    dbService.getGraphDatabaseInstanceNoTx().getRawGraph().restore(iS, 
null, null, null);
    iS.close(); // close input stream

} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Running this code i get the following exception:

java.io.IOException: The process cannot access the file because another 
process has locked a portion of the file
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:345)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
at com.orientechnologies.common.io.OIOUtils.copyStream(OIOUtils.java:153)
at 
com.orientechnologies.orient.core.compression.impl.OZIPCompressionUtil.extractFile(OZIPCompressionUtil.java:90)
at 
com.orientechnologies.orient.core.compression.impl.OZIPCompressionUtil.uncompressDirectory(OZIPCompressionUtil.java:76)
at 
com.orientechnologies.orient.core.storage.impl.local.OStorageLocalAbstract.restore(OStorageLocalAbstract.java:119)
at 
com.orientechnologies.orient.core.db.raw.ODatabaseRaw.restore(ODatabaseRaw.java:182)
at 
com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.restore(ODatabaseWrapperAbstract.java:77)
at 
com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.restore(ODatabaseWrapperAbstract.java:77)
at 
com.encoway.conceptor.base.document.orient.OrientDbBasicTest.testDbSnapshot(OrientDbBasicTest.java:126)

I'm sure, none of the used files is accessed by another process. i'm doing 
something wrong? or could this be a bug in orientdb? i'm using version 1.7.3

any ideas?

thanks

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to