Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deployment fails (Domino 12 // Host: Mac OSX Mx with QEMU) #331

Open
boberhauser opened this issue Oct 29, 2024 · 1 comment
Open

Deployment fails (Domino 12 // Host: Mac OSX Mx with QEMU) #331

boberhauser opened this issue Oct 29, 2024 · 1 comment

Comments

@boberhauser
Copy link

Hi,

we have a problem with failing deploys in Domino 12 (running in Linux container on Rancher with QEMU on an Apple M1 chip).

I tracked down the problem to this area (ReplaceDesignTaskLocal.java in Deployment bundle):

String command = StringUtil.format("load convert -d \"{0}\" * \"{1}\"", targetDbName, templatePath.toAbsolutePath().toString()); //$NON-NLS-1$
session.sendConsoleCommand("", command); //$NON-NLS-1$

The problem is, that the "session.sendConsoleCommand" immediately returns which leads the NSFDeploymentServlet (DeploymentServlet bundle) to delete the temporary file before the ReplaceDesign command within Domino is able to pick it up:

} finally {
	NSFODPUtil.deltree(cleanup);
}

Causing the following output in the notes.log:

..... Mail Conversion Utility starting
..... Mail Upgrade Failed: Unable to open design template file '/tmp/nsfdeployment68681346549841464794.data' : File does not exist
..... Mail Conversion Utility shutdown

I verified that it works when removing the cleanup in DeplyomentServlet. Sadly I do not see a sensible way to let the ReplaceDesignTaskLocal wait for the console command (ReplaceDesign) to finish. Additionally the task itself (ReplaceDesignTaskLocal) runs in a separate thread, too (DeployNSFTask):

// Then do a replace design
ReplaceDesignTaskLocal task = new ReplaceDesignTaskLocal(filePath, nsfFile, new NullProgressMonitor());
DominoThreadFactory.getExecutor().submit(task).get();

Do you have an idea to workaround that area?

Best regards
Ben

@jesse-gallagher
Copy link
Member

Unfortunately, I've found the same thing you're seeing: deploying is a fraught and problem-prone process. From what I can tell, the alternative would be to manually reproduce the behavior of the design-replace task, which is fiddlier than one would think. It's in my backlog to try to fix up some day, but it's admittedly not high on the list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants