Segfault on worker termination

LOG:  backend pid is 29468
segfault at:
pipeline: bgworker: worker [regression]   (debug_segfault+0x34)[0x6eb34e]
/lib/x86_64-linux-gnu/libc.so.6(+0x352f0)[0x7ff8566872f0]
pipeline: bgworker: worker [regression]   (RegisterSnapshotOnOwner+0x22)[0x986824]
pipeline: bgworker: worker [regression]   (ContinuousQueryWorkerMain+0x912)[0x75b5de]
pipeline: bgworker: worker [regression]   [0x759376]
LOG:  worker process: combiner [regression] (PID 29444) exited with exit code 0
LOG:  unregistering background worker "combiner [regression]"
pipeline: bgworker: worker [regression]   (StartBackgroundWorker+0x2f6)[0x76529e]
pipeline: bgworker: worker [regression]   [0x7792c4]
pipeline: bgworker: worker [regression]   [0x7795f2]
pipeline: bgworker: worker [regression]   [0x774177]
pipeline: bgworker: worker [regression]   (PostmasterMain+0x1126)[0x773582]
pipeline: bgworker: worker [regression]   [0x6b24c9]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ff856672a40]
pipeline: bgworker: worker [regression]   (_start+0x29)[0x462569]

Removing from milestone because haven't been able to repro.

pipeline: bgworker: combiner [pipeline_test]   [0x463f29]
LOG:  worker process: combiner [pipeline_test] (PID 727) exited with exit code 1
segfault at:
pipeline: bgworker: combiner [pipeline_dev]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline_dev]   [0x751f19]
I'm certain if this is the same segfault that I'm getting or not..

This seems to be a segfault in the combiner process. Could you paste a little more of the log?

I'm using 3 dbs.. pipeline_dev, pipeline_test, and pipeline.  Nothing else is abnormal about my setup besides having compiled from source with SSL.  If you need more log I can send even more
pipeline: bgworker: worker [pipeline]   [0x76abde]
pipeline: bgworker: worker [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 701) exited with exit code 1
LOG:  worker process: combiner [pipeline_dev] (PID 698) exited with exit code 1
LOG:  worker process: combiner [pipeline_test] (PID 702) exited with exit code 1
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline_test]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline_test]   [0x74f964]
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline_dev]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline_dev]   [0x74f964]
pipeline: bgworker: worker [pipeline_dev]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline_dev]   [0x74e503]
pipeline: bgworker: worker [pipeline_dev]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline_dev]   [0x76fcf9]
pipeline: bgworker: worker [pipeline_dev]   [0x770015]
pipeline: bgworker: worker [pipeline_dev]   [0x76abde]
pipeline: bgworker: worker [pipeline_dev]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline_dev]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline_dev]   [0x463f29]
ERROR:  cannot wait on a latch owned by another process
segfault at:
LOG:  worker process: worker [pipeline] (PID 704) exited with exit code 1
pipeline: bgworker: worker [pipeline_test]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline_test]   [0x74e503]
pipeline: bgworker: worker [pipeline_test]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline_test]   [0x76fcf9]

