wled stopped working

Hi,
wled was working fine , but stopped today after I did a "pip install --upgrade photobooth-app" as mentioned in the update docs ,
I´ve also tried swichting between and dev branch, both  are not triggering the LED in my setup or generating any output relating to wledservice.py (which was the case before , see log below).
could you please give me a hint how to troubleshoot this ? log level is already set to debug. permissions to /dev/ttyUSB0 seems to be fine and I think dmesg output looks also good
[ 5826.390447] usb 1-1.2: new full-speed USB device number 4 using xhci_hcd
[ 5826.524151] usb 1-1.2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[ 5826.524186] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5826.524203] usb 1-1.2: Product: CP2102 USB to UART Bridge Controller
[ 5826.524218] usb 1-1.2: Manufacturer: Silicon Labs
[ 5826.524231] usb 1-1.2: SerialNumber: 0001
[ 5826.536923] cp210x 1-1.2:1.0: cp210x converter detected
[ 5826.540573] usb 1-1.2: cp210x converter now attached to ttyUSB0
might be unrelated, but the admin center -> status tab looks also like it´s not working anymore:
Maintenance
CPU: % / % / %
No. active threads:
Free disk: 0.0GB
Memory: 0.0GB total 0.0GB free 0.0GB available
Cma: 0.0MB total / 0.0MB free
thanks a lot for your great software and support !
->journalctl --user --unit photobooth-app.service|grep wled
Jul 30 11:06:38 photobooth python[800]: 2023-07-30 11:06:38,463 [    INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:06:38 photobooth python[800]: 2023-07-30 11:06:38,768 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:06:43 photobooth python[800]: 2023-07-30 11:06:43,956 [    INFO] WledService preset_thrill triggered (wledservice.py:125)
Jul 30 11:06:46 photobooth python[800]: 2023-07-30 11:06:46,952 [    INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:06:47 photobooth python[800]: 2023-07-30 11:06:47,256 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:06:58 photobooth python[800]: 2023-07-30 11:06:58,829 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:13:45 photobooth python[800]: 2023-07-30 11:13:45,637 [    INFO] close port to WLED module (wledservice.py:113)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,742 [    INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,758 [    INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,760 [    INFO] register events for WLED (wledservice.py:96)
Jul 30 11:14:14 photobooth python[794]: 2023-07-30 11:14:14,761 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Jul 30 11:19:34 photobooth python[794]: 2023-07-30 11:19:34,086 [    INFO] WledService preset_thrill triggered (wledservice.py:125)
Jul 30 11:19:37 photobooth python[794]: 2023-07-30 11:19:37,169 [    INFO] WledService preset_shoot triggered (wledservice.py:130)
Jul 30 11:19:37 photobooth python[794]: 2023-07-30 11:19:37,575 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,737 [    INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,756 [    INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,757 [    INFO] register events for WLED (wledservice.py:96)
Aug 01 13:36:05 photobooth python[888]: 2023-08-01 13:36:05,759 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 01 13:37:27 photobooth python[888]: 2023-08-01 13:37:27,539 [    INFO] close port to WLED module (wledservice.py:113)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,321 [    INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,336 [    INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,337 [    INFO] register events for WLED (wledservice.py:96)
Aug 01 13:37:52 photobooth python[796]: 2023-08-01 13:37:52,338 [    INFO] WledService preset_standby triggered (wledservice.py:120)
Aug 07 21:44:39 photobooth python[796]: 2023-08-07 21:44:39,639 [    INFO] close port to WLED module (wledservice.py:113)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,979 [    INFO] WledService enabled, trying to setup and connect, self._serial_port='/dev/ttyUSB0' (wledservice.py:36)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,995 [    INFO] WLED version response: b'WLED 2306210\r\n' (wledservice.py:80)
Aug 07 21:45:06 photobooth python[797]: 2023-08-07 21:45:06,997 [    INFO] register events for WLED (wledservice.py:96)

Sorry, initialization of some services did not work well any more.
It's fixed now and PyPi packages are updated in a few minutes.

Ah, since last update some config settings for backends moved it's location - you might need to reconfigure your backend resolution and so on again after the update yesterday.

thanks a lot for the fast reply , I will update & try gain


Add support for user queries

Thanks for this awesome plugin!
This adds support for querying users by their lat/lng data. The public interface is exactly the same, but because WP_User_Query internals don't use a specific clause-based hook like posts_clauses, I defined a new hook in activate and replaced each clause one by one. The new implementation lives in Birgir\Geo\GeoQueryUserHaversine.

Hmmm. Having trouble replicating that failure locally in my VVV setup.
vagrant@vvv (master *) .../conifer/wp/wp-content/plugins/geo-query $ phpunit
Installing...
Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
Not running ajax tests. To execute these, use --group ajax.
Not running ms-files tests. To execute these, use --group ms-files.
Not running external-http tests. To execute these, use --group external-http.
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.

.......                                                             7 / 7 (100%)

Time: 1.74 seconds, Memory: 24.00MB

OK (7 tests, 17 assertions)
vagrant@vvv (master *) .../conifer/wp/wp-content/plugins/geo-query $ WP_MULTISITE=1 phpunit
Installing...
Installing network...
Running as multisite...
Not running ajax tests. To execute these, use --group ajax.
Not running ms-files tests. To execute these, use --group ms-files.
Not running external-http tests. To execute these, use --group external-http.
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.

.......                                                             7 / 7 (100%)

Time: 1.95 seconds, Memory: 24.00MB

OK (7 tests, 17 assertions)
vagrant@vvv (master *) .../conifer/wp/wp-content/plugins/geo-query $ php -v
PHP 7.0.30-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: May  2 2018 13:00:43) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.30-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
vagrant@vvv (master *) .../conifer/wp/wp-content/plugins/geo-query $ wp core version
4.9.7

Any ideas?

Hey @acobster that's awesome, thank you for your contribution.
I'm out of town in July and early August and can't test it at the moment, but I look forward to test when I get back.
Thanks again.

The changes went through the integration tests successfully on my install too.
The Travis checks did not install it via Composer so I added the new class to the fallback for those how are not using Composer. I thought that would solve it, but still some Travis issues.
So I merged it and I will look into the Travis issue in another ticket.
Thank you @acobster

Awesome, thanks!


Generated cluster id for kraft mode is sometimes invalid

When running a container in kraft mode, I sometimes (approximately once in 100 runs) see the container fail with status 1 and the following error in the logs:
2024-07-04T15:24:09.5338779Z usage: kafka-storage format [-h] --config CONFIG --cluster-id CLUSTER_ID
2024-07-04T15:24:09.5339351Z                      [--add-scram ADD_SCRAM] [--ignore-formatted]
2024-07-04T15:24:09.5339892Z                      [--release-version RELEASE_VERSION]
2024-07-04T15:24:09.5340442Z kafka-storage: error: argument --cluster-id/-t: expected one argument
2024-07-04T15:24:09.5341500Z [2024-07-04 15:19:11,430] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
2024-07-04T15:24:09.5343120Z [2024-07-04 15:19:11,654] INFO Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation (org.apache.zookeeper.common.X509Util)
2024-07-04T15:24:09.5344263Z [2024-07-04 15:19:11,722] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
2024-07-04T15:24:09.5344897Z java.lang.RuntimeException: No readable meta.properties files found.
2024-07-04T15:24:09.5345714Z 	at org.apache.kafka.metadata.properties.MetaPropertiesEnsemble.verify(MetaPropertiesEnsemble.java:493)
2024-07-04T15:24:09.5346567Z 	at kafka.server.KafkaRaftServer$.initializeLogDirs(KafkaRaftServer.scala:152)
2024-07-04T15:24:09.5347197Z 	at kafka.server.KafkaRaftServer.<init>(KafkaRaftServer.scala:60)
2024-07-04T15:24:09.5347787Z 	at kafka.Kafka$.buildServer(Kafka.scala:82)
2024-07-04T15:24:09.5348162Z 	at kafka.Kafka$.main(Kafka.scala:90)
2024-07-04T15:24:09.5348486Z 	at kafka.Kafka.main(Kafka.scala)
2024-07-04T15:24:09.5348701Z

My investigation showed, that this may happen when generated cluster id[1] looks like this: -Mk3vxQVTc-iWEuxW2zREA.  It looks like custom uuid generation code sometimes create invalid values.
I suggest the following:

Add set -euv to the generated bash script(/testcontainers_start.sh), so this code can fail early and users will more info dfor debugging
Fix the custom uuid generated code or replace its usage with a call to the existing kafka code ("bin/kafka-storage.sh random-uuid")

[1] https://github.com/strimzi/test-container/blob/main/src/main/java/io/strimzi/test/container/StrimziKafkaContainer.java#L280

@see-quick Could this be the same as here: https://github.com/strimzi/strimzi-kafka-operator/pull/9301?

@see-quick Could this be the same as here: strimzi/strimzi-kafka-operator#9301?

Yeah, it seems like that. Let me fix it in the code.

I have created a PR [1]
[1] -  https://github.com/strimzi/test-container/pull/73/files

@see-quick is there a planned date for 0.107.0 release?

@scholzj do you have any plans for 0.107 release? We are considering if we should wait for the release or disable the test for now.

@see-quick Can we do a new release to fix this?

@scholzj do you have any plans for 0.107 release? We are considering if we should wait for the release or disable the test for now.

Hi, I am gonna do an RC today.

@see-quick thank you, our tests works with pre-released 0.107.0-rc1. When can we expect release?

@gtroitsk He is off for the rest of this week. So the GA will likely happen next week.

Hi @gtroitsk, yesterday I have released the 0.107.0 version of strimzi test container, which contains a fix.


Fastnlight: Watch lost[\W_]*+cryptocurrency

Fastnlight requests the watch of the watch_keyword lost[\W_]*+cryptocurrency. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

lost[\W_]*+cryptocurrency has been seen in 73 true positives, 0 false positives, and 0 NAAs.

Approved by tripleee in Charcoal HQ


digital-copyright

Hi MontaEllis!👋, I added this optional feature to digitally sign you source-code and track it on a blockchain node should you ever be audited or experience a software supply-chain attack. Simply compare the byte encrypted signature on your .git binary with the hash written to your immutable blockchain node. If they ever differ you should escalate. See the MontaEllis-digital-copyright for complete instructions on accessing your hash.. Feel free to contact me directly to review any questions before accepting. ~~Best<EMAIL_ADDRESS>

Hey MontaEllis,
Any feedback on how I can communicate this better in the future?
For reference here's:
another repo currently using this feature live: https://github.com/ashutosh1919/react-awesome-shapes
background/explanation: https://www.haiphenai.com/#h.b1bdxh3odph5


CI for iOS

There should be CI workflow for iOS for pull requests and release.
#1722

Thank you for your suggestion @axdra. I agree we should have it. Any interest in helping with a PR?

I've began looking into it but just at the moment I don't have the time to do it. But for sure I'm interested in helping.

https://github.com/dooboolab/react-native-iap/pull/1752


Rewrite focus concept

This completely changes the keyboard focus concept. Prior to this, the implementation of keyboard focus was based on maintaining a list of links to focused windows by the input device. This creates a number of limitations when managing focus within composite objects such as a tiling window manager, which has no way of maintaining the focus state of windows within itself, causing that focus state to be lost when the manager itself is refocused.
The introduction of the focus tree concept solves the problems associated with maintaining the focus state. Focus tree branches extend across OS process boundaries, i.e. process boundaries are completely transparent to the focus tree. A focus tree is built for each user in the environment. When a user disconnects from the environment, their current focus tree becomes the default tree, and a newly connected user receives this focus automatically. In other words, the user retains the focus state when reconnecting.
The introduction of this concept adds a number of still unknown problems and this requires further testing.
I welcome any feedback and help in testing this new keyboard focus concept (see dev/sdn branch or compiled binaries at https://github.com/netxs-group/vtm/releases/tag/v0.9.9b).
Closes #350

Ctrl+PgUp/PgDn are leaked to the builtin terminal.

Unintuitive/unexpected behavior when copying selected text in the built-in terminal without focus.

Focus highlighting not working correctly when creating a new window in a reconnected session.

[ ] Bug: The window loses focus when it is dragged out of the tiling manager.

[ ] Bug: Viewport coordinates saved when user disconnects conflict with configuration setting <config/client/viewport/coor/>.

[ ] Bug: The Disconnect and Shutdown buttons don't always fit into the taskbar.

[ ] Bug: The view region title is right-aligned when focus is assigned.


MongoDB driver errors on console

We have been getting new errors since updating the mongodb drivers to 3.6.4
Top-level use of w, wtimeout, j, and fsync is deprecated. Use writeConcern instead.

Related reports: https://developer.mongodb.com/community/forums/t/top-level-use-of-w-wtimeout-j-and-fsync-is-deprecated-use-writeconcern-instead/15501

Context for anyone investigating this:
We use the mongodb driver configs in two indirect places:
1. In the loopback configs
https://github.com/freeCodeCamp/freeCodeCamp/blob/827bcfaaa2c71f12bc52a4c660e7213c2c426caf/api-server/server/datasources.production.js#L4-L11
The above config while primarily in the production context for Loopback is also derived into the local context:
https://github.com/freeCodeCamp/freeCodeCamp/blob/827bcfaaa2c71f12bc52a4c660e7213c2c426caf/api-server/server/datasources.development.js#L2
Need to update our configs to remove these warnings.

Im getting the same error/warning conecting loopback 4 with mongo atlas

Im getting the same error/warning conecting loopback 4 with mongo atlas

While this may be a genric that you are facing, please note we are reserving this thread for discussions related to this repo's issue and upgrade path only.

I am getting the same error using latest docker image of mongodb
Loopback 4
package.json dependencies
"dependencies": {     "@loopback/authentication": "^7.0.5",     "@loopback/authentication-jwt": "^0.7.5",     "@loopback/authorization": "^0.7.5",     "@loopback/boot": "^3.1.2",     "@loopback/core": "^2.14.0",     "@loopback/repository": "^3.4.0",     "@loopback/rest": "^9.1.2",     "@loopback/rest-explorer": "^3.0.6",     "@loopback/service-proxy": "^3.0.6",     "axios": "^0.21.1",     "dotenv": "^8.2.0",     "dotenv-extended": "^2.9.0",     "jsonwebtoken": "^8.5.1",     "loopback-connector-mongodb": "^5.5.0",     "tslib": "^2.0.0"   },
Datasource Config
const config = {   name: 'mongodb',   connector: 'mongodb',   host: '<IP_ADDRESS>',   port: 27017,   user: 'user',   password: 'password',   database: 'db_name',   useNewUrlParser: true };


Compare and Test Differences th, thead, tr

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr

http://stackoverflow.com/questions/5395228/html-tables-thead-vs-th


failover2 plugin only looks at wrapperPlugins and ignores pluginFactories

Describe the bug
thank you for failover2 plugin, i think it will address https://github.com/aws/aws-advanced-jdbc-wrapper/issues/1026
I use pluginFactories to specify plugins, not wrapperPlugins property string.
When I tried to upgrade to 2.4.0, I came across an issue at https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/wrapper/src/main/java/software/amazon/jdbc/dialect/AuroraPgDialect.java?secureweb=Teams#L133
Because of https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/wrapper/src/main/java/software/amazon/jdbc/ConnectionPluginChainBuilder.java?secureweb=Teams#L145 , where preference is given to pluginFactories , it's possible to have a workaround and specify
targetDataSourceProperties.setProperty(PropertyDefinition.PLUGINS.name, "failover2");
and get passed this issue.
Expected Behavior
code in AuroraPgDialect should take pluginFactories into account
What plugins are used? What other connection properties were set?
failover2
Current Behavior
wrapperPlugins need to contain "failover2" for AuroraPgDialect to use MonitoringRdsHostListProvider
Reproduction Steps
use failover2 plugin with pluginFactories only
Possible Solution
No response
Additional Information/Context
No response
The AWS Advanced JDBC Driver version used
2.4.0
JDK version used
21
Operating System and version
unix

Hi @ivankhoosty ,
Could you please verify if the latest changes address the issue for you? You can find the latest change in the snapshot build. More information on how to use the snapshot build is available here.
Thank you!

Hi @sergiyvamz , unfortunately it's prob easier to rob a bank than to onboard a snapshot - about 4 weeks process etc :(
I can confirm that 2.4.0 is working great with failover2 plugin and  the two workarounds (above, and clusterId), and i am going to close https://github.com/aws/aws-advanced-jdbc-wrapper/issues/1026


Cholesky decomposition was not successful. The input might not be valid.

I am using my own gym env to test PILCO as a baseline, while this problem always occurs after about 2-3 iterations.
  File "/home/lab/Github/PILCO/examples/gym_tracking_tendon.py", line 196, in <module>
    pilco.optimize_policy()
  File "/home/lab/Github/PILCO/pilco/models/pilco.py", line 96, in optimize_policy
    try:
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/gpflow-2.0.0-py3.7.egg/gpflow/optimizers/scipy.py", line 73, in minimize
    func, initial_params, jac=True, method=method, **scipy_kwargs
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/scipy/optimize/_minimize.py", line 610, in minimize
    callback=callback, **options)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/scipy/optimize/lbfgsb.py", line 345, in _minimize_lbfgsb
    f, g = func_and_grad(x)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/scipy/optimize/lbfgsb.py", line 295, in func_and_grad
    f = fun(x, *args)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/scipy/optimize/optimize.py", line 327, in function_wrapper
    return function(*(wrapper_args + args))
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/scipy/optimize/optimize.py", line 65, in __call__
    fg = self.fun(x, *args)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/gpflow-2.0.0-py3.7.egg/gpflow/optimizers/scipy.py", line 95, in _eval
    loss, grad = _tf_eval(tf.convert_to_tensor(x))
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py", line 568, in __call__
    result = self._call(*args, **kwds)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/def_function.py", line 638, in _call
    return self._concrete_stateful_fn._filtered_call(canon_args, canon_kwds)  # pylint: disable=protected-access
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py", line 1611, in _filtered_call
    self.captured_inputs)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py", line 1692, in _call_flat
    ctx, args, cancellation_manager=cancellation_manager))
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/function.py", line 545, in call
    ctx=ctx)
  File "/home/lab/anaconda3/envs/pilco/lib/python3.7/site-packages/tensorflow_core/python/eager/execute.py", line 67, in quick_execute
    six.raise_from(core._status_to_exception(e.code, message), None)
  File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError:  Cholesky decomposition was not successful. The input might not be valid.
	 [[{{node while/body/_1/Cholesky}}]] [Op:__inference__tf_eval_1032837]

The main function is just mimic the inv_double_pendulum:
if __name__ == '__main__':
    env = TendonGymEnv()
    e = np.array([[1]])   # Max control input. Set too low can lead to Cholesky failures.

    X, Y, _, _ = rollout(env=env, pilco=None, random=True, timesteps=40, render=False)
    for i in range(1, 5):
        X_, Y_, _, _ = rollout(env=env, pilco=None, random=True, timesteps=40, render=False)
        X = np.vstack((X, X_))
        Y = np.vstack((Y, Y_))

    state_dim = Y.shape[1]
    control_dim = X.shape[1] - state_dim
    # controller = RbfController(state_dim=state_dim, control_dim=control_dim, num_basis_functions=10)
    controller = LinearController(state_dim=state_dim, control_dim=control_dim)

    pilco = PILCO((X, Y), controller=controller, horizon=40)
    pilco.controller.max_action = e

    # # for numerical stability
    # for model in pilco.mgpr.models:
    #     model.likelihood.variance.assign(0.001)
    #     set_trainable(model.likelihood.variance, False)
    #     model.likelihood.fixed=True

    return_lst = []
    for rollouts in range(100):
        print("**** ITERATION no.", rollouts, " ****")
        try:
            pilco.optimize_models()
        except:
            pdb.set_trace()

        pilco.optimize_policy()
        # import pdb

        # pdb.set_trace()
        X_new, Y_new, _, sum_return = rollout(env=env, pilco=pilco, timesteps=300, render=False)
        return_lst.append(sum_return)
        # Update dataset
        X = np.vstack((X, X_new))
        Y = np.vstack((Y, Y_new))
        pilco.mgpr.set_data((X, Y))

And I debug the input X and Y carefully, there is no NaN in the array. This is bothering me for a long time, so I wonder if you can give me a favor, I will appreciate that very much.

Cholesky decomposition can fail when the input matrices have a bad condition number. See similar issues on GPflow.

Thank you for your response! Could you give me some advice about how to avoid this situation when using my own environment? The examples you gave are all ran successfully, but I really can't find out the difference with my own env.


enableAjaxValidation submit activeform directly before clicking the submit button ...

I have used activeform and one of the field which I need unique against the database value for which I have kept enableAjaxValidation true but all the fields are getting submit with ajax and there are some field which value suppose to be change before I change it the form gets submit as all field has no error...
How do I suppose to tackle such issue ....

Please use forums for questions. GitHub is for bug reports.

I faced the same problem. Try this solution:
    $('form[data-ajax-submit]').on('submit', function(event) {
        var form = $(this);
        if (event.eventPhase === 2) { // This phase is when the validation is passed
            $.ajax({ // actually the ajax request
                url: form.attr('action'),
                data: form.serialize(),
                type: form.attr('method')
            });
        }
        event.preventDefault(); // Prevents default submit behaviour
    });

Thanks SilverFire  but it is not serving my purpose and Its a kind of bug only... hence I have kept this into issues .... how does it submit directly where I have not clicked on submit there is direct action performed which suppose to handle by the user requirement.

Can you show your action definition in controller and view code?

below is the actrion code
public function actionSignupform()
{
$counsellor= new Counsellor();
$model= new SignForm();
$model->load(Yii::$app->request->post());
    $model->validate();
    if($model->hasErrors())
   {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ActiveForm::validate($model);
   }
    else
  {

        $counsellor->load(Yii::$app->request->post() );
        $counsellor->caption = Yii::$app->request->post()['SignForm']['caption'];
        $counsellor->experties= Yii::$app->request->post()['SignForm']['experties'];
        $counsellor->qualifications= Yii::$app->request->post()['SignForm']['qualifications'];
        $counsellor->registration_number= Yii::$app->request->post()['SignForm']['registration_number'];
        $counsellor->achievements_awards= Yii::$app->request->post()['SignForm']['achievements_awards'];
        $counsellor->association= Yii::$app->request->post()['SignForm']['association'];
        $counsellor->applications= Yii::$app->request->post()['SignForm']['applications'];
        $counsellor->language= Yii::$app->request->post()['SignForm']['language'];
        $counsellor->contributeToWebsiteContent= Yii::$app->request->post()['SignForm']['contributeToWebsiteContent'];
        $counsellor->additionalInfo= Yii::$app->request->post()['SignForm']['additionalInfo'];
        $counsellor->counsellingInvolment= Yii::$app->request->post()['SignForm']['counsellingInvolment'];

        $counsellor->save(false);

         return $this->goHome();

   }
}

View code is as given below
 'counsellor_form',
    'action'=>Url::to(['/counsellor/profile/signupform']),
    'method'=>'post',
    'enableClientValidation'=>true,
   // 'enableAjaxValidation'=>false,
     'options' => [
        'enctype' => 'multipart/form-data',
       // 'onSubmit'=> 'return false'
        ],
])
                       ?>

                    <?= $form->field($model,'caption')->textInput(['placeholder'=>'Add caption e.g. Counsellor, psychologist etc.'])->label(false) ?>

                        Name
                        <?= $form->field($model,'name')->textInput(['placeholder'=>'Enter your name'])->label(false)?>

Correspondence email
field($model,'email',['enableAjaxValidation' => true,])->textInput(['placeholder'=>'Enter your email address'])->label(false); ?>

Upload
Supported Format: jpg,png,jpeg,gif,pdf,doc,docx

 'btn btn-primary btn-lg margin-top-40']) ;?>

