Open mtridici opened 4 years ago
Hi,
We are seeing the same issues. We are running the latest github release and running.
docker run -p 80:8080 -d -v ~/metalnx/etc:/etc/irods-ext:Z -v ~/metalnx/certs:/tmp/cert:Z --add-host hostcomputer:a.b.c.d --name metalnx-latest myimages/metalnx:latest
To provide more detail, when searching using metadata or properties, the page reloads and generates a stack trace (attached as metadata-search-exception.txt). Going to the rules tab results in a reload loop and generates a stack trace (attached as rules-page-exception.txt). We have no rules currently defined too.
If its relevant, we are using PAM for auth.
Cheers,
Carl.
I'll take a look on this side, we need that too
that seems to work ok. FWIW this is the master branch. NB I've added a docker-compose framework that can be leveraged, needs some cleanup but can make this easer to test.
Note the stacktrace gives clues...
3-Feb-2020 23:37:44.259 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mvc-dispatcher] in context with path [/metalnx] threw exception [Request processing failed; nested exception is com.emc.metalnx.core.domain.exceptions.DataGridException: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only] with root cause
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:728)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:556)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:286)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy55.findByMetadata(Unknown Source)
at com.emc.metalnx.controller.MetadataController.searchByMetadata(MetadataController.java:175)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
Metalnx does a few things via custom database that we're in the process of getting rid of. Here it almost looks like the issues with search may be configuration areas with this database. We can drill down on this
On the rules issue, the stack trace is interesting
23-Feb-2020 23:36:53.449 SEVERE [http-nio-8080-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mvc-dispatcher] in context with path [/metalnx] threw exception [Request processing failed; nested exception is com.emc.metalnx.core.domain.exceptions.DataGridException: exception getting paginated objects] with root cause
com.emc.metalnx.core.domain.exceptions.DataGridException: AuthenticationException
at com.emc.metalnx.services.irods.RuleDeploymentServiceImpl.ruleCacheExists(RuleDeploymentServiceImpl.java:166)
at jdk.internal.reflect.GeneratedMethodAccessor388.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy102.ruleCacheExists(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor387.invoke(Unknown Source)
Notice here it's made about authentication. Make sure the irods admin account is provided in the metalnx configs...
this is in the configured /etc/irods-ext/metalnx.properties file at the top:
irods.host=irods-catalog-provider
irods.port=1247
irods.zoneName=tempZone
irods.admin.user=rods
irods.admin.password=rods
irods.admin.authscheme=STANDARD
Check the admin user/password/authscheme
These both might be config issues versus organic bugs.
that seems to work ok. FWIW this is the master branch. NB I've added a docker-compose framework that can be leveraged, needs some cleanup but can make this easer to test.
Im not so familiar with the docker side of things, but am happy to try some things out if it makes debugging easier.
Metalnx does a few things via custom database that we're in the process of getting rid of. Here it almost looks like the issues with search may be configuration areas with this database. We can drill down on this
Relevant section of config:
db.driverClassName=org.postgresql.Driver
db.url=jdbc:postgresql://172.17.0.1:5432/IRODS-EXT
db.username=metalnx
db.password=secret
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
From the container it looks like connectivity is ok
root@2d846ec9993e:/usr/local/tomcat/logs# psql -h 172.17.0.1 -p 5432 -U metalnx IRODS-EXT
Password for user metalnx:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 9.2.24)
Type "help" for help.
IRODS-EXT-> \d
List of relations
Schema | Name | Type | Owner
--------+---------------------------------------+----------+---------
public | group_bookmarks | table | metalnx
public | group_bookmarks_id_seq | sequence | metalnx
public | groups | table | metalnx
....
I think that this database might have originally been created from the image from docker hub, has there been any significant changes in the schema since then? I might blow it away and try to reinit everything again.
On the rules issue, the stack trace is interesting
Notice here it's made about authentication. Make sure the irods admin account is provided in the metalnx configs...
this is in the configured /etc/irods-ext/metalnx.properties file at the top:
irods.host=irods-catalog-provider irods.port=1247 irods.zoneName=tempZone irods.admin.user=rods irods.admin.password=rods irods.admin.authscheme=STANDARD
Check the admin user/password/authscheme
I have configured those sections, however had some issues because we are using PAM along with the implied SSL side of things that goes with it.
So as such the admin account is an LDAP(ActiveDirectory) account. Does it need to be a local admin account? Authentication is working fine for other PAM accounts.
irods.host=irods.bioinf.science
irods.port=1247
irods.zoneName=BASC
irods.admin.user=irods
irods.admin.password=secret
irods.auth.scheme=PAM
irods.admin.authscheme=PAM
default.storage.resource=
jobs.irods.username=irods
jobs.irods.password=secret
jobs.irods.auth.scheme=PAM
These both might be config issues versus organic bugs.
Quite likely. Do you have any suggestions on how we might be able to test the config from the command line?
I can help tomorrow with some commands. There is a migration tool we can use in the metalnx tools subproject I bet this is the issue. Metalnx currently still silently eats some exceptions so that's being rectified over time. Maybe let's dm tomorrow
On Tue, Mar 10, 2020, 7:44 PM madllama notifications@github.com wrote:
that seems to work ok. FWIW this is the master branch. NB I've added a docker-compose framework that can be leveraged, needs some cleanup but can make this easer to test.
Im not so familiar with the docker side of things, but am happy to try some things out if it makes debugging easier.
Metalnx does a few things via custom database that we're in the process of getting rid of. Here it almost looks like the issues with search may be configuration areas with this database. We can drill down on this
Relevant section of config:
db.driverClassName=org.postgresql.Driver db.url=jdbc:postgresql://172.17.0.1:5432/IRODS-EXT db.username=metalnx db.password=secret hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect http://172.17.0.1:5432/IRODS-EXTdb.username=metalnxdb.password=secrethibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
From the container it looks like connectivity is ok
root@2d846ec9993e:/usr/local/tomcat/logs# psql -h 172.17.0.1 -p 5432 -U metalnx IRODS-EXT Password for user metalnx: psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 9.2.24) Type "help" for help.
IRODS-EXT-> \d List of relations Schema | Name | Type | Owner --------+---------------------------------------+----------+--------- public | group_bookmarks | table | metalnx public | group_bookmarks_id_seq | sequence | metalnx public | groups | table | metalnx ....
I think that this database might have originally been created from the image from docker hub, has there been any significant changes in the schema since then? I might blow it away and try to reinit everything again.
— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/irods-contrib/metalnx-web/issues/136?email_source=notifications&email_token=AAIL4LMVOBPCYSYRIOJCZQDRG3GF7A5CNFSM4KIHUBIKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEONTEKQ#issuecomment-597373482, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAIL4LMCSJ66ALUXZBWKZGTRG3GF7ANCNFSM4KIHUBIA .
I can help tomorrow with some commands. There is a migration tool we can use in the metalnx tools subproject I bet this is the issue. Metalnx currently still silently eats some exceptions so that's being rectified over time. Maybe let's dm tomorrow
Sounds good. Im available from 10am AEDT (UTC+11)
Didnt hear anything, so today I renamed the old database and recreated an empty database and tried it again. The console logs showed that the tables were recreated, unfortunately these issue still persist. Could the issue be related to the use of PAM (Active Directory) for auth? Please let me know if you need any logs for further troubleshooting?
Hey @madllama I apologize, it's been a little bit nuts here as everywhere. I'll try to help you out today. Let me take a look at shoring up the logging around this, making sure that any exceptions are not silently quashed according to that stack trace. Yes PAM can be an issue especially if you've not configured the ssl public cert in the running container (there's an easy way to do this btw). I'll shoot you a note after lunch today with a new container to test.
Hi @michael-conway havent heard anything for a little while now, have you had any progress?
Thanks,
Carl.
We've installed a build from Master and are also seeing this issue. The logs have this, which we think is an underlying assumption that users can install their own queries (i.e. iadmin asq
). The iRODs user that is configured both in jobs.irods.username
and irods.admin.user
are both rodsadmin
accounts.
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 ERROR MetadataController:185 - Could not search by metadata:
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:59 - show500CustomizedPage()
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 ERROR HttpErrorController:60 - 500 - Internal Server Error
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:61 - httpRequest:org.apache.catalina.core.ApplicationHttpRequest@74bbe3b0
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:62 - model:{}
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.forward.request_uri
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/metalnx/metadata/search/
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.forward.context_path
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/metalnx
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.forward.servlet_path
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/metadata/search/
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.forward.mapping
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.apache.catalina.core.ApplicationMapping$MappingImpl@e2c29e3
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.context.request.async.WebAsyncManager.WEB_ASYNC_MANAGER
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.context.request.async.WebAsyncManager@ec6423d
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.error.status_code
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:500
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.CONTEXT
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:WebApplicationContext for namespace 'mvc-dispatcher-servlet': startup date [Thu Sep 24 14:58:58 GMT 2020]; parent: Root WebApplicationContext
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.resource.ResourceUrlProvider
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.servlet.resource.ResourceUrlProvider@16a4961f
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:__spring_security_session_mgmt_filter_applied
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:true
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:__spring_security_filterSecurityInterceptor_filterApplied
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:true
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.error.servlet_name
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:mvc-dispatcher
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.error.message
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.THEME_SOURCE
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:WebApplicationContext for namespace 'mvc-dispatcher-servlet': startup date [Thu Sep 24 14:58:58 GMT 2020]; parent: Root WebApplicationContext
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.servlet.i18n.SessionLocaleResolver@1dee84bf
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.context.request.RequestContextListener.REQUEST_ATTRIBUTES
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.apache.catalina.connector.RequestFacade@563f0834
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.HandlerMapping.bestMatchingPattern
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/httpError/500
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.OUTPUT_FLASH_MAP
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:FlashMap [attributes={}, targetRequestPath=null, targetRequestParams={}]
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.HandlerMapping.pathWithinHandlerMapping
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/httpError/500
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.FLASH_MAP_MANAGER
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.servlet.support.SessionFlashMapManager@6385ca04
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.HandlerMapping.uriTemplateVariables
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:{}
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.error.request_uri
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:/metalnx/metadata/search/
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.servlet.theme.FixedThemeResolver@2bbac2f8
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:70 - attribName:javax.servlet.error.exception
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO HttpErrorController:71 - attrib:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.emc.metalnx.core.domain.exceptions.DataGridException: com.emc.metalnx.core.domain.exceptions.DataGridException: error finding by metadata
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 DEBUG CollectionServiceImpl:902 - Getting current user's home directory
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 DEBUG CollectionServiceImpl:914 - Getting public directory
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 INFO ConfigServiceImpl:98 - getGlobalConfig()
Sep 28 10:41:57 irods-sanger1-metalnx 701f045c46b1[8202]: 2020-09-28 09:41:57 DEBUG ConfigServiceImpl:104 - globalConfig:GlobalConfig [ticketsEnabled=false, uploadRulesEnabled=false, handleNoAccessViaProxy=false]
Related to #135 perhaps?
Dear All,
I just installed metalnx-web tool. Installation has been completed without problem, it is a very interesting tool. Anyway, I'm experiencing two problems during the web interface usage:
1- metadata search doesn't show any output although there is a test file with desired metadata value:
[sysm02@irods ~]$ imeta ls -d 1GB.0 AVUs defined for dataObj 1GB.0: attribute: project value: test-project units:
attribute: author value: test-author units:
attribute: division value: scc units:
2- if I click on metalnx rules page, the page starts flashing (no rules have been defined).
Is there something wrong in my procedures or understanding? Thank you in advance, Mauro
I'm using the last available version of metalnx. Metalnx Version | 2.1.0-SNAPSHOT Metalnx Build Time | 20200117-0155 Jargon Version | 4.3.1.0-SNAPSHOT Jargon Build Time | 2019-12-31T15:03:53Z