added a lot of debugging logs - revert this

This commit is contained in:
Jean-Louis Leysens 2022-03-24 17:09:42 +01:00
parent d580993d28
commit 5f4abe760d
No known key found for this signature in database
GPG key ID: 28B3B4DFF3677CDC
2 changed files with 18 additions and 6 deletions

View file

@ -187,14 +187,20 @@ export class PdfMaker {
}
public async generate(): Promise<Uint8Array> {
console.log('===================> start');
if (this.worker) throw new Error('PDF generation already in progress!');
console.log('===================> logging info');
this.logger.info(`Compiling PDF using "${this.layout.id}" layout...`);
try {
console.log('===================> starting promise');
return await new Promise<Uint8Array>((resolve, reject) => {
console.log('===================> creating message channel');
const { port1: myPort, port2: theirPort } = new MessageChannel();
console.log('===================> creating new worker');
this.worker = this.createWorker(theirPort);
console.log('===================> attaching listeners to worker');
this.worker.on('error', (workerError: NodeJS.ErrnoException) => {
if (workerError.code === 'ERR_WORKER_OUT_OF_MEMORY') {
reject(new errors.PdfWorkerOutOfMemoryError(workerError.message));
@ -204,14 +210,9 @@ export class PdfMaker {
});
this.worker.on('exit', () => {}); // do nothing on errors
// Send the initial request
const generatePdfRequest: GeneratePdfRequest = {
data: this.getGeneratePdfRequestData(),
};
myPort.postMessage(generatePdfRequest);
// We expect one message from the worker generating the PDF buffer.
myPort.on('message', ({ error, data }: GeneratePdfResponse) => {
console.log('===================> got result back');
if (error) {
reject(new Error(`PDF worker returned the following error: ${error}`));
return;
@ -223,6 +224,12 @@ export class PdfMaker {
this.pageCount = data.metrics.pages;
resolve(data.buffer);
});
const generatePdfRequest: GeneratePdfRequest = {
data: this.getGeneratePdfRequestData(),
};
console.log('===================> sending new generate request');
// Send the request to generate
myPort.postMessage(generatePdfRequest);
});
} finally {
await this.cleanupWorker();

View file

@ -53,6 +53,7 @@ export interface ErrorResponse {
if (!isMainThread) {
const { port } = workerData as WorkerData;
console.log('WORKER=============> listening for work...');
port.on('message', execute);
}
@ -67,6 +68,7 @@ const getPageCount = (pdfDoc: PDFKit.PDFDocument): number => {
};
async function execute({ data: { layout, logo, title, content } }: GeneratePdfRequest) {
console.log('WORKER=============> got work!');
const { port } = workerData as WorkerData;
try {
const tableBorderWidth = 1;
@ -95,6 +97,7 @@ async function execute({ data: { layout, logo, title, content } }: GeneratePdfRe
content,
});
console.log('WORKER=============> creating pdf doc!');
const pdfDoc = printer.createPdfKitDocument(docDefinition, {
tableLayouts: {
noBorder: {
@ -113,6 +116,7 @@ async function execute({ data: { layout, logo, title, content } }: GeneratePdfRe
throw new Error('Document stream has not been generated');
}
console.log('WORKER=============> creating buffer!');
const buffer = await new Promise<Buffer>((resolve, reject) => {
const buffers: Buffer[] = [];
pdfDoc.on('error', reject);
@ -133,6 +137,7 @@ async function execute({ data: { layout, logo, title, content } }: GeneratePdfRe
},
},
};
console.log('WORKER=============> posting result back!');
port.postMessage(successResponse, [buffer.buffer /* Transfer buffer instead of copying */]);
} catch (error) {
const errorResponse: ErrorResponse = { error: error.message, data: null };