Closed cinadr closed 3 years ago
Hi, I know what is wrong a few days ago. It could be solved by simply using the base image frolvlad/alpine-glibc:glibc-2.32
instead of the latest
tag when building the image. I have a thread here
Any chance to fix this within the original goofball images?
It turned out the JRE package from the Alpine repository is somehow not compatible with the new version of glibc. And actually, the package is special built for use with MUSL. So I didn't really know how it worked. Anyways, I am currently using this awesome base image and extract the JRE binary from here and it works beautifully. I can provide the Docker file that I am using as base image below.
FROM xfournet/jready:alpine
ENV JAVA_HOME=/opt/java/openjdk \
PATH="/opt/java/openjdk/bin:$PATH"
RUN set -x \
&& OPENJDK_JRE_URL=https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u282-b08_openj9-0.24.0/OpenJDK8U-jre_x64_linux_openj9_8u282b08_openj9-0.24.0.tar.gz \
&& apk add -q --no-cache curl tar \
&& curl -sSL ${OPENJDK_JRE_URL} -o /tmp/openjdk.tar.gz \
&& mkdir /tmp/openjdk \
&& tar zxf /tmp/openjdk.tar.gz -C /tmp/openjdk --strip-components=1 \
&& mkdir -p /opt/java/openjdk \
&& mv /tmp/openjdk/bin /opt/java/openjdk/ \
&& mv /tmp/openjdk/lib /opt/java/openjdk/ \
&& find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u >> /usr/glibc-compat/etc/ld.so.conf \
&& /usr/glibc-compat/sbin/ldconfig -i \
&& apk del -q --no-cache curl tar \
&& rm -r \
/tmp/* \
/var/cache/ldconfig/aux-cache \
/var/cache/ldconfig \
Any chance to fix this within the original goofball images?
You will just have to change the FROM
line at the top of the Dockerfile from frolvlad/alpine-glibc:glibc-2.32
instead of the latest
tag and build it with make
. But I would recommend to use binary that is compiled to use with glibc, so I would recommend my way. If @goofball222 is good with it, I can create a repo with the Dockerfile I provided above and this repo can base on my image.
I'm looking at some different solves for this vs. targeting a specific frolvlad/alpine-glibc version, or rebasing.
I'm not able to reproduce this error with the Docker host/equipment I have on hand, I just fired up an instance of goofball222/unifi:6.1-alpine-beta against my active home lab, which only has UAPs, not seeing org.xerial.snappy.Snappy errors logged. This is a working 6.0.45 db upgraded directly to 6.1.67 during the test.
Is this only happening with your USG/USW devices? Are there other devices like UAPs that are able to connect and inform?
Yes.
I just pushed 500138d which adds 6.1/test, and should have goofball222/unifi:6.1-alpine-test built on Docker Hub by the time this comment is an hour old. That test image is based on Alpine, targeting UniFi v6.1.67
6.1/test/Dockerfile.alpine rebases to the bone-stock Alpine image, and then installs apks for gcompat and libc6-compat for glibc compatability instead of the frolvlad/alpine-glibc approach.
Before you switch to the test image stop the existing setup and MAKE A BACKUP.
Once the tag is built and you have a backup made please switch your deployment to target goofball222/unifi:6.1-alpine-test, and let me know if the org.xerial.snappy.Snappy error re-occurs, or any other unexplained errors pop up.
This error only happens if you have some particular UAP adopted. I have an nanoHD and UAP-AC-Lite, and only nanoHD did this. What happens is the AP cannot inform the controller and it remains disconnected. I have a image of the Dockerfile I commented earlier here ghcr.io/superjeng1/alpine-glibc-jre
. And a unifi image built with the image here ghcr.io/superjeng1/unifi
.
Edit: Corrected typos, added link to reference.
Devices are connected but logs contains the following errors:
[2021-03-11 06:32:53,933] <docker-entrypoint> WARN - Custom SSL: missing '/usr/lib/unifi/cert/fullchain.pem'
[2021-03-11 06:32:53,935] <docker-entrypoint> WARN - Custom SSL: certificate import was NOT performed
[2021-03-11 06:32:53,941] <docker-entrypoint> INFO - Ensuring permissions are correct before continuing - 'chown -R unifi:unifi /usr/lib/unifi'
[2021-03-11 06:32:53,944] <docker-entrypoint> INFO - Running recursive 'chown' on Docker overlay2 storage is **really** slow. This may take a bit.
[2021-03-11 06:43:52,585] <docker-entrypoint> INFO - Use su-exec to drop privileges and start Java/UniFi as GID=999, UID=999
[2021-03-11 06:43:52,593] <docker-entrypoint> EXEC - su-exec unifi:unifi /usr/bin/java -Xmx1024M -Dunifi.datadir=/usr/lib/unifi/data -Dunifi.logdir=/usr/lib/unifi/logs -Dunifi.rundir=/usr/lib/unifi/run -Djava.awt.headless=true -Dfile.encoding=UTF-8 -jar /usr/lib/unifi/lib/ace.jar start
2021-03-11 06:43:53,661 main ERROR Error processing element InMemoryAppender ([Appenders: null]): CLASS_NOT_FOUND
2021-03-11 06:43:54,308 main ERROR Unable to locate appender "InMemoryAppender" for logger config "root"
[2021-03-11T06:44:00,346] XXX <localhost-startStop-1> INFO Version - HV000001: Hibernate Validator 6.1.2.Final
[2021-03-11T06:44:00,966] XXX <localhost-startStop-1> INFO system - ======================================================================
[2021-03-11T06:44:00,967] XXX <localhost-startStop-1> INFO system - UniFi 6.1.67 (build atag_6.1.67_15043 - release/release) is started
[2021-03-11T06:44:00,967] XXX <localhost-startStop-1> INFO system - ======================================================================
[2021-03-11T06:44:00,969] XXX <localhost-startStop-1> INFO system - BASE dir:/usr/lib/unifi
[2021-03-11T06:44:01,084] XXX <localhost-startStop-1> INFO system - Current System IP: 172.21.0.11
[2021-03-11T06:44:01,085] XXX <localhost-startStop-1> INFO system - Hostname: 6d5b8a8d59fe
[2021-03-11T06:44:01,087] XXX <localhost-startStop-1> INFO system - ubic.env: prod
[2021-03-11T06:44:02,168] XXX <localhost-startStop-1> INFO db - waiting for db connection...
[2021-03-11T06:44:02,669] XXX <localhost-startStop-1> INFO db - Connecting to mongodb://mongo:27017/unifi
[2021-03-11T06:44:03,116] XXX <localhost-startStop-1> INFO db - setting mongodb features compatibility version to 3.6
[2021-03-11T06:44:03,920] XXX <localhost-startStop-1> INFO db - Connecting to mongodb://mongo:27017/unifi_stat
[2021-03-11T06:44:05,518] XXX <localhost-startStop-1> INFO productinfo - Using controller channel=RELEASE, firmware channel=RELEASE. Available controller channels=[RELEASE], available firmware channels=[RELEASE]. SSO is disabled.
[2021-03-11T06:44:06,748] XXX <localhost-startStop-1> INFO webrtc - Unable to load WebRTC library
[2021-03-11T06:44:08,874] XXX <localhost-startStop-1> INFO remote - Directory '/usr/lib/unifi/logs/remote' present
[2021-03-11T06:44:10,626] XXX <cloudaccess-connect> INFO sdn - IoT certificate check succeeded
[2021-03-11T06:44:11,907] XXX <pool-8-thread-1> INFO AwsIotConnection - Connection successfully established
[2021-03-11T06:44:11,907] XXX <pool-8-thread-1> INFO AbstractAwsIotClient - Client connection active: 83e5cf46-8d73-48bc-ad4d-a84ef5ee6805:1959046578
[2021-03-11T06:45:12,603] XXX <autoupdate-check> INFO productinfo - firmware[UAP6MP] new version (5.55.2.13145) is available
[2021-03-11T06:46:16,834] XXX <webapi-1> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T06:49:07,796] XXX <ucare-device-check-task> WARN ucare - Device check failed: Cloud operation failed! RC=404, error: {"code":"NOT_FOUND","timestamp":"1615441747"}
[2021-03-11T06:49:18,937] XXX <webapi-3> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T06:49:18,937] XXX <webapi-10> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T06:56:59,070] XXX <webapi-4> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T06:58:56,386] XXX <webapi-14> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T07:00:10,633] XXX <webapi-4> ERROR [ApiServlet] - Servlet.service() for servlet [ApiServlet] in context with path [] threw exception
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.connection.SocketStream.read(SocketStream.java:88) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:494) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:224) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.UsageTrackingInternalConnection.receiveMessage(UsageTrackingInternalConnection.java:96) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.DefaultConnectionPool$PooledConnection.receiveMessage(DefaultConnectionPool.java:440) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:112) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.connection.DefaultServerConnection.command(DefaultServerConnection.java:176) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:216) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:207) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:113) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:516) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.FindOperation$1.call(FindOperation.java:510) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:435) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:408) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.FindOperation.execute(FindOperation.java:510) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.operation.FindOperation.execute(FindOperation.java:81) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.Mongo.execute(Mongo.java:836) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.Mongo$2.execute(Mongo.java:823) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.DBCursor.initializeCursor(DBCursor.java:870) ~[mongo-java-driver-3.4.3.jar:?]
at com.mongodb.DBCursor.hasNext(DBCursor.java:142) ~[mongo-java-driver-3.4.3.jar:?]
at com.ubnt.service.system.oo0o.Ò00000(Unknown Source) ~[ace.jar:?]
at com.ubnt.service.system.O00O.superreturn(Unknown Source) ~[ace.jar:?]
at com.ubnt.ace.api.ApiServlet.service(Unknown Source) ~[ace.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at com.ubnt.service.trace.requestmetrics.OoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.super(Unknown Source) ~[ace.jar:?]
at com.ubnt.service.trace.requestmetrics.OoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.doFilter(Unknown Source) ~[ace.jar:?]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at com.ubnt.ace.view.AuthFilter.doFilter(Unknown Source) ~[ace.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at com.ubnt.ace.view.UbiosHttpsFilter.doFilter(Unknown Source) ~[ace.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:364) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:170) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627) [tomcat-embed-core-8.5.56.jar:8.5.56]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.56.jar:8.5.56]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_275]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_275]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.56.jar:8.5.56]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_275]
[2021-03-11T07:01:02,209] XXX <webapi-13> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
[2021-03-11T07:01:02,210] XXX <webapi-16> WARN api - websocket session error:Unable to unwrap data, invalid status [CLOSED]
@cinadr Which image do you use?
@cinadr Which image do you use?
goofball222/unifi:6.1-alpine-test
goofball222/unifi:6.1-alpine-test
Can you try using my image? ghcr.io/superjeng1/unifi
Edit: Remember to backup first!
Hi!
With a settings only backup in hand, I've deleted my mongo database and unifi settings, launched a pair of clean container (unifi and mongo) and made a restore from setup screen. Here are my results with different images:
@cinadr are you still running goofball222/unifi:6.1-alpine-test and have you had any further issues/errors with it? I've been running it against my test setup since I created it yesterday and haven't had any problems/errors of note.
Devices are connected but logs contains the following errors:
I can't explain com.mongodb.MongoSocketReadException error you shared, that'd be something interrupting the controller's connection to mongo. Did the mongo DB process/container restart, or a remote mongodb instance force-close it's connections for some reason?
I have seen the websocket session error when testing, it looks like something browser-side causes it, like an extension or the page being closed while active. It hasn't negatively impacted my use or test system function.
With a settings only backup in hand, I've deleted my mongo database and unifi settings, launched a pair of clean container (unifi and mongo) and made a restore from setup screen. Here are my results with different images:
From here I'll look at removing the temporary 6.1-alpine-testing tag and moving the 6.1-alpine official/beta tags over to the new base to close this out, barring any major problems found.
Heads-up I moved the 6.1/test changes to 6.1/beta, and updated 6.1/beta to UniFi v6.1.69 since it was published yesterday.
Please move forward with any additional testing using the goofball222/unifi:6.1-alpine-beta image. If no issues are reported these changes will also move to 6.1/official and the rest of the images on the next official release published by UBNT.
Hi!
Sorry for the delay.
Test results are OK for both current beta and former test versions. Log file for test version: server-test.log Log file for beta version: server.log
I have seen the websocket session error when testing, it looks like something browser-side causes it, like an extension or the page being closed while active. It hasn't negatively impacted my use or test system function.
Openhab connects to unifi through it's binding to query wireless clients presence. Probably this causes these messeges.
You might close this if you don't need more data on resolving further. Thank you for your support.
6.1/official updated to v6.1.70 and the Alpine base image change to stock + gcompat + libc6-compat.
Reporting bugs/issues
When reporting a bug/issue:
Ensure that you are using the latest release: Done and after error I updated to beta. Same issue there.
Revert any custom modifications or environment varibles to insure they're not the cause: No customization were done.
OS/distribution version (command for your OS may differ):
Docker version:
Labels from container:
Details on how to reproduce the trouble, if available: I've just upgraded to version 6.1.65, than 6.1.67.
I've got this in log a lot of times:
and
Full snapp error is here:
I cannot get my USG and USW to attach. Console info displays server reject:
These might be relevant with the same snappy error is in the cause : Server reject - class org.xerial.snappy.Snappy No connection between AP and Controller after firmware upgrade