Ouh. It's really hard to read. Could you please wrap your code with Markdown code tag.

I n above form I have some active form field and there is upload file button which will be uploading file with normal ajax way... so as I am completing the form and before upload the file form gets directly submit.

below is the action code
public function actionSignupform()
{
$counsellor= new Counsellor();
$model= new SignForm();
$model->load(Yii::$app->request->post());

    $model->validate();
    if($model->hasErrors())
   {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ActiveForm::validate($model);
   }
    else
  {

        $counsellor->load(Yii::$app->request->post() );
        $counsellor->caption = Yii::$app->request->post()['SignForm']['caption'];
        $counsellor->experties= Yii::$app->request->post()['SignForm']['experties'];
        $counsellor->qualifications= Yii::$app->request->post()['SignForm']['qualifications'];
        $counsellor->registration_number= Yii::$app->request->post()['SignForm']'registration_number'];
        $counsellor->achievements_awards= Yii::$app->request->post()['SignForm']['achievements_awards'];
        $counsellor->association= Yii::$app->request->post()['SignForm']['association'];
        $counsellor->applications= Yii::$app->request->post()['SignForm']['applications'];
        $counsellor->language= Yii::$app->request->post()['SignForm']['language'];
        $counsellor->contributeToWebsiteContent= Yii::$app->request->post()['SignForm']['contributeToWebsiteContent'];
        $counsellor->additionalInfo= Yii::$app->request->post()['SignForm']['additionalInfo'];
        $counsellor->counsellingInvolment= Yii::$app->request->post()['SignForm']['counsellingInvolment'];

        $counsellor->save(false);

         return $this->goHome();

   }
}

