text:
Issue after upgrade ES 7.0.1 -> 7.2.0 and OD 1.0.1 -> 1.2.0: failed to load plugin class

I upgrade ES 7.0.1 -> 7.2.0 and OD 1.0.1 -> 1.2.0 and now get the following error when to start ES.  I don't see any indicators pointing to a specific cause.  Any pointers would be very much appreciated.
[2019-10-15T07:15:39,464][INFO ][o.e.e.NodeEnvironment    ] [watcher_broseph] using [1] data paths, mounts [[/ (/dev/sda2)]], net usable_space [2.3tb], net total_space [2.6tb], types [ext4]
[2019-10-15T07:15:39,482][INFO ][o.e.e.NodeEnvironment    ] [watcher_broseph] heap size [29.7gb], compressed ordinary object pointers [true]
[2019-10-15T07:15:39,688][INFO ][o.e.n.Node               ] [watcher_broseph] node name [watcher_broseph], node ID [nz_rt_FFQr2IH6i8E0fnuQ], cluster name [watcher]
[2019-10-15T07:15:39,688][INFO ][o.e.n.Node               ] [watcher_broseph] version[7.2.0], pid[36204], build[oss/deb/508c38a/2019-06-20T15:54:18.811730Z], OS[Linux/4.15.0-65-generic/amd64], JVM[Ubuntu/OpenJDK 64-Bit Server VM/11.0.4/11.0.4+11-post-Ubuntu-1ubuntu218.04.3]
[2019-10-15T07:15:39,688][INFO ][o.e.n.Node               ] [watcher_broseph] JVM home [/usr/lib/jvm/java-11-openjdk-amd64]
[2019-10-15T07:15:39,689][INFO ][o.e.n.Node               ] [watcher_broseph] JVM arguments [-Xms30g, -Xmx30g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch-2708802334561830030, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=/var/lib/elasticsearch, -XX:ErrorFile=/var/log/elasticsearch/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=/var/log/elasticsearch/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -XX:UseAVX=2, -Dclk.tck=100, -Djdk.attach.allowAttachSelf=true, -Djava.security.policy=file:///usr/share/elasticsearch/plugins/opendistro_performance_analyzer/pa_config/es_security.policy, -Dio.netty.allocator.type=pooled, -XX:MaxDirectMemorySize=16106127360, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/etc/elasticsearch, -Des.distribution.flavor=oss, -Des.distribution.type=deb, -Des.bundled_jdk=true]
[2019-10-15T07:15:40,575][INFO ][c.a.o.e.p.c.PluginSettings] [watcher_broseph] Config: metricsLocation: /dev/shm/performanceanalyzer/, metricsDeletionInterval: 1, httpsEnabled: false, cleanup-metrics-db-files: true
[2019-10-15T07:15:40,772][INFO ][c.a.o.s.OpenDistroSecurityPlugin] [watcher_broseph] ES Config path is /etc/elasticsearch
[2019-10-15T07:15:40,941][INFO ][c.a.o.s.s.DefaultOpenDistroSecurityKeyStore] [watcher_broseph] OpenSSL OpenSSL 1.1.0j  20 Nov 2018 (269484207) available
[2019-10-15T07:15:41,049][INFO ][c.a.o.s.s.DefaultOpenDistroSecurityKeyStore] [watcher_broseph] JVM supports TLSv1.3
[2019-10-15T07:15:41,050][INFO ][c.a.o.s.s.DefaultOpenDistroSecurityKeyStore] [watcher_broseph] Config directory is /etc/elasticsearch/, from there the key- and truststore files are resolved relatively
[2019-10-15T07:15:41,080][ERROR][o.e.b.Bootstrap          ] [watcher_broseph] Exception
java.lang.IllegalStateException: failed to load plugin class [com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:614) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:556) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:471) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:307) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:251) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) [elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) [elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) [elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) [elasticsearch-cli-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) [elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-7.2.0.jar:7.2.0]
Caused by: java.lang.reflect.InvocationTargetException
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 15 more
Caused by: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/SSLPrivateKeyMethod
        at io.netty.handler.ssl.SslContext.newServerContextInternal(SslContext.java:423) ~[?:?]
        at io.netty.handler.ssl.SslContextBuilder.build(SslContextBuilder.java:447) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:785) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLContext0(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLServerContext(DefaultOpenDistroSecurityKeyStore.java:746) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.initSSLConfig(DefaultOpenDistroSecurityKeyStore.java:338) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.<init>(DefaultOpenDistroSecurityKeyStore.java:151) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.OpenDistroSecuritySSLPlugin.<init>(OpenDistroSecuritySSLPlugin.java:194) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin.<init>(OpenDistroSecurityPlugin.java:212) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 15 more
Caused by: java.lang.ClassNotFoundException: io.netty.internal.tcnative.SSLPrivateKeyMethod
        at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
        at io.netty.handler.ssl.SslContext.newServerContextInternal(SslContext.java:423) ~[?:?]
        at io.netty.handler.ssl.SslContextBuilder.build(SslContextBuilder.java:447) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:785) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLContext0(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLServerContext(DefaultOpenDistroSecurityKeyStore.java:746) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.initSSLConfig(DefaultOpenDistroSecurityKeyStore.java:338) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.<init>(DefaultOpenDistroSecurityKeyStore.java:151) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.OpenDistroSecuritySSLPlugin.<init>(OpenDistroSecuritySSLPlugin.java:194) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin.<init>(OpenDistroSecurityPlugin.java:212) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 15 more
[2019-10-15T07:15:41,098][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [watcher_broseph] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to load plugin class [com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.2.0.jar:7.2.0]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.2.0.jar:7.2.0]
Caused by: java.lang.IllegalStateException: failed to load plugin class [com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:614) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:556) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:471) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:307) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:251) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 6 more
Caused by: java.lang.reflect.InvocationTargetException
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:556) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:471) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:307) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:251) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 6 more
Caused by: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/SSLPrivateKeyMethod
        at io.netty.handler.ssl.SslContext.newServerContextInternal(SslContext.java:423) ~[?:?]
        at io.netty.handler.ssl.SslContextBuilder.build(SslContextBuilder.java:447) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:785) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLContext0(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLServerContext(DefaultOpenDistroSecurityKeyStore.java:746) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.initSSLConfig(DefaultOpenDistroSecurityKeyStore.java:338) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.<init>(DefaultOpenDistroSecurityKeyStore.java:151) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.OpenDistroSecuritySSLPlugin.<init>(OpenDistroSecuritySSLPlugin.java:194) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin.<init>(OpenDistroSecurityPlugin.java:212) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:556) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:471) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:307) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:251) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 6 more
Caused by: java.lang.ClassNotFoundException: io.netty.internal.tcnative.SSLPrivateKeyMethod
        at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
        at io.netty.handler.ssl.SslContext.newServerContextInternal(SslContext.java:423) ~[?:?]
        at io.netty.handler.ssl.SslContextBuilder.build(SslContextBuilder.java:447) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:785) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore$1.run(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLContext0(DefaultOpenDistroSecurityKeyStore.java:782) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.buildSSLServerContext(DefaultOpenDistroSecurityKeyStore.java:746) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.initSSLConfig(DefaultOpenDistroSecurityKeyStore.java:338) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.DefaultOpenDistroSecurityKeyStore.<init>(DefaultOpenDistroSecurityKeyStore.java:151) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.ssl.OpenDistroSecuritySSLPlugin.<init>(OpenDistroSecuritySSLPlugin.java:194) ~[?:?]
        at com.amazon.opendistroforelasticsearch.security.OpenDistroSecurityPlugin.<init>(OpenDistroSecurityPlugin.java:212) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
        at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:605) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundle(PluginsService.java:556) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.loadBundles(PluginsService.java:471) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.plugins.PluginsService.<init>(PluginsService.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:307) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.node.Node.<init>(Node.java:251) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.2.0.jar:7.2.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.2.0.jar:7.2.0]
        ... 6 more

Sorry, wrong sub project.


text:
parallel directory for ancillary doc files

Fix #1367

I think this reflects the consensus we reached; Sorry if I've confused any details.

Sure: I can do that. There might also be images under code, unless we'd like a separate directory for those?

decided to just put it all under code -- This seems simple and clear enough.

source: gharchive/pull-request

repo: opendp/opendp

license: MIT

license_type: permissive

license_source: github-api


text:
fix(grpc-socket): use socketAddr type instead of string

In case the grpc port is not specified we were sending the endpoint with only an ip address. Switch to a socketAddr to make we always use a port.
Signed-off-by: Tiago Castro tiagolobocastro@gmail.com

bors merge

repo: openebs/mayastor


text:
fix: clean workspace before image build test

Signed-off-by: Tiago Castro tiagolobocastro@gmail.com

bors merge


text:
Migrating to Go modules

Why is this PR required? What issue does it fix?:
Go modules is a better dependency management than dep.
What this PR does?:
Migrates to use Go modules
Does this PR require any upgrade changes?:

go version is upgraded to 1.14
Goinkgo and Gomega packages were upgraded

If the changes in this PR are manually verified, list down the scenarios covered::
Works on go 1.13 and 1.14
Checklist:

[ ] Fixes #
[x] PR Title follows the convention of  <type>(<scope>): <subject>
[ ] Has the change log section been updated?
[ ] Commit has unit tests
[ ] Commit has integration tests
[ ] (Optional) Are upgrade changes included in this PR? If not, mention the issue/PR to track:
[ ] (Optional) If documentation changes are required, which issue on https://github.com/openebs/openebs-docs is used to track them:

Codecov Report

Merging #434 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #434   +/-   ##
=======================================
  Coverage   43.63%   43.63%
=======================================
  Files          61       61
  Lines        2947     2947
=======================================
  Hits         1286     1286
  Misses       1559     1559
  Partials      102      102

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8c92bc6...3c46723. Read the comment docs.

repo: openebs/node-disk-manager


text:
[Abstraction] Determine a dependency versioning strategy for event-bus implementations

The edx_event_bus_kafka dependency will be specified and pinned in a file outside of each IDA that uses it, since openedx-events will load the implementation by looking up a module reference in the IDA's config. This means that dependency version changes on the library will not be versioned with the IDA (i.e. in the requirements/base.txt files) and we'll need some sort of expand-contract approach to API changes.
For example, we might need to do something like this:

Add a new KafkaProducer class in event-bus-kafka and delegate the existing send_to_event_bus to use it
Switch the producer code in Studio to use the new class
Delete the send_to_event_bus function from event-bus-kafka

Every master-branch deployer would need to do this in lockstep. (Maybe that's just 2U?) For Open edX releases we might be able to get away with just saying "use the release tag".
Acceptance Criteria

[ ] Design a strategy that will work for deployers in general
[ ] Document how-to for these upgrades in appropriate places.

It turns out we have a collection of related dependency-related issues:

A bunch of our repos will depend on event-bus-kafka but won't be able to declare it directly, and event-bus-kafka has its own dependencies that might cause deploy-time version conflicts.

As Robert notes, we won't be able to use make upgrade to keep things updated or synchronized (unless we change how deployments work).

We'll have to do expand-contract deploys with event-bus-kafka as a result, and won't have safeguards. Maybe the same for all other deployers, eventually.
There's a weird sort-of-bidirectional dependency between openedx-events and event-bus-kafka: The second declares a dependency on the first, but the first has an interface dependency on the second.

One thought I had is that we might just want to pack event-bus-kafka into openedx-events as a PEP-508 "extras" package, so we can include openedx-events[kafka] in base.in. (And eventually have an extra for each implementation.) Or maybe rewrite the dependency files to add the [kafka] part at AMI build time? It doesn't solve all the problems, but it would at least allow the interface to be versioned.
(You could even have a special CI workflow file on IDAs that confirms that none of the various extras' dependencies would conflict with the IDA's compiled requirements files.)

@timmc-edx: As noted elsewhere, I don't know enough about "extras", but am hopeful that maybe this could help simplify things? I don't really know though. It might simplify/avoid some cases of expand-contract, but all implementations of the interface would need to be updated at once. And that would only work if we made a decision that all implementations must be "extras", and that no one could create implementations in other repos or beware of broken contracts.
One point of clarification, is that I personally wouldn't refer to the relationship between and interface and its concrete implementation as a "weird sort-of-bidirectional dependency", unless I'm missing something. The concrete implementation is definitely dependent on the interface. The interface is not directly dependent on the implementation, but it needs to know and respect that it is a contract with a set of unknown (or possibly known) consumers. I think this just comes with the territory of loose coupling. It can certainly make things messy or interesting, which might be what you meant by "weird"? I'm simply noting that it is expected, and I don't think we are doing anything out of the ordinary.

What's feeling weird about it is that the implementation has a package-dependency on the interface package, but the interface package loads the implementation. But... just a feeling. I haven't thought it all through yet, though, so maybe there's no actual additional complication resulting from that.

What's feeling weird about it is that the implementation has a package-dependency on the interface package, but the interface package loads the implementation. But... just a feeling. I haven't thought it all through yet, though, so maybe there's no actual additional complication resulting from that.

Could you please point me to where that loading happens? Does it do something other than receive Django signals?

It might simplify/avoid some cases of expand-contract, but all implementations of the interface would need to be updated at once. And that would only work if we made a decision that all implementations must be "extras", and that no one could create implementations in other repos or beware of broken contracts.

I don't think I fully understand the issues at play here, but would it simplify things any to always install the kafka dependencies? We could keep the entire package separated at the top level (so it'd be in its own package as a peer to openedx_events). That way we could still keep some level of separation that would make it easy to extract later, while simplifying development in these relatively early days?

The idea is for openedx-events to contain event bus related APIs that producers and consumers could depend on, such that the Kafka implementation (or any other implementation) is selected via configuration settings. Thus, an Open edX deployment that is not using Kafka would not pull in the Kafka dependency.
This also entails having a way for anyone to privately install the Kafka dependency, which for now was being done in our private Dockerfile.
As you point out, a quick solution would be to simply install the Kafka dependencies for everyone. This could be done now by adding our Kafka dependency (event-bus-kafka) in the requirements files of the producing or consuming service. The Kafka code could continue to live in a separate repo. This would be a decision to temporarily punt this issue down the road.

@felipemontoya and @mariajgrimaldi should weigh in, but I'm personally okay with Kafka dependencies directly in this repo in the short term to get the first iteration out the door, so long as it's very clear how to separate it into a new repo later (e.g. different top level package).
Please forgive my ignorance here, but what common APIs are necessary across the different bus backends aside from sending/receiving signals?

Thanks @ormsbee.

It may be that edx-platform (and discovery, etc.) gets dependencies of both openedx-events and event-bus-kafka, rather than openedx-events getting Kafka dependencies, but we need to discuss what would be most efficient for us at this point.
The common APIs are in flux and something that we've realized we need to defer until we have a more complete version of code working to iterate upon. One example is the the consumer management command that listens for new events and sends the consumer-side signals. The shape of the API and reusable code is in flux, including what code should be in a library vs code that gets duplicated.

@timmc-edx: If we decide to simply make Kafka a dependency, does adding event-bus-kafka as a dependency to edx-platform resolve enough, or do you think we need to drop the separate repo altogether? I'm thinking we start with the small simple fix of just adding the dependency, and only move all code out of event-bus-kafka if we think we are still being slowed down by having a separate repo.

I'd like to make sure I understand what adding the kafka dependency here means.
Is it to simply add confluent-kafka and maybe a few others in this repo? Or would that mean merging the code from openedx/event-bus-kafka to this repo?
If it is the first I would personally not mind it either. If the "few others" are all the dependencies from the event-bus-kafka I suppose that would be ok to get this off the pad but in that case I would also advocate for using the extras to keep the package lightweight for other uses in plugin development.

@felipemontoya: See my responses above. I am proposing that nothing changes for openedx-events in the short term.

Not sure if this would be of any help but: extra dependencies, in this case, seem quite handy. But it seems like a good idea if there's some urgency in the issue to include the dependency in the requirements files of the producing or consuming service. I still wonder how to handle conflicting versions of openedx-events inside those services, but it seems an issue that could be tackled down the road (documentation surrounding this should be crucial).

@robrap Adding edx_event_bus_kafka as an explicit dependency (requirements/base.in) of any producing or consuming IDA would solve this issue, yes. And it would avoid all the problems the "extras" approach would itself introduce.
There are still some issues to resolve around how we'll coordinate API change management, but I think we can figure that out as needed. (We can just do major-version bumps of openedx-events and event-bus-kafka in lockstep, and if that's too rigid we can do something more clever.)

Adding the dependencies in the service also means we can use the constraints file to manage rollouts as required.

We had an issue earlier where confluent-kafka relies on a package that did not have a build for ARM64: https://github.com/openedx/edx-platform/pull/29838#issuecomment-1035904912
This has been discussed with the confluent devs: https://github.com/confluentinc/confluent-kafka-python/issues/1405
There has been a wheel published for M1 Macs/ARM64: https://github.com/confluentinc/confluent-kafka-python/releases/tag/v1.9.2

I think what we want at this point is just an ADR in openedx-events saying that we're going to depend on all Event Bus implementations for now and will figure out a better approach later, if needed. (event-bus-kafka no longer has a hard dependency on confluent-kafka as far as pip is concerned: https://github.com/openedx/event-bus-kafka/blob/main/docs/decisions/0005-optional-import-of-confluent-kafka.rst)

I'm actually confused about the current status. That ADR does not have what I remember. :) I thought we were getting upgrades via make upgrade, but I don't see where we are requiring it other than tests, and the weird enterprise constraint. See https://github.com/search?p=1&q=org%3Aopenedx+confluent-kafka&type=Code.

I'd like to get clear on where the dependency is currently being required from Studio and Discovery.
Based on this, we can determine the best place for an ADR (which might match your recommendation), and potentially update the existing how-to?
I think with each new technology, it may make sense to revisit this issue, rather than jumping directly to adding dependencies for ALL technologies. However, I'm not clear on how it is working right now. :)

Currently it is pulled in here, in event-bus-kafka test.in -- but not by the package's base.in: https://github.com/openedx/event-bus-kafka/blob/701098b0b7a671982b8c74855afd13c04ef81612/requirements/test.in#L9 (note that it's spelled with an underscore here, which is why it wasn't coming up in your search -- we should probably switch it to a hyphen to match its canonical spelling!)
So event-bus-kafka doesn't pull it in as a dependency, but will just be a no-op if you try to use it. CMS and course discovery have to install confluent-kafka in their private dockerfile or something.

Created https://github.com/edx/edx-arch-experiments/issues/351 for the general case of "we don't know how to manage plugin versions yet".

source: gharchive/issue

authors: dianakhuang felipemontoya mariajgrimaldi ormsbee robrap timmc-edx

repo: openedx/openedx-events


text:
Update standard workflow files.

This PR was created automatically by the repo_checks.py script in the
https://github.com/openedx/terraform-github repository.

:tada: This PR is included in version 2.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

authors: edx-semantic-release feanil

repo: openedx/reactifex


text:
Remove the Purescript Search UI and create placeholder one with Typescript

#1306
Checklist

[x] the [contributor license agreement][] is signed
[x] commit message follows [commit guidelines][]

Description of change
Remove the majority of Purescript files, and create a new Search page with Typescript.
A 'cleanrun' was successfully ran on my machine and some basic tests were tried. Let's see what CIs say.

[error] Failed tests:
[error] 	com.tle.webtests.test.searching.indexing.FileIndexingTest
[error] 	com.tle.webtests.test.workflow.rejection.RejectionPointsWithDecisionNodesTest

That was on New UI on GHA, however that means they passed on CodeBuild. I wonder if they're just flaky. :thinking:

[error] Failed tests:
[error] 	com.tle.webtests.test.searching.indexing.FileIndexingTest
[error] 	com.tle.webtests.test.workflow.rejection.RejectionPointsWithDecisionNodesTest

That was on New UI on GHA, however that means they passed on CodeBuild. I wonder if they're just flaky.

Well I haven't seen these two test failed before. Let me retry once.

authors: PenghaiZhang edalex-ian

repo: openequella/openEQUELLA


text:
Strange output format for phrase extraction.

Trying to run some sample data to explore the phrase extraction pieces. I'm using the following data:
{'abc123': {'meta': {'date': '20010101'},
  'sents': {0: {'content': u'At least 37 people are dead after Islamist radical group Boko Haram assaulted a town in northeastern Nigeria .',
    'parsed': u'(ROOT (S (NP (QP (IN AT ) (JJS LEAST ) (CD 37 ) ) (NNS PEOPLE ) ) (VP (VBP ARE ) (ADJP (JJ DEAD ) ) (SBAR (IN AFTER ) (S (NP (JJ ISLAMIST ) (JJ RADICAL ) (NN GROUP ) (NNP BOKO ) (NNP HARAM ) ) (VP (VBD ASSAULTED ) (NP (NP (DT A ) (NN TOWN ) ) (PP (IN IN ) (NP (JJ NORTHEASTERN ) (NNP NIGERIA ) ) ) ) ) ) ) ) (. . ) ) )'}}}}

I then run it through the do_coding routine:
event_dict_updated = petrarch2.do_coding(event_dict, None)

Which yields the following updated dictionary:
{'abc123': {'meta': {'date': '20010101',
   u'verbs': {u'nouns': [([u' PEOPLE'], [u'~PPL'], [[u'~']]),
     ([u' ISLAMIST', u' BOKO HARAM'],
      [u'NGAREBMUS'],
      [[u'~'], (u'NGAREB', [])]),
     ([u' NIGERIA'], [u'NGA'], [(u'NGA', [])])]}},
  'sents': {0: {'content': u'At least 37 people are dead after Islamist radical group Boko Haram assaulted a town in northeastern Nigeria .',
    'parsed': u'(ROOT (S (NP (QP (IN AT ) (JJS LEAST ) (CD 37 ) ) (NNS PEOPLE ) ) (VP (VBP ARE ) (ADJP (JJ DEAD ) ) (SBAR (IN AFTER ) (S (NP (JJ ISLAMIST ) (JJ RADICAL ) (NN GROUP ) (NNP BOKO ) (NNP HARAM ) ) (VP (VBD ASSAULTED ) (NP (NP (DT A ) (NN TOWN ) ) (PP (IN IN ) (NP (JJ NORTHEASTERN ) (NNP NIGERIA ) ) ) ) ) ) ) ) (. . ) ) )'}}}}

There are a couple issues here:

The nested meta, verbs, nouns construct is incorrect.
It's unclear what, exactly, is associated with what. For example, it isn't clear what the [[u'~'], (u'NGAREB', [])]) construct refers to in the sentence.

This isn't relevant to this issue, but it should also be noted that this sentence doesn't code an event even though PETR is clearly identifying potential source and target actors and "assaulted" should be a relevant verb.
cc @philip-schrodt @ahalterman

It should also probably be noted that things like:
{(u'---COPLEG', u'---GOV', u'041'): [[u'CALLED'], [u'HAS']],
 u'actorroot': {(u'---COPLEG', u'---GOV', u'041'): [u'', u'']},
 u'actortext': {(u'---COPLEG', u'---GOV', u'041'): [u'deputy ... Congress',
   u'Governor']},
 u'eventtext': {(u'---COPLEG', u'---GOV', u'041'): u'has called'},
 u'nouns': [([u' CONGRESS'], [u'~LEG'], [[u'~']]),
  ([u' DEPUTY', u' CONGRESS'], [u'~COPLEG'], [[u'~'], [u'~']]),
  ([u' GOVERNOR'], [u'~GOV'], [[u'~']]),
  ([u' ADMINISTRATION'], [u'~GOV'], [[u'~']])]}

cause hell if you're trying to dump that result out to JSON since the keys, e.g., (u'---COPLEG', u'---GOV', u'041') aren't a hashable type.

Re-upping this since I discovered it again. The tuples as keys thing needs to be fixed ASAP since it's breaking hypnos.

license: mit

license_source: bigquery


text:
Upgrade noncritial gems

Merge #801 first, this one simply continues a variety of other upgrades from that branch unrelated to security work.

Coverage remained the same at 99.298% when pulling 97de8a420ac96d9b523351d5d66d1ee3f040d343 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage remained the same at 99.298% when pulling 43b67a89be5b6510b51602cfd72a088740f68e64 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.001%) to 99.296% when pulling 61e7f62e600e5601ee63967695d9d93fdd817fb9 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.001%) to 99.296% when pulling 61e7f62e600e5601ee63967695d9d93fdd817fb9 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.4%) to 98.943% when pulling 41ab44681b41c81ae020f0bd8c4590fd40d302e5 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.001%) to 99.296% when pulling 061ea310207059f61ffbd30ffe0f2aee66bb96c7 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.001%) to 99.296% when pulling 061ea310207059f61ffbd30ffe0f2aee66bb96c7 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-0.001%) to 99.296% when pulling 4c2504c584d6b3857d9f220a91c3a1313019ca91 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 1ab529b732030e24d6a14f5a436508df10c6f670 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 1ab529b732030e24d6a14f5a436508df10c6f670 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 7bdaaed4d3aa50dbd6a593571396b11b65fc822f on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling c77ef027a36af42331b1530b85354e5332d1119b on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-1.2%) to 98.08% when pulling 13e0d17f546ad86b5a1ec7d605addda99cf049dc on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage decreased (-1.2%) to 98.08% when pulling 3f01e6660df78408072232c231f5b70e8b05081f on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 3f01e6660df78408072232c231f5b70e8b05081f on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 3f01e6660df78408072232c231f5b70e8b05081f on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Coverage increased (+0.05%) to 99.346% when pulling 3f01e6660df78408072232c231f5b70e8b05081f on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

Alright, this one is pretty much 'ready' I think. It'll need checking locally, as I've only relied on CI - if there are areas where the coverage doesn't address it (UI, serialized data, etc); there may be issues.

Coverage increased (+0.05%) to 99.346% when pulling c7e47c0df3eed96251b43048c07dcf7557f50457 on CloCkWeRX:upgrade_noncritial_gems into 7a3cf7e1e65b2759cf26ad7b718b079014353e5a on openfarmcc:master.

:thumbsup: I'm investigating this locally now.

Looks good to me. Things feel faster too?

authors: CloCkWeRX coveralls simonv3

repo: openfarmcc/OpenFarm


text:
Fixed Linux cross compilation

Fixed Linux cross compilation using Mingw.
It is interesting to note that Fedora and Ubuntu could cross compile Windows 32bit application using Mingw.
Resulting binaries have been found out to be fully functional in Wine Abstraction Layer, Windows 7 and Windows 10.

@jgranick Does this mean that an automated build server such as the one we've got on TeamCity could use this to compile for linux as well as windows?

