private void testConcurrentOnlineBackup() throws Exception {
   String fileName = getBaseDir() + "/onlineBackup.h3";
   String fileNameRestore = getBaseDir() + "/onlineRestore.h3";
   final MVStore s = openStore(fileName);
   final MVMap<Integer, byte[]> map = s.openMap("test");
   final Random r = new Random();
   Task t =
       new Task() {
         @Override
         public void call() throws Exception {
           while (!stop) {
             for (int i = 0; i < 10; i++) {
               map.put(i, new byte[100 * r.nextInt(100)]);
             }
             s.commit();
             map.clear();
             s.commit();
             long len = s.getFileStore().size();
             if (len > 1024 * 1024) {
               // slow down writing a lot
               Thread.sleep(200);
             } else if (len > 20 * 1024) {
               // slow down writing
               Thread.sleep(20);
             }
           }
         }
       };
   t.execute();
   for (int i = 0; i < 10; i++) {
     // System.out.println("test " + i);
     s.setReuseSpace(false);
     byte[] buff = readFileSlowly(s.getFileStore().getFile(), s.getFileStore().size());
     s.setReuseSpace(true);
     FileOutputStream out = new FileOutputStream(fileNameRestore);
     out.write(buff);
     MVStore s2 = openStore(fileNameRestore);
     MVMap<Integer, byte[]> test = s2.openMap("test");
     for (Integer k : test.keySet()) {
       test.get(k);
     }
     s2.close();
     // let it compact
     Thread.sleep(10);
   }
   t.get();
   s.close();
 }