below is the view code
  * Minimum dimension 200 Pixels under 2 MB size
              <?php
                       $form =ActiveForm::begin([
    'id' => 'counsellor_form',
    'action'=>Url::to(['/counsellor/profile/signupform']),
    'method'=>'post',
    'enableClientValidation'=>true,
   // 'enableAjaxValidation'=>false,
     'options' => [
        'enctype' => 'multipart/form-data',
       // 'onSubmit'=> 'return false'
        ],
])
                       ?>

                        <?= $form->field($model,'caption')->textInput(['placeholder'=>'Add caption e.g. Counsellor, psychologist etc.'])->label(false) ?>

                            Name
                            <?= $form->field($model,'name')->textInput(['placeholder'=>'Enter your name'])->label(false)?>

  <button id="upload" class="btn btn-primary ghost btn-lg">Upload </button>

Supported Format: jpg,png,jpeg,gif,pdf,doc,docx

                        <?= Html::submitButton('Submit now!', ['class'=> 'btn btn-primary btn-lg margin-top-40']) ;?>

You have incorrect action. Usually we use HTTP POST request to submit and HTTP AJAX POST to validate. In your case, you use ajax post request for both, so you are not determining what's going on in controller action. You have to separate validate and create actions
Uncomment this:
'enableAjaxValidation'=>false,

and add this
'validationUrl'          => Url::toRoute(['validate-form']),

Make your actions look like this:
    public function actionCreate()
    {
        $model = new Model();
        $model->load(Yii::$app->request->post());

        if ($model->save()) {
            return $this->goHome();
        }
    }

    public function actionValidateForm() {
        Yii::$app->response->format = Response::FORMAT_JSON;

        $model = new Model();
        $model->load(Yii::$app->request->post());
        return ActiveForm::validate($model);
    }

And your code with
$counsellor->caption = ...

is very weird.

I know its weird but I need to submit different post data into different database table hence I did it in that way ... do u have any better suggestion for that.

Does this example work?

No ... Its project

I'm talking about my example of code with separated validator and crate action

yeah ... actully I was doing validation in post_action and checking for errors so the form used to get submit directly .. so as you said I seperated the validation action and post action so it worked... only get submit on clicking on submit.


AuthorizationHeaderMalformed