Hi, sorry to close this, but the recent merge on Hxcpp could now allow openfl and lime to do cross desktop compile naturally, the only thing left is for Lime to support cross-compile from linux to windows. present build supports neko as the default. but when this is updated, Lime and OpenFl could do CPP cross-desktop compile.
https://github.com/HaxeFoundation/hxcpp/pull/309

authors: jobs-git larsiusprime

repo: openfl/lime


text:
Blend Mode ADD too bright

From HaxeFlixel repository:

Flixel version: 4.0.1
OpenFL version: 3.6.0
Lime version: 2.9.0
Affected targets: Windows, Neko (Presumably mac?)

Code snippet reproducing the issue:
package;

import flixel.FlxState;
import flixel.FlxSprite;
import openfl.display.BlendMode;

class PlayState extends FlxState
{
    override public function create():Void
    {
        add(new FlxSprite(0, 0, "bg.png"));
        var layer:FlxSprite = new FlxSprite(0, 0, "addLayer.png");
        layer.blend = BlendMode.ADD;
        add(layer);
    }
}

bg.png:

addlayer.png:

Observed behavior:

Expected behavior:

According to @Gama11:

Flixel just passes whatever blend mode a sprite has on to OpenFL's drawTiles API, so there's not much we can do about it. This can very likely be reproduced using only OpenFL.

Btw, to properly reproduce this, the original image is needed as well.

@Gama11 As in, the add layer without the blend?

Yes. How are you supposed to run the code otherwise? :)

@mikeevmm your art style is pretty awesome. Can you explain why you're using the add layer like this? (Why not just generate the image in GIMP/etc. with the add layer?)

@ashes999 dynamic effects is one use case (varying partially transparent overlay w/ blending)

@ashes999 Thank you, but I'm just the programmer :(
@larsiusprime is spot on.

Hey @mikeevmm, I tried to replicate this but haven't been able to (in the sense that both neko and flash gave the same output - or so it seemed). As a side note, github seems to have autoconverted the above layer.png into a jpeg, so losing the alpha values (although I've also tested it by making it a png with white being transparent).
If you can please post a complete project I'm willing to look into it a bit more, can you?
Also: does something change if you use lime test neko --window-hardware=false?

I'm sorry I've taken so long to reply; school got in the way -- I'll send a complete project asap.
Disabling hardware made the game unbearably slow.

@azrafe7 Mind if I send you the project privately/through PM or email? I'm working with a team, so I'm not sure whether disclosing art/etc is okay.

@mikeevmm, I'd suggest replacing the art files with temp ones (f.e. from here), and post the minimal project publicly so that others can help/take a look at it. (Also, using different assets might also exclude the hypothesis that the problem has to do with incorrect formats).
On the other hand, I'd be glad to take a look at what you have right now (if you feel so inclined). Of course no guarantee I'll be able to find a solution ;)

Done! https://github.com/mikeevmm/flixel-add-blend-test

Ok, this is not a final answer, but here's what I've found so far:

code involving blendmodes in legacy is here
for what I could gather it's not possible to exactly replicate MULTIPLY using glBlendFunc() (see this post), but the current implementation is a fair enough approximation of it
it could be possible to faithfully replicate it by using a shader

As I said, not a final answer (I'll probably tink more with it tomorrow). In the meantime I'd hope to be successful in summoning @mrcdk (sorry to bother you) - who seems quite knowledgeable about the matter at hand - and see what his opinion is about this.
Worth noting is that the ADD blendmode behaves in a very similar way in both flash and neko, while MULTIPLY is much more different.
(f.e.: this is a diff made with imagemagick compare command between flash and neko, using only ADD (no MULTIPLY), with a fuzz factor of 5%):

Also, it seems that blendmodes work correctly with openfl next (anyone correct me if I'm wrong here).

Hey @mikeevmm, can you please test the pure-openfl branch here and report what you see by running lime test openfl-project neko -Dlegacy?
I've added 2 screenshots in there that show what I see on my laptop, and was surprised to see that they are very similar (as opposed to what I experienced by running the flixel test).
Don't feel to exclude that I'm doing something different on my end though (I've rebuilt lime ndll quite a few times lately).

(I'm starting to suspect that there's something weird with TileSheet, not sure on what side - my code?, openfl?, flixel?)

@mikeevmm Maybe I've found a solution... \o/
Not an official fix as this could break something else, but the results are encouraging (and hope someone more knowledgeable than me will chime in to comment).
For what I could gather it has to do with premultipliedAlpha and BlendMode.MULTIPLY.
Might be wrong, but it seems that glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA) works correctly only if the supplied texture-to-be-multiplied-with is in premultiplied alpha format.
(curious about the possibility of using glBlendSeparateFunc, feasible??)
Probably the fix could be applied directly to OpenGLContext.cpp, or legacy openfl (haven't tried honestly - and don't forget that this is legacy!).
In the meanwhile please test this repo and report back.

@azrafe7 thank you! \o/
Will test ASAP

@azrafe7 Have tested the master branch of your fork; everything looks fine, both on lime and windows:
flash:

lime:

windows:

:+1: :+1: :+1:

Great! :+1:

@Gama11 Perhaps this could be temporarily fixed in HaxeFlixel by setting premultiplied alpha to true if blendMode = MULTIPLY and cpp?

I'd rather not, that sounds like a pretty nasty hack. Who knows what side-effects enabling premultiplied alpha could have...

Just a note: with flixel 4, setPremultipliedAlpha seems to be gone.

You mean OpenFL 4?

Ah, yes, sorry.

Probably a side effect of it only exisiting in OpenFL legacy, and legacy having been removed?

Legacy has been removed? #if next still yields different results with and without -Dnext

It depends on whether you are using a development branch, or haxelib

The core difference is that old code used non-premultiplied alpha, the new code has premultiplied alpha in textures
This changes how blend modes behave, if you guys have suggestions, I'd be happy to look at moving to blend modes that match the GL blend functions appropriate for premultiplied alpha
Thanks

@jgranick Ah, I'm a bit out of my league here...

I am closing this issue, because it no longer applies to current OpenFL/Lime releases (very different codebase), but I am also tracking here:
https://github.com/openfl/openfl/issues/1414
In general, we need to look at our blend mode support across GL, canvas and Cairo, and visit what we can reliably support out-of-the-box, and what we should consider making up with filters
Thank you

repo: openfl/openfl


text:
Sprite with graphics that have negative coords doesn't receive mouse events

A complete example:
package;
import openfl.display.Sprite;
import openfl.events.MouseEvent;

class Main extends Sprite
{
	public function new ()
	{
		super ();
		var foo:Sprite = new Sprite();
		foo.x = foo.y = 200;
		foo.graphics.beginFill(0xff0000);
		foo.graphics.drawRect(-100, -100, 200, 200);
		foo.addEventListener(MouseEvent.CLICK, function(event:MouseEvent)
		{
		     trace("click");
		});
		addChild(foo);
	}
}

the click will only show for the bottom right quarter of the square, with positive x and y.
Happens in html5, neko and cpp, didn't test other targets.

Thanks for the test! This is working here. It should be fixed in the latest release, it looks like it was this commit:
https://github.com/openfl/openfl/commit/8f567e42b75a062c9e5cb09f8b0c517a57becfe9#diff-5c046efbf46f21e3672c16d6cabf95afR1205
:smile:

authors: boblucas jgranick


text:
java.lang.NullPointerException:    at openfoodfacts.github.scrachx.openfood.views.product.ingredients.IngredientsProductFragment.change_ing_image (IngredientsProductFragment.java:118)

java.lang.NullPointerException:
at openfoodfacts.github.scrachx.openfood.views.product.ingredients.IngredientsProductFragment.change_ing_image (IngredientsProductFragment.java:118)
at openfoodfacts.github.scrachx.openfood.views.product.ingredients.IngredientsProductFragment_ViewBinding$4.a (IngredientsProductFragment_ViewBinding.java:2)
at butterknife.internal.DebouncingOnClickListener.onClick (DebouncingOnClickListener.java:12)
at android.view.View.performClick (View.java:6274)
at android.view.View$PerformClick.run (View.java:24859)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6710)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:770)

https://stackoverflow.com/questions/29390695/onclick-array-with-optional-ids-butterknife ?

maybe My fix is not complete as I try to only manage null references in the method change_ing_image

authors: deniger teolemon

repo: openfoodfacts/openfoodfacts-androidapp


text:
Revoking permission at AddProductActivity crashes app

Hi, there, I've found a crash in version 3.2.8, which is downloaded from F-Droid.
I seems that it is related to the dangerous permission android.permission.WRITE_EXTERNAL_STORAGE and is triggered in the AddProductActivity. It may be caused when the app attempts to writing external storage without either permission checking  (via checkSelfPermission) nor permission request (via requestPermissions).
Reproduce crash
This crash can be reproduced on my Samsung device, following the steps:

grant the storage permission in the system setting
scan a product (also need camera permission) and then enter the "add new product" page
type any information about the product
go to the system setting and revoke the permission
in the app, tape twice the "next" botton and reach the "nutrition facts" tab
click "add this product" and then the app crashes

@teolemon
Could you help me review this issue? If you need more information, I may make a video showing the crash. Very thanks!

