Search in sources :

Example 1 with RecoverCallback

use of org.apache.bookkeeper.client.AsyncCallback.RecoverCallback in project bookkeeper by apache.

the class BookKeeperAdmin method recoverBookieData.

public void recoverBookieData(final Set<BookieSocketAddress> bookiesSrc, boolean dryrun, boolean skipOpenLedgers) throws InterruptedException, BKException {
    SyncObject sync = new SyncObject();
    // Call the async method to recover bookie data.
    asyncRecoverBookieData(bookiesSrc, dryrun, skipOpenLedgers, new RecoverCallback() {

        @Override
        public void recoverComplete(int rc, Object ctx) {
            LOG.info("Recover bookie operation completed with rc: {}", BKException.codeLogger(rc));
            SyncObject syncObj = (SyncObject) ctx;
            synchronized (syncObj) {
                syncObj.rc = rc;
                syncObj.value = true;
                syncObj.notify();
            }
        }
    }, sync);
    // Wait for the async method to complete.
    synchronized (sync) {
        while (!sync.value) {
            sync.wait();
        }
    }
    if (sync.rc != BKException.Code.OK) {
        throw BKException.create(sync.rc);
    }
}
Also used : RecoverCallback(org.apache.bookkeeper.client.AsyncCallback.RecoverCallback)

Aggregations

RecoverCallback (org.apache.bookkeeper.client.AsyncCallback.RecoverCallback)1