Error: Unable to put object (S3::putObject(): [AuthorizationHeaderMalformed] The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-central-1').

Hi @PietsHost .....

Are u using the v0.9.4.x generation build or v0.9.5.x build (we try to do fixes for both gens)?
And can you walk me through how you generated that error message?  I will make it a priority to fix.

Thanks
Kimberly.

Hi again @PietsHost
If you are using the v0.9.4.x release don't forget to set your Bucket Region  (Performance > CDN > Configuration) since by default it is set to "us-east-1"  (aka US East (N. Virginia)).  In your case your bucket should be set to EU (Frankfurt) (which is the eu-central-1) -- see image below.

I'm sorry but there is no such drop down menu...

Ahh i see the problem.  Sorry about that.  It seems i forgot to put the missing field for "CloudFront" users.  The field only appears when you are using  "Amazon Simple Storage Service (S3)" as the CDN (under General Settings > CDN > CDN Type) but because CloudFront also uses S3 i forgot to add the region selector box to it too.  It's a simple fix.  I will do that today and provide you the direct file(s) you need to update on your site.
Once again, my apologies for my oversight.
Cheers
Kimberly

@PietsHost,
Ahh i see the problem.  Sorry about that.  It seems i forgot to put the missing field for "CloudFront" users.  The field only appears when you are using  "Amazon Simple Storage Service (S3)" as the CDN (under General Settings > CDN > CDN Type) but because CloudFront also uses S3 i forgot to add the region selector box to it too.  It's a simple fix.  I will do that today and provide you the direct file(s) you need to update on your site.
Once again, my apologies for my oversight.
If time is critical and you need a quick update right now just let me know and i can give you a step-by-step to make a quick modify to a file that will default your s3 bucket to eu-central-1 and then later today i will provide you with the official update.
Cheers
Kimberly

Thank you very much for this information.
I'll wait for the "official fix" ;-)

Hi again @PietsHost . Fixed it.  For your convenience, here are the updated files you need to replace on your end which will fix your problem (see below).  I haven't put this in the latest release yet.  Once you've updated your files then just go over to Performance > CDN > Configuration and change your Bucket region from US East (N. Virginia) to EU (Frankfurt).
inc/options/cdn/cf.php
lib/S3.php
lib/W3/Cdn/S3.php
lib/W3/Cdn/S3/Cf.php
lib/W3/ConfigKeys.php
lib/W3/Plugin/CdnCommon.php
pub/js/options.js
Please let me know how it goes.
Cheers
Kimberly

I uplaoded all the files you provided.
Now i get the following error: "Error: Empty bucket region"

It sounds like the new options.js file isn't being loaded (your browser is prolly still using a cached version of your old one).  Try this:
Open options.js from your browser: http://<your-domain.com>/wp-content/plugins/w3-total-cache-fixed/pub/js/options.js?ver=<IP_ADDRESS>
And search for the following section. The key part of interest shown is the line: config[bucket_location]': jQuery('#cdn_cf_bucket_location').val().  In the file that line should actually appear twice (one in this section below and another time in a different section).
If it does then attempt the "Test" again:
 case 'cf':
    jQuery.extend(params, {
        engine: 'cf',
        'config[key]': jQuery('#cdn_cf_key').val(),
        'config[secret]': jQuery('#cdn_cf_secret').val(),
        'config[bucket]': jQuery('#cdn_cf_bucket').val(),
        'config[bucket_location]': jQuery('#cdn_cf_bucket_location').val(),
        'config[id]': jQuery('#cdn_cf_id').val()
    });

Thanks for the info
Kimberly

Hi @PietsHost ...
It sounds like the new options.js file isn't being loaded (your browser is prolly still using a cached version of your old one).  Try this:
Open options.js from your browser: http://<your-domain.com>/wp-content/plugins/w3-total-cache-fixed/pub/js/options.js .. I, of course, am assuming you aren't caching/minifying your admin pages and this options.js file is being loaded directly when u visit the w3tc pages.
And search for the following section. The key part of interest shown is the line: config[bucket_location]': jQuery('#cdn_cf_bucket_location').val().  In the file that line should actually appear twice (one in this section below and another time in a different section).
If it does then attempt the "Test" again:
 case 'cf':
    jQuery.extend(params, {
        engine: 'cf',
        'config[key]': jQuery('#cdn_cf_key').val(),
        'config[secret]': jQuery('#cdn_cf_secret').val(),
        'config[bucket]': jQuery('#cdn_cf_bucket').val(),
        'config[bucket_location]': jQuery('#cdn_cf_bucket_location').val(),
        'config[id]': jQuery('#cdn_cf_id').val()
    });

Thanks for the info
Kimberly


Provide fix for ToastStack not using Message.id

ToastStack is currently ignoring :id field of Message struct.
It generates random ids and assigns them to new toasts, while it should be allowing user to pass custom id and replace it with generate_id/0 if empty.

What is the use case for this?


Adding Model to the code.

Hey, @imgeekabhi I have added a model to the code can you review it?

Great Work @sahilsimform


change Host label to Node label and change host api to node api

https://github.com/rancher/longhorn/issues/96

LGTM


next: downgrade svelte

We can reupgrade once this is released: https://github.com/sveltejs/svelte/pull/12016

@huntabyte
Fixed through https://github.com/sveltejs/svelte/pull/12047?

Not sure yet @shyakadavis, once they release the next version I will check!


update psycopg to v3.1.12

closes #949

coverage: 87.732%. remained the same when pulling b4e1610f1a0a69fd666a67f861c98c0699b21aab on psycopg3 into 81e5132553f89eeb32bd037c59b707ff8abb352f on main.

blocked by django-tenants/django-tenants#959

this is merged and released in 3.6 of django-tenants


Feature request to sync navigation between calling page and iframe

If a user is clicking on links within the iframe everything works perfectly until they click the browser back button which may redirect away from the calling page with the iframe when they intended to redirect within the iframe.
I'm looking into ways to sync the calling page and the iframe.
It could possibly work by sending a message to the calling page and updating the hash.
Example:
Calling page: http://domain.com contains iframe with src: http://otherdomain.com
When I click on page2 within the iframe I could update the calling page with #iframepath=/page2
Then when you click the back button it could read the #iframepath and set the iframe src to http://otherdomain.com/page2
Before I reinvent the wheel, does this feature already exist?

Not currently but I think it would be easy enough to do, using readyCallback and sendMessage in the iFrame. Along with initCallback and messageCallback on the parent page.
You'll also need to use the hashChange event on the parent page.
Alternatively it could be a nice feature if you want to build it into the codebase.
Either way I'll be interested to see what you come up with.

I've added an example on how to do this in #442.


⚠ Spryr has degraded performance

In c2a6b48, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 26221 ms

Resolved: Spryr performance has improved in 7e8574c after 7 minutes.


Yarn may regenerate whole lockfile

When using --only prod yarn install step may still affect dev deps.
One approach is to use --production, but it doesn't have an alternative for dev deps.
So maybe it would make sense to discard --only support and instead rely on --production as it is supported by both yarn install and npm audit fix. Fixing audit only for dev dependencies looks questionable.

On the second thought I'm not sure how yarn install --production affects yarn.lock, needs testing

We could implement not just a filter, but a flag mapper.

But how to deal with --deps=dev → yarn ?.

Just ignoring it for yarn install will be inconsistent, but yarn doesn't have the option.
Removing --only option entirely and supporting only --production so the results are consistent.
Ignoring the issue entirely and accepting that yarn install will in the end update whatever it wants according to semantic versions disregarding --only option.

The 2nd seems like the optimal, tho I may not be aware of good reasons to fix audit only for dev deps.

Another argument towards 3rd is that even if we use yarn install --production it may still introduce new changes (according to semver) to the lock file compared to npm audit fix --production.
Because npm audit fix --production will change only ones that are required by audit, but yarn install --production just installs packages according to semver. (Btw why don't we use frozen lockfile?)

Ok, I've read through SO post, and am actually just confused why we do yarn install at the end.

Accepted: --frozen-lockfile should be added.

There could be an issue if package.json and imported yarn.lock become incompatible (e.g. if --force is used) then yarn install --frozen-lockfile may throw an error. If so we'd have to get new data from imported lock file and try to update top-level deps in package.json and all monorepo workspaces according to the new lockfile

--force is always a tradeoff

But it's a tradeoff in terms of possibly introducing braking changes with updates, not in maybe breaking the audit fix process, right?

Do you suggest to perform a rollback for failed case (revert yarn.lock & trigger yarn install)?

Rollback wouldn't fix audit anyway, we need to monkey-patch all package.jsons after npm audit fix according to changes to top-level dependencies. Otherwise yarn install will overwrite changes, and yarn install --frozen-lockfile will fail.
Here's example monorepo structure:
// test-yarn-audit-fix/package.json
{
  "name": "test-yarn-audit-fix",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "dependencies": {
    "lodash": "^3.0.0"
  }
}

// test-yarn-audit-fix/packages/foo/package.json
{
  "name": "foo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@hapi/hapi": "^17.9.0"
  }
}

yarn audit
yarn-audit-fix --force
yarn audit same output as on first step

In cases where the Yarn resolution mechanism can’t satisfy the existing dependency tree identically, alerts will be made so that you may manually review the changes.

It is in regards to importing from package-lock.json, I don't think it has anything to do with package.json as it does not describe dependency tree, but only top-level dependencies. Unless I got it wrong.

I'm close to despair.
Perhaps @gianpaj, @imsnif Perhaps could suggest a better solution?

@qwelias
Ok, let's try monkey-patch. We can go through all the packages and extend root level package.json with their deps.

It seems we have to apply npm audit fix for each package, and merge them after together.
packages/foo/package.json
{
  "name": "foo",
  "dependencies": {
    "dep": "1.0.0"
  }
}

packages/bar/package.json
{
  "name": "bar",
  "dependencies": {
    "dep": "2.1.0"
  }
}

packages/baz/package.json
{
  "name": "baz",
  "dependencies": {
    "dep": "3.0.3"
  }
}

I'll update here after will try a few ideas

I think we cannot use synp as it is because it ignores workspaces which leads to various issues.
(It builds nmtree only based on root package)
Proper way of doing things would be to convert things manually or contribute to synp to fix this.

We should also make it obvious and explicit in README that yarn-audit-fix is not usable for monorepos right now

https://github.com/imsnif/synp/issues/44

Does lerna bootstrap resolve all monorepo dependencies? I thought yarn.lock contains all the hashes, right?

yarn.lock does, but synp also traverses node_modules folder.
IDK how lerna bootstrap works tho

It seems that packages/*/node_modules are just symlinks to root node_modules. Thus it may contain all packages for npm audit

Well it didn't. It actually may be an issue with nmtree package, but the case is specific to yarn, so maybe ppl at synp know how to approach it

@qwelias,
I've added some tweaks for synp and repacked yarn-audit-fix with this PR inners.
Here's the new beta for testing: 2.0.0-beta.5

It seems to be working: 2.0.0-rc.1


[FEAT] image scaling on mobile

ISSUE
I have many flashcards that include images. When I create them on a desktop computer, I set appropriate width using the bar |.
Example: ![[Pasted image<PHONE_NUMBER>2713.png|350]].
When I later review the flashcards on a smartphone, those images typically turn out to be too wide requiring horizontal scrolling. This makes reviewing on a smartphone inconvenient.

PROPOSED SOLUTION
When flashcards are reviewed on a smartphone, the bar that sets image width should be ignored so that image width is fit to the width of the screen.
Example: Image  ![[Pasted image<PHONE_NUMBER>2713.png|350]] would be displayed as  ![[Pasted image<PHONE_NUMBER>2713.png]] (removing "|350").

Hi @dengrish thanks for the suggestion.
Would there be cases where this would not be wanted? Do you think it would need to be an option for users?
Or maybe conditional, e.g. only where the specified width is greater than a configurable constant?
Cheers
Ronny

Yes. I think there should be an option:

Show images using widths as specified (number after |).
Ignore the specified widths to scale images to the width of the screen.

Same issue here - please fix that.
I think there are many more users who are annoyed with that than users who want that full width.


Add battery level for all accessories with low Status

Zipato interface give us the real percentage of battery level. Would be great if the plugin do the same additionally to the Lower Status.

Implemented in 1.6.0


Bearer Token is not passing to the Header

Is there an existing issue for this?

[x] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Insomnia Info

Version: Insomnia 2021.5.3
Release date: 9/13/2021
OS: Windows_NT x64 10.0.19042
Electron: 11.2.3
Node: 12.18.3
V8: <IP_ADDRESS>-electron.0
Architecture: x64

Last Known Working Insomnia version
not known
Expected Behavior
a kvp named "Authorization" : "Bearer {token}" should get added in the Headers (like Postman)
Actual Behavior
As seen in Timeline tab, the "authorization: Bearer" is null and there is no Authorization information has been added in the Headers
Reproduction Steps

Login to an Authenticated API endpoint which provides Bearer Token
Get the bearer Token
Request protected resource that requires Bearer Token
Select Authentication type Bearer Token
Paste the token and send
Check the log in Timeline tab
Header tab is empty

Additional Information
none

Hi @Samad-Shaikh just wanting to confirm, are you seeing the token in the request at all? In my testing the token does get sent but just that there isn't  a new entry in the "Header" section that includes the token that was added
Below is my testing on
Version: Insomnia 2021.5.3
Release date: 14/09/2021
OS: Darwin x64 20.6.0
Electron: 11.2.3
Node: 12.18.3
V8: <IP_ADDRESS>-electron.0
Architecture: x64
node-libcurl: libcurl/7.73.0 OpenSSL/1.1.1k zlib/1.2.11 brotli/1.0.9 zstd/1.4.9 libidn2/2.1.1 libssh2/1.9.0 nghttp2/1.42.0

If Bearer is not enabled, request has no authorization header

If Bearer is enabled, request has authorization header

If Bearer is enabled, request has authorization header, but there is not added entry in the "Header" section

Expected Behavior
a kvp named "Authorization" : "Bearer {token}" should get added in the Headers (like Postman)

So strictly look at the "Expected Behaviour", I feel that that sounds more like a feature request that requires a design decision to be made by the creators if that should be done

I can understand how seeing all headers in the "Header" section could be useful
But then it is also duplicating information and could lead to complications of which has priority (I guess a simple solution is that any changes made elsewhere could update any headers that would match the value but there could be edge cases such as multiple entries in the headers, how do deal with enabled/disabled entries)

Hello!
Thanks for thoroughly repodrucing and testing this issue. I also see the configuration setup is MacOS.
I have tested again on Win setup, in addition, I have created an environment variable for the Access Token instead of pasting the value in the Token field. But as seen in the below image, the Bearer value is null.

If I set the header manually, it works.


[Broken links] I deleted one of the broken FWlinks

All of the FWlinks are broken. Suggestion is to link to the Azure Maps landing page.

Docs Build status updates of commit 913aa69:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs-ref-autogen/azure-maps-rest/atlas.service.MobilityURL.yml
:warning:Warning

Details

docs-ref-autogen/azure-maps-rest/atlas.service.MobilityURL.yml

Line 276, Column 17: [Warning: xref-not-found] Cross reference not found: 'GeoJSON.Position'.
Line 349, Column 37: [Warning: xref-not-found] Cross reference not found: 'GeoJSON.Position'.
Line 618, Column 26: [Warning: xref-not-found] Cross reference not found: 'GeoJSON.Position'.
Line 624, Column 26: [Warning: xref-not-found] Cross reference not found: 'GeoJSON.Position'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Global effort to fix broken links
@dend
The Content & Learning team is fixing broken links on docs.microsoft.com for the rest of H2. This effort will eliminate potential accessibility, security, and usability issues. This PR includes only link fixes and does not change other content. I’d very much appreciate your timely review and feedback on the link changes I’ve suggested. Thanks!

#please-close


OnEnding should make spans readonly, except within the processor.

The OnEnding spec mentions:
https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#onending

The SDK MUST guarantee that the span can no longer be modified by any other thread before invoking OnEnding of the first SpanProcessor

The current OnEnding implementation doesn't prevent the span from being modified in another thread, concurrently with the processor's action.

cc @pantuza

Two ways this can be done:
Java does it by storing the ID of the thread that runs OnEnding, and prevents any other thread from doing so.
https://github.com/open-telemetry/opentelemetry-java/pull/6367/files#diff-d716139d47f651d6b6558f3e6f03aa59c98e52723f472b2c6a24bd02ec5fe2ceR338-R342
Go is going to setup a wrapper span that allows bypassing the span being read-only, and will be provided to the processor.

Should this be reported elsewhere?

Hi folks, I agree that span.finish() method safely calls the processors on_finishing() method. Thus, prevents other threads from trying to modify the span. Although, if any user calls the processor.on_finishing() method directly inside many threads, indeed it can generate a concurrency issue.
Probably, calling this processor method directly isn't desirable, but we are never fully aware of how users will use the library. Thus, might be necessary to protect this method individually. Does it make sense?
@arielvalentin , I did not understand how the mutex.synchronize would generate the deadlock? Can you share an example, please? The only situation I can foresee this is the one where one on_finishing() implementation of any given processor get stuck and never releases the Mutex for the next thread trying to acquire it. Is it what you were saying?

It's likely not a deadlock situation as much as an error. I am concerned that mutexes are not re-entrant.
Assuming that is the case then when a span processor attempts to mutate it, then it will hit an additional  synchronize block and that may result in errors.

It's likely not a deadlock situation as much as an error. I am concerned that mutexes are not re-entrant.
Assuming that is the case then when a span processor attempts to mutate it, then it will hit an additional synchronize block and that may result in errors.

 If any given processor tries to mutate the span, for example setting attributes, it will try to acquire the same Mutex as the finish() method just did. Therefore, the thread gets blocked, cause the Ruby mutexes are not re-entrants as you mentioned before.

If I understand correctly, the span should store Fiber.current and then compare that when making modifications, e.g.
class Span
  def initialize(fiber = Fiber.current)
    @fiber = fiber
  end

  def update
    raise RuntimeError, "Cannot modify span on non-current fiber!" unless @fiber.equal?(Fiber.current)
    # ...

Not exactly. We want the ability for spans to be mutable in a fiber and thread safe way.
Spans may be writable from any thread or fiber as long as access is synchronized. When a span is "finished", then it changes to a state that is Immutable, a.k.a Read Only.
The span has an OnEnding stage where it notifies processors that it's about to transition to Read Only state. This is the final opportunity to make changes to the span before enqueing it for export.
So it's a case where a fiber would have an exclusive re-entrant lock on the span when it's in its transitioning state. If we capture the fiber that initialized it and "locked" on that then the span could not be mutated at any other time or could not be finished by a different fiber.

That's a good starting point for a workable solution, though. Similar to Go, you can pass a wrapper to the callback that has "special" access to the Span's internals, but which bypasses the mutex and instead checks that the owning Thread (or Fiber) is the current one.


fix(RQ1R4RCP): add REQUEST_FILENAME to 942110

this should fix #2845

no, but some rule needs some additional action because of this https://github.com/coreruleset/coreruleset/issues/2882#issuecomment-1296301922

Thank you for the fix @theMiddleBlue. Looks good. Merging now.


Use default locale's custom path if not defined for a locale

Hello,
Here is a PR to use default locale's custom path when a custom path is not defined for a locale.
It can help if you have a lot of locales to manage and only want a custom path for a few of them.

@jeanphilippeds I know this is an old PR but I've just stumbled upon the behavior introduced by this change and I do wonder how it does make sense...
When we have

two locales: en and fr
the default locale is fr
we have an about.vue page for which we set custom path:

{
  'fr': '/about-fr'
}

With this change here the English locale will also use the about-fr name for the about page. This doesn't seem right to me.
Without this change, the en locale would use the about name.


Added custom favorites icons

Please make sure your PR is ready to be merged !

[x] You added the changes in CHANGELOG.md
[x] You choose the right repository branch to make the PR
[x] You described the PR as below

Fixes https://github.com/recalbox/recalbox-os/issues/977
Changes :

added custom fav icons for each system

Great


some problems about mamba2 support

When I try the mamba2 support in selective_scan_backend=='torch', I meet a problem:
Traceback (most recent call last):
File "/home/wzw/Vmamba/VMamba/classification/main.py", line 641, in
main(config, args)
File "/home/wzw/Vmamba/VMamba/classification/main.py", line 204, in main
flops = model.flops()
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 2178, in flops
Gflops, unsupported = flop_count(model=model, inputs=(input,), supported_ops=supported_ops)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/fvcore/nn/flop_count.py", line 147, in flop_count
for op, flop in flop_counter.by_operator().items():
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/fvcore/nn/jit_analysis.py", line 265, in by_operator
stats = self._analyze()
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/fvcore/nn/jit_analysis.py", line 551, in _analyze
graph = _get_scoped_trace_graph(self._model, self._inputs, self._aliases)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/fvcore/nn/jit_analysis.py", line 176, in _get_scoped_trace_graph
graph, _ = _get_trace_graph(module, inputs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/jit/_trace.py", line 1296, in _get_trace_graph
outs = ONNXTracedModule(
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
return forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/jit/_trace.py", line 138, in forward
graph, out = torch._C._create_graph_by_tracing(
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/jit/_trace.py", line 129, in wrapper
outs.append(self.inner(*trace_inputs))
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1561, in _call_impl
result = forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _slow_forward
result = self.forward(*input, **kwargs)
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 2157, in forward
x = layer(x)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1561, in _call_impl
result = forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _slow_forward
result = self.forward(*input, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/container.py", line 217, in forward
input = module(input)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1561, in _call_impl
result = forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _slow_forward
result = self.forward(*input, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/container.py", line 217, in forward
input = module(input)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1561, in _call_impl
result = forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _slow_forward
result = self.forward(*input, **kwargs)
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 1238, in forward
return self._forward(input)
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 1226, in _forward
x = x + self.drop_path(self.op(self.norm(x)))
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1561, in _call_impl
result = forward_call(*args, **kwargs)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _slow_forward
result = self.forward(*input, **kwargs)
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 1099, in forwardm0
y = self.forward_core(x)
File "/home/wzw/Vmamba/VMamba/classification/models/vmamba.py", line 1068, in forward_corem0
ys, final_state = selective_scan_chunk_fn(
File "/home/wzw/Vmamba/VMamba/classification/models/mamba2/ssd_minimal.py", line 135, in selective_scan_chunk_fn
return fn(x, dt, A, B, C, chunk_size, D, z, dt_bias, initial_states, seq_idx, dt_softplus, dt_limit, return_final_states)
File "/home/wzw/Vmamba/VMamba/classification/models/mamba2/ssd_minimal.py", line 110, in mamba_chunk_scan_combined_torch
y, state = ssd_minimal_discrete(u, w, B, C, block_len=chunk_size, initial_states=initial_states)
File "/home/wzw/Vmamba/VMamba/classification/models/mamba2/ssd_minimal.py", line 55, in ssd_minimal_discrete
Y_diag  = torch.einsum("bclhn,bcshn,bhcls,bcshp->bclhp", C, B, L, X)
File "/home/wzw/miniconda3/envs/vmamba2/lib/python3.10/site-packages/torch/functional.py", line 380, in einsum
return _VF.einsum(equation, operands)  # type: ignore[attr-defined]
RuntimeError: einsum(): subscript h has size 64 for operand 2 which does not broadcast with previously seen size 4

Sorry, I did not test the torch version. I'll try to fix this later. Can you use the SSD written in triton?

The bug in torch version has been fixed now.

Thanks for your reply, the problem has been solved.

When using the latest torch version and AMP, another problem occurs.
no this problem when using triton
AMP
...
  File "/home/proj/VMamba/classification/models/mamba2/ssd_minimal.py", line 146, in selective_scan_chunk_fn
    return fn(x, dt, A, B, C, chunk_size, D, z, dt_bias, initial_states, seq_idx, dt_softplus, dt_limit, return_final_states)
  File "/home/proj/VMamba/classification/models/mamba2/ssd_minimal.py", line 121, in mamba_chunk_scan_combined_torch
    y, state = ssd_minimal_discrete(u, w, B, C, block_len=chunk_size, initial_states=initial_states)
  File "/home/proj/VMamba/classification/models/mamba2/ssd_minimal.py", line 44, in ssd_minimal_discrete
    assert X.dtype == A.dtype == B.dtype == C.dtype
AssertionError

Process finished with exit code 1


Exporting Shapes to SVG

Hi again, when I try to export a shape to SVG, I get this traceback:
Traceback (most recent call last):
  File "./DrawQuadraticGlyph.py", line 284, in draw
    context.saveImage(path)
  File "/Users/michiel/Code/PageBot/Lib/pagebot/contexts/flat/flatcontext.py", line 165, in saveDocument
    im = self.pages[0].image(kind=RGB)
  File "/Users/michiel/Code/Flat/flat/document.py", line 47, in image
    item.rasterize(r, k, 0.0, 0.0)
  File "/Users/michiel/Code/Flat/flat/shape.py", line 498, in rasterize
    style.stroke.rasterize(rasterizer)
  File "/Users/michiel/Code/Flat/flat/color.py", line 28, in rasterize
    raise ValueError('Invalid color kind.')
ValueError: Invalid color kind.

Traceback (most recent call last):
  File "./DrawQuadraticGlyph.py", line 296, in draw
    context.saveImage(path)
  File "/Users/michiel/Code/PageBot/Lib/pagebot/contexts/flat/flatcontext.py", line 181, in saveDocument
    self.pages[0].svg(path)
  File "/Users/michiel/Code/Flat/flat/document.py", line 39, in svg
    data = svgserialize(self, compress)
  File "/Users/michiel/Code/Flat/flat/svg.py", line 163, in serialize
    defs, b'\n'.join(item.svg() for item in page.items))
  File "/Users/michiel/Code/Flat/flat/svg.py", line 163, in <genexpr>
    defs, b'\n'.join(item.svg() for item in page.items))
  File "/Users/michiel/Code/Flat/flat/shape.py", line 464, in svg
    return self.item.svg(self.k, self.x, self.y)
  File "/Users/michiel/Code/Flat/flat/shape.py", line 351, in svg
    self.style.svg())
  File "/Users/michiel/Code/Flat/flat/shape.py", line 83, in svg
    attributes.append(b'stroke="%s"' % self.stroke.svg())
  File "/Users/michiel/Code/Flat/flat/color.py", line 24, in svg
    raise NotImplementedError('SVG does not support grayscale.')
NotImplementedError: SVG does not support grayscale.

which seems to be caused by the default stroke value in style, set to gray(0). Not sure if there's a proper way to implement grayscale for SVG, however setting the default stroke to a RGB value, for example rgb(100, 100, 100), seems to circumvent the problem. Should I create another pull request?
M.

Hi!
The problem is that the default color space in PDF is DeviceGray [1] and SVG does not yet support anything like it. As SVG does not have a notion of a graphic state, I think it is preferred to do what PDF does, namely to default to grayscale. The proper fix would be to use device-gray in all svg methods of color.py but the spec is not yet final.
That said, a much easier fix in case of SVG is to explicitly ask for RGB color space for every shape() and not relying on the defaults. Would that work for you?
[1] see e.g. PDF Referece 1.3, 4.3 Graphics State
[2] https://www.w3.org/TR/2013/WD-SVG2-20130618/color.html#Unmanaged

I see now that our code should already initialize RGB color after a new shape is created, but I guess something is resetting it somehow. I'll look into it, thanks again!

Fixed it, that helped :) I'll close this issue.


Pretrained Checkpoint

Hi Zi-Yi,
It seems the link of your pretrained checkpoint is the provided feature.
Could you please release the pretrained checkpoint of foam?
Thanks!

Updated the link in README. Thanks!


ci: Add newer rpm package from Bionic repositories

Requirements for Adding, Changing, or Removing a Feature (from template, click to expand)

Fill out the template below. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.
The pull request must contribute a change that has been endorsed by the maintainer team. See details in the template below.
The pull request must update the test suite to exercise the updated functionality. For guidance, please see https://flight-manual.atom.io/hacking-atom/sections/writing-specs/.
After you create the pull request, all status checks must be pass before a maintainer reviews your contribution. For more details, please see https://github.com/atom/.github/tree/master/CONTRIBUTING.md#pull-requests.

Issue or RFC Endorsed by Atom's Maintainers

None, but it was discussed here: https://github.com/atom/atom/pull/22076#issuecomment-840675576
Description of the Change

Get newer the newer rpm package (and its missing dependencies), as .deb packages from the Ubuntu Bionic package repositories. This gives us newer rpm v4.14 in the older Ubuntu Xenial (which otherwise ships with rpm 4.12).
Allows the use of boolean dependencies in rpm spec files.
See: https://rpm.org/user_doc/boolean_dependencies.html for details.
Alternate Designs

No boolean dependencies in the rpm spec file
Not updating the rpm spec file in general
Building with an older, rpm-based distro in Docker, such as Fedora 23 (not sure if this would work unless tested first)

Possible Drawbacks

⚠ If these links go down, the build probably fails until they are updated to alternate (live) URLs again. ⚠
In that case, I have copies of these .debs that I could host on GitHub somewhere pretty easily. (They are all GPL-licensed, I believe. So that should be okay.) Ideally these are hosted by the Atom org somewhere, in that case. (Caveat: Must host the source code as well alongside the .deb binaries. I have saved copies of the source code as well to meet this requirement of the GPL.)
Verification Process

Linux build completed in a CI run: https://dev.azure.com/DeeDeeG/b/_build/results?buildId=1119&view=results
Release Notes

N/A

Closing in favor of the already-merged upstream PR: https://github.com/atom/atom/pull/22433


compile error: missing closing parenthesis

I'm getting a compile error when i use angular-facebook after downloading it with npm install angular-facebook.  It's missing a closing parenthesis on the last line of angular-facebook.js

I have the same error, any news on this ?


Pagination Query

Do we have limitation for pagination in Data Table? I have more than 100 data to show in a datatable however it is limiting up to 100. Could you please clarify?

Hi, you can override this by doing something like:
<px-data-table page-size="1000" table-data='[[lotsOfData]]'></px-data-table>


docs: redirect Github page to new repo site

Issue being fixed or feature implemented

With the introduction of the monorepo, this repo will no longer be updated. Since there are some links on various sites that direct people to the Github pages site hosted here, it would be better to redirect them to the new repo's site than to simply shutdown this one.
What was done?

Modified the site to redirect to the dashevo/platform GH pages site.
How Has This Been Tested?

Tested on my own fork
Breaking Changes

Checklist:

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added or updated relevant unit/integration/functional/e2e tests
[ ] I have made corresponding changes to the documentation

For repository code-owners and collaborators only

[ ] I have assigned this pull request to a milestone

FYI - I'm not certain if this should go to master or to v0.22-dev (default branch).


fix shaderc tool's release build crash on macOS

Using makefile to build shaderc tool release version, it will crash on :
https://github.com/bkaradzic/bgfx/blob/master/tools/shaderc/shaderc.cpp#L2551
After used lldb, the crash is on other thread which function is: stack_not_16_byte_aligned_error
But, generate xcode project and build the release version, it work fine.
I compare makefile(shaderc.make) and xcode project build command, xcode build has a command called: "-target x86_64-apple-macos10.11", after added it to shaderc.make and built, it work fine.
From 'x86_64-apple-macos10.11' name, I guess, it mean the program work on x86_64 platform and at least macOS 10.11.
I do not deep into this problem, I think this command is some hint for apple clang to generate code correctly.

cc @attilaz

I have found this: https://forums.developer.apple.com/thread/121887
So I guess that is a valid workaround, but shouldn't this be set by bx toolchain or genie?
For XCode there is macOSTargetPlatformVersion, shouldn't there be a similar settings for command line?
https://github.com/bkaradzic/bx/blob/master/scripts/toolchain.lua#L483

Yeah, better place would be toolchain.lua in bx.

Maybe we should add here https://github.com/bkaradzic/bx/blob/master/scripts/toolchain.lua#L1039
and use macosPlatform to generate the buildoptions.


Update

See https://github.com/SciTools/biggus/releases/tag/v0.15.0

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


cannot shorten array or change all of it atomically

my model contains an array of plain string values. with deep-model i cannot shorten the array, only modify existing elements or add new ones to it.
mymodel.set({"arrayname":["val1","val2"]}) will ensure that val1 and val2 are the first two values, but nothing more. it does not do anything about the other values that the array may already contain.
this is caused by objToPath() in set translating my atomic set request into two independent requests for arrayname.0 and arrayname.1.
the only workaround that i can think of at this time is to model.set({"arrayname":null}) first to destroy the array, then rebuild it with the desired elements with a second model.set().
if anybody has a better idea i'd be grateful to hear it.
regards
az

Any news about this problem. I algo have to use a workaround in order to make updates un array to be noticed. Removing elements is not detected. Even making a model.clear doesn't have any effect. I need to manually set the attributes to undefined and then reset the model with the updated values in order deep model respect array elements removing.

I just ran into this same issue.
If you have an existing model:
const model = new MyDeepModel({
  selectedThings: [1,2]
});

and you want to change what "things are selected"
model.set('selectedThings', [0]);

then the result is:
{
  selectedThings: [0,2]
}

Anyone know of a reasonable workaround? In reality I am changing a bunch of values at one by passing an object to .set() and it isn't easy to loop over every property to see if it is an array, and if it is, then modify the existing array instead of replacing it.
It feels like .set() needs some option to "replace" existing arrays instead of modify then by index.


pimd slow to add MFC entries

Hi @troglobit,
I'm working with pimd with the following topology:
Four networks: n1, n2, n3, n4. n1 is a management LAN. Multicast sources are on n2. n3 is an OpenVPN TAP tunnel. Multicast receivers are on n4.
RP1 is the rendezvous point, a Cisco router. It is connected to n1 and n2.
SRC is the OpenVPN server, running Ubuntu 14.04. It is connected to n1, n2, and n3.
PI1 is the client, running Raspbian. It is connected to n3 and n4.
SRC and PI1 are running pimd. RP1 is the Rendezvous Point.
Unicast routing protocol is OSPF and appears to be stable.
n1 is <IP_ADDRESS>/24.
n2 is <IP_ADDRESS>/24.
n3 is <IP_ADDRESS>/24.
n4 is <IP_ADDRESS>/27.
n5 is <IP_ADDRESS>/24. n5 is the network that pi1 is connected to for connectivity, but it's not part of the multicast routing topology as the router that connects n5 to n1 is not pim capable, hence the tunnels. It's part of the OSPF area, but the connected route takes precedence over the learned one on PI1 and I've installed a pinhole route to the VPN server. It's a bit of a hack, but these aren't meant to run on n5 anyway, it's just a testing area.
pimd seems to be working properly, except that it takes an extremely long time (anywhere from 5 seconds to 60 seconds) to add the MFC entry to the kernel routing table and start forwarding packets. With two pimd's between n4 and n2, that makes for extremely slow and arbitrary starts to multicast streams. Replacing SRC and PI1 with Cisco gear, the time is on the order of milliseconds (I haven't measured it enough, but it's fast enough that I can't count it in my head and it feels "instant," which implies it's probably less than 100ms).
Everything works fine, so long as I'm willing to wait a long time for my stream to start. igmpproxy works fine and has response speeds similar to the Cisco gear (with occasional blips of up to a few seconds that the Cisco's don't experience), so this seems to be an issue with pimd specifically.
From the debug log, it looks like pimd is resolving everything to the correct interfaces and is building the correct route internally. It just takes too long to update the MFC. The receiving devices often time out before it happens and leave/join, which causes the whole process to start over, and can result in a stream taking many minutes to start.
This is currently a static RP setup with only RP1 as the RP for all the streams. The streams are all in <IP_ADDRESS>/24.
pimd version 2.3.0.

I can't seem to attach the full debug logs, and they are too long to paste as a comment, so here are some of the relevant sections. Let me know how to get the full logs to you if you need them.
On PI1:
Initial group report:
15:15:00.949 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 22
15:15:00.949 accept_group_report(): al_pv=2
Takes 10 seconds to start forwarding:
15:17:25.251 move_kernel_cache: SG
15:17:25.251 Added kernel MFC entry src <IP_ADDRESS> grp <IP_ADDRESS> from tap0 to eth1
First mention of the group on src1:
15:14:44.970 Cache miss, src <IP_ADDRESS>, dst <IP_ADDRESS>, iif 1
15:14:44.970 find_route: Group not found. Return the (,,RP) entry
15:14:44.970 Switch shortest path (SPT): src <IP_ADDRESS>, group <IP_ADDRESS>
15:14:44.970 create group entry, group <IP_ADDRESS>
PIM join:
15:15:00.483 Received PIM JOIN/PRUNE from <IP_ADDRESS> on tap1
15:15:00.483 Received PIM JOIN from <IP_ADDRESS> to group <IP_ADDRESS> for multicast source <IP_ADDRESS> on tap1
MFC, 5 seconds later:
15:15:05.002 Added kernel MFC entry src <IP_ADDRESS> grp <IP_ADDRESS> from eth1 to tap0
15:15:05.002 Cache miss, src <IP_ADDRESS>, dst <IP_ADDRESS>, iif 1
So each pimd took 5 seconds to start forwarding, compared to milliseconds on Cisco gear. It seems to only take five seconds after a fresh start (which I did to capture the debug logs), but if I were to leave these running with debug logging for some time, it would be easy to spot examples of each hop taking 20 seconds or more to start forwarding.

Hi @ryangubele!  Yeah, I've noticed this slugghishness myself. Have no clue really what's up ...
I'm acting more like a focal point of patches, making sure to integrate them and releasing semi-regularly. My intimate knowledge of the internals of pimd is unfortunately not good yet. Sorry!
So, if you figure out where (in the code) the bottle neck is I'm more than happy to look at it,
or ever better merge a patch for it.

Hello,
I was just going to post about the same issue. Also I found similar problem here (no solution): https://www.ietf.org/mail-archive/web/pim/current/msg02305.html
My lab environment is the following:
[MC streamer] -> [SW] -> [router] -> [another SW] -> [MC client]
If [MC client] asks for stream, it will take up to a minute or more before [router] actually creates the route with "Added kernel MFC entry...". The time it takes for the multicast stream to be started to flow seems totally random for me.
Router is with Debian Kernel 3.16.0-0.bpo.4-amd64 and pimd-2.3.0
I tried to play around with different timeout/period values (both in pimd.conf and in the source header files), and pretty much tried everything that made sense to me but didn't get better solution. Also I tried to debug the code but so far I only learned that the route is not created because of !VIFM_ISEMPTY(mrt->oifs) check fails at (route.c:875)

I'm more perl/python and less C, but I can dig around. Would definitely appreciate anyone else's assistance on this though.

The more the merrier! ;)
If someone comes up with an idea, we can start messing about on a branch. I can help to the best of my abilities (at least I know C fairly well after 20 years now ;) to facilitate, but I'm fairly limited in what I can test ... so maybe we can complement each other?
We can use this issue for synching, I think you can even email replys ...

I would be glad to test and debug, but right now I am out of ideas what to do.
Some throughts:

I tried to check the debug logs and understand what is the difference between simply going through the "process_cache_miss()" function and between actually creating the route, but didn't see any pattern.

What is "mrt->oifs" ? (mc output interfaces?) and why it might be that it is empty at this point and ok at some time later (when the route is created)?

Is there any "#define" parameter or "/proc" value to try changing maybe to make it generally 'snappier' or make some timeouts smaller (possibly even unsuitable for live environment) to see where the problem might be?

@am88b:
1.That's a bit of a mystery to me as well, but I think process_cache_miss() is where you
arrive when you receive an unknown multicast stream.  I.e., the kernel alerts you that
"Hey, there's some multicast coming in here ... what now?"
2. mrt->oifs is, as you rightly guessed, the outbound interfaces for a multicast route "mrt".
3. Nope, not that I'm aware of, pimd is very stand alone and was made for generic UNIX (*BSD)
systems where /proc doesn't even exist. Messing about with the -d debug flags may help though.

"Unknown" as if "bad, I don't know about it" or "Unknown" as if "unprocessed for this time period" ?
Do you know in what point (theoretically and also in code) "mrt->oifs" are populated? I guess I should continue debugging there...
All tests were made with "-f --loglevel=7 --debug=all" so not much help there.

The latter, inbound unknown multicast from a sender (since pimd acts as a querier it will per RFC always receive all multicast on a LAN.)
I believe it starts when a PIM router receives a PIM_JOIN message, so in pim_proto.c:receive_pim_join_prune()

The bare necessities of getting PIM-SM/SSM running on a set of routers is that the unicast
routing table is setup properly.  I.e., so that end nodes (multicast sender and receiver) can
ping each other.  Also, the sender of the multicast must have a TTL >1 ... the default in most
operating systems is to set TTL=1 when the destination IP address is a multicast group.

I took a quick look into this. Not sure if this is the case, but I throw my two cents in anyway.
Looks that MFC entry is added only after "cache miss". Once cache miss occurs and there is no PIM JOINS for that multicast group, given "cache miss" is more or less ignored by pimd.
Now, ipmr.c in Linux kernel buffers packets matching to that cache miss (unresolved). It will not send another cache miss to pimd, if one is already sent. There seems to be buffer for few packets and once that buffer gets filled, rest are dropped.
This unresolved buffer is cleared by timer (ipmr_expire_process). I couldn't figure out how often that buffer is cleared. Once buffer is cleared, one cache miss is sent to pimd again.
So, one option for this random delay could this cache miss process from kernel to pimd.

@troglobit: I checked, unicast routing table is OK - I checked ping both ways. Also MC traffic has TTL=16. (IGMP traffic has TTL=1, but I think this is how it is supposed to be)
@idismmxiv: Thank you for the insight. It sounds promising. Are you planning to take a deeper look? Is there somehow I can be of help to debug this?

@idismmxiv Good catch! :smiley:  Hopefully someone can have a look at it to see if it has any bearing on this issue.
@am88b Yep, IGMP traffic should have TTL=1.

Continued playing with this. I only tested config:
[MC streamer] -> [SW] -> [router] -> [another SW] -> [MC client]
where router was RP and BSR as well. I got it working fast by adding MFC when new leaf is joining multicast stream. Here is pure hack for you to test if you want and to think actual fix. I didn't want to add new param to change_interfaces function right a way as it should be added so many places. I suppose there are other places as well where similar MFC creation should be added.
diff --git a/route.c b/route.c
index f76a933..8256a02 100644
--- a/route.c
+++ b/route.c
@@ -237,6 +237,8 @@ int set_incoming(srcentry_t *src, int type)
}
+static uint32_t group_for_testing;
+
/*

TODO: XXX: currently source is not used. Will be used with IGMPv3 where
we have source-specific Join/Prune.
@@ -257,6 +259,9 @@ void add_leaf(vifi_t vifi, uint32_t source, uint32_t group)
return;
}

/* Store group where new leaf is joining */
group_for_testing = group;
/*
* XXX: only if I am a DR, the IGMP Join should result in creating
* a PIM MRT state.

@@ -491,6 +496,7 @@ int change_interfaces(mrtentry_t *mrt,
mrtentry_t     *srcs;
mrtentry_t     *mwc;
mrtentry_t     *mrp;

srcentry_t     *source_entry;
int delete_mrt_flag;
int result;
int fire_timer_flag;
@@ -671,6 +677,16 @@ int change_interfaces(mrtentry_t *mrt,
srcs->asserted_oifs, flags))
fire_timer_flag = TRUE;
}

       /* Add kernel mfc entry when new leaf is added and input vif already exists */

       for (source_entry = srcs->source; source_entry; source_entry = source_entry->next) {

            if (source_entry->incoming != 0 && mrt->group->mrtlink->oifs != 0) {

                add_kernel_cache(mrt->group->mrtlink, source_entry->address, group_for_testing, 0);

                k_chg_mfc(igmp_socket, source_entry->address, group_for_testing, source_entry->incoming,

                          mrt->group->mrtlink->oifs, mrt->group->rpaddr);

            }

       }

  }
 if (fire_timer_flag == TRUE)

