wwadge / awair-bridge Goto Github PK
View Code? Open in Web Editor NEWSpring boot app to fetch data from Awair element
Spring boot app to fetch data from Awair element
Hey !
Ty for the tool.
I create a helm chart to run it on any kubernetes cluster quickly:
Hi, I have installed your docker and it's running, but I don't see any update on PW.
How I can check logs and see if streams are sent?
I'm not really familiar with Docker
hi,
TY for the tools , i got this error on docker on debian 11 :
2022-04-05 06:25:56.424 INFO 1 --- [ main] c.pw.awairbridge.AwairBridgeApplication : Started AwairBridgeApplication in 5.365 seconds (JVM running for 5.952)
2022-04-05 06:25:56.428 INFO 1 --- [ scheduling-1] c.p.a.service.impl.DataBridgeImpl : Starting data fetch...
2022-04-05 06:25:56.732 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$TooManyRequests: [429 Too Many Requests] during [GET] to [https://developer-apis.awair.is/v1/users/self/devices/awair-element/80947/air-data/latest] [AwairClient#getAirData(String,Integer)]: [{"message":"Too many requests during the past 24 hours"}]
at feign.FeignException.clientErrorStatus(FeignException.java:231) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:194) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:185) ~[feign-core-11.8.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:92) ~[feign-core-11.8.jar:na]
at feign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:96) ~[feign-core-11.8.jar:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138) ~[feign-core-11.8.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89) ~[feign-core-11.8.jar:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100) ~[feign-core-11.8.jar:na]
at jdk.proxy2/jdk.proxy2.$Proxy62.getAirData(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) ~[spring-aop-5.3.18.jar:5.3.18]
at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.7.0.jar:1.7.0]
at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.7.0.jar:1.7.0]
at io.github.resilience4j.retry.configure.RetryAspect.handleDefaultJoinPoint(RetryAspect.java:184) ~[resilience4j-spring-1.7.0.jar:1.7.0]
at io.github.resilience4j.retry.configure.RetryAspect.proceed(RetryAspect.java:141) ~[resilience4j-spring-1.7.0.jar:1.7.0]
at io.github.resilience4j.retry.configure.RetryAspect.retryAroundAdvice(RetryAspect.java:120) ~[resilience4j-spring-1.7.0.jar:1.7.0]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.18.jar:5.3.18]
at jdk.proxy2/jdk.proxy2.$Proxy66.getAirData(Unknown Source) ~[na:na]
at com.pw.awairbridge.service.impl.DataBridgeImpl.runService(DataBridgeImpl.java:85) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.18.jar:5.3.18]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.18.jar:5.3.18]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
```
do you know why?
2022-04-05 14:15:37.740 WARN 1 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataBridgeImpl' defined in file [/app/classes/com/pw/awairbridge/service/impl/DataBridgeImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.pw.awairbridge.service.impl.DataBridgeImpl]: Constructor threw exception; nested exception is org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=[https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth?client_id=external-login&redirect_uri=http%3A%2F%2Flocalhost%3A33333%2Fkeycloak-redirect&scope=openid+offline_access&response_type=code]
2022-04-05 14:15:37.834 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-04-05 14:15:38.160 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataBridgeImpl' defined in file [/app/classes/com/pw/awairbridge/service/impl/DataBridgeImpl.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.pw.awairbridge.service.impl.DataBridgeImpl]: Constructor threw exception; nested exception is org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=[https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth?client_id=external-login&redirect_uri=http%3A%2F%2Flocalhost%3A33333%2Fkeycloak-redirect&scope=openid+offline_access&response_type=code]
2022-04-05 12:14:26.273 INFO 1 --- [ scheduling-1] c.p.a.service.impl.DataBridgeImpl : Starting data fetch...
2022-04-05 12:14:26.700 INFO 1 --- [ scheduling-1] c.p.a.service.impl.DataBridgeImpl : AwairDataPacket(otherFields={data=[{timestamp=2022-04-05T12:14:25.000Z, score=89.0, sensors=[{comp=temp, value=23.440000534057617}, {comp=humid, value=27.190000534057617}, {comp=pm25, value=1.0}, {comp=co2, value=467.0}, {comp=voc, value=246.0}], indices=[{comp=pm25, value=0.0}, {comp=co2, value=0.0}, {comp=temp, value=0.0}, {comp=voc, value=0.0}, {comp=humid, value=-2.0}]}]})
2022-04-05 12:14:31.893 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:14:31.893786099Z[Etc/UTC]: Retry 'pw-send-data' recorded an error which has been ignored: 'feign.FeignException$Unauthorized: [401 Unauthorized] during [POST] to [https://wearableapi.planetwatch.io/api/data/devicedata] [PWClient#sendData(PWData)]: []'.
2022-04-05 12:14:31.896 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
feign.FeignException$Unauthorized: [401 Unauthorized] during [POST] to [https://wearableapi.planetwatch.io/api/data/devicedata] [PWClient#sendData(PWData)]: []
at feign.FeignException.clientErrorStatus(FeignException.java:215) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:194) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:185) ~[feign-core-11.8.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:92) ~[feign-core-11.8.jar:na]
at feign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:96) ~[feign-core-11.8.jar:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138) ~[feign-core-11.8.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89) ~[feign-core-11.8.jar:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100) ~[feign-core-11.8.jar:na]
at jdk.proxy2/jdk.proxy2.$Proxy70.sendData(Unknown Source) ~[na:na]
at jdk.internal.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) ~[spring-aop-5.3.18.jar:5.3.18]
at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.7.0.jar:1.7.0]
at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.7.0.jar:1.7.0]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.18.jar:5.3.18]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.18.jar:5.3.18]
at com.pw.awairbridge.service.impl.DataBridgeImpl.runService(DataBridgeImpl.java:113) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.18.jar:5.3.18]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
2022-04-05 12:26:41.739 INFO 1 --- [ scheduling-1] com.pw.awairbridge.util.PWAuthService : Logging in PW
2022-04-05 12:26:41.872 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:26:41.872590591Z[Etc/UTC]: Retry 'pw-auth', waiting PT1M until attempt '1'. Last attempt failed with exception 'feign.FeignException$Forbidden: [403 Forbidden] during [POST] to [https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth] [PWAuthClient#openIDAuth(Map)]: [error code: 1020]'.
2022-04-05 12:27:42.031 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:27:42.031573407Z[Etc/UTC]: Retry 'pw-auth', waiting PT1M until attempt '2'. Last attempt failed with exception 'feign.FeignException$Forbidden: [403 Forbidden] during [POST] to [https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth] [PWAuthClient#openIDAuth(Map)]: [error code: 1020]'.
2022-04-05 12:28:42.120 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:28:42.120573644Z[Etc/UTC]: Retry 'pw-auth', waiting PT1M until attempt '3'. Last attempt failed with exception 'feign.FeignException$Forbidden: [403 Forbidden] during [POST] to [https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth] [PWAuthClient#openIDAuth(Map)]: [error code: 1020]'.
2022-04-05 12:29:42.207 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:29:42.207652564Z[Etc/UTC]: Retry 'pw-auth' recorded a failed retry attempt. Number of retry attempts: '4'. Giving up. Last exception was: 'feign.FeignException$Forbidden: [403 Forbidden] during [POST] to [https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth] [PWAuthClient#openIDAuth(Map)]: [error code: 1020]'.
2022-04-05 12:29:42.209 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
2022-04-05 12:29:42.210 INFO 1 --- [ scheduling-1] c.p.a.service.impl.DataBridgeImpl : Starting data fetch...
2022-04-05 12:29:42.634 INFO 1 --- [ scheduling-1] c.p.a.service.impl.DataBridgeImpl : AwairDataPacket(otherFields={data=[{timestamp=2022-04-05T12:29:29.000Z, score=89.0, sensors=[{comp=voc, value=236.0}, {comp=temp, value=23.40999984741211}, {comp=co2, value=471.0}, {comp=humid, value=27.190000534057617}, {comp=pm25, value=1.0}], indices=[{comp=temp, value=0.0}, {comp=co2, value=0.0}, {comp=voc, value=0.0}, {comp=humid, value=-2.0}, {comp=pm25, value=0.0}]}]})
2022-04-05 12:29:42.834 INFO 1 --- [ scheduling-1] com.pw.awairbridge.config.BeanConfig : 2022-04-05T12:29:42.834705129Z[Etc/UTC]: Retry 'pw-send-data' recorded an error which has been ignored: 'feign.FeignException$Unauthorized: [401 Unauthorized] during [POST] to [https://wearableapi.planetwatch.io/api/data/devicedata] [PWClient#sendData(PWData)]: []'.
2022-04-05 12:29:42.836 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
at feign.FeignException.clientErrorStatus(FeignException.java:215) ~[feign-core-11.8.jar:na]
at feign.FeignException.errorStatus(FeignException.java:194) ~[feign-core-11.8.jar:na]
Hi,
First off - thanks for this - we need headless!
The README.md says to use pwlogin.sh whilst I assume it should read pwLogin.sh
Verified pup and jq is in my path - however once specifying the credentials it appears that the loginForm variable is not being filled in, snippit running with bash -x:
++ curl -sSL --get --cookie /tmp/cookie.jar.Fr0F --cookie-jar /tmp/cookie.jar.Fr0F --ciphers ECDHE-RSA-AES128-GCM-SHA256 -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) awair-uploader/0.0.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36' --data-urlencode client_id=external-login --data-urlencode redirect_uri=http://localhost:33333/keycloak-redirect --data-urlencode 'scope=openid offline_access' --data-urlencode response_type=code --data-urlencode code_challenge=FnVdSgvbpqc_ImqAFBw1n52EIF1s2ZUULdgRGRSDZHg --data-urlencode code_challenge_method=S256 https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth
+ loginForm=
+ loginForm=
++ curl -sS --cookie /tmp/cookie.jar.Fr0F --cookie-jar /tmp/cookie.jar.Fr0F --ciphers ECDHE-RSA-AES128-GCM-SHA256 -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) awair-uploader/0.0.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36' --data-urlencode [email protected] password=mypassword --write-out '%{redirect_url}' ''
curl: (3) URL using bad/illegal format or missing URL
+ codeUrl=
+ code=
The output of the first curl to https://login.planetwatch.io/auth/realms/Planetwatch/protocol/openid-connect/auth says:
error code: 1020
Pointers welcome!
docker: no matching manifest for linux/arm/v6 in the manifest list entries.
Docker
RPi4 4GB
Ubuntu Server 20.04.3 LTS
Only 1/4 Awair devices was read and updated on PW explorer Sensor. See error from Docker log:
2022-04-04 22:17:48.672 ERROR 1 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[na:na]
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[na:na]
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[na:na]
at java.base/java.util.Objects.checkIndex(Objects.java:359) ~[na:na]
at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[na:na]
at com.pw.awairbridge.service.impl.DataBridgeImpl.runService(DataBridgeImpl.java:90) ~[classes/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.18.jar:5.3.18]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.18.jar:5.3.18]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[na:na]
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Any ideas?
VBR,
CE
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.