pipeline: bgworker: worker [pipeline]   [0x463f29]
LOG:  continuous query process "combiner [pipeline_dev]" running with pid 716
pipeline: bgworker: combiner [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 696) exited with exit code 1
LOG:  worker process: worker [pipeline_test] (PID 699) exited with exit code 1
LOG:  worker process: worker [pipeline] (PID 697) exited with exit code 1
ERROR:  cannot wait on a latch owned by another process
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline]   [0x74f964]
pipeline: bgworker: worker [pipeline]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline]   [0x74e503]
pipeline: bgworker: worker [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline]   [0x76fcf9]
pipeline: bgworker: worker [pipeline]   [0x770015]
pipeline: bgworker: worker [pipeline]   [0x76abde]
pipeline: bgworker: worker [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 701) exited with exit code 1
LOG:  worker process: combiner [pipeline_dev] (PID 698) exited with exit code 1
LOG:  worker process: combiner [pipeline_test] (PID 702) exited with exit code 1
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline_test]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline_test]   [0x74f964]
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline_dev]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline_dev]   [0x74f964]
pipeline: bgworker: worker [pipeline_dev]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline_dev]   [0x74e503]
pipeline: bgworker: worker [pipeline_dev]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline_dev]   [0x76fcf9]
pipeline: bgworker: worker [pipeline_dev]   [0x770015]
pipeline: bgworker: worker [pipeline_dev]   [0x76abde]
pipeline: bgworker: worker [pipeline_dev]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline_dev]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline_dev]   [0x463f29]
ERROR:  cannot wait on a latch owned by another process
segfault at:
LOG:  worker process: worker [pipeline] (PID 704) exited with exit code 1
pipeline: bgworker: worker [pipeline_test]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline_test]   [0x74e503]
pipeline: bgworker: worker [pipeline_test]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline_test]   [0x76fcf9]
pipeline: bgworker: worker [pipeline_test]   [0x770015]
pipeline: bgworker: worker [pipeline_test]   [0x76abde]
pipeline: bgworker: worker [pipeline_test]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline_test]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline_test]   [0x463f29]
pipeline: bgworker: combiner [pipeline_dev]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline_dev]   [0x751f19]
pipeline: bgworker: combiner [pipeline_dev]   (ContinuousQueryCombinerMain+0x47d)[0x7527a7]
pipeline: bgworker: combiner [pipeline_dev]   [0x74e503]
pipeline: bgworker: combiner [pipeline_dev]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: combiner [pipeline_dev]   [0x76fcf9]
pipeline: bgworker: combiner [pipeline_dev]   [0x770015]
pipeline: bgworker: combiner [pipeline_dev]   [0x76abde]
pipeline: bgworker: combiner [pipeline_dev]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: combiner [pipeline_dev]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: combiner [pipeline_dev]   [0x463f29]
LOG:  worker process: combiner [pipeline_dev] (PID 706) exited with exit code 1
LOG:  worker process: worker [pipeline_dev] (PID 705) exited with exit code 1
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: combiner [pipeline_test]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline_test]   [0x751f19]
pipeline: bgworker: combiner [pipeline_test]   (ContinuousQueryCombinerMain+0x47d)[0x7527a7]
pipeline: bgworker: combiner [pipeline_test]   [0x74e503]
pipeline: bgworker: combiner [pipeline_test]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: combiner [pipeline_test]   [0x76fcf9]
pipeline: bgworker: combiner [pipeline_test]   [0x770015]
pipeline: bgworker: combiner [pipeline_test]   [0x76abde]
pipeline: bgworker: combiner [pipeline_test]   (PostmasterMain+0x1110)[0x76a03c]
segfault at:
pipeline: bgworker: worker [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline]   [0x74f964]
pipeline: bgworker: worker [pipeline]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline]   [0x74e503]
pipeline: bgworker: worker [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
LOG:  worker process: worker [pipeline_test] (PID 707) exited with exit code 1
pipeline: bgworker: worker [pipeline]   [0x76fcf9]
pipeline: bgworker: worker [pipeline]   [0x770015]
pipeline: bgworker: worker [pipeline]   [0x76abde]
pipeline: bgworker: worker [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline]   [0x463f29]
pipeline: bgworker: combiner [pipeline_test]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: combiner [pipeline_test]   [0x463f29]
LOG:  worker process: worker [pipeline] (PID 709) exited with exit code 1
LOG:  worker process: combiner [pipeline_test] (PID 708) exited with exit code 1
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: combiner [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline]   [0x751f19]
pipeline: bgworker: combiner [pipeline]   (ContinuousQueryCombinerMain+0x47d)[0x7527a7]
pipeline: bgworker: combiner [pipeline]   [0x74e503]
pipeline: bgworker: combiner [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: combiner [pipeline]   [0x76fcf9]
pipeline: bgworker: combiner [pipeline]   [0x770015]
pipeline: bgworker: combiner [pipeline]   [0x76abde]
pipeline: bgworker: combiner [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: combiner [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: combiner [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 710) exited with exit code 1
LOG:  starting background worker process "worker [pipeline]"
LOG:  starting background worker process "worker [pipeline_dev]"
LOG:  starting background worker process "worker [pipeline_test]"
LOG:  starting background worker process "combiner [pipeline_test]"
LOG:  continuous query process "combiner [pipeline_test]" running with pid 720
LOG:  continuous query process "worker [pipeline_test]" running with pid 719
LOG:  continuous query process "worker [pipeline]" running with pid 717
LOG:  continuous query process "worker [pipeline_dev]" running with pid 718
LOG:  starting background worker process "combiner [pipeline]"
LOG:  starting background worker process "combiner [pipeline_dev]"
LOG:  continuous query process "combiner [pipeline]" running with pid 721
LOG:  continuous query process "combiner [pipeline_dev]" running with pid 722
LOG:  starting background worker process "combiner [pipeline]"
LOG:  starting background worker process "worker [pipeline_test]"
LOG:  starting background worker process "worker [pipeline]"
LOG:  continuous query process "worker [pipeline]" running with pid 725
LOG:  continuous query process "worker [pipeline_test]" running with pid 724
LOG:  continuous query process "combiner [pipeline]" running with pid 723
LOG:  starting background worker process "combiner [pipeline]"
LOG:  starting background worker process "combiner [pipeline_test]"
LOG:  starting background worker process "combiner [pipeline_dev]"
LOG:  starting background worker process "worker [pipeline]"
LOG:  starting background worker process "combiner [pipeline_dev]"
LOG:  starting background worker process "worker [pipeline_dev]"
LOG:  starting background worker process "worker [pipeline_test]"
LOG:  starting background worker process "worker [pipeline]"
LOG:  starting background worker process "combiner [pipeline_test]"
LOG:  starting background worker process "combiner [pipeline]"
ERROR:  cannot wait on a latch owned by another process
segfault at:
LOG:  continuous query process "combiner [pipeline_dev]" running with pid 730
LOG:  continuous query process "combiner [pipeline_test]" running with pid 727
LOG:  continuous query process "worker [pipeline]" running with pid 729
LOG:  continuous query process "combiner [pipeline_dev]" running with pid 728
LOG:  continuous query process "worker [pipeline_dev]" running with pid 731
pipeline: bgworker: combiner [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline]   [0x751f19]
pipeline: bgworker: combiner [pipeline]   (ContinuousQueryCombinerMain+0x47d)[0x7527a7]
pipeline: bgworker: combiner [pipeline]   [0x74e503]
pipeline: bgworker: combiner [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: combiner [pipeline]   [0x76fcf9]
pipeline: bgworker: combiner [pipeline]   [0x770015]
pipeline: bgworker: combiner [pipeline]   [0x76abde]
pipeline: bgworker: combiner [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: combiner [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: combiner [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 721) exited with exit code 1
LOG:  continuous query process "combiner [pipeline]" running with pid 726
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline]   [0x74f964]
pipeline: bgworker: worker [pipeline]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline]   [0x74e503]
pipeline: bgworker: worker [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline]   [0x76fcf9]
pipeline: bgworker: worker [pipeline]   [0x770015]
pipeline: bgworker: worker [pipeline]   [0x76abde]
LOG:  continuous query process "worker [pipeline]" running with pid 733
pipeline: bgworker: worker [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline]   [0x463f29]
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: combiner [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline]   [0x751f19]
pipeline: bgworker: combiner [pipeline]   (ContinuousQueryCombinerMain+0x47d)[0x7527a7]
pipeline: bgworker: combiner [pipeline]   [0x74e503]
pipeline: bgworker: combiner [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: combiner [pipeline]   [0x76fcf9]
pipeline: bgworker: combiner [pipeline]   [0x770015]
pipeline: bgworker: combiner [pipeline]   [0x76abde]
pipeline: bgworker: combiner [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: combiner [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: combiner [pipeline]   [0x463f29]
LOG:  worker process: combiner [pipeline] (PID 723) exited with exit code 1
LOG:  worker process: worker [pipeline] (PID 725) exited with exit code 1
LOG:  continuous query process "worker [pipeline_test]" running with pid 732
LOG:  continuous query process "combiner [pipeline]" running with pid 735
LOG:  continuous query process "combiner [pipeline_test]" running with pid 734
ERROR:  cannot wait on a latch owned by another process
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: worker [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: worker [pipeline]   [0x74f964]
pipeline: bgworker: worker [pipeline]   (ContinuousQueryWorkerMain+0x60b)[0x75038a]
pipeline: bgworker: worker [pipeline]   [0x74e503]
pipeline: bgworker: worker [pipeline]   (StartBackgroundWorker+0x2f6)[0x75c5e5]
pipeline: bgworker: worker [pipeline]   [0x76fcf9]
pipeline: bgworker: worker [pipeline]   [0x770015]
pipeline: bgworker: worker [pipeline]   [0x76abde]
pipeline: bgworker: worker [pipeline]   (PostmasterMain+0x1110)[0x76a03c]
pipeline: bgworker: worker [pipeline]   [0x6ad4e5]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fbce71a5ec5]
pipeline: bgworker: worker [pipeline]   [0x463f29]
ERROR:  cannot wait on a latch owned by another process
segfault at:
pipeline: bgworker: combiner [pipeline]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
segfault at:
pipeline: bgworker: combiner [pipeline_test]   (debug_segfault+0x25)[0x6e4f87]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7fbce71bad40]
pipeline: bgworker: combiner [pipeline_test]   [0x751f19]
pipeline: bgworker: combiner [pipeline_test]   (ContinuousQueryCombi

Would it be possible for you to share the queries and workload you're running?

what's strange about it is..  I'm just running a single test suite over and over.. everything passes, then sporadically this ^ occur and the suite starts failing until I restart the pipelinedb server, then all is normal and I can't reproduce.
I'll paste some of the queries and views into a private chat to you on gitter.. 1 min

Version used ?

I'm not sure how to determine that.. I built it via the source on github on August 6th.. enabled ssl

ubuntu 14.14

@gxbe: Could you try the latest release and see if this problem persists?

This doesn't seem to be an issue anymore and we haven't been able to repro. Closing for now.


gluestack\global.css: Bad character escape sequence. (1:13)

Description
gluestack\global.css: Bad character escape sequence. (1:13)
CodeSandbox/Snack link
https://github.com/gluestack/gluestack-ui-starter-kits/tree/main/expo-app
Steps to reproduce
OS :- Windows 10 Pro
npx create-expo-app gluestack --template blank
cd gluestack
npx gluestack-ui init
npx gluestack-ui add --all

package.json
 "dependencies": {     "@expo/html-elements": "^0.4.2",     "@gluestack-ui/accordion": "^1.0.7",     "@gluestack-ui/actionsheet": "^0.2.45",     "@gluestack-ui/alert": "^0.1.15",     "@gluestack-ui/alert-dialog": "^0.1.31",     "@gluestack-ui/avatar": "^0.1.17",     "@gluestack-ui/button": "^1.0.7",     "@gluestack-ui/checkbox": "^0.1.32",     "@gluestack-ui/divider": "^0.1.9",     "@gluestack-ui/fab": "^0.1.21",     "@gluestack-ui/form-control": "^0.1.18",     "@gluestack-ui/icon": "^0.1.22",     "@gluestack-ui/image": "^0.1.10",     "@gluestack-ui/input": "^0.1.31",     "@gluestack-ui/link": "^0.1.22",     "@gluestack-ui/menu": "^0.2.36",     "@gluestack-ui/modal": "^0.1.34",     "@gluestack-ui/nativewind-utils": "^1.0.25",     "@gluestack-ui/overlay": "^0.1.15",     "@gluestack-ui/popover": "^0.1.37",     "@gluestack-ui/pressable": "^0.1.16",     "@gluestack-ui/progress": "^0.1.17",     "@gluestack-ui/radio": "^0.1.33",     "@gluestack-ui/select": "^0.1.29",     "@gluestack-ui/slider": "^0.1.25",     "@gluestack-ui/spinner": "^0.1.14",     "@gluestack-ui/switch": "^0.1.22",     "@gluestack-ui/textarea": "^0.1.23",     "@gluestack-ui/toast": "^1.0.7",     "@gluestack-ui/tooltip": "^0.1.33",     "@legendapp/motion": "^2.4.0",     "babel-plugin-module-resolver": "^5.0.2",     "expo": "~51.0.28",     "expo-status-bar": "~1.12.1",     "nativewind": "4.0.36",     "react": "18.2.0",     "react-native": "0.74.5",     "react-native-reanimated": "^3.16.0",     "react-native-svg": "^13.4.0",     "tailwindcss": "^3.4.14",     "@types/react": "~18.2.79",     "react-native-web": "~0.19.10",     "react-dom": "18.2.0",     "@expo/metro-runtime": "~3.2.3"   },
gluestack-ui Version
0.1.13
Platform

[X] Expo
[ ] React Native CLI
[ ] Next
[X] Web
[ ] Android
[ ] iOS

Other Platform
Windows 10 Pro
Additional Information
package.json

Hey @dineshpithiya , We are already looking into a similar issue which is occuring only on Windows OS and working on it,  you can track the issue here https://github.com/gluestack/gluestack-ui/issues/2494

Closing the issue as the concerned issue has been resolved in the latest version of gluestack-ui CLI. Please feel free to reopen this if you face any issue while using it.

Closing the issue as the concerned issue has been resolved in the latest version of gluestack-ui CLI. Please feel free to reopen this if you face any issue while using it.

@vaibhk20 Thanks for the looking into this but seems issue still as it is like before. find attached package.json file
`Server Error
SyntaxError: my-app\global.css: Bad character escape sequence. (1:13)

1 | require('my-app\node_modules.cache\nativewind\global.css');
|              ^
Call Stack

global.css
Collapse 1 frame`

package.json
OS:- Windows 10 Pro
Node:- v20.18.0
Expo:- 52.0.11
React Native:- 0.76.3


Responses in plugin methods.

I have an inconsistency now, unfortunately. Here it is:

list actions always return response['plugindata']['data']['list']
create actions return response['plugindata']['data']
all other plugin actions return response

The complete janus response messages is meant by response above. My question is should we keep it as it is now or shall we unify all methods to return response? We can't always return response['plugindata']['data'] cause we need to access once response['jsep'] in configure action of Audioroom/Audiobridge plugins.
@zazabe @tomaszdurka your thoughts?

Maybe the response could be represented by a new class, then we could have specific response type depending on the request...

Do you want to create such class only in jsDocu or create it for real and wrap every response in it?

I would wrap response with it, wdyt? is it solving the issue?

well but it will complicate things for a minor reason

@zazabe please review

I think we can go a bit further and implement some specific responses, what about:
Response:
  - get(..keys)
  - getData(..keys)
  - getJsep()
  - hasJsep()

Response > ResponseError:
  - getError()

Response > ResponseEvent:
  - getEventName()? // getData(<pluginName>)

Response > ResponseCreate:
  - getStream()

Response > ResponseDestroy:
  - getDestroyedStreamId()?

Response > ResponseList:
  - getList()

Response > ResponseListParticipants:
  - getListParticipants()

...

I think that it is too much >_<. I agree that we can better document PluginResponse in Readme but creating a class for each type of response =O

maybe just ResponseEvent, ResponseError, ResponseAction ?
response.getData()[...] looks strange...

maybe just ResponseEvent, ResponseError, ResponseAction ?

Well, all those classes are based on janus response object which has absolutely the same structure for all of them. Why to have different classes for the same structure?
ResponseEvent
{
  "janus": "event",
  "session_id":<PHONE_NUMBER>,
  "sender":<PHONE_NUMBER>,
  "transaction": "ihkhjnrdng",
  "plugindata": {
    "plugin": "janus.plugin.audiobridge",
    "data": {
      "audiobridge": "joined",
      "room": 39,
      "id":<PHONE_NUMBER>,
      "participants": []
    }
  }
}

ResponseError
{
  "janus": "event",
  "session_id":<PHONE_NUMBER>,
  "sender":<PHONE_NUMBER>,
  "transaction": "6q0jvxnh3p",
  "plugindata": {
    "plugin": "janus.plugin.audiobridge",
    "data": {
      "audiobridge": "event",
      "error_code": 485,
      "error": "No such room (698)"
    }
  }
}

ResponseAction
{
  "janus": "success",
  "session_id":<PHONE_NUMBER>,
  "sender":<PHONE_NUMBER>,
  "transaction": "4oc2jfan4j",
  "plugindata": {
    "plugin": "janus.plugin.audiobridge",
    "data": {
      "audiobridge": "created",
      "room": 39
    }
  }
}

response.getData()[...] looks strange...

Agree. We can remove getData then and always use response.get('plugindata', 'data', 'event');

ok, if it solves the main propose of this PR, let's keep only 1 Response, just thought it will help to distinguish those response type.
About getData(), it could be just a shortcut for response.get('plugindata', 'data'), with the same signature than reponse.get()...

About getData(), it could be just a shortcut for response.get('plugindata', 'data'), with the same signature than reponse.get()...

good idea!

@zazabe please review

My dear @zazabe please review

looks super nice to me!


Add support for multiple classes

What

Add support for classification in multiple classes

Why

Currently, the code supports only 2 classes at a time

Impact

python bayes.py classify

Closing this. Not required


Truncate text in content switcher button, allow width to change

Description

This PR allows the content switcher to get smaller horizontally depending on the length of the text, but gives a max-width matching the width of 'All content'. Strings longer than this, with localization in mind, are truncated.
The width is done with some magic numbers, but they're at least in REMs so should scale correctly.

Testing Instructions

Checklist

[ ] My pull request has a descriptive title (not a vague title like Update index.md).
[ ] My pull request targets the default branch of the repository (main) or a parent feature branch.
[ ] My commit messages follow best practices.
[ ] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ ] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

From what I understand (@dhruvkb might know better and correct me), we need to limit the Content switcher for the popover not to jump. Since we use a modal instead of the popover on mobile screen, I don't really see the need for truncating on mobile.
Unless there is such a long string that it takes up much more space than the width of the screen minus logo and filter button?? When the header is scrolled, we don't show the label anyways.

Unless there is such a long string that it takes up much more space than the width of the screen minus logo and filter button??

There are definitely strings that would do this, yes. For example the Spanish translation is Todo el contenido.
Now I'm wondering though...truncated text for a button isn't very useful to users.

The reason I added a fixed width was to avoid the button changing size based on what option was selected. It should always be the size of the biggest content.
Behaviour without the w-20 class:
https://user-images.githubusercontent.com/16580576/151528941-0d328707-24aa-4e74-8840-0953cb374bb9.mov
In retrospect, adding a fixed width was misguided considering i18n strings can be longer than English.

In retrospect, adding a fixed width was misguided considering i18n strings can be longer than English.

I wonder if setting a fixed width in characterch units using all of the content-type strings for current locale would be over-engineering and slow down the site?

I wonder if setting a fixed width in characterch units using all of the content-type strings for current locale would be over-engineering and slow down the site?

I don't think this would slow down the site, FWIW, but I'm hesitant to suggest it as the right answer, if only because ch is a rough estimate based on the 0 glyph, which is probably somewhere in the middle as far as glyph widths go?
mmm
000
We can see the difference there I suppose.
We could create a shadow element button using the longest visible string found in the dropdown items and then calculate the width from that? I'm not sure if an actual width would be calculated for an element that doesn't appear in the DOM though, and it could cause client-side jiggling of the button's width, which is really undesirable...
This is a tough one!

Dropping my comment here as in the slack meeting.

The reason I added a fixed width was to avoid the button changing size based on what option was selected. It should always be the size of the biggest content.

That is a good approach @dhruvkb but it jeopardizes spelling and understanding.
I have no concern about the button's jiggling effect as long as it does not break the header or the area where is placed, but the problem also covers smaller breakpoints where there is lesser space. In that case, this input is crucial for the search input work (#594) I started days ago and I can come back with a new proposal. Here is a quick recap of where and how we are using the component.
Desktop

Mobile

I need to explore more carefully a solution and test it on all breakpoints with multiple languages in different use cases. So, as @sarayourfriend said, we can move forward with the current solution.

We should likely develop a checklist to check everything we build in—all accessibility states, string length, and things like that.

We really need some fix for this, to prevent experiences like this:

I think the actual Portuguese and at least some of the Spanish translations use Todo/Tudo instead of the full phrase.

@obulat can you give this a re-review, testing in a few languages and breakpoints?

Rebased the branch.
I think we're planning to hold of merging this until next week after deploying, is that right @zackkrida ?


resolve issue caused by upgrading gradle plugin to 7.1.0

The upgrade had to be rolled back for now.

Resolved by: androidx.navigation:navigation-{ui/fragment} to 2.4.0-rc01

Was solved by https://github.com/GrapheneOS/Apps/pull/63


[i18n] Tooling to detect inconsistent translation and formatting Japanese text

@svrnm @chalin Thank you for supporting each language localization! At least, the localization for Japanese could make a smooth start thanks to the great automation tools.
Now I started feeling like I need some automation tool to detect inconsistent translation and Japanese formatting to have more contributions from many people. How can I add that feature to the repo? Tricky parts are:

Only lang:ja labeled PRs need the
The tool needs to have a set of mappings between correct and incorrect wordings (in some file)

What do you think about this idea?
Originally posted by @ymotongpoo in https://github.com/open-telemetry/opentelemetry.io/discussions/4302#discussioncomment-9870096

hey @ymotongpoo, I copied your comment from the discussion to a dedicated issue because this is a scoped task.
We have tooling for that for English content already, but turned it off for translations, since it requires additional language-specific configuration. So here is what we need to do:

for each tool create a configuration for Japanese that is only applied to files in content/ja
enable them locally and test those tools if they work properly
enable them in the GitHub actions workflows

The tools are:

[ ] cspell for spell checking
[ ] prettier for formatting
[ ] textlint (especially "terminology") for consistent translations

We should address them 1-by-1

@svrnm thank you for routing the topic to the issue.

cspell doesn't work well for Japanese and for this purpose.
it is said prettier 3.0.0+ works well with Japanese (ref: https://github.com/prettier/prettier/pull/11597)
textlint is the most fitting and common tool for this kind of Japanese document. (ref: an example for Japanese technical magazine https://gist.github.com/inao/f55e8232e150aee918b9)

* cspell doesn't work well for Japanese and for this purpose.

I was not aware of that, I did a quick check and indeed it only supports English so far, that's interesting. Do you have any recommendations for a spell checker that works well for Japanese?

* it is said prettier 3.0.0+ works well with Japanese (ref: [Markdown[next branch]: Do not insert spaces between Chinese/Japanese & latin letters prettier/prettier#11597](https://github.com/prettier/prettier/pull/11597))

If it works well, then let's have a PR to introduce it for Japanese. If you provide the language-specific config (if needed/where needed), @chalin or I can handle the rest

* textlint is the most fitting and common tool for this kind of Japanese document. (ref: an example for Japanese technical magazine [gist.github.com/inao/f55e8232e150aee918b9](https://gist.github.com/inao/f55e8232e150aee918b9))

That's great to hear! Again, if you can provide us with some guidance (via a PR) with the required config etc, we can take a look into integrating it into the workflows


bump golang to 1.18

Bumping golang version to 1.18
Signed-off-by: Iñigo Horcajo<EMAIL_ADDRESS>

If there is a good reason for this, let me know. This change forces all downstreams to update to go 1.18.

I think we could bump to 1.17 to fix the test?


Added Radio Buttons

I Have Added Radio Buttons

Ok I will do the necessary changes

I have Made the Radio.js component and I have removed custom css and Implemented Tailwind css Please Tell if any Design Changes are needed

Yeah Sure

I have done Styling according to the notion guide


prevent exception when app run in mobile platform

i think because this plugin made only for desktop, you can handle UnimplementedError for mobile platforms
currently we must check platform
if(defaultTargetPlatform == TargetPlatform.macOS || defaultTargetPlatform == TargetPlatform.windows || defaultTargetPlatform == TargetPlatform.linux) {
  doWhenWindowReady(() {
      final initialSize = Size(600, 450);
      appWindow.minSize = initialSize;
      appWindow.size = initialSize;
      appWindow.alignment = Alignment.center;
      appWindow.show();
    });
}

Thank you for reporting. Added to my list.

@bitsdojo please is this issue in the scope to be fixed?


New Commands

New Commands

dadjoke: /dadjoke sends a random dadjoke from the dadjoke.json file
cat: /cat uses thecatapi and fetches a cat image and sends the cat image via the bot

edit: All the files that changed except dadjoke.json, dadjoke.js and cat.js was modified by prettier

Hey Maahil,
Your pull request can't be merged because of some conflicts. Please solve them.


Drop support for ACF2016

Testbox 5.x has dropped support for ACF2016 and the tests no longer run (syntax exception).

I had a feeling you might not be happy! It's not that I'm itching to use newer features, but more that I can't support CF2016 if the tests won't run. For now I've downgraded my Testbox to 4.x but that's not a long-term solution.
ACF2016 is over 7 years old and out of all support now. Continuing to run it increases your vulnerability to security issues.
I think supporting the 3 most recent versions is reasonable (2018, 2021 and 2023).


Error installing zendesk_apps_tools

Hi! I can' install zendesk_apps_tools with gem.
zendesk_tools and zendesk_api work well but zendesk_apps_tools not.
Trying to install I get above error:

sudo gem install zendesk_apps_tools
Building native extensions. This could take a while...
ERROR:  Error installing zendesk_apps_tools:
	ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.7.0/gems/eventmachine-1.2.7/ext
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20200709-15741-1553hej.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.7.0/gems/eventmachine-1.2.7 for inspection.
Results logged to /var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/eventmachine-1.2.7/gem_make.out

I'm missing anything from ruby or gem setup?

And also another question, I'm researching to develop an app to tag automatically tickets and chat from Zendesk Chat. Is zendesk_apps_tools the best way to do this? What you recommend?

Try running the below and then installing the Zendesk app tools:
sudo apt-get install ruby-all-dev
sudo apt-get update

I am experiencing the same issue using bash and Ubuntu in Windows 10. Your suggestion @gabe-haff-io did not solve it for me. What else could I try?

Hi - I'm also facing the same issue

Try running the below and then installing the Zendesk app tools: sudo apt-get install ruby-all-dev sudo apt-get update

thx it solved


Nonconvergence caused by Generalized-mean (GeM) Pooling？

Here are some tips for debugging the nonconvergence problem:

Replace the self.p in GeneralizedMeanPooling as a constant 3. Train the model again, and see if the nonconvergence happens?
Replace the self.p in GeneralizedMeanPooling as a constant 1. Train the model again, and see if the nonconvergence happens? In this way, the GeneralizedMeanPooling degrades to a normal global average pooling operation.

Thank you for your reply.  When I use normal global average pooling, it can converge normally.  Did you compare the effects of Weighted Regularization Triplet (WRT) loss and Batch Hard triplet loss?

If it can converge normally when you use normal global average pooling, then it should also converge normally when you replace the self.p in GeneralizedMeanPooling as a constant 3. Because in this way, the GeneralizedMeanPooling is just a tradeoff between global average pooling and global max pooling.
Or you can try whether your model can converge normally with global max pooling?
Weighted Regularization Triplet (WRT) performs a little better than Batch Hard triplet loss in our experiments.

In my experiments, softmax loss + center loss + Batch Hard triplet loss is better than softmax loss+ center loss + Weighted Regularization Triplet (WRT)  loss.  Maybe my backbone is different from you.


Resource lost on some node

These two VMs do be different type.

@mzmssg , "These two VMs do be different type." I am not sure I fully understand this. Can you explain it in more details when you have time?

@fanyangCS  I check our VM list, these 2 VMs are NC6 type, while the others are NC24r. So the resource view is as expected.


Tab text updates

Name of the PR
:recycle: Current situation & Problem
Describe the current situation (if possible, with an exemplary (or real) code snippet and/or where this is used)
Please link any open issue that is addressed with this PR
:bulb: Proposed solution
Describe the solution and how this affects the project and internal structure
:gear: Release Notes
Add a summary of the feature and possible migration guides if this is a breaking change so this section can be added to the release notes.
Include code snippets that provide examples of the feature implemented if it appends or changes the public interface.
:heavy_plus_sign: Additional Information
Provide some additional information if possible
Related PRs
Reference the related PRs
Testing
Are there tests included? If yes, which situations are tested, and which corner cases are missing?
Reviewer Nudging
Where should the reviewer start? Where is a good entry point?
Code of Conduct & Contributing Guidelines
By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

[x] I agree to follow the Code of Conduct and Contributing Guidelines.

@anushehchaudry I have taken a look at your project and unfortunately the UI tests do not run locally which leads to your failures on GitHub. Please verify that they UI test pass locally before you push anything to GitHub. As noted in your README you will also need the Firebase emulator up and running to test the full system functionality.
In the process of taking a look at your UI tests I have also fixed them. Please take a look at the changes so you can apply them the next time: https://github.com/CS342/2023-GetMoovin/pull/3/commits/f4fc7a11451d9ba684c63c693b5a55565ee8fe1d
Before that I have merged the latest changes from the main branch into your branch: https://github.com/CS342/2023-GetMoovin/pull/3/commits/f957b8bf9878832b08599abd1f68ab810e3661de
I did not adjust the UI test to cover the new version of the questionnaire that you have in your application. You will need to do this on your own or in your team if you want that part of your application to be tested. You can check out how we do this in the template application here https://github.com/StanfordBDHG/CardinalKitTemplateApplication/blob/main/TemplateApplicationUITests/SchedulerAndQuestionnaireTests.swift#L34 and can adapt this to your questionnaire in your UI test: https://github.com/CS342/2023-GetMoovin/blob/anusheh/GetMoovinUITests/SchedulerAndQuestionnaireTests.swift


ACK runtime update to v0.19.0

Issue #, if available: https://github.com/aws-controllers-k8s/community/issues/1337
Description of changes:

Update ACK runtime to v0.19.0

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/test s3-kind-e2e

/lgtm


Are the four pretrained models provided only useful for BC?

Are the four pretrained models provided only useful for BC?

The pretrained models are trained using BC and provide baselines for BC, though you may also use the models for other cases like finetuning the models using online RL.


Feature: TableNode does not retain the cell width when copying and pasting a table from another spreadsheet

As stated in the title, there is an issue where the cell width is not retained when copying a table from a Google Drive spreadsheet and pasting it.
Specifically, I want to retain the width defined in the  tags within the  tag, but after extending the TableNode, the TableCellResizerPlugin no longer works properly. The method I used to extend it is as follows.
import {TableNode} from '@lexical/table';
import {
  $applyNodeReplacement,
  DOMConversionMap,
  DOMConversionOutput,
} from 'lexical';

export class ExtendedTableNode extends TableNode {
  static getType(): string {
    return 'my-table';
  }

  static clone(node: TableNode): TableNode {
    return new ExtendedTableNode(node.__key);
  }

  static importDOM(): DOMConversionMap | null {
    return {
      table: (_node: Node) => ({
        conversion: $convertTableElement,
        priority: 1,
      }),
    };
  }
}

export function $convertTableElement(
  domNode: HTMLElement,
): DOMConversionOutput {
  const tableNode = $createTableNode();
  if (domNode.hasAttribute('data-lexical-row-striping')) {
    tableNode.setRowStriping(true);
  }
  const colgroup = domNode.querySelector('colgroup');
  const colWidths: number[] = [];

  if (colgroup) {
    const cols = colgroup.querySelectorAll('col');
    cols.forEach((col) => {
      const width = col.style.width || col.width;
      if (width) {
        colWidths.push(parseInt(width, 10));
      }
    });
    tableNode.setColWidths(colWidths);
  }
  return {node: tableNode};
}

export function $createTableNode(): TableNode {
  return $applyNodeReplacement(new ExtendedTableNode());
}

I’m wondering if there is an alternative method to achieve this.

You don't show your editor node configuration but I suspect you might not be using the withKlass option which is required for cases where replaced nodes are expected to "inherit" transforms and mutation listeners from their base class.

It’s working well! I thought there was an infinite loop when I used withKlass before, but I guess I was mistaken. Thank you so much!


fix(assign-pr): Add REVIEWERS, and add them for the product when a PR opened by non-PCX owners

This adds REVIEWERS list, and add them for the product when a PR opened by non-PCX owners.
If a PR is opened by one of PCX owners, then it would still add all other PCX owners (up to 10), and would not add anyone from REVIEWERS.

Will see..

Forgot to save and regenerate index.js to remove reviewers from OWNERS: https://github.com/cloudflare/cloudflare-docs/pull/5618


user docs: Trim the language and usage of save-changes.md.

@rishig
This is pretty surface-level stuff. No big rewrites. However, it would be nice to get this one reviewed decently quickly, because it touches so many articles that I will be working on, and it would be nice to avoid merge conflicts.

Merged; thanks @Lyla-Fischer!


no readings from gamepad

Can't get any readings out of the gamepad hw prototype.

try using maybe a piece of braided copper wire for shorting contacts?

try using maybe a piece of braided copper wire for shorting contacts?

Yup seeing them

From: Michał Moskal<EMAIL_ADDRESS>Sent: Monday, January 11, 2021 12:24:10 PM
To: microsoft/jacdac-stm32x0<EMAIL_ADDRESS>Cc: Peli de Halleux<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [microsoft/jacdac-stm32x0] no readings from gamepad (#10)
try using maybe a piece of braided copper wire for shorting contacts?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fjacdac-stm32x0%2Fissues%2F10%23issuecomment-757888527&data=04|01|jhalleux%40microsoft.com|59e322f391344045e30308d8b6236b57|72f988bf86f141af91ab2d7cd011db47|1|0|637459610530805525|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ROLu0ZHdwViWwmkfbqPntnM4e%2Fk387c5j88MLqHmWww%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAA73QKPLKGUX2T3MBENLBY3SZLNVVANCNFSM4V4XK2TQ&data=04|01|jhalleux%40microsoft.com|59e322f391344045e30308d8b6236b57|72f988bf86f141af91ab2d7cd011db47|1|0|637459610530815518|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2BGjp1EaHIyWCOeZx6ygSidMJ4CjGbWkjbEbOzW0XpUc%3D&reserved=0.

Yup seeing them

From: Michał Moskal<EMAIL_ADDRESS>Sent: Monday, January 11, 2021 12:24:10 PM
To: microsoft/jacdac-stm32x0<EMAIL_ADDRESS>Cc: Peli de Halleux<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [microsoft/jacdac-stm32x0] no readings from gamepad (#10)
try using maybe a piece of braided copper wire for shorting contacts?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fjacdac-stm32x0%2Fissues%2F10%23issuecomment-757888527&data=04|01|jhalleux%40microsoft.com|59e322f391344045e30308d8b6236b57|72f988bf86f141af91ab2d7cd011db47|1|0|637459610530805525|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ROLu0ZHdwViWwmkfbqPntnM4e%2Fk387c5j88MLqHmWww%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAA73QKPLKGUX2T3MBENLBY3SZLNVVANCNFSM4V4XK2TQ&data=04|01|jhalleux%40microsoft.com|59e322f391344045e30308d8b6236b57|72f988bf86f141af91ab2d7cd011db47|1|0|637459610530815518|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2BGjp1EaHIyWCOeZx6ygSidMJ4CjGbWkjbEbOzW0XpUc%3D&reserved=0.


Bad style for old version deprecate warning

This is a Bug Report
Problem:
When I select an old version doc, e.g. v1.15, I see:

It seems that no proper css style applied, and looks odd.
Proposed Solution:
Correct the style, and make it looks fine.
Page to Update:
https://kubernetes.io/...

/kind bug
/priority backlog

After we switched to docsy theme, however, this issue still exists.
/remove-lifecycle stale

:/ I thought I merged a PR that fixed this recently, but apparently not.
/assign @celestehorgan

@sftim Is that feasible for us to fix though? I was under the impression that old docs were snapshots and thus not updated.

@celestehorgan our default policy is not to backport changes or fixes; however, it's fine to make exceptions when there is a good reason to.
(I'm fine with the decision going either way on this one).

@sftim I personally don't think we should backport changes on this one. It might be better to save that level for breaking changes only, lest we get into a scenario where we're back-porting All The Things.

The one counter I'd offer is that the deprecation warning is never rendered on the live site.

/triage accepted
but this is a very low priority item


Fix build from fork

We do not need builds from Pull Requests to be uploaded to ghcr. By removing builds from PRs we solve the problem that PRs originating from a fork cannot upload images to ghcr.
Fixes #70
Replaces #69
Fixes also some CI warnings and improves dash printout
Tested that pusihing to main still creates ghcr image at https://github.com/erikbosch/devcontainer-base-images/pkgs/container/devcontainer-base-images%2Fbase

What about if one wants to test a new base image before releasing it on main?

Then there are two ways.

You can push to "main" on the "from" repo, that will trigger a build and push. Off course this should not be used if you are a committer and uses the official velocitas repo as "from" repo
You can trigger the action manually for your branch on the "from" repo.

I have tested both of these mechanisms, see https://github.com/erikbosch/devcontainer-base-images/pkgs/container/devcontainer-base-images%2Fbase


Unable to scroll touching on the video component

Current Behavior:
Hi, Thanks for the awesome library. I am trying to use it for a project where there are multiple video feeds. I am using the community skin, what I noticed is that on a mobile view (iphone or even chrome mobile view) i am unable to scroll down touching on the video component. It toggles the transition to show/hide play button. Below is the javascript error i am getting on console.
[Intervention] Ignored attempt to cancel a touchstart event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.
passive @ media-core.js:3363
Expected Behavior:
The page should scroll and only toughing individual buttons should trigger events.
Steps To Reproduce:
Switch chrome to mobile view so that video occupies the width of the screen. Try scrolling.
Environment: Local Dev

Anything Else?
Couldn't take a proper screenshot, but this is how the video covers the screen.

Same here :(

Is this package even maintained?

Yes. Thanks for reporting the issue. I’m just working on a large release and my plate is full, I’ll tend to issues right after.

Thank You. We can wait for sure :-)

This issue is outdated now and should be resolved since our new 1.0@next release. If the issue persits after upgrading, feel free to let me know here and we can reopen. If the issue has changed then please open a new one.

Hello, I have the same poblem on iOS :/
"@vidstack/react": "^0.6.14",


how to slove indexSelectSmallIndex: block: [1,0,0], thread: [32,0,0] Assertion srcIndex < srcSelectDimSize failed when training ASILLE3

raceback (most recent call last):                                                                                | 6/1367 [00:06<23:50,  1.05s/it]
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/train.py", line 199, in
main(args, configs)
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/train.py", line 82, in main
output = model(*(batch[2:]))
File "/home/zhongjiafeng/anaconda3/envs/d2l/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/model/fastspeech2.py", line 81, in forward
) = self.variance_adaptor(
File "/home/zhongjiafeng/anaconda3/envs/d2l/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/model/modules.py", line 117, in forward
pitch_prediction, pitch_embedding = self.get_pitch_embedding(
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/model/modules.py", line 80, in get_pitch_embedding
prediction = self.pitch_predictor(x, mask)
File "/home/zhongjiafeng/anaconda3/envs/d2l/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "/home/zhongjiafeng/SS/chenqixian/TTS/Fastspeech2/model/modules.py", line 247, in forward
out = out.masked_fill(mask, 0.0)
RuntimeError: CUDA error: device-side assert triggered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
../aten/src/ATen/native/cuda/Indexing.cu:922: indexSelectSmallIndex: block: [1,0,0], thread: [32,0,0] Assertion srcIndex < srcSelectDimSize failed.
../aten/src/ATen/native/cuda/Indexing.cu:922: indexSelectSmallIndex: block: [1,0,0], thread: [33,0,0] Assertion srcIndex < srcSelectDimSize failed.

Have you reolved it?


Please remove the youtube videos from the readme

They are completely useless videos made from youtubers and would made a quant laugh.
First of all they start by applying the "super easily AI made trading system" to an already rockstar instrument (ie Bitcoin, AAPL, TSLA, whatever), and they intentionally leave the "Buy and Hold" stats out.
If they'd included it you'd see that you wouldn't need ANY system AT ALL to make insane returns with those instruments if you bought them at the beginning.. so they're cheating from the start.
Plus you cannot use Tradingview (IN SAMPLE DATA) to backtest/create a proper trading system.
Proper/robust trading systems need to be build with a "Walk Forward" approach using OUT OF SAMPLE data, carefully crafted so that it cannot peak into the future. You'd need specialized software for that.
http://www.codefortraders.com/Walk-Forward_Analysis/WFA_Introduction.htm
Could AI help here? Definitely. But not like this.

thanks for your suggestions.

can i work on this please @zhumingpassional

can't you just commit a change and then Ming can approve?
Christopher R. Dedow
On Sat, Jun 24, 2023 at 12:21 PM Basant Babu Bhandari <
@.***> wrote:

can i work on this please @zhumingpassional
https://github.com/zhumingpassional
—
Reply to this email directly, view it on GitHub
https://github.com/AI4Finance-Foundation/FinGPT/issues/33#issuecomment-1605619389,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADBQAL2RQ4AMV6IVXVF6DFDXM4HYLANCNFSM6AAAAAAZONO5SM
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@basantbhandari
pls submit a PR and I will merge it.
thanks


changed innerHTML to textContent for performance and security

Changed innerHTML to textContent to prevent any XSS
InnerHTML is slower than textContent due to it parsing HTML

This is great! Would you mind solving the conflicts so i can merge? 👍


TASK: Define compatibility with PHP 8 and Flow 8

Resolves: #4

Hi @johannessteu, can we merge this?


Dialog API options should support z-index

Clear and concise description of the problem
Doesn't seem to be possible to dictate z-index when programmatically creating a dialog.
Suggested solution
Suggest adding a new zIndex property within the options object, as a programmatic equivalent to the Modal component's z-index prop.
Alternative
No response
Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Closing as I just found a duplicate of this


Relative urls in "@page-url" annotation doesn't work

Wait for https://github.com/qa-tools/qa-tools/issues/141 to be fixed.

Should work now if using @dev-develop version.


android 12 error

anyone help

Hi @gosofttech008,
I noticed that you're encountering an issue related to the rntwilliovoice.initwithaccesstoken method and a failure to resolve com.google.firebase.iid.FirebaseInstanceId. I can see that you're using the Twilio Programmable Voice library along with Firebase dependencies.
The error you're seeing is likely due to a conflict between different versions of the Firebase SDK dependencies. The FirebaseInstanceId class has been deprecated in newer versions of Firebase, and it has been replaced with FirebaseMessaging for handling messaging and token retrieval.
To resolve this issue, I would recommend the following steps:
Make sure you're using the latest version of the Twilio Programmable Voice library. Check for any updates in the library's documentation or the GitHub repository.
Update your project's Firebase dependencies to use the following versions:
@react-native-firebase/app: ^8.4.7
@react-native-firebase/messaging: ^7.1.7
Alternatively, you can also find any other Firebase version in which FirebaseInstanceId is not deprecated and use a compatible/relevant version of the Firebase Messaging library as well.
Clean and rebuild your project to ensure all the dependencies are correctly resolved.
By following these steps, you should be able to resolve the issue related to FirebaseInstanceId and use the newer Firebase messaging APIs.
Let me know if you have any further questions or if there's anything else I can assist you with.
Best regards,
Moeez Ahmad


Applying a preset to different local graphs without saving it as a snapshot of a note linked to its local graph

I have a feature request that would make this plugin do something that Obsidian's "Bookmarks" doesn't do: to apply a preset to local graphs without saving it as a snapshot of a note linked to its local graph.
The new Bookmarks feature in Obsidian 1.2 makes it easy to save and manage graph presets. For the full-vault graph, that basically duplicates the functionality of this preset.  As I understand it, the "Graph Presets" adds a way to save snapshots of a note linked to a local graph, with the relevant graph settings, which is great.
But what I've been missing for a long time - in a forum post in January 2021! – is the ability to apply specific graph settings to an open local graph.  What currently happens is that if I save a preset that is based on a local graph and then try to apply those settings to the local graph of another note, it opens the pairing of the original note with its local graph.  I just want to apply the settings, without opening a different note.
Is that possible already?  Or is this a feature request you could take on?

Thanks so much for your swift response!  This is really going to be a game-changer for me, in combination with Bookmarks.
But I'm still struggling for how to deploy this in the following situation:

I've been working on a new note and I've added a bunch of links.
I open the local graph for that note, to start using the local graph settings to exploring related notes.
But the settings for the local graph aren't right – nothing is set (usually, for a new note), or the colors are from another setting.
What I want to do is apply the settings from one of my graph presets to the local graph of the current note.

Currently, at step 4, if I open the graph preset index, and right-click on one of my presets and select "apply preset" then the preset is saved as a preset that is bound to the current file.  But I want to leave the preset unchanged, so that I can apply it to any new situation I'm in.
Is that already possible?

Terrific!  I think that option "2" would be best, but I would title the toggle "Apply without binding to current file".  That would be clearest, I think.
How does this work for "update preset"?  Does this automatically change the binding?
All options would be great, of course!

Wow!!!  That gives me exactly want I've been needing – for two and a half years!  With Keyboard Shortcuts, I can map onto a single keystroke "open local graph" and "apply graph preset - default local graph".   What is also great about this is that it becomes easy to apply specific filtered local graphs to a note, revealing for example all notes with specific years in the filename or that contain particular names.

Just posted a comment about this to the Obsidian forum:  https://forum.obsidian.md/t/adjustable-persistent-settings-from-local-graph/11195/38

I’ve posted to Mastodon, the Obsidian forum, and the Obsidian Discord.
I'm really excited about the potential of the new Obsidian Graph Presets plugin, for applying saved settings to a LOCAL graph:
https://forum.obsidian.md/t/using-graph-preset-plugin-to-apply-graph-settings-to-local-graphs/58880 https://forum.obsidian.md/t/using-graph-preset-plugin-to-apply-graph-settings-to-local-graphs/58880?u=autonomygaps
Hope this gets you some traffic!
Joel

On Apr 30, 2023, at 13:25, Y @.***> wrote:
I'm glad this feature is helpful to you.
If you have any more suggestions, please don't hesitate.
—
Reply to this email directly, view it on GitHub https://github.com/ycnmhd/obsidian-graph-presets/issues/13#issuecomment-1529001098, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALOK3VJ4B62UHKUK7AETMPLXDZDZFANCNFSM6AAAAAAXQWCLTM.
You are receiving this because you authored the thread.


set historyLevel FULL for default test configuration

I just forgot this and now ran into historyLevel mismatch erros when running xml based and java based configs in the same suite.
This was an online edit, hopefully it compiles ...

Hi Jan,
Than you for the contribution.
I check if I can merge it before the release.
Best regards,
Yana

Hi Jan,
I merged the change (cbcc161).
Thanks once again,
Yana


merges of larval abdominal sensory neurons

'desn neuron' and 'abdominal 8 desn neuron':
In the original reference - FBrf0045361, 'desn' is only found in A8
The innervated sense organs, DMSOp and DMSOh, are also only found in A8 according to FBrf0089570
Similarly vesM and its sensillum are only found in segment A9 (not sure why terms currently say A8), so 'vesM neuron' and 'abdominal 8 vesM neuron' are redundant

According to FBrf0183734, dmd1 and dda1 are synonyms for ddaE - so these (FBbt:00111650 and FBbt:00002418) should also be merged


"cy.realClick " is not a function

Hello, since last week we began recievning issues in our test runs regarding cypress real events on FireFox. We use realClick in some places, and our tests began failing on them.
This is most of the stack flow when failure occurs:
at __webpack_modules__</setRunnable/runnable.fn (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:138412:43)
at callFn (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:157028:21)
at __webpack_modules__</Runnable.prototype.run (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:157015:13)
at __webpack_modules__</create/onRunnableRun (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:162939:30)
at finallyHandler (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:4072:23)
at tryCatcher (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:1807:23)
at __webpack_modules__</module.exports/Promise.prototype._settlePromiseFromHandler (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:1519:31)
at __webpack_modules__</module.exports/Promise.prototype._settlePromise (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:1576:18)
at __webpack_modules__</module.exports/Promise.prototype._settlePromise0 (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:1621:10)
at __webpack_modules__</module.exports/Promise.prototype._settlePromises (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:1701:18)
at _drainQueueStep (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:2407:12)
at _drainQueue (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:2400:24)
at __webpack_modules__</Async.prototype._drainQueues (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:2416:16)
at __webpack_modules__</Async/this.drainQueues (https://st1.universe.cdp.gigya.com/__cypress/runner/cypress_runner.js:2286:14)

Env version:
Windows 11
Cypress Version:  13.15.0
Firefox browser Version: 128
Cypress Real Events: 1.13.0

Please read the readme, firefox is not supported.  You should not use real events in firefox


Document Tooling in Website

We have tools for csdl generation, url editing, rsdl editing, etc., but someone just visiting the website wouldn't find any of these tools.

#358 documents the api-designer and api-explorer.  Still need to document other tools.


SMTPSenderRefused: (501, '5.1.7 Invalid address', 'ElastAlert')

I'm trying to get the email alert to work. Testing the rule produces query results. Running the rule fails with SMTP failure. According to the error logs, it seems to be using 'ElastAlert' as the sender, which of course is not a valid user in AD or in correct format. This value is not in config.yaml or myruletest.yaml. If I change the alert to user Slack, it works as expected.
pip v10.0.1
Ubuntu 16.04.4 LTS
Here's the error:
ERROR:root:Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/elastalert-0.1.32-py2.7.egg/elastalert/elastalert.py", line 1289, in alert
    return self.send_alert(matches, rule, alert_time=alert_time, retried=retried)
  File "/usr/local/lib/python2.7/dist-packages/elastalert-0.1.32-py2.7.egg/elastalert/elastalert.py", line 1378, in send_alert
    alert.alert(matches)
  File "/usr/local/lib/python2.7/dist-packages/elastalert-0.1.32-py2.7.egg/elastalert/alerts.py", line 474, in alert
    self.smtp.sendmail(self.from_addr, to_addr, email_msg.as_string())
  File "/usr/lib/python2.7/smtplib.py", line 736, in sendmail
    raise SMTPSenderRefused(code, resp, from_addr)
SMTPSenderRefused: (501, '5.1.7 Invalid address', 'ElastAlert')

ERROR:root:Uncaught exception running rule SEVERE Frequency Rule: (501, '5.1.7 Invalid address', 'ElastAlert')

Snippet from myruletest.yaml
alert:
- "email"
email_from<EMAIL_ADDRESS>
# (required, email specific)
# a list of email addresses to send alerts to
email<EMAIL_ADDRESS>
#
# Email Format
#
alert_subject: "ELK Alert: \"{0}\" found issue at {1}"
alert_subject_args:
- rule_name
- "@timestamp"

#
# SMTP Configuration
#
smtp_host: "MAIL_SERVER"

Any help/ideas would be greatly appreciated.

I finally figured out the issue. I was using "email_from" from the example documentation in https://github.com/Yelp/elastalert/blob/master/docs/source/ruletypes.rst.
After I switched it to "from_addr", it worked as mentioned in https://elastalert.readthedocs.io/en/latest/ruletypes.html#email.
Is the former deprecated?

Ah, so sorry about that. I just added that example last week and it's totally the wrong field. I wasn't really thinking.

https://github.com/Yelp/elastalert/commit/ef38e37f0cf22a6f441ecae6d9d4d7acdb7ab7e0


Wrong symbols rendered for 3 codes

I have found an issue that causes a few codes to be renderered in a wrong way.
I have a Land Unit where I set the Sector 1 Modifier.
The last correct modifier is Route, Reconnaissance, and Clearance (Symbol Set Code: 10, Code: 79)
The following modifers are rendered wrong.
I can confirm this here (https://www.spatialillusions.com/milsymbol/docs/milsymbol-APP6d.html#heading-15) as well as in my application.
I expect the shortcut:

CPN for COMMAND POST NODE not TR  (Symbol Set Code: 10, Code: 80)
JNN for Joint Network Node not CPN       (Symbol Set Code: 10, Code: 81)
RTNS for Retransmission Site not JNN       (Symbol Set Code: 10, Code: 81)

Bets regards
André Zeiler

This should now be fixed in the current codebase and will be included in the upcoming 3.0 release.


Bluetooth: Host: Always show Central Addr Res Chrc

According to the Core Specification (v6.0 vol 3 part C 12.4), if the characteristic is not present it is to assume that the Central Address Resolution is not supported. That is what Zephyr was doing.
Change that to always include the characteristic, this way the API is more explicit. Also, it is worth adding that GAP/GAT/BV-18-C is expecting the characteristic to always be present.

@theob-pro can you elaborate? If we do not have privacy enabled, do we really support address resolution?

@theob-pro can you elaborate? If we do not have privacy enabled, do we really support address resolution?

No we don't indeed. If BT_PRIVACY is not set, the value will be BT_GATT_CENTRAL_ADDR_RES_NOT_SUPP.

@theob-pro can you elaborate? If we do not have privacy enabled, do we really support address resolution?

No we don't indeed. If BT_PRIVACY is not set, the value will be BT_GATT_CENTRAL_ADDR_RES_NOT_SUPP.

Then why is this change needed?
You wrote

if the characteristic is not present it is to assume that the Central Address Resolution is not supported. That is what Zephyr was doing.

So if CONFIG_BT_PRIVACY=n and the characteristic is not present, that looks like the correct behavior?

The main reason is because a PTS test is expecting that characteristic to always be present.

Sounds like a bug in PTS if the core spec allows it to be absent.

Also, as I stated in my commit message, it's best to not assume things and having less if def IMO.

Sure, but also just consider that this is adding higher memory usage for what appears to be no reason (for the simplest devices) :P

I will create Errata requests for the PTS tests with a new test specification. We will implement my version. If the request is denied, we will do the change in this PR.


Moves the grid/list toggle into the nav bar

And some pretty good refactors, too (I hope!).

Executed 2383 tests, with 0 failures (0 unexpected) in 264.847 (265.825) seconds


[SPARK-5338][MESOS] Add cluster mode support for Mesos

This patch adds the support for cluster mode to run on Mesos.
It introduces a new Mesos framework dedicated to launch new apps/drivers, and can be called with the spark-submit script and specifying --master flag to the cluster mode REST interface instead of Mesos master.
Example:
./bin/spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --master mesos://<IP_ADDRESS>:8077 --executor-memory 1G --total-executor-cores 100 examples/target/spark-examples_2.10-1.3.0-SNAPSHOT.jar 30
Part of this patch is also to abstract the StandaloneRestServer so it can have different implementations of the REST endpoints.
Features of the cluster mode in this PR:

Supports supervise mode where scheduler will keep trying to reschedule exited job.
Adds a new UI for the cluster mode scheduler to see all the running jobs, finished jobs, and supervise jobs waiting to be retried
Supports state persistence to ZK, so when the cluster scheduler fails over it can pick up all the queued and running jobs

@andrewor14 Let me know what you think!

Test build #29030 has started for   PR 5144 at commit 2b5e23c.

This patch merges cleanly.

Test build #29030 has finished for   PR 5144 at commit 2b5e23c.

This patch fails Scala style tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29030/
Test FAILed.

Test build #29038 has started for   PR 5144 at commit df925b7.

This patch merges cleanly.

Test build #29038 has finished for   PR 5144 at commit df925b7.

This patch fails Scala style tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29038/
Test FAILed.

Test build #29040 has started for   PR 5144 at commit 5ceab8e.

This patch merges cleanly.

Test build #29040 has finished for   PR 5144 at commit 5ceab8e.

This patch fails Scala style tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29040/
Test FAILed.

Test build #29041 has started for   PR 5144 at commit 90f95ed.

This patch merges cleanly.

Test build #29041 has finished for   PR 5144 at commit 90f95ed.

This patch fails Spark unit tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29041/
Test FAILed.

Test build #29123 has started for   PR 5144 at commit 2f66466.

This patch merges cleanly.

Test build #29123 has finished for   PR 5144 at commit 2f66466.

This patch fails Spark unit tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29123/
Test FAILed.

Test build #29155 has started for   PR 5144 at commit 9ab138f.

This patch merges cleanly.

Test build #29155 has finished for   PR 5144 at commit 9ab138f.

This patch passes all tests.

This patch merges cleanly.

This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29155/
Test PASSed.

Hi @tnachen thanks a lot for working on this. Mesos is the last mode that does not support cluster mode and it would wonderful to see it reach parity on this regard.
Overall I think the high level approach is reasonable, but there are a few concerns I had about the code organization and style. In particular, there is a lot of code to be reused between the Mesos and standalone submission gateways, and you have refactored this nicely by making RestServer an abstract class. However, there are many instances where the Mesos code just reaches into the standalone packages to grab specific values or classes from there. A cleaner way to refactor this is to abstract all common fields and classes that need to be reused in common packages (even o.a.s.deploy. is probably fine).
The other thing is that this patch creates many small classes, most of which I believe are unnecessary. Having many related small classes imposes readability burden and makes the code much harder to follow. For instance, we probably shouldn't follow YARN's favorite pattern of making an abstract parent class that only has one implementation (e.g. ContainerManagerImpl) for MesosClusterScheduler. I pointed out other examples inline (e.g. MesosDriverDescription). IIUC the motivation behind some of these classes is to follow closely the standalone mode behavior, but this is actually not a requirement. In the worst case, this could lead to maintenance burden in the future if we tie the implementation of the two modes together excessively.
Lastly, there are a lot of code style deviations from the rest of the code base. Good references include the Spark style guide or the Databricks style guide, which was written around writing code in Spark.

Test build #29344 has started for   PR 5144 at commit be5599f.

This patch merges cleanly.

Test build #29344 has finished for   PR 5144 at commit be5599f.

This patch fails Spark unit tests.

This patch merges cleanly.

This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29344/
Test FAILed.

Test build #29511 has started for   PR 5144 at commit 79fa2e7.

Test build #29511 has finished for   PR 5144 at commit 79fa2e7.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29511/
Test FAILed.

Test build #29528 has started for   PR 5144 at commit 8f64995.

Test build #29528 has finished for   PR 5144 at commit 8f64995.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29528/
Test FAILed.

Test build #29623 has started for   PR 5144 at commit 327fc47.

Test build #29623 has finished for   PR 5144 at commit 327fc47.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29623/
Test FAILed.

Test build #29657 has started for   PR 5144 at commit debc15c.

Test build #29657 has finished for   PR 5144 at commit debc15c.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29657/
Test FAILed.

Test build #29659 has started for   PR 5144 at commit 257b9af.

Test build #29659 has finished for   PR 5144 at commit 257b9af.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29659/
Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29699/
Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29700/
Test FAILed.

I still want to run this on a local cluster before I say LGTM, but the code looks good so far!

Test build #29733 has started for   PR 5144 at commit 258d816.

Test build #29733 has finished for   PR 5144 at commit 258d816.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29733/
Test PASSed.

Test build #29762 has started for   PR 5144 at commit 99a056c.

Test build #29762 has finished for   PR 5144 at commit 99a056c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/29762/
Test PASSed.

@tnachen Thanks for following up on the reviews. This is much better than before. However, I still find the code in MesosClusterScheduler very difficult to follow for a few reasons. I apologize in advance for the "slightly" long response, but I think these are important points that will improve the quality of the code significantly.

First, the naming is confusing. It's strange to see a MesosClusterSchedulerDriver extend a MesosClusterScheduler (why is a driver a scheduler?). What's worse is that MesosClusterSchedulerDriver contains a driver field that it inherits from MesosSchedulerUtils, so we end up with a driver that has a driver that can submit drivers!
My suggestion is to rename MesosClusterScheduler to MesosSubmissionClient, and MesosClusterSchedulerDriver to MesosSubmissionClientImpl. Since we are following the YARN pattern in code, we might as well also follow it in naming. (Not my favorite pattern, but there are benefits here that you pointed out previously.) In all of these cases we will be explicit in the java docs that it's intended for Mesos cluster mode only. Then maybe MesosSchedulerUtils's driver field should be renamed to mesosDriver, or maybe even mesosClient to indicate that it's the interface to talk to the Mesos master with.
Second, the class structure is still confusing. There are still many classes that seem somewhat related but not really. In particular, in MesosClusterSchedulerDriver there are three different data structures that contain "drivers", one is a DriverQueue, the other is a LaunchedDrivers, which is really a map, and then there's finishedDrivers, which is an actual list. This means someone who wants to understand how this code works needs to first understand all of these smaller classes, which is cumbersome even with an IDE, and virtually impossible without one. These classes aren't even for reducing duplicate logic. In LaunchedDriver for instance, the only methods with some logic in them (states, remove, set) are only used in one place.
If you look at o.a.s.deploy.master.Master, we keep track of waitingDrivers, completedDrivers, and drivers (which are running drivers), and these are all ArrayBuffer[DriverInfo]. I'm not suggesting that we should follow exactly what is done there, but an effort towards simplifying the class structure further will be fruitful here.
Third, the code still lacks documentation. The latest changes already added a lot of comments, which is great. However, certain unintuitive parts of the code are still largely uncommented. An example is MesosClusterSchedulerDriver#resourceOffers. This method contains two inner methods, neither of which is has a javadoc, and one takes in a closure that returns a 2-tuple where the second field is an Option. When is the closure invoked? When is the Option defined vs empty? Why is the superviseRetryList and RetryState involved even if supervise mode is not enabled by default? ... Personally I frequently find simpler ways to express the same logic in the process of writing comments.

About naming, it is confusing how it is setup, but I'll still avoid to call it MesosSubmissionClient as that sounds like SparkSubmit where it's just a submission client to submit Spark apps. MesosClusterScheduler is really a scheduler that knows what Offers to use and how to place the queued drivers in the available resources. So I think in the end I'll just drop the trait MesosClusterScheduler and make MesosClusterSchedulerDriver -> MesosClusterScheduler so there is no confusion, and let the users using the class ignore all the MesosScheduler callbacks defined.
About the class structure, I'm not sure I entirely agree that having seperate classes like LaunchedDrivers and DriversQueue makes it harder to understand. Having these classes IMO makes the MesosClusterScheduler class itself much easier to understand since you understand the interfaces and the code is more simpler since it doesn't deal with the specifics of how the queue or how tracking launched drivers is implemented. The biggest motivation behind these helper classes is to actually make the persistence of state change in these transparent to the caller, so any modification can automatically make calls to the underlying persistence engine. I'm still happy to follow your suggestion and do what Master did to put it all local in the class.
I'll add more docs as you mentioned as well.

@andrewor14 Please take a look again, I believe I've addressed all the comments. Thanks for reviewing this!

Test build #30086 has started for   PR 5144 at commit f53e35d.

Test build #30086 has finished for   PR 5144 at commit f53e35d.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30086/
Test FAILed.

Test build #30088 has started for   PR 5144 at commit 43b66a3.

Test build #30088 has finished for   PR 5144 at commit 43b66a3.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30088/
Test PASSed.

Hi @tnachen thanks for cleaning this up. I found the latest set of changes much easier to follow. Although I left a bunch of comments many of them are quite minor, and this just means that there aren't many large outstanding issues left and I have started to pay more attention to the details. I think we should be able to finally merge this very soon. Thanks for patiently and promptly addressing the reviews so far.
Have you had a chance to test this on a real cluster? I imagine the retry and the HA failover logic will be harder to test, but it would be good to verify that they actually work. Also, could you post a screen shot of what the UI looks like?

Another question I just thought of is: is this applicable to fine-grained mode? I would assume so because we're just launching spark-submit again from within the cluster, and we can reuse the Spark scheduler backend logic from before.

Does this new mode support Python spark applications? My understanding is that they use spark-submit under the hood so maybe it would?
Also, the same questions applies to the Python/Scala spark shells. I'm not too familiar with the other spark cluster modes (e.g YARN) and whether they have support for shells.

@andrewor14 Yes we've been running it internally for about 2 weeks now, also have other people from different companies trying it out and so far it's been running ok. I've tried out failed over and I can verify drivers kept running and queued drivers are still in tact.
@tarnfeld It doesn't support python apps yet (nor does standalone master I believe). It will be next in the feature list once this lands. Feel free to contribute!

Test build #30470 has started for   PR 5144 at commit 61e5dba.

Test build #30470 has finished for   PR 5144 at commit 61e5dba.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30470/
Test FAILed.

Test build #30472 has started for   PR 5144 at commit 47d561d.

Test build #30472 has finished for   PR 5144 at commit 47d561d.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30472/
Test FAILed.

Test build #30475 has started for   PR 5144 at commit 84e38b8.

Test build #30475 has finished for   PR 5144 at commit 84e38b8.

This patch fails to build.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30475/
Test FAILed.

Test build #30531 has started for   PR 5144 at commit 13b03e2.

Test build #30531 has finished for   PR 5144 at commit 13b03e2.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30531/
Test FAILed.

Test build #30546 has started for   PR 5144 at commit 85f2315.

Test build #30547 has started for   PR 5144 at commit 463d7a9.

Test build #30546 has finished for   PR 5144 at commit 85f2315.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30546/
Test FAILed.

latest test failed seems to a transient test problem again.

Test build #30551 has started for   PR 5144 at commit 38e6c4b.

Test build #30547 has finished for   PR 5144 at commit 463d7a9.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30547/
Test PASSed.

Test build #30551 has finished for   PR 5144 at commit 38e6c4b.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30551/
Test PASSed.

@andrewor14 btw this is ready for you to take a look again :) thx!

Sure, I will look at this today or tomorrow. By the way it needs a rebase already.

Test build #30718 has started for   PR 5144 at commit 069e946.

Test build #30718 has finished for   PR 5144 at commit 069e946.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch does not change any dependencies.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/30718/
Test FAILed.

Another unrelated test failure

Test build #31043 has started for   PR 5144 at commit 069e946.

retest this please

Merged build triggered.

Merged build started.

Test build #31163 has started for   PR 5144 at commit 069e946.

Hey @tnachen just wanted to let you know I just merged this into master after fixing the minor typos myself. Congratulations! Thanks for patiently re-iterating so many times on the code reviews.

Test build #31163 has finished for   PR 5144 at commit 069e946.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.
This patch adds the following new dependencies:

RoaringBitmap-0.4.5.jar
activation-1.1.jar
akka-actor_2.10-2.3.4-spark.jar
akka-remote_2.10-2.3.4-spark.jar
akka-slf4j_2.10-2.3.4-spark.jar
aopalliance-1.0.jar
arpack_combined_all-0.1.jar
avro-1.7.7.jar
breeze-macros_2.10-0.11.2.jar
breeze_2.10-0.11.2.jar
chill-java-0.5.0.jar
chill_2.10-0.5.0.jar
commons-beanutils-1.7.0.jar
commons-beanutils-core-1.8.0.jar
commons-cli-1.2.jar
commons-codec-1.10.jar
commons-collections-3.2.1.jar
commons-compress-1.4.1.jar
commons-configuration-1.6.jar
commons-digester-1.8.jar
commons-httpclient-3.1.jar
commons-io-2.1.jar
commons-lang-2.5.jar
commons-lang3-3.3.2.jar
commons-math-2.1.jar
commons-math3-3.4.1.jar
commons-net-2.2.jar
compress-lzf-1.0.0.jar
config-1.2.1.jar
core-1.1.2.jar
curator-client-2.4.0.jar
curator-framework-2.4.0.jar
curator-recipes-2.4.0.jar
gmbal-api-only-3.0.0-b023.jar
grizzly-framework-2.1.2.jar
grizzly-http-2.1.2.jar
grizzly-http-server-2.1.2.jar
grizzly-http-servlet-2.1.2.jar
grizzly-rcm-2.1.2.jar
groovy-all-2.3.7.jar
guava-14.0.1.jar
guice-3.0.jar
hadoop-annotations-2.2.0.jar
hadoop-auth-2.2.0.jar
hadoop-client-2.2.0.jar
hadoop-common-2.2.0.jar
hadoop-hdfs-2.2.0.jar
hadoop-mapreduce-client-app-2.2.0.jar
hadoop-mapreduce-client-common-2.2.0.jar
hadoop-mapreduce-client-core-2.2.0.jar
hadoop-mapreduce-client-jobclient-2.2.0.jar
hadoop-mapreduce-client-shuffle-2.2.0.jar
hadoop-yarn-api-2.2.0.jar
hadoop-yarn-client-2.2.0.jar
hadoop-yarn-common-2.2.0.jar
hadoop-yarn-server-common-2.2.0.jar
ivy-2.4.0.jar
jackson-annotations-2.4.0.jar
jackson-core-2.4.4.jar
jackson-core-asl-1.8.8.jar
jackson-databind-2.4.4.jar
jackson-jaxrs-1.8.8.jar
jackson-mapper-asl-1.8.8.jar
jackson-module-scala_2.10-2.4.4.jar
jackson-xc-1.8.8.jar
jansi-1.4.jar
javax.inject-1.jar
javax.servlet-3.0.0.v201112011016.jar
javax.servlet-3.1.jar
javax.servlet-api-3.0.1.jar
jaxb-api-2.2.2.jar
jaxb-impl-2.2.3-1.jar
jcl-over-slf4j-1.7.10.jar
jersey-client-1.9.jar
jersey-core-1.9.jar
jersey-grizzly2-1.9.jar
jersey-guice-1.9.jar
jersey-json-1.9.jar
jersey-server-1.9.jar
jersey-test-framework-core-1.9.jar
jersey-test-framework-grizzly2-1.9.jar
jets3t-0.7.1.jar
jettison-1.1.jar
jetty-util-6.1.26.jar
jline-0.9.94.jar
jline-2.10.4.jar
jodd-core-3.6.3.jar
json4s-ast_2.10-3.2.10.jar
json4s-core_2.10-3.2.10.jar
json4s-jackson_2.10-3.2.10.jar
jsr305-1.3.9.jar
jtransforms-2.4.0.jar
jul-to-slf4j-1.7.10.jar
kryo-2.21.jar
log4j-1.2.17.jar
lz4-1.2.0.jar
management-api-3.0.0-b012.jar
mesos-0.21.0-shaded-protobuf.jar
metrics-core-3.1.0.jar
metrics-graphite-3.1.0.jar
metrics-json-3.1.0.jar
metrics-jvm-3.1.0.jar
minlog-1.2.jar
netty-3.8.0.Final.jar
netty-all-4.0.23.Final.jar
objenesis-1.2.jar
opencsv-2.3.jar
oro-2.0.8.jar
paranamer-2.6.jar
parquet-column-1.6.0rc3.jar
parquet-common-1.6.0rc3.jar
parquet-encoding-1.6.0rc3.jar
parquet-format-2.2.0-rc1.jar
parquet-generator-1.6.0rc3.jar
parquet-hadoop-1.6.0rc3.jar
parquet-jackson-1.6.0rc3.jar
protobuf-java-2.4.1.jar
protobuf-java-2.5.0-spark.jar
py4j-<IP_ADDRESS>.jar
pyrolite-2.0.1.jar
quasiquotes_2.10-2.0.1.jar
reflectasm-1.07-shaded.jar
scala-compiler-2.10.4.jar
scala-library-2.10.4.jar
scala-reflect-2.10.4.jar
scalap-2.10.4.jar
scalatest_2.10-2.2.1.jar
slf4j-api-1.7.10.jar
slf4j-log4j12-1.7.10.jar
snappy-java-<IP_ADDRESS>.jar
spark-bagel_2.10-1.4.0-SNAPSHOT.jar
spark-catalyst_2.10-1.4.0-SNAPSHOT.jar
spark-core_2.10-1.4.0-SNAPSHOT.jar
spark-graphx_2.10-1.4.0-SNAPSHOT.jar
spark-launcher_2.10-1.4.0-SNAPSHOT.jar
spark-mllib_2.10-1.4.0-SNAPSHOT.jar
spark-network-common_2.10-1.4.0-SNAPSHOT.jar
spark-network-shuffle_2.10-1.4.0-SNAPSHOT.jar
spark-repl_2.10-1.4.0-SNAPSHOT.jar
spark-sql_2.10-1.4.0-SNAPSHOT.jar
spark-streaming_2.10-1.4.0-SNAPSHOT.jar
spire-macros_2.10-0.7.4.jar
spire_2.10-0.7.4.jar
stax-api-1.0.1.jar
stream-2.7.0.jar
tachyon-0.6.4.jar
tachyon-client-0.6.4.jar
uncommons-maths-1.2.2a.jar
unused-1.0.0.jar
xmlenc-0.52.jar
xz-1.0.jar
zookeeper-3.4.5.jar

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/31163/
Test FAILed.

Where has this feature disappeared?
(all files under core/src/main/scala/org/apache/spark/deploy/mesos do not exist)


While validating a ConceptDeclaration with no properties, the validation fails ungracefully if the properties field of the AST is null

Bug Report 🐛

While adding AST models to a ModelManager, if a declaration of the model is a ConceptDeclaration with no property (an empty concept declaration, or a concept declaration that extends another concept,) if the provided AST has that properties field set as null, then the ModelManager fails ungracefully with the message:
Cannot read properties of null (reading 'forEach')

Example of a problematic AST
{
  "$class"<EMAIL_ADDRESS>  "decorators": [],
  "namespace"<EMAIL_ADDRESS>  "imports": [],
  "declarations": [
    {
      "$class"<EMAIL_ADDRESS>      "name": "SingleConcept",
      "isAbstract": false,
      "properties": null
    }
  ]
}

because while processing the class declaration, the code assumes the properties will always be an array:
https://github.com/accordproject/concerto/blob/c5f5e2e1476e260803893cb9b2faf7814e684a3e/packages/concerto-core/lib/introspect/classdeclaration.js#L85
Expected Behavior
Even though this is a weird edge case, we hit it in DocuSign. ASTs are externally fed data to ModelManagers so they should either be defensive about it or raise a better error.

Current Behavior
JS interpreter raises an error that is not very easy to understand.

Possible Solution
I would go with defensive solution.

Steps to Reproduce

Create a json file with above contents
Run the concerto print on that file

Context (Environment)

Desktop

OS:  macOS
Browser: NodeJS 18.18.2
Version: 3.14.0

Detailed Description

Possible Implementation

In the workgroup we agreed that we should validate the metamodel before loading it to the model manager rather than making model manager defensive.

I'm re-openning this issue, because the problem surfaces in the validation stage. Or rather, just before the validation stage while the ModelManager is rebuilding the CTO file from AST. And I see that many of the IllegalModelException errors are thrown at this stage.
All the validate methods on types are protected, so we need to use the ModelManager.validateModelFile method. Which expects a ModelFile. However, the process stage is at the constructor level, which expects a valid properties field. So in order to validate that the properties field is valid, we need to provide a valid properties field.


support phpstan 1.4.x

see https://github.com/staabm/phpstan-dba/pull/113

lets see https://github.com/phpstan/phpstan/discussions/6391


Little fix of an unordered list

I noticed that this one wasn't marked up properly, so this is a wee PR to fix it.

Thanks all!