@@ -872,6 +888,10 @@ static void process_cache_miss(struct igmpmsg *igmpctl)
* install negative cache entry in the kernel (oif==NULL) to prevent
* too many upcalls. */

/* Just to make empty routes to stay alive as well */
if (mrt->timer < 30)

   SET_TIMER(mrt->timer, 30);

if (mrt->incoming == iif) {
if (!VIFM_ISEMPTY(mrt->oifs)) {
if (mrt->flags & MRTF_SG) {

@idismmxiv Thank you for the patch! Unfortunately I didn't notice any change whatsoever... I was probably testing the wrong thing, but anyway it didn't fix the original issue I had...
However, during testing this patch and reading your very useful comments, I started to think and I discovered something: the creation of MFC entry is slow only in case "Iif" is empty.
Eg, something like that:

pimd is started, "ip mroute" shows on router:
(<IP_ADDRESS>, <IP_ADDRESS>)        Iif: unresolved
first client attaches (took about 60 seconds), "ip mroute" shows:
(<IP_ADDRESS>, <IP_ADDRESS>)        Iif: eth1.241   Oifs: eth1.201
second client attaches (less than 1 second!), "ip mroute shows"
(<IP_ADDRESS>, <IP_ADDRESS>)        Iif: eth1.241   Oifs: eth1.201 eth1.202
second client leaves and rejoins later - still takes less than 1 second!
but if both first and second client leave:
(<IP_ADDRESS>, <IP_ADDRESS>)        Iif: unresolved
...then now when any client tries to join, it again takes about 60 seconds

The same is observed with both original version and with your patch.

Unfortunately I am not able to reproduce problem you have @am88b. I do not have proper environment to test with and testing with Core (http://www.nrl.navy.mil/itd/ncs/products/core) does not seem to bring the issue up.The delay I had was this few seconds before next "cache miss" triggered MFC creation.  As a short summary you have:

1 router running pimd configured with static RP address (tap address?)
1 leaf node sending multicast
1-2 leaf nodes receiving multicast (IGMPv2 or IGMPv3?)
Couple of switches, but I suppose there can not be anything special if Cisco works properly as a router in same environment (or was it only in @ryangubele who tested Cisco as well?).

My environment:

1 router running pimd configured with static RP address of itself (p.s: I am not aware what is tap address?)
1-n streamers in different vlans (241, 242) sending multicast... but I think it doesn't matter, we can consider only 1
I think I have set 'IGMPv2' everywhere where possible to get consistent environment
1-n nodes (in vlan 201 and 0 (untagged)) receiving multicast with following command:
"time socat UDP4-RECV:1243,ip-add-membership=<IP_ADDRESS>:eth0 -|file -"

The command I am using simply waits for the stream to appear and then exits, so with 'time' I can see how long it took for each run.
 For me there are couple of switches between (Dell and Ubiquiti) but I as far as I have researched they should be OK and they are in 'broadcast all multicast' mode so they should not matter.
Here is the current pimd.conf I use for the main router (note that I have insanely low timers and priorities everywhere to get fast results, but I am not aware they have make any difference anyway... I have tried the defaults too)

default-route-distance    0
default-route-metric     0
hello-interval           30
phyint eth1:5 enable igmpv2 dr-priority<PHONE_NUMBER>
phyint eth1.201:6 enable igmpv2 dr-priority<PHONE_NUMBER>
phyint eth1.241:696 enable igmpv2 dr-priority<PHONE_NUMBER>
phyint eth1.242:698 enable igmpv2 dr-priority<PHONE_NUMBER>
igmp-query-interval  12
igmp-querier-timeout 42
bsr-candidate M.Y.I.P priority 0
rp-candidate M.Y.I.P time 10 priority 0
group-prefix <IP_ADDRESS> masklen 4
rp-address M.Y.I.P <IP_ADDRESS>/4
spt-threshold packets 0 interval 1

I tried similar kind of configuration using CORE as test environment, but no luck.
So, unfortunately I can not help here.
Btw, bsr-candidate and rp-candidate attributes are unnecessary as you are using static rp that is defined by rp-address attribut. But, that should no cause problems you are facing.

I had some interesting progress. I made hack to the line 876 of route.c to always be true "if (1==1)" and after that multicast starts to be moving immediately (~0-4 seconds)!
Also, now when I start pimd, in about 60 seconds, I see "(<IP_ADDRESS>, <IP_ADDRESS>) Iif: eth1.241" with "ip mroute" even without any client trying to connect. And when clients connect, they get their stream immediately and even if the last client disconnects, the "ip mroute" does not show "Iif: unresolved" like I mentioned in previous posts.
However, I am aware that with a hack like that I probably broke something along the way...

PR #67 is very interesting for all concerned in this issue. Please have a look, if you can!

We have found that /net/ipv4/ipmr.c Linux kernel code limits the maximum number of unresolved multicast groups in the Multicast Routing Table (MRT) to 10 or less within the ipmr_cache_unresolved function.  The unresolved cache is flushed and what seems to be a statically random set of 10 unresolved multicast groups are rebuilt in the MRT every second.  We are working in an environment where we have a great deal more than 10 multicast source streams and only a few are actually joined on other interfaces.  This results in a great deal more than 10 possible unresolved entries and many cache_misses.  We have recompiled the Linux kernel using the following ipmr.c patch (removes the 10 unresolved cache limit) and can now quickly create multicast routes from the unresolved entries.
--- ipmr.c_org	2016-09-13 15:36:44.000000000 +0000
+++ BUILD/kernel-2.6.32-642.4.2.el6/linux-2.6.32-642.4.2.el6.mc_unresolv.x86_64/net/ipv4/ipmr.c	2016-09-12 22:27:44.447442385 +0000
@@ -979,8 +979,7 @@
*	Create a new entry if allowable
*/

  if (atomic_read(&mrt->cache_resolve_queue_len) >= 10 ||

      (c = ipmr_cache_alloc_unres()) == NULL) {

  if ((c = ipmr_cache_alloc_unres()) == NULL) {
  	spin_unlock_bh(&mfc_unres_lock);

  	kfree_skb(skb);

@kopren: Thanks for this information. I made the change to my kernel (I actually increased the limit rather than abolishing it) and at first blush, it seems to have solved the issue.
I will need to rebuild the rest of my lab and test further to confirm for certain. At the moment, I have only listeners off the pimd -- I don't have listeners behind a second pimd, which is the target scenario. I will report back hopefully in a few days.
@troglobit: Note that so far, I'm seeing good results even without PR #67. It may be that this was never a pimd issue to begin with, and igmpproxy works because it's mechanism is a bit different or because of it's different position in my network (ie., it isn't exposed to hundreds of active groups like pimd is).

Great to hear your initial results were good.  I opted to remove the limit to eliminate a chance of a denial of service possibility.  Given what I have observed, if we leave the unresolved limit at 10 or some finite number, a user on the LAN would only need to output a number of low rate multicast groups, say 2 or 3 times whatever the limit is, and it would lead to some indeterminate time for the multicast routes to be created by pimd (10s of seconds to minutes).  I have tested the unlimited code in our lab with over 508 unresolved entries on my RHEL machine and it seems to work fine (top reports 65% idle with around 25-1Mbit/sec multicast streams routed, out of the 508 unresolved available).  I have attached my test configuration if it helps.
MC_ENV.pdf

This is interesting. So the problem only occurs if there are more than 10 mc streams initiated simultaneously? And in that case it is random streams that get delayed?

@idismmxiv I can't say for sure. I can confirm it's random groups that get delayed, and the length of the delay is random. Sometimes it was pretty quick, other times, minutes. But I have never actually exposed pimd to anything less than about 80 active groups, except of course for the downstream pimds, so I have no basis for comparison.
What I have observed so far is that, if I hook a VPN client to SRC and send IGMP Group Membership reports for, say, 30 groups, those groups all have the routes built within 100ms of each other. Previously, what would happen is, initially, nothing would be built on src, then a few routes would appear, then a few more, then a few more, and somewhere between 5 and 15ish minutes later, the final routes would appear to make 30 total entries. What I haven't yet tested is:

What is the time between an IGMP Group Membership Report and the corresponding routes actually being created (or, alternatively, first packets actually arriving)? Just because all 30 routes are created within 100ms of each other, doesn't mean that it didn't still take, say, 90 seconds to create the entries. But in the (limited) testing I've done so far, it's never taken more than 30 seconds for all of my multicast routes to reappear from a bounce of pimd, which is a huge improvement over 5 or 10 or 15 minutes to recover from a restart. That said, I just did a quick, dirty, very unscientific test, and it does still seem like it's taking 10 or 15 seconds to get a route added, which is much too slow for my use case but still considerably better than it was. Perhaps your PR will resolve this, and my life will be dandy.

Whether this has any effect on PIM Joins, ie., the scenario where the IGMP Group Membership Reports are on n4, being picked up by a downstream pimd that's the DR for that network, and then joined towards SRC. I need to rebuild my lab to do this. I kind of expect that it will help. Even though they are different code paths in pimd, they pretty much end up doing basically the same thing with basically the same kernel interfaces. At least, so far as I understand. Please correct me if I'm wrong.

Was this problem ever resolved? I found this discussion last night while trying to solve the same problem in my situation. Even though this discussion is several years old, I see that the hard-coded limit of 10 is still present in the latest Linux kernel (4.17.8). So I submitted the attached bug report to the kernel maintainers:
bug.txt

It looks like the patch got kind of ignored -- were you planning to resubmit?

A fix to the hard-coded limit was committed to Linux on Sep 6, 2019.  It seems to be available as of Linux 5.4.
Hence, I think we can now finally close this one.

Another possible tweak?
Perhaps pimd (or the kernel) can maintain a fastdrop/don't care list (cache miss -> add eBPF drop rule, or other method to drop/ignore frame) and resolve then entry, and then scan the drop list when adding a new group to remove, if necessary? That would pretty effectively manage the cache size, and would be necessary if being flooded multicast with no current output interfaces (another PIMd on the LAN forwarding traffic).


Rails Gem for SurveyJS? Suggestion for community effort

New Feature / Community Suggestion
Currently SurveyJS only worries about the front end which runs in the browser. It is up to the developer to use either the dxServer, or add their own back end.
This suggestion is that the SurveyJS community (not necessarily the SurveyJS developers) build a Ruby Gem so that SurveyJS could easily be incorporated into Rails (and Sinatra?) websites.
The gem would initially fetch the currently tested JQuery version of SurveyJS from github and add it to the asset pipeline.
It might create a model for storing hand crafted surveys and a model for storing survey responses in a generic way. It might keep track of which surveys a user has done and submitted.
It might utilise the Rapidfire gem ( https://github.com/code-mancers/rapidfire ) for storing questions and answers, or possibly something else. (Note that Rapidfire has an API under development - we might provide glue which takes the surveyjs submissions and converts them to Rapidfire.
Feel free to comment if you have recommendations for other ways SurveyJS can be incorporated into a Rails website.

@alexmc6 We do not have a lot of expertise on this platform. However, if you have something useful, we definitely add links on the project/repo.
Thank you,
Andrew

Yeah - I don't think this is your responsibility at all @andrewtelnov . I am just putting a sign post here to see if there is any desire from other SurveyJS users. If nothing else it would encourage me to package up what I am probably writing and release it to others as open source.

@alexmc6  I'd be very much interested. I'm working on a RoR/jQuery/SurveyJS project now.


Layout the sidebar/form more ergenomically and improve the style a bit

Such awesome improvements, thanks! Looking through the code now to make sure I follow everything...
https://user-images.githubusercontent.com/1664407/197536273-f9d64323-6187-42e8-81d9-8bd7b781f3fc.mp4

Oh, I forgot a call to app.map.resize() after changing the content of #panel (setting and clearing).

Oh, I forgot a call to app.map.resize() after changing the content of #panel (setting and clearing).

Added! I'm a bit confused why we don't need to call this when creating the form, but it already works as-is -- the position of the attribution legend is fixed. Maybe it handles the container shrinking, but not growing, without a resize()

I'll merge this in now.

Oh, I forgot a call to app.map.resize() after changing the content of #panel (setting and clearing).

Added! I'm a bit confused why we don't need to call this when creating the form, but it already works as-is -- the position of the attribution legend is fixed. Maybe it handles the container shrinking, but not growing, without a resize()

When the form is created without the resize() the map canvas is not changing size, the form is actually covering the bottom portion of it. The map canvas is actually sticking out of its container, but the basemaps selector and attribution are positioned relative to the container, not the canvas, so it was hard to notice!
When the map resize()s you can notice the map is panned to keep the center in the center, which is a bit nicer.

When the form is created without the resize() the map canvas is not changing size, the form is actually covering the bottom portion of it.

Ahh, subtle! Fixed in fddd2f8b4d963aff6408b586fc0e20f4319c63c8