@aper-project can you paste the video here ?

So sorry for my late reply. I attach the video below.
https://user-images.githubusercontent.com/68948244/123375868-181c2e00-d5bc-11eb-95a0-186a02a7b51d.mp4

@teolemon can you assign this task to me


text:
Make the language switcher available to all users

What

[ ] Make the language switcher available to all users
user feedback: "Bonjour je n'arrive pas a mettre mon application en français. La langue de mon Iphone est en portugais mais je veux que cette application soit en francais, car quand je cherche une produit dans la barre de recherche je ne le trouve pas s'il n'est pas tapé en portugais.

Bien a vous.

"Hello, I can't put my application in French. The language of my Iphone is in Portuguese but I want this application to be in French, because when I look for a product in the search bar I cannot find it if it is not typed in Portuguese.

Good for you."
Part of

#960

If I understand well, we should provide two fields:

one for the server location (which is already available in the app)
one for the app language

Was-it done like this in V1?

Νίκος Ραπτόπουλος
1 ★
Greek
Illegible characters (basically unusable) in Greek, and cannot switch display language. TCL T767H

repo: openfoodfacts/smooth-app


text:
Scan card overflow with long texts

Is the solution ellipsis ?

@teolemon The solution is not ellipsis if we have too many attributes anyway.
Should we use bigger cards? How can we be consistent with product cards within the carousel?

Thinking again about this issue, I think the problem is the carousel itself. Do we need that feature here? We cannot know for sure if the products will take the same height, though all cards should probably have the same height in the carousel. How tall? And during the scanning process the label seems much more important than the 2nd or 3rd line of attributes.
Possible solution: we don't display the attributes in the carousel.

I think personalized scan is very powerful. Removing the personalization on the scan card result would reduce the value.
How about making the card grow in height with attributes ?
If the person is wild enough to select 20 attributes, let's make the card extra high

How about making the card grow in height with attributes ?

That would probably mean removing the carousel, for more card height flexibility. Would that be OK, UX-wise?

I don't see why it would mean carousel removal.
The attributes should all be there, in all cards, either in color, or in gray. So same height for all products ? So no issue with the carousel ?

Maybe you're right - I haven't read the carousel code in a long time.
But my guess is that the height of the carousel is currently predefined - that would explain why some attributes are displayed beyond the product white card.
In the rest of the app, the product card height is not computed: we just ask flutter to put all the attributes, and the height automatically grows. But precomputing ourselves the height of the product card would probably be painful and ugly.
If the carousel needs a fixed height, that's a problem.

I think the only real issue here is the product name and brand, which are unpredictable

From what I read in CarouselSlider, the carousel items height must be fixed: either computed with parameters height (no default) or aspectRatio(16/9 is the default):
final double height = widget.options.height ??
    MediaQuery.of(context).size.width *
        (1 / widget.options.aspectRatio);

Beyond that, even if we were able to compute a correct height, with too many attributes that maybe wouldn't fit in the screen, which has a verbose FAB and a "choose/contribute" button on top:

And the way the product card is currently displayed, we waste tons of space below the picture when we have numerous attributes:

We probably need UX refactoring for the current issue.

@teolemon What if we went directly to the product page after the scan? That makes sense, UX-wise.
With the back button, you go back to the scan page if needed.
And in the scan page, we can add a "scan history" button.

The first version of Open Food Facts (in 2013) historically had this mechanism forcing you onto the product page, and forcing you to click back to go back to the scan, but I got rid of it in the native apps, in favour of a slideup mechanism.
Whatever the solution, some people don't even realize they can click the card, or slide it up.
In favour of the Scores in Scan screen: I like being able to scan many products quickly in a supermarket, and get their scores very quickly (number of touch as close to zero as possible). And then I can open the product page for more information.
I think we need hierarchy in the display of information: would you like small, medium or large ?
The nightmare scenario we're talking about is a user ordering the XXL menu on the scan card.
The scan card should be a balanced meal, and the XXL menu should be hidden in the product page IMO, unless the users explicitely asks for the XXL menu in the scan card (where we try to minimize the downsides as much as we can)

