fixing boot

This commit is contained in:
Raven Scott
2026-05-28 01:46:38 -04:00
parent 7c49928a5c
commit 95559fc552
5 changed files with 53 additions and 55 deletions
+14 -26
View File
@@ -420,34 +420,22 @@ function formatSize(bytes) {
async function onInit() {
sdk.log.info('file.drop', 'Initializing File Drop plugin...');
// Initialize our local Hyperdrive for uploads
const drive = await sdk.drives.getDrive(DRIVE_NAME);
const driveInfo = await sdk.drives.getDriveInfo(DRIVE_NAME);
localDriveKey = driveInfo.key;
sdk.log.info('file.drop', `Local drive key: ${localDriveKey.slice(0, 16)}...`);
// Wait for database to be available with retries
let dbReady = false;
for (let i = 0; i < 30; i++) {
try {
await sdk.db.ready();
if (!sdk.db.closed) {
dbReady = true;
sdk.log.info('file.drop', 'HyperDB ready');
break;
}
} catch (err) {
if (err.message && err.message.includes('Database not initialized')) {
sdk.log.debug('file.drop', `Database not ready yet, attempt ${i + 1}/30`);
} else {
sdk.log.warn('file.drop', `Database error on attempt ${i + 1}/30: ${err.message}`);
}
}
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
// Database is opened by plugin-handler before onInit; a single ready() is enough.
try {
await sdk.db.ready(5000);
sdk.log.info('file.drop', 'HyperDB ready');
} catch (err) {
sdk.log.warn('file.drop', `HyperDB not ready during init: ${err.message}`);
}
if (!dbReady) {
sdk.log.warn('file.drop', 'Database not available after 30 seconds - plugin will continue but database operations may fail');
// Initialize our local Hyperdrive for uploads (after DB — avoids blocking boot on drive I/O)
try {
const drive = await sdk.drives.getDrive(DRIVE_NAME);
const driveInfo = await sdk.drives.getDriveInfo(DRIVE_NAME);
localDriveKey = driveInfo.key;
sdk.log.info('file.drop', `Local drive key: ${localDriveKey.slice(0, 16)}...`);
} catch (err) {
sdk.log.warn('file.drop', `Upload drive not ready during init: ${err.message}`);
}
// Verify replication is enabled
+6 -22
View File
@@ -76,28 +76,12 @@ async function onInit() {
sdk.log.info('global.profile', 'Initializing Global Profile plugin...');
try {
// Wait for database to be available with retries
let dbReady = false;
for (let i = 0; i < 30; i++) {
try {
await sdk.db.ready();
if (!sdk.db.closed) {
dbReady = true;
sdk.log.info('global.profile', 'Database ready');
break;
}
} catch (err) {
if (err.message && err.message.includes('Database not initialized')) {
sdk.log.debug('global.profile', `Database not ready yet, attempt ${i + 1}/30`);
} else {
sdk.log.warn('global.profile', `Database error on attempt ${i + 1}/30: ${err.message}`);
}
}
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
}
if (!dbReady) {
sdk.log.warn('global.profile', 'Database not available after 30 seconds - plugin will continue but database operations may fail');
// Database is opened by plugin-handler before onInit; a single ready() is enough.
try {
await sdk.db.ready(5000);
sdk.log.info('global.profile', 'Database ready');
} catch (err) {
sdk.log.warn('global.profile', `Database not ready during init: ${err.message}`);
}
// Avatars are now stored in HyperDB, so no separate drive initialization needed