payara / Payara

Payara Server is an open source middleware platform that supports reliable and secure deployments of Java EE (Jakarta EE) and MicroProfile applications in any environment: on premise, in the cloud or hybrid.
http://www.payara.fish
Other
880 stars 302 forks source link

Remote instance installation fails over SSH #3700

Closed TinusJ closed 5 years ago

TinusJ commented 5 years ago

Description


Getting the following issue when trying to create a remote instance on a remote node.

Additional failure info: com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.).

Expected Outcome

Successfully created instance Tinus in the DAS configuration, & succesfully install configuration and needed files on the remote

Current Outcome

SSH configuration information

Additional failure info: com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.). Command create-instance completed with warnings.

Steps to reproduce (Only for bug reports)

  1. Download Payara5 , Extract on First Server
  2. Create SSH Node for remote Server (This fails if it needs to install the server, so i just copied it over)
  3. Create an Instance for the Node that was created in (2) . Ping server successfully 3.1 This is actually where the warning happens, it created some files on the remote server but not all.
  4. Try to start server throws error 2

Full Stack Trace for 3.1


[2019-02-13T09:16:15.678+0200] [Payara 5.184] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=3244 _ThreadName=admin-thread-pool::admin-listener(18)] [timeMillis: 1550042175678] [levelValue: 1000] [[
  Successfully created instance Tiny in the DAS configuration, but failed to install configuration files for the instance on node Tinus-NB during bootstrap.

SSH configuration information 

 Additional failure info: com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.).
com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.)
    at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper.bootstrapInstance(SecureAdminBootstrapHelper.java:205)
    at com.sun.enterprise.v3.admin.cluster.CreateInstanceCommand.bootstrapSecureAdminRemotely(CreateInstanceCommand.java:363)
    at com.sun.enterprise.v3.admin.cluster.CreateInstanceCommand.createInstanceFilesystem(CreateInstanceCommand.java:469)
    at com.sun.enterprise.v3.admin.cluster.CreateInstanceCommand.execute(CreateInstanceCommand.java:236)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:549)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:545)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:544)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:567)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:566)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1475)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:111)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1857)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1733)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:263)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:234)
    at org.glassfish.admin.rest.resources.TemplateExecCommand.executeCommandLegacyFormat(TemplateExecCommand.java:159)
    at org.glassfish.admin.rest.resources.TemplateCommandPostResource.processPostLegacyFormat(TemplateCommandPostResource.java:100)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:704)
    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377)
    at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:322)
    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:182)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$BootstrapException: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.)
    at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$SSHHelper.backdateInstanceDomainXML(SecureAdminBootstrapHelper.java:393)
    at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper.bootstrapInstance(SecureAdminBootstrapHelper.java:202)
    ... 64 more
Caused by: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.)
    at com.trilead.ssh2.SFTPv3Client.expectStatusOKMessage(SFTPv3Client.java:556)
    at com.trilead.ssh2.SFTPv3Client.setstat(SFTPv3Client.java:584)
    at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$SSHHelper.setLastModified(SecureAdminBootstrapHelper.java:405)
    at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$SSHHelper.backdateInstanceDomainXML(SecureAdminBootstrapHelper.java:390)
    ... 65 more
]]

Full Stack trace for 4 - starting server


[2019-02-13T09:17:47.796+0200] [Payara 5.184] [INFO] [] [javax.enterprise.system.core] [tid: _ThreadID=3246 _ThreadName=admin-thread-pool::admin-listener(19)] [timeMillis: 1550042267796] [levelValue: 800] [[
  Attempting to start Tiny.... Please look at the server log for more details.....]]

[2019-02-13T09:17:47.797+0200] [Payara 5.184] [SEVERE] [NCLS-CORE-00003] [javax.enterprise.system.core] [tid: _ThreadID=3246 _ThreadName=admin-thread-pool::admin-listener(19)] [timeMillis: 1550042267797] [levelValue: 1000] [[
  Exception while running a command
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@3077e73b rejected from java.util.concurrent.ScheduledThreadPoolExecutor@6c0f8168[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
    at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:326)
    at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(ScheduledThreadPoolExecutor.java:597)
    at fish.payara.nucleus.executorservice.PayaraExecutorService.scheduleWithFixedDelay(PayaraExecutorService.java:190)
    at com.sun.enterprise.v3.admin.cluster.StartInstanceCommand.pollForLife(StartInstanceCommand.java:307)
    at com.sun.enterprise.v3.admin.cluster.StartInstanceCommand.execute(StartInstanceCommand.java:234)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:549)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:545)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:544)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:575)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:567)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:360)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:566)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1475)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:111)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1857)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1733)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:263)
    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:234)
    at org.glassfish.admin.rest.resources.TemplateExecCommand.executeCommandLegacyFormat(TemplateExecCommand.java:159)
    at org.glassfish.admin.rest.resources.TemplateCommandPostResource.processPostLegacyFormat(TemplateCommandPostResource.java:100)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:704)
    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377)
    at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:322)
    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:182)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:748)
]]

Samples

Environment

smillidge commented 5 years ago

There's not a lot of information to go on for this ticket. Can you tell us how to reproduce the issue?

TinusJ commented 5 years ago

@smillidge Full stack trace added for instance creation as well as instance start. Added steps to reproduce. NB: This is on windows using OpenSSH

smillidge commented 5 years ago

