View Single Post
Old 03-27-2022, 10:52 AM   #2
mireq
Junior Member
mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.mireq ought to be getting tired of karma fortunes by now.
 
Posts: 4
Karma: 337603
Join Date: Mar 2022
Device: Kindle PW2
Hello,
i had the same problem. Fix was pretty simple with this commands:

Code:
stop framework
echo "nodb" > /var/local/wsync.db
chattr +i /var/local/wsync.db
start framework
Explanation:

Service WhisperSyncV2PaginateServiceImpl is started from /opt/amazon/ebook/lib/kaf.jar. Decompiled source code looks like this

Code:
protected boolean openDb() {
  LOG.info(" Init Sanity of resources ");
  if (!this.checkIntegrity()) {
    LOG.a(lCJ, new String[] { "Pragma integrity check failed" }, null);
    DeviceMetricLogger.a("WhisperSyncV2PaginateService", "Sanity", "CorruptDB", 1, null, 0, 0);
    reinitDb();
    return dbOpened();
  }
  return true;
}

protected boolean reinitDb() {
  LOG.info(" Init Clear resources ");
  File file = new File("/var/local/wsync.db");
  if (file.exists()) {
    if (!file.delete()) {
      LOG.error("delete Database Failed");
      DeviceMetricLogger.a("WhisperSyncV2PaginateService", "clearResource", "clearFailed", 1, null, 0, 0);
      return false;
    }
  }
  return true
}
If corrupted file exists, it's removed and created new. If cannot be removed, then sync service don't start. Simple solution is corrupt file by writing anything, which SQLite don't parse and change it to protected.
mireq is offline   Reply With Quote