diff --git a/lib/rclone/api.ts b/lib/rclone/api.ts index 2685002..42044c6 100644 --- a/lib/rclone/api.ts +++ b/lib/rclone/api.ts @@ -117,6 +117,12 @@ export async function startCopy({ remotes?: Record> } }) { + console.log('[startCopy] starting', { + sources, + destination, + optionKeys: Object.keys(options), + }) + for (const source of sources) { const sourceExists = await hasStat(source) if (!sourceExists) { @@ -228,6 +234,7 @@ export async function startCopy({ pendingJobs.push(jobParams) } + console.log('[startCopy] submitting batch', { jobCount: pendingJobs.length }) return startBatch(pendingJobs) } @@ -245,6 +252,12 @@ export async function startMove({ remotes?: Record> } }) { + console.log('[startMove] starting', { + sources, + destination, + optionKeys: Object.keys(options), + }) + for (const source of sources) { const sourceExists = await hasStat(source) if (!sourceExists) { @@ -345,6 +358,7 @@ export async function startMove({ pendingJobs.push(jobParams) } + console.log('[startMove] submitting batch', { jobCount: pendingJobs.length }) return startBatch(pendingJobs) } @@ -365,6 +379,7 @@ async function fetchJob(jobId: number, transferred: Awaited !activeJobIds.has(id)) .sort((a, b) => a - b) ) + console.log('[listTransfers] inactive job IDs:', Array.from(inactiveJobIds)) for (const jobId of inactiveJobIds) { const job = await fetchJob(jobId, transferred) @@ -491,6 +512,13 @@ export async function listTransfers() { } } + console.log( + '[listTransfers] final result - active:', + jobs.active.length, + 'inactive:', + jobs.inactive.length + ) + return jobs } @@ -1090,7 +1118,11 @@ export async function startServe({ } export async function startBatch(inputs: ({ _path: string } & Record)[]) { - console.log('[startBatch] inputs', inputs) + console.log('[startBatch] starting batch operation', { + inputCount: inputs.length, + paths: inputs.map((i) => i._path), + }) + console.log('[startBatch] inputs', JSON.stringify(inputs, null, 2)) const r = await pRetry( async () => @@ -1105,6 +1137,8 @@ export async function startBatch(inputs: ({ _path: string } & Record setTimeout(resolve, 1000)) const jobStatus = await pRetry( @@ -1121,10 +1155,16 @@ export async function startBatch(inputs: ({ _path: string } & Record ): Promise> { - console.log('[rclone] STARTING', path) + console.log('[rclone] REQUEST', path, { + params: init[0]?.params, + body: init[0]?.body, + }) const client = await pRetry(() => getClient(), { 'maxTimeout': 500, }) //! for some reason this still fails sometimes if (!client) { + console.error('[rclone] ERROR: Failed to get client after retries', path) throw new Error('Failed to get client after retries') } - console.log('[rclone] init', init) const result = await client.POST( path, ...(init as InitParam>) ) if (result?.error) { - console.log('[rclone] result?.error', result.error) + console.error('[rclone] ERROR', path, { error: result.error }) const message = typeof result.error === 'string' ? result.error : JSON.stringify(result.error) @@ -89,22 +92,21 @@ export default async function rclone< const data = result.data as { error?: unknown } | undefined if (data?.error) { - console.log('[rclone] data?.error', data.error) + console.error('[rclone] DATA ERROR', path, { error: data.error }) const message = typeof data.error === 'string' ? data.error : JSON.stringify(data.error) throw new Error(message) } if (!result.response.ok) { - console.log( - '[rclone] !result.response.ok', - result.response.status, - result.response.statusText - ) + console.error('[rclone] HTTP ERROR', path, { + status: result.response.status, + statusText: result.response.statusText, + }) throw new Error(`${result.response.status} ${result.response.statusText}`) } - console.log('[rclone] ENDING', path) + console.log('[rclone] RESPONSE', path, { hasData: !!result.data }) return result.data as OpenApiMethodResponse } diff --git a/src/pages/Transfers.tsx b/src/pages/Transfers.tsx index 127ea7d..42ba2bd 100644 --- a/src/pages/Transfers.tsx +++ b/src/pages/Transfers.tsx @@ -59,7 +59,16 @@ export default function Transfers() { [transfersQuery.data] ) - console.log('transfers', JSON.stringify(transfers, null, 2)) + console.log('[Transfers] query state', { + isLoading: transfersQuery.isLoading, + isRefetching: transfersQuery.isRefetching, + isError: transfersQuery.isError, + error: transfersQuery.error, + activeCount: transfers.active.length, + inactiveCount: transfers.inactive.length, + checkingJobs: transfers.active.filter((j) => j.isChecking).length, + }) + console.log('[Transfers] data', JSON.stringify(transfers, null, 2)) if (transfersQuery.isLoading) { return (