Please try again on Payara 5.191 as there have been fices in the executor service that in the stack trace is rejecting tasks

smillidge commented 5 years ago

Closing due to inactivity. Please comment if this is fixed in later releases for you.

thirion commented 1 year ago

I've been experiencing this exact same issue. I've tried Payara 5.192, 5.2021.8, 5.2022.5, 6.2023.2 and they all have this problem. They're all able to successfully create nodes and instances from Linux to another Linux machine, but not when the remote server is Windows. I used VirtualBox with a Windows Server 2019 vhd file downloaded from Microsoft, set up OpenSSH and used keys for passwordless connections.

I checked out the source for 5.2022.5 and the cause of the problem is in InstallNodeSshCommand.java line 189 during scpClient.put(). FileUtils.quoteString(sshInstallDir) wraps the path in single quotes which breaks on Windows. To fix it you could replace that line with: scpClient.put(zipFile.getAbsolutePath(), "\"" + sshInstallDir.replace("\"", "\\\"") + "\"");

I couldn't get the whole Payara project to build successfully to test this, so I wrote a small sample application just to test the core of what Payara is doing and confirmed that the above worked on Windows for files with single quotes and on Linux for files with single or double quotes. Windows doesn't allow file names with double quotes.

To quickly test this, try to create a node on a remote windows machine. It should always fail due to the path being wrapped in single quotes. To prove this is the problem, specify a file path that includes a single quote, in which case FileUtils.quoteString(sshInstallDir) will wrap it in double quotes instead, which works for the copy, but will fail for the extract command on line 200 because it directly wraps the command in single quotes. You will get an error that jar command is not found.

You can manually run the extract command on the remote server to continue testing, but it will break when creating an instance if it has a single quote in it, but you get the point.

It could be as simple as updating FileUtils.quoteString(sshInstallDir) to just wrap using double quotes as a first resort but I have no idea if that could break existing functionality. I'll keep trying to build Payara so I can just replace all scpClient.put calls with my path fix. That should be the least risk and work for my purposes.

Thanks again for a great product.

mirozitnansky commented 1 year ago

I've enabled logging on windows sftp-server.exe and this doesn't seems like problem with path.

8232 2023-04-13 17:43:55.415 close "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/cacerts.p12" bytes read 0 written 415632
8232 2023-04-13 17:43:55.415 debug3: request 1071: sent status 0
8232 2023-04-13 17:43:55.415 sent status Success
8232 2023-04-13 17:43:55.416 debug3: request 1072: stat
8232 2023-04-13 17:43:55.416 stat name "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml"
8232 2023-04-13 17:43:55.416 debug1: request 1072: sent attrib have 0xf
8232 2023-04-13 17:43:55.416 debug1: request 1073: setstat name "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml"
8232 2023-04-13 17:43:55.416 set "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml" size 75585
8232 2023-04-13 17:43:55.416 set "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml" mode 100607
8232 2023-04-13 17:43:55.416 set "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml" modtime 19700101-01:00:00
8232 2023-04-13 17:43:55.416 set "c:/payara6/glassfish/nodes/kiosk-node-ssh/kiosk-inst-ssh-2/config/domain.xml" owner 0 group 0
8232 2023-04-13 17:43:55.416 debug3: request 1073: sent status 4
8232 2023-04-13 17:43:55.416 sent status Failure
thirion commented 1 year ago

Hi mirozitnansky. In file InstallNodeSshCommand.java they create an SFTPClient and an SCPClient. Only the SCPClient quotes the path and causes the issue.

mirozitnansky commented 1 year ago

Heelo @thirion code you are pointing to, is called with command asadmin install-node-ssh. That should copy whole payara archive to host and extract it, without domain/nodes dirs. There could be error you are describing.

But log you've pasted in your first command, points to specific line Caused by: com.trilead.ssh2.SFTPException: Failure (SSH_FX_FAILURE: An error occurred, but no specific error code exists to describe the failure.) at com.trilead.ssh2.SFTPv3Client.expectStatusOKMessage(SFTPv3Client.java:556) at com.trilead.ssh2.SFTPv3Client.setstat(SFTPv3Client.java:584) at com.sun.enterprise.v3.admin.cluster.SecureAdminBootstrapHelper$SSHHelper.setLastModified(SecureAdminBootstrapHelper.java:405)

That is method setLastModified in SecureAdminBootstrapHelper.java:405 where com.trilead.ssh2.SFTPException ftpClient.setstat(path, attrs); returns an exception.

I have same error when using asadmin create-node-ssh (not install-node-ssh) command, or admin gui for node creation (without installation flag, payara was copied before node creation). So only node and instance folders are created.

And this setstat method of sftp client, produces error on server side on Win32 OpenSSH sftp server, in log pasted yesterday.

I was able to trace this to server function process_setstat(u_int32_t id) and it seem like problem is with setting user id 0, but that's is only my assumptions.

For now, I am understanding this as incompatibility between com.trilead.ssh2.sftp and Win32 OpenSSH sftp-server.
And that's major issue, when DCOM implementation is no longer working.

lennartkoester commented 1 year ago

It looks like I got the deployment group running, using the cygwin openssh server instead of windows' openssh server

mirozitnansky commented 1 year ago

That was supported since glassfish 3. But it's much more hassle to install cygwin than MS openssh. But yes, it's alternative to DCOM not working. On the other hand, DCOM should be removed from admin if it won't be supported.