Either you scan a product in order to see a product (1), or you scan a string of products (2).
For use case 1, you'll find it cool to go directly to the product page or not cool to be forced to click on the product card.
For use case 2 that's the other way around.
Let me make another suggestion: just displaying the general score background color (accepted green / rejected red / don't know grey) on the product card, without the attributes. Possibly with one line of text/comment: "accepted", ... What do you think of that?
Btw I'm fortunate enough to own a 6-year-old "canary" smartphone, where space is scarce, and even one line of attributes is too much:

I have another suggestion that could also be interesting for #384 in the future. Namely, that we show only the relevant / not good data points per product.
For allergies, for example, if i had many allergies I would not be interested in all the things that are not in the product but more what is inside.
That means that we only show the attribute icons if they are either on the highest priority level or are not green.
The scores should not be cut out and for allergies we should also indicate if we do not know if something we marked is inside, not that an accident happens.

@teolemon Feel free to close this issue if fixed by #397.

authors: M123-dev monsieurtanuki teolemon


text:
Deliver the new scanning experience

Deliver the new scanning experience
### Deliver the new scanning experience per mockups

### Server side updates to finally deliver on the offline scan
- [ ] https://github.com/openfoodfacts/openfoodfacts-server/issues/6328
- [ ] https://github.com/openfoodfacts/openfoodfacts-server/issues/4648

Mockups

Please look at the mockups in Sketch

High level promises:

Part of

#4795

Currently we can detect if a product is in any OxF (just looping).
The problem is what to do with a beauty product in a food app, as we don't have a beauty product class in off-dart.
We'll be blocked with OxF as long as we don't have at least a hint of the product structure in each OxF case.

authors: monsieurtanuki teolemon


text:
On tap, display subpanels in a new view

What

On the web, there's a notion of hierarchical knowledge panels that open in a new view as you tap.
We have additives, tables and info on various subpanels that are not accessible from the app
[ ] Create a view to display those
[ ] Make the view accessible from a tap on the parent panel
[ ] Make sure to include a Back or Close button

Part of

#530

CLosed by #1011


text:
Finalize 0.7.0 releasenotes

Since our RTD builds aren't connecting API links, we probably don't need to round those out this time. I've made some minor edits to previous releasenotes, and added a migration guide and summary section at the top.
Happy to take feedback. Will unilaterally merge around 2 PM Pacific Sunday.

Codecov Report

Merging #625 into master will decrease coverage by 17.15%.
The diff coverage is n/a.

authors: codecov-commenter j-wags

repo: openforcefield/openforcefield


text:
Inconsistency between conceptual model and xsd

There seems to be inconsistency in multiplicity between data dictionary of conceptual model and XMLSchema.
For example in CityGML 3.0 Part 1 table 668, the multiplicity of buildingInstallation is [1..*], but in building.xsd, the minimum occurrence of buildingInstallation is 0.
Since BuildingInstallation is not mandatory for Building, the multiplicity in XMLSchema seems to be correct.
Other [1..*] in the data dictionary also need to be checked.

Thanks for your message.
This is an error in the data dictionary which occurred when generating the data dictionary from the UML model. The error is also tracked here: https://github.com/metanorma/ogc-citygml-xmi/issues/130
This error currently appears for all associations with the multiplicity [*] in the UML model, but will be corrected.
This means for the moment that the XML schemas are correct and also the UML diagrams in CityGML 3.0 Part 1 are correct.


text:
Невеличкі помилки орфографічні(підкреслені).

Спасибі. Будемо поправляти.
P.S. Якщо є бажання поправити - запрошую на pull request

https://github.com/opengs/uashield/pull/20

repo: opengs/uashield

license: Unlicense


text:
setup Github actions to autorun tests

Use Github actions to provide continuous integration

Initial pull request does not work since it doesn't import any of the libraries. It does work locally. It is also run automatically when items are pushed.

Simple test working to check a certain set of api queries against what they should be. I had to remove some libraries from the requirements.txt file to get the test to run as it couldn't find the file when testing.

repo: openheritage/open-plaques-diversity


text:
Update cve2_core.sv to accomodate MRET instruction

Change the timing of rvfi_id_done to accomodate MRET instruction. The signal rvfi_valid is a single clock delayed from rvfi_id_done

I would prefer we only merge when the associated documentation has also been updated.

is this linked to some issue?

I would prefer we only merge when the associated documentation has also been updated.

HI @christian-herber-nxp ,
The MRET instruction is already there, this update is to help catching the MRET behaviour on the rvfi for verification purposes

I would prefer we only merge when the associated documentation has also been updated.

HI @christian-herber-nxp ,
The MRET instruction is already there, this update is to help catching the MRET behaviour on the rvfi for verification purposes

yes nevermind, i confused this with mnret - i.e. Smrnmi


text:
Wire dependency require?

I don't know how you build the OpenYolo demo apps, but if I want to do it, I will have errors:
error: package com.squareup.wire does not exist

To fix it, I have to import the library wire into my project BBQ:
compile 'com.squareup.wire:wire-runtime:2.2.0'

Am I missing something? If not, why this dependency is not into the build.gradle and how is it working on your side?

The protobuf library was changed from the Square implementation to Google’s implementation recently. If you’re updating your OpenYOLO prototype from a few weeks ago, you’ll likely have some minor refactoring to do to accommodate the changes. During the call the other day, Iain mentioned that he’s going to start pushing OpenYOLO to jcenter or maven so that we can more easily build against it.
Cheers,
Michael

On May 26, 2017, at 9:02 AM, Stan Kocken notifications@github.com wrote:
I don't know how you build the OpenYolo demo apps, but if I want to do it, I will have errors:
error: package com.squareup.wire does not exist
To fix it, I have to import the library wire into my project BBQ:
compile 'com.squareup.wire:wire-runtime:2.2.0'
Am I missing something? If not, why this dependency is not into the build.gradle and how is it working on your side?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/openid/OpenYOLO-Android/issues/61, or mute the thread https://github.com/notifications/unsubscribe-auth/AISh79Kdi3NkjbSZ1B6LnbH78qT2qFTeks5r9veSgaJpZM4Nnxwq.

This error looks like it could be due to mixing modules from different commits. Recently there have been a number of breaking changes which could cause this.  I'd recommend ensuring you're using the latest version of the repo as a first step in trouble shooting.

Thanks guys.
I did update my repository to the latest version but some files were still present (containing wire).
I wiped the repository and clone it from scratch and now everything is working properly, the dependency is not require anymore.

I'm part way there with pushing to jcenter; I pushed a provisional 0.1.0 release to bintray the other day which you can add as a dependency:
https://bintray.com/openid/net.openid/openyolo-spi
I'll sort out getting it into JCenter ASAP, as I also need it for my own purposes :)

authors: StanKocken dxslly iainmcgin nerdyverde

repo: openid/OpenYOLO-Android


text:
Creating pull request for 10.21105.joss.01359

If this looks good then :shipit:

@arfon, it looks like there is no citation list in the CrossRef XML. The paper has a good-sized list of references with DOIs, so that seems wrong...

authors: kyleniemeyer whedon

repo: openjournals/joss-papers


text:
kraken 升级了 0.9 又出了这样的错误 TypeError: cannot read property 'charAt' of undefined

kraken 升级了 0.9 又出了这样的错误
TypeError: cannot read property 'charAt' of undefined

querySelector 的参数是什么？

querySelector 的参数是什么？
我描述的有问题  这个应该和 querySelector没什么关系了。又重写了一个页面，然后报的这么错。 用浏览器 可以正常显示

TypeError: cannot read property 'charAt' of undefined 还需要更多的信息。
例如调用的那行代码，如果有可以复线的代码就更好了

TypeError: cannot read property 'charAt' of undefined 还需要更多的信息。 例如调用的那行代码，如果有可以复线的代码就更好了

不知道调用的哪行代码出的问题。 调试工具里，也定位不到原文件。
你们是不是有内部版本，感觉 开放的版本，用起来各种问题。。。这东西 真的能开发商业应用吗

TypeError: cannot read property 'charAt' of undefined 还需要更多的信息。 例如调用的那行代码，如果有可以复线的代码就更好了

I/DecorView[](21706):  old windowMode:1 new windoMode:1
E/KRAKEN_NATIVE_LOG(21706): TypeError: cannot read property 'charAt' of undefined
E/KRAKEN_NATIVE_LOG(21706):     at o (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at n (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js)
E/KRAKEN_NATIVE_LOG(21706):     at 1210 (assets/app.js:463)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 36ad (assets/app.js:1939)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 2c85 (assets/app.js:1594)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at d4a2 (assets/app.js:20614)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 448e (assets/app.js:2698)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 42d8 (assets/app.js:2626)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 3dfd (assets/app.js:2510)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 56d7 (assets/app.js:3257)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at 0 (assets/app.js:97)
E/KRAKEN_NATIVE_LOG(21706):     at call (native)
E/KRAKEN_NATIVE_LOG(21706):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(21706):     at <anonymous> (assets/app.js:84)
E/KRAKEN_NATIVE_LOG(21706):     at <eval> (assets/app.js:22410)
E/KRAKEN_NATIVE_LOG(21706):

只有对外开放版本，Web 引擎功能复杂繁多，即使做了很多测试，还是难免会出问题，尽请谅解。

这种问题要怎么查

可以提供一份 JS 代码给我

这种问题要怎么查

可以提供一份 JS 代码给我

怎么给你 ，源代码 好像不太方便，可以给你webpack 打包后的文件

打包好的也ok

是复现问题的尽可能小的代码就好

是复现问题的尽可能小的代码就好

怎么给你

可以发我邮箱， answershuto@gmail.com

没有内部版本。

是复现问题的尽可能小的代码就好

function v(t, e, r, i, a, c) {
                        var u = r + t.length
                          , s = i.length
                          , f = h;
                        return void 0 !== a && (a = o(a),
                        f = p),
                        n.call(c, f, (function(n, o) {
                            var c;
                            switch (o.charAt(0)) {
                            case "$":
                                return "$";
                            case "&":
                                return t;
                            case "`":
                                return e.slice(0, r);
                            case "'":
                                return e.slice(u);
                            case "<":
                                c = a[o.slice(1, -1)];
                                break;
                            default:
                                var f = +o;
                                if (0 === f)
                                    return n;
                                if (f > s) {
                                    var p = l(f / 10);
                                    return 0 === p ? n : p <= s ? void 0 === i[p - 1] ? o.charAt(1) : i[p - 1] + o.charAt(1) : n
                                }
                                c = i[f - 1]
                            }
                            return void 0 === c ? "" : c
                        }

可以发我邮箱， answershuto@gmail.com
打包后就是这样一段代码

function v(t, e, r, i, a, c) {
                        var u = r + t.length
                          , s = i.length
                          , f = h;
                        return void 0 !== a && (a = o(a),
                        f = p),
                        n.call(c, f, (function(n, o) {
                            var c;
                            switch (o.charAt(0)) {
                            case "$":
                                return "$";
                            case "&":
                                return t;
                            case "`":
                                return e.slice(0, r);
                            case "'":
                                return e.slice(u);
                            case "<":
                                c = a[o.slice(1, -1)];
                                break;
                            default:
                                var f = +o;
                                if (0 === f)
                                    return n;
                                if (f > s) {
                                    var p = l(f / 10);
                                    return 0 === p ? n : p <= s ? void 0 === i[p - 1] ? o.charAt(1) : i[p - 1] + o.charAt(1) : n
                                }
                                c = i[f - 1]
                            }
                            return void 0 === c ? "" : c
                        }

可以发我邮箱， answershuto@gmail.com

发你了

这个文件不是 kraken 内置的 querySelector 实现, 你可以把这个 polyfill 实现去掉

这个文件不是 kraken 内置的 querySelector 实现, 你可以把这个 polyfill 实现去掉

现在已经不是这个问题了 。
function resolveURL(url) {
        var href = url;

        if (msie) {
        // IE needs attribute set twice to normalize properties
          urlParsingNode.setAttribute('href', href);
          href = urlParsingNode.href;
        }

        urlParsingNode.setAttribute('href', href);
        console.log('urlParsingNode.pathname '+urlParsingNode.pathname);
        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
        return {
          href: urlParsingNode.href,
          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
          host: urlParsingNode.host,
          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
          hostname: urlParsingNode.hostname,
          port: urlParsingNode.port,

          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
            urlParsingNode.pathname :
            '/' + urlParsingNode.pathname
        };
      }

urlParsingNode 的 pathname属性 在浏览器中debug 是 "/"，用kraken打开就是 undefined

看上去像是 location.hostname 为 undefined，我看下为啥

@colorfulldays 这个 urlParsingNode 的实现是啥？我看 location.pathname 没有问题

@colorfulldays 这个 urlParsingNode 的实现是啥？我看 location.pathname 没有问题

这个问题 找到原因了 因为用了 axios进行网络请求。但是为什么不能提示一下，不支持这种方式，确实文档也写了，也是我没注意看。
现在又出现了新的问题 ，改用fetch请求，正常了，但是升级到0.9后 ，同样的js文件，又不能用了。
E/KRAKEN_NATIVE_LOG(20041): InternalError: stack overflow
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 9bf2 (assets/app.js:15914)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 9112 (assets/app.js:14925)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at ce4e (assets/app.js:18267)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at c6cd (assets/app.js:18127)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 5692 (assets/app.js:2281)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at b622 (assets/app.js:17806)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 44d2 (assets/app.js:2055)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at e260 (assets/app.js:18798)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 830d (assets/app.js:13242)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at 0 (assets/app.js:96)
E/KRAKEN_NATIVE_LOG(20041):     at call (native)
E/KRAKEN_NATIVE_LOG(20041):     at __webpack_require__ (assets/app.js:20)
E/KRAKEN_NATIVE_LOG(20041):     at <anonymous> (assets/app.js:84)
E/KRAKEN_NATIVE_LOG(20041):     at <eval> (assets/app.js:19671)
E/KRAKEN_NATIVE_LOG(20041):
I/flutter (20041): Kraken DevTool listening at ws://10.161.160.118:9222
I/flutter (20041): Open Chrome/Edge and paste following url to your navigator:
I/flutter (20041):     devtools://devtools/bundled/inspector.html?ws=10.161.160.118:9222
I/AwareBitmapCacher(20041): init lrucache size: 4194304 pid=20041

Application finished.

mac@macs-Mac-mini example % flutter run
Launching lib/main.dart on ALA AN70 in debug mode...
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                        15.0s
✓  Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...                11.6s
Syncing files to device ALA AN70...                                105ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).

💪 Running with sound null safety 💪

An Observatory debugger and profiler on ALA AN70 is available at: http://127.0.0.1:52613/YyYq5WHnzMY=/
I/flutter (20810): Kraken getting bundle for contextId: 0, path: assets/app.js
I/DecorView[](20810):  old windowMode:1 new windoMode:1
E/

20行 就是这样一行代码
// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

请问。debug 和release 的构建 有什么区别

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

另外 0.9以后是不是fetch请求的方式都变了
升级了 就会报解析错误（已经用release 构建bridge了）
错误
14(com.openkraken.kraken_example) 1.ui identical 1 line
E/KRAKEN_NATIVE_LOG(10004): SyntaxError: unexpected token: '<'
E/KRAKEN_NATIVE_LOG(10004):     at <input>:1
E/KRAKEN_NATIVE_LOG(10004):     at parse (native)
E/KRAKEN_NATIVE_LOG(10004):     at json (kraken://)
E/KRAKEN_NATIVE_LOG(10004):     at <anonymous> (assets/app.js:1577)

问题代码
   fetch(url, {
                  body: JSON.stringify(data),
                  method: "POST",
                  headers: {
                    "accept": "application/json, text/plain, */*",
                    "Content-Type": "application/json;charset=UTF-8"
                  }
                }).then(function (response) {
                    console.log("response "+response);
                  return response.json(); //  此处报错
                }).then(function (json) {
                  // var reader = new FileReader();
                  // reader.onload = function () {
                  //   var text = reader.result;
                  //   console.log(text);
                  // };
                  // reader.readAsText(json, "utf-8");
                  console.log(json);

                  _this.renderView(json);
                });

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

还有 这种问题。用devtools 也无法定位  那该怎么debug呢

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

请问。debug 和release 的构建 有什么区别

Quickjs 在 Debug 模式下，因为没有编译器进行尾递归优化，会消耗太多的栈导致 stackoverflow

14(com.openkraken.kraken_example) 1.ui identical 1 line
E/KRAKEN_NATIVE_LOG(10004): SyntaxError: unexpected token: '<'
E/KRAKEN_NATIVE_LOG(10004):     at :1
E/KRAKEN_NATIVE_LOG(10004):     at parse (native)
E/KRAKEN_NATIVE_LOG(10004):     at json (kraken://)
E/KRAKEN_NATIVE_LOG(10004):     at  (assets/app.js:1577)

看上去像是请求返回了 HTML，确认接口返回正常吗？

stackoverflow是不是用了debug 版本的bridge，需要使用release构建才可以。
不过axios应当被支持的，我们看下为啥不能工作

还有 这种问题。用devtools 也无法定位 那该怎么debug呢

0.9 版本从 JSC 迁移到 quickjs 之后，js debugger 还没准备好

14(com.openkraken.kraken_example) 1.ui identical 1 line
E/KRAKEN_NATIVE_LOG(10004): SyntaxError: unexpected token: '<'
E/KRAKEN_NATIVE_LOG(10004):     at :1
E/KRAKEN_NATIVE_LOG(10004):     at parse (native)
E/KRAKEN_NATIVE_LOG(10004):     at json (kraken://)
E/KRAKEN_NATIVE_LOG(10004):     at  (assets/app.js:1577)

看上去像是请求返回了 HTML，确认接口返回正常吗？

看了下请求 确实不正常了 。看 flutter侧对请求做了修改，是不是没对低版本兼容

    <title>Apache Tomcat/7.0.54 - Error report</title>

HTTP Status 400 -

type Status report

message

description The request sent by the client was syntactically incorrect.

Apache Tomcat/7.0.54

请问是在什么情况下服务端会返回 HTML，是少了什么 Header 吗？

请问是在什么情况下服务端会返回 HTML，是少了什么 Header 吗？

debug 看 ，都已经加上了。同样的js代码，理论上不应该有什么需要适配的吧

可能是我们在 0.8 版本重构了网络库的影响，麻烦看下导致问题的具体原因

具体

我在源码上修改了请求方式。现在可以了。另外 想问下 什么时候 开业支持到flutter2.5 ，最新版的debug 工具什么时候可以用

flutter 2.5 不难，等这两周把 0.9.1 发布了就顺便搞一下 https://github.com/openkraken/kraken/pull/817
devtools 支持 quickjs 调试还需要点时间，一是现在团队的精力还不在这里，估计要等下个版本才可以支持

flutter 2.5 不难，等这两周把 0.9.1 发布了就顺便搞一下 #817
devtools 支持 quickjs 调试还需要点时间，一是现在团队的精力还不在这里，估计要等下个版本才可以支持

0.9以后是不是已经不支持 jsc了

是的

是的

是出于什么考虑 替换调jsc呢

是的

是出于什么考虑 替换调jsc呢

支持 bytecode 加载，更好的初始化性能 —— 更快的首屏加载
更低的内存占用
更好的 ES 标准支持，没有多系统碎片化问题

authors: andycall answershuto colorfulldays wssgcg1213

repo: openkraken/kraken


text:
Spanish

Hello all,
This is my initial translation for the readme.md files for the Markup Language and Getting Started sections. I thought it was a good place to start. I do not anticipate this being a perfect translation as-is; there are several points at which it is very tricky to make sure that you are translating everything that has semantic value in natural language only, and not translating anything that has natural semantic + programming value (for example, key/value pairs within objects in OpenLaw contract examples). Beyond that, there are the normal sticking points of any large-scale technical translation. But these are good hurdles to be getting familiar with in terms of internationalizing OpenLaw down the road.
A few notes:
-For my translations with MetaMask, the decision was made to go with the 'tu', or more informal, verbal address pronoun/verbal construction. I continued with that choice here, as the documentation by and large has a conversational tone to it; that said, I did my best to ensure that all the legal language maintained its very high register.
-I opted with as native-as-possible terms for tech items whenever it made sense to, like 'cadena de carácteres' for 'string'. Just because some programmers might know the English term for something doesn't mean we should assume everyone does--but I'm happy to take redirection on this.
-The one significant deviation from this rule is with 'blockchain'. On MetaMask's translation, it was recommended I just use the anglicism 'blockchain'. Again, this could easily become 'cadena de bloques'.
That's all that I can think of at the moment. This was a great opportunity to get more familiar with the project, and I think more internationalization will be a great help.

@mapachurro thanks so much for this huge contribution. Have you looked into if we need to do any additional config setup for vuepress to implement multi-language support? This was shared in the issue card from the vuepress docs: https://v0.vuepress.vuejs.org/guide/i18n.html#site-level-i18n-config. Ok if not and we can update on our end but just wanted to check with you first to see if this pr already addresses.

I have not looked into that! But I will, thanks for bringing it up!

To me this looks good to merge! @jdville03 what do you think?

i think the only thing is configuring so that the translated sites render correctly for vuepress: https://v0.vuepress.vuejs.org/guide/i18n.html#site-level-i18n-config

OK. I changed the directory structure as per VuePress, and made changes to the VuePress config.js. That said, one of the cool things about VuePress i18n is the locale-based theme config options -- I did not do that whole part of it, didn't seem necessary for this PR. Happy to give it a shot if you'd like, though.

Copy that -- sorry for the delay; changes made.

No problem @mapachurro. Thanks for the changes. I noticed that these 2 files got included in the last commit: docs/openlaw-object/README.sync-conflict-20190224-110537-AXDUIVK.md docs/api-client/README.sync-conflict-20190224-120513-AXDUIVK.md. I think we should be all done after those are removed.

@mapachurro we recently updated the Getting Started section (English version) with the different ways to use the openlaw JS package. Would you by chance have time in the near future to make the updates to the es file in another PR? Here is the current file: https://github.com/openlawteam/docs/blob/master/docs/getting-started/README.md

Sure. This is a good starting point to continue with the docs translation. I'll do that one first.

authors: jdville03 mapachurro outkaj

repo: openlawteam/docs


text:
Add More Style Expression Operator like 'sqrt', 'distance'

I have a geotiff with two bands, u and v bands to calculate wind speed, can you provide more operator like 'sqrt', so I can use expression like
['sqrt', ['+', ['^', ['band', 1], 2], ['^', ['band', 2], 2]]]
ref:  https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#sqrt

Where not supported sqrt can be implemented as
['^', ['+', ['^', ['band', 1], 2], ['^', ['band', 2], 2]], 0.5]

Silly me

Hi, I think such operator would make a lot of sense and help simplify expressions/make them more readable. Besides, we're still trying to be as compatible as possible with mapbox expressions.
@linjiacheng would you be willing to help with such a contribution? A good reference would be this PR: https://github.com/openlayers/openlayers/pull/13363

authors: jahow linjiacheng mike-000

repo: openlayers/openlayers


text:
Map controls not functioning in Chrome 40 on Windows 8

I'm unable to zoom in or out, as well as expand/collapse the layer switcher menu and select different layers. This seems to be an issue with click events not being handled.
To reproduce:

Go to http://dev.openlayers.org/examples/zoom.html in Chrome on Windows 8
Attempt to zoom in or out using the controls
Instead of zooming, the hash #zoomIn or #zoomOut appears in the address bar

Hi, I had the same issue. It's not working in Chrome, only on computers with touch screen. You should disable touch screen in Chrome and zooming will be working. You can do it like in this example:
http://ccm.net/faq/40811-google-chrome-how-to-disable-touch-input


text:
Flickering map when using webview on a NOTHING phone

Hello,
When bumping OL version to V9, I found that, only on the Nothing phone, the map was flickering randomly when panning or zooming.
Most of the time, the map was perfect, but sometimes, it went completely black. This occurred mostly around zoom levels 3,4,5.
This occurred on 2 Nothing phones with different Android versions (V12 & V13) and any webview version.
This did not occurred on any other Android, Ios or Web platforms.
I was able to pinpoint this regression to commit #15344 .
When investigating, I found that the test has.js#WORKER_OFFSCREEN_CANVAS  is usually false on all my test systems, and so the transform.js#toString() was always using the DOM.
After this commit, this test is not performed anymore, and the new transform calculus makes this specific phone flickering for an unknown reason.
As a quick fix, I re-added the test, and so used the previous DOM transform. This solved the problem.
It looks like there are daemons lurking around there...
Michel

Would you be able to share the transform values on the canvas that cause the map to flicker?

I will instrument the code, do a run and pastebin the result.
I should be able to do this by the end of the week

So far so good. But can you mark the transforms that cause the map to disappear or flicker?

I just checked, and it looks like the transforms do NOT change, except when I change screen orientation from portrait to paysage.
Panning or zooming does not change values. Maybe the m̀at should be cached, or OL is performing useless calculations?
But the flickering is definitively panning and zoomLevel dependent. I could have to do with fractional zoom levels?
Anyway, the new matrixPrecision initialization solves completely the problem on all my test systems (Ios, Android, browsers, electron). I keep this value in my fork and I recommend the update of OL.
Thanks for all the hard work on this exceptional product!
Michel

The problem is: the reason for #15344 was that the precision of the matrix parameters was too high, so canvases could not be grouped together any more, even if their transform was de facto the same.
I'd really like to fix this issue, but since I'm not able to reproduce the issue I have to rely on reports here. So can you please provide a minimal example with code that causes your devices in question to flicker? And also a video that shows when and how the flickering occurs?

I did a video, available here .
As the app is actually under embargo, I started to cleanup everything except the map, and I was surprised to see that everything became OK.
The flickering starts to occur as soon as a marker is visible, or not far away in the margins.
This marker is  in a vector layer:
 poiSource = new VectorSource({
    features: myPlaces.getMarkersFeatures().value,
  });
  const poiLayer = new VectorLayer({
    source: poiSource,
  });

and the style is done with:
let myCanvas = document.createElement("canvas");
      let myContext = myCanvas.getContext("2d");
      myCanvas.width = upngImage.width;
      myCanvas.height = upngImage.height;
      const upngImageData = new ImageData(
        new Uint8ClampedArray(rgba8),
        upngImage.width,
        upngImage.height,
      );
      myContext.putImageData(upngImageData, 0, 0);

      myStyle = new Style({
        image: new Icon({
          anchor: options.anchor,
          anchorXUnits: "fraction",
          anchorYUnits: "fraction",
          crossOrigin: "anonymous",
          img: myCanvas,
          rotation: options.rotation,
          displacement: options.displacement,
          opacity: options.opacity,
          scale: options.scale || DEFAULTS.SCALE,
          color: options.color,
          rotateWithView: options.rotateWithView,
        }),
      });

the width and height are 64x64px
and rgba8 is created with:
rgba8 = composeBitmap(
          new Uint8ClampedArray(stencil),
          upngImage.width,
          upngImage.height,
          options.strokeColor || DEFAULTS.STROKE_COLOR,
          options.fillColor || DEFAULTS.FILL_COLOR,
        );

stencil is an array of RGBA pixels created with UPNG.toRGBA8() from the upng-js library.
If I remove this marker, or if it is far away from the viewport, everything is OK.
I have other markers in this layer, created from SVG images, that does NOT cause any problem.
So, it looks like there is a bad interaction when a feature in a vector layer is created from a canvas, which does not occur when the (nearly) same image is created from an SVG.
I am using Quasar which uses vue3 and capacitor underneath. The exact same code works OK with any browser (chromium, firefox) on the same phone. It occurs only when using the webview.
I have plenty of workarounds to solve this problem and I do not need support, but it is not a good thing to leave questions unanswered.
I am not very fluent in creating a simple OL example from scratch and making it run in a webview, but I am ready to test on this particular phone any test that you could create.

Thanks for this excellent report, @mgurzixo. Reading that I assume the problem is not the transform itself, but the fact that with the change the marker layer is combined with the base map, at least sometimes.
As a test, can you  add the config option className: 'poi' to the poiLayer, and see if the issue persists?

When adding this option:
  const poiLayer = new VectorLayer({
    source: poiSource,
    className:"poi",
  });

Everything works OK with both the old and the new initialization. The markers are OK and there is absolutely no flickering.
I suspect a phenomenon of moiré between the poiLayer canvas and the tileLayer canvas; maybe you don´t apply exactly the very same transformation to both layers and there is a very slight difference in the rotation part. We are talking about physical pixels here and this explanation is compatible with everything observed.
There is actually a move towards hardware composition. Depending on the hardware rounding errors, number of pixels of the screen and so on... this phenomenon could or could not occur. Maybe also you can do things in a webview (authorizations, direct access to hardware, part of it running in kernel space ...) that you cannot do with a browser just running in userland.
For myself, I switched everything from bitmap to SVG, so I am not concerned anymore and markers are crisper ;)
I still suggest using the [1e6, 1e6, 1e6, 1e6, 1e7, 1e7] initialization, and provide a switch (could be an option when creating the layer) to fallback to the old DOM method, just in case...
Thank you @ahocevar  for taking so much care to make a perfect product
Michel

Can you test one more thing for me: with the original code (without className), what is document.querySelectorAll('.ol-layer canvas').length when rendering is correct, and what when there's the flicker?

It is always 1 and does not vary, flickering or not.
Code is:
console.warn(`[OL.transform.toString] length:${document.querySelectorAll('.ol-layer canvas').length}`);

I sampled it both in transform.js#toString()and in my view.on("change:center")handler.

BTW, I don't know precisely the internals of OL, but are you aware of that?

BTW, I don't know precisely the internals of OL, but are you aware of that?

Yes, that's exactly how we do it.

I still suggest using the [1e6, 1e6, 1e6, 1e6, 1e7, 1e7] initialization, and provide a switch (could be an option when creating the layer) to fallback to the old DOM method, just in case...

That would break a test, and deoptimise composition by using multiple canvases. Since you can use the className config in userland to achieve that, you have a viable option to fix this strange problem which is very likely a hardware problem on the device in question.

I understand that, and it makes sense as long as there is a workaround available. OL strength and weakness is all the layer processing to mix apples and oranges (ie. different projections, rotations, resolutions and constraints) onto the same display. This means that we users should avoid throwing other bitmaps (especially hand-made) into this complexity, and stick to vectors, SVG and standard HTML.
BTW, I think that it is not a hardware problem but a hardware particularity ;)

I'm having similar issues with plain desktop Chrome: when zooming, the map flickers, and on some zoom levels it goes blank completely. WMS and vector tile layers seem to work ok, but if you add a vector layer, flickering starts. Adding the className parameter removes flickering.
Not sure if I can help much with debugging, just came to comment that it's probably not just an issue related to Nothing phone hardware; the hardware I'm using is a Lenovo laptop with Intel graphics...

#15620 should fix this problem.

For that pull request, you can test with the full build: https://deploy-preview-15620--ol-site.netlify.app/en/latest/ol/dist/ol.js and https://deploy-preview-15620--ol-site.netlify.app/en/latest/ol/ol.css

I have similar map flickering issues with tile layers when zooming on desktop Chrome with Intel graphics. Applying the patch in #15620 seems to work for me.

Also seeing this flickering primarily on the combination Windows and Chrome.

@bjornharrtell Thanks for reporting. Can you please also check if #15620 fixes the problem for you?

#15620 is now merged, so ol package users please test if the issue is fixed by doing an npm install ol@dev.

@ahocevar limited testing indicates that #15620 is effective in our case.

authors: ahocevar bjornharrtell jankosk mgurzixo ssundell