@@ -15,11 +15,11 @@ import scala.concurrent.Future
1515
1616class  FossilDBGrpcImpl (storeManager : StoreManager )
1717  extends  FossilDBGrpc .FossilDB 
18-   with  LazyLogging  {
18+      with  LazyLogging  {
1919
2020  override  def  health (req : HealthRequest ) =  withExceptionHandler(req) {
2121    HealthReply (true )
22-   } {errorMsg =>  HealthReply (false , errorMsg)}
22+   } {  errorMsg =>  HealthReply (false , errorMsg)  }
2323
2424  override  def  get (req : GetRequest ) =  withExceptionHandler(req) {
2525    val  store  =  storeManager.getStore(req.collection)
@@ -31,71 +31,76 @@ class FossilDBGrpcImpl(storeManager: StoreManager)
3131        GetReply (false , Some (" No such element"  ), ByteString .EMPTY , 0 )
3232      }
3333    }
34-   } {errorMsg =>  GetReply (false , errorMsg, ByteString .EMPTY , 0 )}
34+   } {  errorMsg =>  GetReply (false , errorMsg, ByteString .EMPTY , 0 )  }
3535
3636  override  def  put (req : PutRequest ) =  withExceptionHandler(req) {
3737    val  store  =  storeManager.getStore(req.collection)
3838    val  version  =  req.version.getOrElse(store.get(req.key, None ).map(_.version +  1 ).getOrElse(0L ))
3939    require(version >=  0 , " Version numbers must be non-negative"  )
4040    store.put(req.key, version, req.value.toByteArray)
4141    PutReply (true )
42-   } {errorMsg =>  PutReply (false , errorMsg)}
42+   } {  errorMsg =>  PutReply (false , errorMsg)  }
4343
4444  override  def  delete (req : DeleteRequest ) =  withExceptionHandler(req) {
4545    val  store  =  storeManager.getStore(req.collection)
4646    store.delete(req.key, req.version)
4747    DeleteReply (true )
48-   } {errorMsg =>  DeleteReply (false , errorMsg)}
48+   } {  errorMsg =>  DeleteReply (false , errorMsg)  }
4949
5050  override  def  getMultipleVersions (req : GetMultipleVersionsRequest ) =  withExceptionHandler(req) {
5151    val  store  =  storeManager.getStore(req.collection)
5252    val  (values, versions) =  store.getMultipleVersions(req.key, req.oldestVersion, req.newestVersion)
5353    GetMultipleVersionsReply (true , None , values.map(ByteString .copyFrom(_)), versions)
54-   } {errorMsg =>  GetMultipleVersionsReply (false , errorMsg)}
54+   } {  errorMsg =>  GetMultipleVersionsReply (false , errorMsg)  }
5555
5656  override  def  getMultipleKeys (req : GetMultipleKeysRequest ) =  withExceptionHandler(req) {
5757    val  store  =  storeManager.getStore(req.collection)
5858    val  (keys, values, versions) =  store.getMultipleKeys(req.key, req.prefix, req.version, req.limit)
5959    GetMultipleKeysReply (true , None , keys, values.map(ByteString .copyFrom(_)), versions)
60-   } {errorMsg =>  GetMultipleKeysReply (false , errorMsg)}
60+   } {  errorMsg =>  GetMultipleKeysReply (false , errorMsg)  }
6161
6262  override  def  deleteMultipleVersions (req : DeleteMultipleVersionsRequest ) =  withExceptionHandler(req) {
6363    val  store  =  storeManager.getStore(req.collection)
6464    store.deleteMultipleVersions(req.key, req.oldestVersion, req.newestVersion)
6565    DeleteMultipleVersionsReply (true )
66-   } {errorMsg =>  DeleteMultipleVersionsReply (false , errorMsg)}
66+   } {  errorMsg =>  DeleteMultipleVersionsReply (false , errorMsg)  }
6767
6868  override  def  listKeys (req : ListKeysRequest ) =  withExceptionHandler(req) {
6969    val  store  =  storeManager.getStore(req.collection)
7070    val  keys  =  store.listKeys(req.limit, req.startAfterKey)
7171    ListKeysReply (true , None , keys)
72-   } {errorMsg =>  ListKeysReply (false , errorMsg)}
72+   } {  errorMsg =>  ListKeysReply (false , errorMsg)  }
7373
7474  override  def  listVersions (req : ListVersionsRequest ) =  withExceptionHandler(req) {
7575    val  store  =  storeManager.getStore(req.collection)
7676    val  versions  =  store.listVersions(req.key, req.limit, req.offset)
7777    ListVersionsReply (true , None , versions)
78-   } {errorMsg =>  ListVersionsReply (false , errorMsg)}
78+   } {  errorMsg =>  ListVersionsReply (false , errorMsg)  }
7979
8080  override  def  backup (req : BackupRequest ) =  withExceptionHandler(req) {
8181    val  backupInfoOpt  =  storeManager.backup
8282    backupInfoOpt match  {
8383      case  Some (backupInfo) =>  BackupReply (true , None , backupInfo.id, backupInfo.timestamp, backupInfo.size)
8484      case  _ =>  throw  new  Exception (" Backup did not return valid BackupInfo"  )
8585    }
86-   } {errorMsg =>  BackupReply (false , errorMsg, 0 , 0 , 0 )}
86+   } {  errorMsg =>  BackupReply (false , errorMsg, 0 , 0 , 0 )  }
8787
8888  override  def  restoreFromBackup (req : RestoreFromBackupRequest ) =  withExceptionHandler(req) {
8989    storeManager.restoreFromBackup
9090    RestoreFromBackupReply (true )
91-   } {errorMsg =>  RestoreFromBackupReply (false , errorMsg)}
91+   } {  errorMsg =>  RestoreFromBackupReply (false , errorMsg)  }
9292
9393  override  def  compactAllData (req : CompactAllDataRequest ) =  withExceptionHandler(req) {
94-     storeManager.compactAllData(req.`type` )
94+     storeManager.compactAllData()
9595    CompactAllDataReply (true )
96-   } {errorMsg =>  CompactAllDataReply (false , errorMsg)}
96+   } {  errorMsg =>  CompactAllDataReply (false , errorMsg)  }
9797
98-   private  def  withExceptionHandler  [T , R  <:  GeneratedMessage ](request : R )(tryBlock : =>  T )(onErrorBlock : Option [String ] =>  T ):  Future [T ] =  {
98+   override  def  exportDB (req : ExportDBRequest ) =  withExceptionHandler(req) {
99+     storeManager.exportDB(req.newDataDir, req.optionsFile)
100+     ExportDBReply (true )
101+   } { errorMsg =>  ExportDBReply (false , errorMsg) }
102+ 
103+   private  def  withExceptionHandler [T , R  <:  GeneratedMessage ](request : R )(tryBlock : =>  T )(onErrorBlock : Option [String ] =>  T ):  Future [T ] =  {
99104    try  {
100105      logger.debug(" received "   +  requestToString(request))
101106      Future .successful(tryBlock)
@@ -112,7 +117,7 @@ class FossilDBGrpcImpl(storeManager: StoreManager)
112117  }
113118
114119  private  def  requestToString [R  <:  GeneratedMessage ](request : R ) = 
115-     request.getClass.getSimpleName +  " ("   +  request.toString.replaceAll(" \n "  ,"  "  ) +  " )" 
120+     request.getClass.getSimpleName +  " ("   +  request.toString.replaceAll(" \n "  ,  "  "  ) +  " )" 
116121
117122  private  def  getStackTraceAsString (t : Throwable ) =  {
118123    val  sw  =  new  StringWriter 
0 commit comments