Hi @priya.rajagopal ,
I am facing an issue while deleting database after upgrading to the couchbase 2.8.5. Here I tried everything but I am getting exceptions. As per your new documentation database.delete() will stop all replicators, live queries, and listeners attached to it. But I am getting below written error
CouchbaseLiteException{CouchbaseLite,16,'Can't delete db file while other connections are open
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: (CouchbaseLite Android v2.8.5-1 (CE/release, Commit/40e7b34008@c65a5127e818 Core/2.8.5 (1) at 2021-03-10T01:41:36.538Z) on Java; Android 10; Android SDK built for x86)'}
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.couchbase.lite.internal.CBLStatus.toCouchbaseLiteException(CBLStatus.java:96)
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.couchbase.lite.internal.CBLStatus.convertException(CBLStatus.java:45)
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.couchbase.lite.AbstractDatabase.shutdown(AbstractDatabase.java:1697)
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.couchbase.lite.AbstractDatabase.delete(AbstractDatabase.java:775)
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.couchbase.lite.Database.delete(Database.java:28)
2021-04-30 20:24:04.203 9762-9762/com.drlite W/System.err: at com.drlite.database.SchedulerDatabase.deleteDatabase(SchedulerDatabase.java:72)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.drlite.utils.DRXApplication.deleteAllDatabase(DRXApplication.java:652)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.drlite.activity.SettingActivity$1$1.run(SettingActivity.java:274)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at android.os.Handler.handleCallback(Handler.java:883)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at android.os.Looper.loop(Looper.java:214)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7356)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at java.lang.reflect.Method.invoke(Native Method)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: Caused by: LiteCoreException{domain=1, code=16, msg=Can't delete db file while other connections are open}
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.couchbase.lite.internal.core.C4Database.delete(Native Method)
2021-04-30 20:24:04.204 9762-9762/com.drlite W/System.err: at com.couchbase.lite.internal.core.C4Database.delete(C4Database.java:117)
2021-04-30 20:24:04.205 9762-9762/com.drlite W/System.err: at com.couchbase.lite.-$$Lambda$oDs8YQC1RAP18TZgiPd8o9rig3o.accept(Unknown Source:2)
2021-04-30 20:24:04.205 9762-9762/com.drlite W/System.err: at com.couchbase.lite.AbstractDatabase.shutdown(AbstractDatabase.java:1696)
2021-04-30 20:24:04.205 9762-9762/com.drlite W/System.err: ... 12 more`
While my code is given below. I am not able to understand where I am doing wrong. even I tried to close the database before delete which was working in 2.7.0. Right now that is also giving me Attempt to perform an operation on a closed database.
public void deleteAllDatabase() {
try {
if (schedulerDatabase != null) {
schedulerDatabase.deleteDatabase(getSchedularDatabase());
schedulerDatabase = null;
schedularDatabaseInstance = null;
}
}
public Database getSchedularDatabase() {
if (schedularDatabaseInstance != null) {
return schedularDatabaseInstance;
} else {
initSchedularDatabase();
return schedularDatabaseInstance;
}
}
private void initSchedularDatabase() {
try {
DatabaseConfiguration config = new DatabaseConfiguration();
schedularDatabaseInstance = new Database(Constants.SCHEDULAR_DATABASE_NAME, config);
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
}
public void deleteDatabase(Database database) {
try {
database.delete();
} catch (CouchbaseLiteException e) {
e.printStackTrace();
return;
}
}
Please help provide some assistance how to delete a database in 2.8.5