Cluster Node can not receive message from each other?

I setup three nodes ,
each node's vernemq.config file is ：
Allow anonymous users to connect, default is 'off'

Default: off

Acceptable values:
- on or off
allow_anonymous = on
Allow operation even when a VerneMQ cluster is inconsistent,
by removing consistency checks while registering new
clients or subscribing/unsubscribing from topics

Default: off

Acceptable values:
- on or off
trade_consistency = on
Allows a client to logon multiple times using the same client id
(non-standard behaviour!).

Default: off

Acceptable values:
- on or off
allow_multiple_sessions = on
queue_deliver_mode=balance
Set the time in seconds VerneMQ waits before a retry, in case a (QoS=1 or QoS=2) message
delivery gets no answer.

Default: 20

Acceptable values:
- an integer
retry_interval = 20
Set the maximum size for client IDs. MQTT v3.1 specifies a
limit of 23 characters

Default: 23

Acceptable values:
- an integer
max_client_id_size = 512
This option allows persistent clients ( = clean session set to
false) to be removed if they do not reconnect within 'persistent_client_expiration'.
This is a non-standard option. As far as the MQTT specification is concerned,
persistent clients persist forever.
The expiration period should be an integer followed by one of 'd', 'w', 'm', 'y' for
day, week, month, and year.

Default: never

Acceptable values:
- text
persistent_client_expiration = 1w
The maximum number of QoS 1 or 2 messages that can be in the process of being
transmitted simultaneously. This includes messages currently going through handshakes
and messages that are being retried. Defaults to 20. Set to 0 for no maximum. If set
to 1, this will guarantee in-order delivery of messages.

Default: 20

Acceptable values:
- an integer
max_inflight_messages = 10000
The maximum number of messages to hold in the queue above
##those messages that are currently in flight. Defaults to 1000. Set to 0 for
no maximum (not recommended). This option allows to control how a specific
client session can deal with message bursts. As a general rule of thumb set
##this number a bit higher than the expected message rate a single consumer is
##required to process.

Default: 1000

Acceptable values:
- an integer
max_online_messages = 100000
The maximum number of QoS 1 or 2 messages to hold in the offline queue.
Defaults to 1000. Set to -1 for no maximum (not recommended). Set to 0
if no messages should be stored offline.

Default: 1000

Acceptable values:
- an integer
max_offline_messages = 100000
This option sets the maximum payload size that VerneMQ will allow for publishers.
Messages that exceed this size will not be accepted by VerneMQ. The
default value is 0, which means that all valid MQTT messages are accepted. MQTT
imposes a maximum payload size of 268435455 bytes.

Default: 0

Acceptable values:
- an integer
message_size_limit = 0
If a message is published with a QoS lower than the QoS of the subscription it is
delivered to, VerneMQ can upgrade the outgoing QoS. This is a non-standard option.

Default: off

Acceptable values:
- on or off
upgrade_outgoing_qos = off
listener.max_connections is an integer or 'infinity' defining
the maximum number of concurrent connections. This option can be overridden
on the protocol level by:
- listener.tcp.max_connections
- listener.ssl.max_connections
- listener.ws.max_connections
- listener.wss.max_connections
or on the listener level by:
- listener.tcp.my_tcp_listener.max_connections
- listener.ssl.my_ssl_listener.max_connections
- listener.ws.my_ws_listener.max_connections
- listener.wss.my_wss_listener.max_connections

Default: 10000

Acceptable values:
- an integer
- the text "infinity"
listener.max_connections = infinity
Set the nr of acceptors waiting to concurrently accept new connections.
This can be specified either on the protocol level:
- listener.tcp.nr_of_acceptors
- listener.ssl.nr_of_acceptors
- listener.ws.nr_of_acceptors
- listener.wss.nr_of_acceptors
or on the listener level:
- listener.tcp.my_tcp_listener.nr_of_acceptors
- listener.ssl.my_ssl_listener.nr_of_acceptors
- listener.ws.my_ws_listener.nr_of_acceptors
- listener.wss.my_wss_listener.nr_of_acceptors

Default: 10

Acceptable values:
- an integer
listener.nr_of_acceptors = 1000
listener.tcp. is an IP address and TCP port that
the broker will bind to. You can define multiple listeners e.g:
- listener.tcp.default = <IP_ADDRESS>:1883
- listener.tcp.internal = <IP_ADDRESS>:10883
- listener.tcp.my_other_listener = <IP_ADDRESS>:10884
This also works for SSL listeners and WebSocket handlers:
- listener.ssl.default = <IP_ADDRESS>:8883
- listener.ws.default = <IP_ADDRESS>:800
- listener.wss.default = <IP_ADDRESS>:880

Default: <IP_ADDRESS>:1883

Acceptable values:
- an IP/port pair, e.g. <IP_ADDRESS>:10011
listener.tcp.default = <IP_ADDRESS>:1883
erlang.distribution.port_range.minimum=6000
erlang.distribution.port_range.maximum=7999
listener.vmq.clustering is the IP address and TCP port that
the broker will bind to accept connections from other cluster
nodes e.g:
- listener.vmq.clustering = <IP_ADDRESS>:18883
This also works for SSL listeners:
- listener.vmqs.clustering = <IP_ADDRESS>:18884

Default: <IP_ADDRESS>:44053

Acceptable values:
- an IP/port pair, e.g. <IP_ADDRESS>:10011
listener.vmq.clustering = <IP_ADDRESS>:44053
Set the mountpoint on the protocol level or on the listener level
- listener.tcp.mountpoint
- listener.ssl.mountpoint
- listener.ws.mountpoint
- listener.wss.mountpoint
listener level:
- listener.tcp.my_tcp_listener.mountpoint
- listener.ssl.my_ssl_listener.mountpoint
- listener.ws.my_ws_listener.mountpoint
- listener.wss.my_wss_listener.mountpoint

Default: off

Acceptable values:
- text
##listener.mountpoint = on
##listener.tcp.mountpoint= test/my01
The cafile is used to define the path to a file containing
the PEM encoded CA certificates that are trusted. Set the cafile
on the protocol level or on the listener level:
- listener.ssl.cafile
- listener.wss.cafile
or on the listener level:
- listener.ssl.my_ssl_listener.cafile
- listener.wss.my_wss_listener.cafile

Default:

Acceptable values:
- the path to a file
listener.ssl.cafile = ./etc/cacerts.pem
Set the path to the PEM encoded server certificate
on the protocol level or on the listener level:
- listener.ssl.certfile
- listener.wss.certfile
or on the listener level:
- listener.ssl.my_ssl_listener.certfile
- listener.wss.my_wss_listener.certfile

Default:

Acceptable values:
- the path to a file
listener.ssl.certfile = ./etc/cert.pem
Set the path to the PEM encoded key file on the protocol
level or on the listener level:
- listener.ssl.keyfile
- listener.wss.keyfile
or on the listener level:
- listener.ssl.my_ssl_listener.keyfile
- listener.wss.my_wss_listener.keyfile

Default:

Acceptable values:
- the path to a file
listener.ssl.keyfile = ./etc/key.pem
Set the list of allowed ciphers (each separated with a colon),
on the protocol level or on the listener level. Reasonable defaults
are used if nothing is specified:
- listener.ssl.ciphers
- listener.wss.ciphers
or on the listener level:
- listener.ssl.my_ssl_listener.ciphers
- listener.wss.my_wss_listener.ciphers

Default:

Acceptable values:
- text
listener.ssl.ciphers =
If you have 'listener.ssl.require_certificate' set to true,
you can create a certificate revocation list file to revoke access
to particular client certificates. If you have done this, use crlfile
to point to the PEM encoded revocation file. This can be done on the
protocol level or on the listener level.
- listener.ssl.crlfile
- listener.wss.crlfile
or on the listener level:
- listener.ssl.my_ssl_listener.crlfile
- listener.wss.my_wss_listener.crlfile

Default:

Acceptable values:
- text
listener.ssl.crlfile =
Enable this option if you want to use SSL client certificates
to authenticate your clients. This can be done on the protocol level
or on the listener level.
- listener.ssl.require_certificate
- listener.wss.require_certificate
or on the listener level:
- listener.ssl.my_ssl_listener.require_certificate
- listener.wss.my_wss_listener.require_certificate

Default: off

Acceptable values:
- on or off
listener.ssl.require_certificate = off
Configure the TLS protocol version (tlsv1, tlsv1.1, or tlsv1.2) to be
used for either all configured SSL listeners or for a specific listener:
- listener.ssl.tls_version
- listener.wss.tls_version
or on the listener level:
- listener.ssl.my_ssl_listener.tls_version
- listener.wss.my_wss_listener.tls_version

Default: tlsv1.2

Acceptable values:
- text
listener.ssl.tls_version = tlsv1.2
If 'listener.ssl.require_certificate' is enabled, you may enable
'listener.ssl.use_identity_as_username' to use the CN value from the client
certificate as a username. If enabled other authentication plugins are not
considered. The option can be specified either for all SSL listeners or for
a specific listener:
- listener.ssl.use_identity_as_username
- listener.wss.use_identity_as_username
or on the listener level:
- listener.ssl.my_ssl_listener.use_identity_as_username
- listener.wss.my_wss_listener.use_identity_as_username

Default: off

Acceptable values:
- on or off
listener.ssl.use_identity_as_username = off
Set the path to an access control list file.

Default: ./etc/vmq.acl

Acceptable values:
- the path to a file
acl_file = /etc/vernemq/vmq.acl
set the acl reload interval in seconds, the value 0 disables the
automatic reloading of the acl file.

Default: 10

Acceptable values:
- an integer
acl_reload_interval = 10
Set the path to a password file.

Default: ./etc/vmq.passwd

Acceptable values:
- the path to a file
password_file = /etc/vernemq/vmq.passwd
set the password reload interval in seconds, the value 0 disables the
automatic reloading of the password file.

Default: 10

Acceptable values:
- an integer
password_reload_interval = 10
Specify the address and port of the bridge to connect to. Several
bridges can configured by using different bridge names (e.g. br0). If the
connection supports SSL encryption bridge.ssl. can be used.

Default: <IP_ADDRESS>:1889

Acceptable values:
- an IP/port pair, e.g. <IP_ADDRESS>:10011
bridge.tcp.br0 = <IP_ADDRESS>:1889
Set the clean session option for the bridge. By default this is disabled,
which means that all subscriptions on the remote broker are kept in case of
the network connection dropping. If enabled, all subscriptions and messages
on the remote broker will be cleaned up if the connection drops.

Default: off

Acceptable values:
- on or off
bridge.tcp.br0.cleansession = off
Set the client id for this bridge connection. If not defined, this
defaults to 'name.hostname', where name is the connection name and hostname
is the hostname of this computer.

Default: auto

Acceptable values:
- text
bridge.tcp.br0.client_id = auto
Set the number of seconds after which the bridge should send a ping if
no other traffic has occurred.

Default: 60

Acceptable values:
- an integer
bridge.tcp.br0.keepalive_interval = 60
Configure a username for the bridge. This is used for authentication
purposes when connecting to a broker that support MQTT v3.1 and requires a
username and/or password to connect. See also the password option.

Acceptable values:
- text
bridge.tcp.br0.username = my_remote_user
Configure a password for the bridge. This is used for authentication
purposes when connecting to a broker that support MQTT v3.1 and requires a
username and/or password to connect. This option is only valid if a username
is also supplied.

Acceptable values:
- text
bridge.tcp.br0.password = my_remote_password
Set the amount of time a bridge using the automatic start type will wait
until attempting to reconnect. Defaults to 30 seconds.

Default: 10

Acceptable values:
- an integer
bridge.tcp.br0.restart_timeout = 10
If try_private is enabled, the bridge will attempt to indicate to the
remote broker that it is a bridge not an ordinary client.
Note that loop detection for bridges is not yet implemented.

Default: on

Acceptable values:
- on or off
bridge.tcp.br0.try_private = on
The cafile is used to define the path to a file containing
the PEM encoded CA certificates that are trusted.

Default:

Acceptable values:
- the path to a file
bridge.ssl.sbr0.cafile = ./etc/cacerts.pem
Define the path to a folder containing
the PEM encoded CA certificates that are trusted.

Default:

Acceptable values:
- the path to a file
bridge.ssl.sbr0.capath = ./etc/cacerts
Set the path to the PEM encoded server certificate.

Default:

Acceptable values:
- the path to a file
bridge.ssl.sbr0.certfile = ./etc/cert.pem
Set the path to the PEM encoded key file.

Default:

Acceptable values:
- the path to a file
bridge.ssl.sbr0.keyfile = ./etc/key.pem
When using certificate based TLS, the bridge will attempt to verify the
hostname provided in the remote certificate matches the host/address being
connected to. This may cause problems in testing scenarios, so this option
may be enabled to disable the hostname verification.
Setting this option to true means that a malicious third party could
potentially inpersonate your server, so it should always be disabled in
production environments.

Default: off

Acceptable values:
- on or off
bridge.ssl.sbr0.insecure = off
Configure the TLS protocol version (tlsv1, tlsv1.1, or tlsv1.2) to be
used for this bridge.

Default: tlsv1.2

Acceptable values:
- text
bridge.ssl.sbr0.tls_version = tlsv1.2
Pre-shared-key encryption provides an alternative to certificate based
encryption. This option specifies the identity used.

Default:

Acceptable values:
- text
bridge.ssl.sbr0.identity =
Pre-shared-key encryption provides an alternative to certificate based
encryption. This option specifies the shared secret used in hexadecimal
format without leading '0x'.

Default:

Acceptable values:
- text
bridge.ssl.sbr0.psk =
The integer number of seconds between updates of the $SYS subscription hierarchy,
which provides status information about the broker. If unset, defaults to 10 seconds.
Set to 0 to disable publishing the $SYS hierarchy completely.

Default: 10

Acceptable values:
- an integer
sys_interval = 10
the interval we push metrics to the graphite server in ms

Default: 15000

Acceptable values:
- an integer
graphite.interval = 15000
the tcp port of the graphite server

Default: 2003

Acceptable values:
- an integer
graphite.port = 2003
the graphite server host name

Default: localhost

Acceptable values:
- text
graphite.host = <IP_ADDRESS>
set the prefix that is applied to all metrics reported to graphite

Default:

Acceptable values:
- text
graphite.prefix = my-prefix
the graphite server api key, e.g. used by hostedgraphite.com

Default:

Acceptable values:
- text
graphite.api_key = My-Api-Key
Where to emit the default log messages (typically at 'info'
severity):
off: disabled
file: the file specified by log.console.file
console: to standard output (seen when using vmq attach-direct)
both: log.console.file and standard out.

Default: file

Acceptable values:
- one of: off, file, console, both
log.console = file
The severity level of the console log, default is 'info'.

Default: info

Acceptable values:
- one of: debug, info, warning, error
log.console.level = error
When 'log.console' is set to 'file' or 'both', the file where
console messages will be logged.

Default: ./log/console.log

Acceptable values:
- the path to a file
log.console.file = ./log/console.log
The file where error messages will be logged.

Default: ./log/error.log

Acceptable values:
- the path to a file
log.error.file = ./log/error.log
When set to 'on', enables log output to syslog.

Default: off

Acceptable values:
- on or off
log.syslog = off
Whether to enable the crash log.

Default: on

Acceptable values:
- on or off
log.crash = on
If the crash log is enabled, the file where its messages will
be written.

Default: ./log/crash.log

Acceptable values:
- the path to a file
log.crash.file = ./log/crash.log
Maximum size in bytes of individual messages in the crash log

Default: 64KB

Acceptable values:
- a byte size with units, e.g. 10GB
log.crash.maximum_message_size = 1MB
Maximum size of the crash log in bytes, before it is rotated

Default: 10MB

Acceptable values:
- a byte size with units, e.g. 10GB
log.crash.size = 500MB
The schedule on which to rotate the crash log. For more
information see:
https://github.com/basho/lager/blob/master/README.md#internal-log-rotation

Default: $D0

Acceptable values:
- text
log.crash.rotation = $D0
The number of rotated crash logs to keep. When set to
'current', only the current open log file is kept.

Default: 5

Acceptable values:
- an integer
- the text "current"
log.crash.rotation.keep = 5
This parameter defines the percentage of total server memory
to assign to LevelDB. LevelDB will dynamically adjust its internal
cache sizes to stay within this size.  The memory size can
alternately be assigned as a byte count via leveldb.maximum_memory
instead.

Default: 70

Acceptable values:
- an integer
leveldb.maximum_memory.percent = 70
Name of the Erlang node

Default<EMAIL_ADDRESS>
Acceptable values:
- text
nodename =<EMAIL_ADDRESS>Cookie for distributed node communication.  All nodes in the
same cluster should use the same cookie or they will not be able to
communicate.

Default: vmq

Acceptable values:
- text
distributed_cookie = vmq
Sets the number of threads in async thread pool, valid range
is 0-1024. If thread support is available, the default is 64.
More information at: http://erlang.org/doc/man/erl.html

Default: 64

Acceptable values:
- an integer
erlang.async_threads = 512
erlang.process_limit = 10000000
The number of concurrent ports/sockets
Valid range is 1024-134217727

Default: 262144

Acceptable values:
- an integer
erlang.max_ports = 10000000
Set scheduler forced wakeup interval. All run queues will be
scanned each Interval milliseconds. While there are sleeping
schedulers in the system, one scheduler will be woken for each
non-empty run queue found. An Interval of zero disables this
feature, which also is the default.
This feature is a workaround for lengthy executing native code, and
native code that do not bump reductions properly.
More information: http://www.erlang.org/doc/man/erl.html#+sfwi

Acceptable values:
- an integer
erlang.schedulers.force_wakeup_interval = 500
Enable or disable scheduler compaction of load. By default
scheduler compaction of load is enabled. When enabled, load
balancing will strive for a load distribution which causes as many
scheduler threads as possible to be fully loaded (i.e., not run out
of work). This is accomplished by migrating load (e.g. runnable
processes) into a smaller set of schedulers when schedulers
frequently run out of work. When disabled, the frequency with which
schedulers run out of work will not be taken into account by the
load balancing logic.
More information: http://www.erlang.org/doc/man/erl.html#+scl

Acceptable values:
- one of: true, false
erlang.schedulers.compaction_of_load = false
Enable or disable scheduler utilization balancing of load. By
default scheduler utilization balancing is disabled and instead
scheduler compaction of load is enabled which will strive for a
load distribution which causes as many scheduler threads as
possible to be fully loaded (i.e., not run out of work). When
scheduler utilization balancing is enabled the system will instead
try to balance scheduler utilization between schedulers. That is,
strive for equal scheduler utilization on all schedulers.
More information: http://www.erlang.org/doc/man/erl.html#+sub

Acceptable values:
- one of: true, false
erlang.schedulers.utilization_balancing = true
and I config cluster by the document:http://vernemq.com/docs/clustering/ ,http://vernemq.com/docs/clustering/communication.html
then I excute ' vmq-admin cluster status ' on each node ,they all display:
+-----------------------+-------+
|         Node          |Running|
+-----------------------+-------+
<EMAIL_ADDRESS>true  |
<EMAIL_ADDRESS>true  |
<EMAIL_ADDRESS>true  |
+-----------------------+-------+
I use two client A ,B and C  ,A connect to node<EMAIL_ADDRESS>B to<EMAIL_ADDRESS>and C to<EMAIL_ADDRESS>B and C sub topic test/#,
A public topic test/sdfs message 'xxxxx'
Then B and C can not receive any message form A
They Can Only receive message from there own node.
Am I make some mistake?

The nodes can telnet from each others  for all the listening port  ,so  the network is ok~

The clustering port is open too? listener.vmq.clustering = <IP_ADDRESS>:44053
Messages between the clustered nodes flow over these connections.

Thank you for your reply!
I solve it by set listener.vmq.clustering = <IP_ADDRESS>:44053
now the cluster node can reacieve msg for each other


[logstash] disable privileged container in psp

This commit disable privilged container when enabling PodSecurityPolicy
as Logstash container doesn't use any host device.


FI wg: add ctlong as approver in

Some significant PRs and issues I've authored or reviewed, and slack conversations where I've contributed:

https://github.com/cloudfoundry/syslog-release/pull/69
https://github.com/cloudfoundry/syslog-release/pull/70
https://github.com/cloudfoundry/syslog-release/pull/81
https://github.com/cloudfoundry/syslog-release/pull/91
https://github.com/cloudfoundry/syslog-release/pull/92
https://github.com/cloudfoundry/syslog-release/issues/71
https://github.com/cloudfoundry/syslog-release/issues/82
https://github.com/cloudfoundry/windows-syslog-release/pull/14
https://github.com/cloudfoundry/blackbox/pull/22
https://github.com/cloudfoundry/blackbox/pull/23
https://github.com/cloudfoundry/system-metrics-release/pull/10
https://github.com/cloudfoundry/system-metrics-release/pull/18
https://github.com/cloudfoundry/system-metrics-release/pull/19
https://github.com/cloudfoundry/system-metrics-release/pull/20
https://github.com/cloudfoundry/system-metrics-release/pull/30
https://github.com/cloudfoundry/system-metrics-release/pull/40
https://github.com/cloudfoundry/system-metrics-release/pull/43
https://github.com/cloudfoundry/system-metrics-release/pull/44
https://github.com/cloudfoundry/system-metrics-release/pull/45
https://cloudfoundry.slack.com/archives/CUW93AF3M/p1648047337033669


allow Variables, Constants, Parameters to have multiple special attributes.

It seems desirable to allow someone to (for example) declare that a square matrix is both nonnegative, and PSD.
Was support for this feature deliberately left out, or was it simply a matter of not having the time to implement it?

The projection becomes much more complicated. It's intentionally left out for that reason. Is there really a good case for it?

You are very right that projection would become much more complicated. However, the way that we use projection right now is only to validate input data (so it's not a user-facing function). To validate input data for a Parameter with multiple attributes, we would just project once for each attribute type (i.e. project onto R^(n * n)_+, the PSD cone, cone of diagonal matrices, etc...) and accept the input iff each of these projection operations had sufficiently small residual.
Making the necessary changes may be more trouble than it's worth, but here are some benefits I see (provided that a user wants multiple attributes in their mathematical model):

Improved code readability for complicated optimization models.
Improved compile-times.

cvxpy can probably bypass much of the overhead in parsing a constraint if that constraint is known to be one of a handful of attributes available to a Variable.
If nothing else, it would ensure that constraints are vectorized. (I.e.

Smaller and more tractable optimization problems passed to the solver.

For example, if you want to declare a symmetric matrix with integer entries, then the only way to do that is X = cvxpy.Variable((n,n), integer=True) and X == X.T.
This syntax creates almost twice as many integer variables as are necessary for the problem, and adds n^2 equality constraints that are otherwise unnecessary.

I have a use case for this: a generalized geometric programming problem where the objective and constraints involve affine combinations of diagonals of PSD matrices with nonnegative variables.
Because I can't specify a PSD constant, I'm forced to precompute these diagonals so that the DGP rules are satisfied. I know a priori that the diagonals will be nonnegative, but I have no way to prove that to CVXPY without doing it myself. The code to do this is much more verbose and error-prone than it would be otherwise.
E.g., have to write (simplifying my actual problem and ignoring efficiency for the sake of clarity)
import cvxpy as cp
import numpy as np

x = cp.Variable(S.shape[0], pos=True)
matrices = [np.linalg.matrix_power(A, k) @ S @ np.linalg.matrix_power(A.T, k) for k in range(K)]
diagonals = [np.diag(m) for m in matrices]
objective = cp.prod([cp.sum(cp.multiply(d, xi)) / xi for d, xi in zip(diagonals, x)])

If we had a special PSD attribute for constants, we could instead write
S = cp.Constant(S, PSD=True)
matrices = [np.linalg.matrix_power(A, k) @ cp.diag(cp.sqrt(x)) @ S @ cp.diag(cp.sqrt(x)) @ np.linalg.matrix_power(A.T, k) for k in range(K)]
objective = cp.prod([cp.sum(cp.diag(mi)) / xi for mi, xi in zip(matrices, x)])

The solver would know that each matrix in matrices is PSD, and thus each cp.diag(mi) is nonnegative. This example is much simpler than the problem I am working on, which requires more repetitive code than this given the current constraints of CVXPY.
The simplicity of this approach becomes more apparent when you use a for loop to build the terms of the objective.
Essentially, adding a PSD attribute would allow the user to stick to the math that describes their problem, without having to fight the package or resort to tricks to prove to the package that their problem is correctly specified.

@r-zip the issue here is not so much that you can't declare attributes for constants (the attributes they have are determined by examining the constant, so you don't need to declare them). Rather, the issue is that cvxpy doesn't know that the diagonal of a psd matrix is non-negative. We can change that.

Ah, I see. Thanks, Steve. If I wanted to contribute a PR for that, where should I look? I just started using the package for the first time in a few years, and I'm unfamiliar with the codebase.

Here's the code for diag: https://github.com/cvxgrp/cvxpy/blob/master/cvxpy/atoms/affine/diag.py


Add 's' to 'http' in subs.

Also do a little housekeeping on the ffmpeg build.

Since nobody types in this part of the link anymore, it feels like we can just go with TASVideos.org.

Either seems fine to me. I guess a decision on this PR could just be delayed until a consensus in https://tasvideos.org/Forum/Topics/23011 is reached? I made this little PR shortly before I found out that there were opinions on it at all.

I also removed Opus support as it just occurred to me that we don't need it anymore, either.

Moved YouTube FPS fix after halving the framerate just in case this interaction happens some day.
Various 's's added to links

@vadosnaprimer I noticed at the end of the file, the video was converted to YV24 color space, then immediately converted to YV12 color space. This seems to me like an error, so I removed the YV24 conversion. Also, the conversion to YV12 (lossy) was using point sizing instead of lanczos, which seems like a copy-paste error. I changed this as well. Let me know if this was actually intentional.

How we do subsampling conversion depends on what looks better. It was done in 2 steps since forever ago, we would need Aktan to tell us why. And whether it's point or lanczos will need to be tested on various AR factors, like A2600 and PSX's 512px mode.

On the topic of doing subsampling in two steps, I took a walk down the history and here's what the relevant section looked like:
#	YV24 conversion doesn't reduce chroma, so "point" is fine
ConvertToYV24(chromaresample="point", matrix=(hd \
	? "Rec709" \
	: (pass == 0 \
		? "Rec601" \
		: "PC.601")))

# pass == 1 ? assrender("subtitles.ass") : 0

#	Remove duplicate frames for primary
pass == 1 ? ExactDedup(firstpass=true, dupinfo="./temp/dup.txt",times="./temp/times.txt") : 0
pass == 2 ? ExactDedup(firstpass=false,dupinfo="./temp/dup.txt"                         ) : 0

#	YV12 reduces chroma, so we use "lanczos" even for HD
#	http://tasvideos.org/forum/viewtopic.php?t=19426
i444 ? last : ConvertToYV12(chromaresample="lanczos", matrix=(hd \
	? "Rec709" \
	: (pass == 0 \
		? "Rec601" \
		: "PC.601")))

My assumption when I looked at this is that YV color space was required for assrender/deduplication, so we did YV24 first to avoid loss before doing that, then went to YV12 as a final step. I could be quite wrong about that being the case though. I'll ping @Aktan to get their opinion.

Further back https://tasvideos.org/EncodingGuide/Legacy/PreEncoding

I'll note that the forum link that is right above the affected code talks about this and I should have really read through it first. After having done that though, I still have doubts/suspicions. At least theoretically, I can't see a reason why converting pixels directly to YUV color planes before then subsampling the UV planes using the same matrix should make a difference. I guess it depends heavily on how the color conversion algos in AviSynth actually work.

I think the RGB -> YV12 conversion is done with a conversion to YV24 as an intermediate step going by this page.
And with tests with TiKevin's rgbscaler, chroma resampling with filters other than Point introduces chroma artifacts for pixel art. I suggest chroma resampling with Point for when we HD resize by point and with Lanczos for when we HD resize by Lanczos.

I tested some colorspace stuff here: https://tasvideos.org/Forum/Topics/19426?CurrentPage=3&Highlight=511622#511622
If my tests aren't bunk, they indicate that we can drop the conversion into YV24 prior to YV12. @Aktanusa recalls that the conversion may have originally been done due to a bug in the YV12 conversion function, but the function appears to work correctly now.

And with tests with TiKevin's rgbscaler, chroma resampling with filters other than Point introduces chroma artifacts for pixel art. I suggest chroma resampling with Point for when we HD resize by point and with Lanczos for when we HD resize by Lanczos.

I'm willing to believe this at face value honestly, but perhaps there are some images you (@despoa) or @TiKevin83 could share? We could easily accomplish this by doing something like `ConvertToYV12(chromaresample=hd ? "lanczos" : "point" ...)

And if you're gonna do some housekeeping, I suggest removing the Famtasia and PSXjin functions under LEGACY STUFF. The Famtasia function is rendered unnecessary by FFmpeg's own bit depth conversion (I'm sure YouTube can handle 8-bit FLAC audio. If not, FFmpeg has -sample_fmt. Lossy formats like AAC don't care about the bit depth.) and the PSXjin function doesn't work.

I agree with removing the Famtasia stuff as long as we confirm ffmpeg doesn't need to be recompiled to do the conversion. If it does, then honestly either way is fine IMO. As for PSXJin, unless I'm missing something, all it's doing is showing you that you need to mux the audio? What doesn't work?

I'm willing to believe this at face value honestly, but perhaps there are some images you (@despoa) or @TiKevin83 could share? We could easily accomplish this by doing something like ConvertToYV12(chromaresample=resizer ...)

I discussed this with TiKevin when he couldn't get FFmpeg's own chroma subsampling to produce good results for him. It turns out that FFmpeg's default filter for chroma is bicubic. You get better and sharp results if neighbor/point is used. More details can be found in this link.
https://stackoverflow.com/questions/64692051/why-does-ffmpeg-yuv420p-conversion-affect-pixels-beyond-2x2-blocks

I agree with removing the Famtasia stuff as long as we confirm ffmpeg doesn't need to be recompiled to do the conversion. If it does, then honestly either way is fine IMO. As for PSXJin, unless I'm missing something, all it's doing is showing you that you need to mux the audio? What doesn't work?

FFmpeg doesn't have to be recompiled. The build parameter --enable-decoder=pcm* makes it so that any PCM format listed here can be decoded. As for the PSXjin function, it was something feos copypasted from somewhere else before he implemented the multisegment function. I made my own version that works with the multisegment function, but it's up to feos if he wants it in main package.

I made my own version that works with the multisegment function, but it's up to feos if he wants it in main package.

Where can I see it?

FFmpeg doesn't have to be recompiled. The build parameter --enable-decoder=pcm* makes it so that any PCM format listed here can be decoded.

You should have seen the list before I found out that you could use wildcards in that file! But my concern was specifically with this:

FFmpeg's own bit depth conversion

I added the aresample filter to the list after discovering that the codecs themselves would not do this on their own. So here I am wondering if the flac encoder can handle any PCM format or if it might need the assistance of another filter.

For reference this is what the error looks like coming out of FFMPEG for very small pixel art when trying to do 2x nearest neighbor scale + 420 to preserve full chroma but not having the accurate_rnd setting or full_chroma_int going.

I added a resampling to 48Khz in the ffmpeg command for the SD encode, then experimentally determined a priming offset for that value (5060 samples) that got the audio in line with the flac audio. I tried this command against several input frequencies and they all lined up. Obviously outside testing is welcome to confirm this though.


New PR to test SignCLA at 2017-11-08 08:36:20.788871031 -0800 PST m=+72.090469312

Body of PR

indiv-pass-staging: test succeeded


Fails to Run on later versions of QB64pe

It appears to broken with QB64pe v3.10 and v3.11.
It compiles with 3.10, but does not run. It wont compile with 3.11.
I'm running Linux Mint 21.2
Here is the compile log for 3.11
g++  -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_CONSOLE_ONLY -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE internal/c/libqb.cpp -c -o internal/c/libqb_make_001000000.o g++  -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_CONSOLE_ONLY -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE internal/c/qbx.cpp -c -o internal/c/qbx.o g++ -O2  -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_CONSOLE_ONLY -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE -Wall internal/c/libqb/src/threading.cpp -c -o internal/c/libqb/src/threading.o g++ -O2  -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_CONSOLE_ONLY -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE -Wall internal/c/libqb/src/buffer.cpp -c -o internal/c/libqb/src/buffer.o g++ -O2  -no-pie -w -std=gnu++14 -DFREEGLUT_STATIC -I./internal/c/libqb/include -I./internal/c/parts/core/src/ -I./internal/c/parts/core/glew/include/ -DDEPENDENCY_CONSOLE_ONLY -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE -Wall internal/c/libqb/src/filepath.cpp -c -o internal/c/libqb/src/filepath.o In file included from internal/c/qbx.cpp:2: internal/c/common.h:97:21: error: expected identifier before ‘-’ token    97 | #    define QB_TRUE -1       |                     ^ /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:19:5: note: in expansion of macro ‘QB_TRUE’    19 |     QB_TRUE = -1,       |     ^~~~~~~ internal/c/common.h:97:21: error: expected ‘}’ before ‘-’ token    97 | #    define QB_TRUE -1       |                     ^ /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:19:5: note: in expansion of macro ‘QB_TRUE’    19 |     QB_TRUE = -1,       |     ^~~~~~~ In file included from internal/c/../temp/regsf.txt:1,                  from internal/c/qbx.cpp:1105: /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:18:1: note: to match this ‘{’    18 | {       | ^ In file included from internal/c/qbx.cpp:2: internal/c/common.h:97:21: error: expected unqualified-id before ‘-’ token    97 | #    define QB_TRUE -1       |                     ^ /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:19:5: note: in expansion of macro ‘QB_TRUE’    19 |     QB_TRUE = -1,       |     ^~~~~~~ In file included from internal/c/../temp/regsf.txt:1,                  from internal/c/qbx.cpp:1105: /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:21:1: error: expected declaration before ‘}’ token    21 | };       | ^ In file included from internal/c/qbx.cpp:2: /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h: In function ‘qb_bool __init_raylib()’: internal/c/common.h:97:22: error: invalid conversion from ‘int’ to ‘qb_bool’ [-fpermissive]    97 | #    define QB_TRUE -1       |                      ^       |                      |       |                      int /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:1428:16: note: in expansion of macro ‘QB_TRUE’ 1428 |         return QB_TRUE;       |                ^~~~~~~ internal/c/common.h:96:22: error: invalid conversion from ‘int’ to ‘qb_bool’ [-fpermissive]    96 | #    define QB_FALSE 0       |                      ^       |                      |       |                      int /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:1446:24: note: in expansion of macro ‘QB_FALSE’ 1446 |                 return QB_FALSE;       |                        ^~~~~~~~ internal/c/common.h:96:22: error: invalid conversion from ‘int’ to ‘qb_bool’ [-fpermissive]    96 | #    define QB_FALSE 0       |                      ^       |                      |       |                      int /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:1979:16: note: in expansion of macro ‘QB_FALSE’ 1979 |         return QB_FALSE;       |                ^~~~~~~~ internal/c/common.h:97:22: error: invalid conversion from ‘int’ to ‘qb_bool’ [-fpermissive]    97 | #    define QB_TRUE -1       |                      ^       |                      |       |                      int /mnt/LocalNAS4/LocalNAS/QbasicPrograms/raylib-64/include/raylib.h:1986:12: note: in expansion of macro ‘QB_TRUE’ 1986 |     return QB_TRUE;       |            ^~~~~~~ make: *** [Makefile:388: internal/c/qbx.o] Error 1 make: *** Waiting for unfinished jobs....

I thought I had fixed this for 3.11. In fact, I set the minimum required version to 3.11 now because of some changes I made on the QB64-PE side.
See the commits here:
https://github.com/a740g/raylib-64/commits/master/
I suspect you must be on an older version of the master branch. Can you sync the latest from the repo and try again?

Fixed in https://github.com/a740g/raylib-64/commit/5cb1dca674eb75eafaa7e1ab5b50947013ad1f62.


Update the JJB publisher to archive the new build artifacts.

OK, I don't think this patch is enough. Conformance log uploads also fail (https://pipelet.kubeme.io/job/kraken-upload-to-s3-kraken-e2e-logs/21/console), and this density test change was made to match the conformance log uploads.


Update kittens to 3.0.0-M2

Updates org.typelevel:kittens from 3.0.0-M1 to 3.0.0-M2.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.typelevel", artifactId = "kittens" } ]

labels: library-update, early-semver-pre-release, semver-spec-pre-release, commit-count:1

Superseded by #44.


buildroot "scorecard" action is failing on not valid SARIF

example: https://github.com/flutter/buildroot/actions/runs/5082436625
log
Uploading results
Error details: instance.runs[0].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error details: instance.runs[2].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error details: instance.runs[2].results[1].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error details: instance.runs[2].results[2].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error details: instance.runs[2].results[3].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error: Unable to upload "results.sarif" as it is not valid SARIF:
- instance.runs[0].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[1].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[2].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[3].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
Error: Unable to upload "results.sarif" as it is not valid SARIF:
- instance.runs[0].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[0].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[1].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[2].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format
- instance.runs[2].results[3].locations[0].physicalLocation.artifactLocation.uri does not conform to the "uri-reference" format

cc @sealesj

It seems like https://github.com/flutter/buildroot/commit/42583ce1ecc2bd3c21e234a4149af918fffef2df is the culprit here based on the commit message:
Updated the SARIF 2.1.0 JSON schema file to the latest from https://github.com/oasis-tcs/sarif-spec/blob/123e95847b13fbdd4cbe2120fa5e33355d4a042b/Schemata/sarif-schema-2.1.0.json

There is a bug files with the scorecards team (https://github.com/ossf/scorecard/issues/3063) which caused the filing of https://github.com/github/codeql-action/issues/1703.
Short term, does it make sense to roll back to 2.3.3 and then have dependabot ignore 2.3.4?

I reverted the patch to codeql-action and blocked 2.3.4 from being automatically updated again by dependabot. Closing


Release Google.Cloud.DataCatalog.V1 version 1.2.0

Changes in this release:

Commit 29c9961: docs: reformat comments in PolicyTagManager definition
Commit afadcef:

feat: Policy Tag Manager v1 API service
feat: new RenameTagTemplateFieldEnumValue API
feat: adding fully_qualified_name in lookup and search
feat: added DATAPROC_METASTORE integrated system along with new entry types: DATABASE and SERVICE
docs: Documentation improvements

Created release for Google.Cloud.DataCatalog.V1-1.2.0


Add Nightwatch.js test to 01-upload-a-file

Learning JavaScript and Nightwatch.js for the first time. Attempting to match Nightwatch code to original Ruby.

Apologies for my supremely slow response. Just started carving weekly time to work on my open source projects again. For JS, right now, I'm looking for the officially supported client bindings from the Selenium project (link). At some point, I might circle back and incorporate additional solutions like Nightwatch, Intern, WebdriverIO, etc.). But that's still TBD.


Update MD file on new branch 2017-27-09_01-12-52

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Replace the manifest YAML files with one single manifest YAML file

This PR consolidates all the manifest files of eventing into one single manifest file.
Fixes: #28

/lgtm


some keyboard shortcuts can't work on my win 10

Description
What steps will reproduce the problem?

I can't use Ctrl +1/2/4/5 to comment
But I can use other keyboard shortcuts normally.

What is the expected output? What do you see instead?
Please provide any additional information below
Version and main components

Spyder Version: 3.2.4
Python Version: 3.6.3
Qt Versions: 5.6.2, PyQt5 5.6 on Windows

Dependencies
pyflakes >=0.6.0 :  1.6.0 (OK)
pycodestyle >=2.3:  2.3.1 (OK)
pygments >=2.0   :  2.2.0 (OK)
pandas >=0.13.1  :  0.20.3 (OK)
numpy >=1.7      :  1.13.3 (OK)
sphinx >=0.6.6   :  1.6.3 (OK)
rope >=0.9.4     :  0.10.5 (OK)
jedi >=0.9.0     :  0.10.2 (OK)
nbconvert >=4.0  :  5.3.1 (OK)
sympy >=0.7.3    :  1.1.1 (OK)
cython >=0.21    :  0.26.1 (OK)
qtconsole >=4.2.0:  4.3.1 (OK)
IPython >=4.0    :  6.1.0 (OK)
pylint >=0.25    :  1.7.4 (OK)

Those are probably used or reserved by the operating system.
@dalthviz, please take a look at this one.

I just can't use any keyboard shortcuts like Ctrl plus numbers. I don't know how to fix it.

Hi @daxinnan what is your current keyboard layout?, could you try to test if setting this shortcuts in other programs present the same problem?

Thank you！That's because the Input I use(one Double Pin Input Solution). When I change to use MS Input,I can use the keyboard shortcuts normally.But I don't know why it causes that, can we fix it?@dalthviz

I'm not quite sure if we can do something, but thanks @daxinnan for the feedback about the way you manage to make it work again the shortcuts in your setup 👍


Can't push a chart to registry

I'm trying tu push a chart to registry, but i'm getting this error:
helm push cacheserver-core-chart-3.16.0.tgz https://.../sre --debug
Error: scheme prefix missing from remote (e.g. "oci://")
helm.go:84: [debug] scheme prefix missing from remote (e.g. "oci://")
helm.sh/helm/v3/pkg/uploader.(*ChartUploader).UploadTo
        helm.sh/helm/v3/pkg/uploader/chart_uploader.go:49
helm.sh/helm/v3/pkg/action.(*Push).Run
        helm.sh/helm/v3/pkg/action/push.go:69
main.newPushCmd.func1
        helm.sh/helm/v3/cmd/helm/push.go:48
github.com/spf13/cobra.(*Command).execute
        github.com/spf13/cobra@v1.3.0/command.go:856
github.com/spf13/cobra.(*Command).ExecuteC
        github.com/spf13/cobra@v1.3.0/command.go:974
github.com/spf13/cobra.(*Command).Execute
        github.com/spf13/cobra@v1.3.0/command.go:902
main.main
        helm.sh/helm/v3/cmd/helm/helm.go:83
runtime.main
        runtime/proc.go:255
runtime.goexit
        runtime/asm_amd64.s:1581

Output of helm version: version.BuildInfo{Version:"v3.8.0", GitCommit:"d14138609b01886f544b2025f5000351c9eb092e", GitTreeState:"clean", GoVersion:"go1.17.5"}
If i try to use http:// or https:// scheme, then i get error like:
Error: scheme "https" not supported

If i use repo name, then i get oci error:
#helm repo list
NAME                    URL
sre                     https://..../sre
#helm push cacheserver-core-chart-3.16.0.tgz sre --debug
Error: scheme prefix missing from remote (e.g. "oci://")

@jdolitsky Can you push a chart to ChartMuseum using the helm push command or do you have to use the ChartMuseum push plugin?

@jdolitsky Can you push a chart to ChartMuseum using the helm push command or do you have to use the ChartMuseum push plugin?

No, i can't push a chart using helm helm push.  I never used this plugin

I have a similar problem with a previously added repo. Did you solved the issue?

I have a similar problem with a previously added repo. Did you solved the issue?

I've managed to push my chart with version 3.6

I'm using the latest version: "v3.8.0" and "chartmuseum/helm-push" plugin, still getting same error.
Error: scheme prefix missing from remote (e.g. "oci://")

helm push command is not working instead of that, I used "cm-push"
Install the Plugin:
$ helm plugin install https://github.com/chartmuseum/helm-push
Push a chart to your favorite repository,
$ helm cm-push  ./myhelm-chart  helmchartmuseum
Ref: https://github.com/chartmuseum/helm-push
Thanks!

helm push command is not working instead of that, I used "cm-push"
Install the Plugin: $ helm plugin install https://github.com/chartmuseum/helm-push
Push a chart to your favorite repository, $ helm cm-push ./myhelm-chart helmchartmuseum
Ref: https://github.com/chartmuseum/helm-push
Thanks!

good!!

I just ran into this too. I never used chartmuseum and did not have the old helm push plugin.
Now on 3.9.3 I see the same issue as described here.
Regarding

I've managed to push my chart with version 3.6
This can't work without a plugin. I downloaded 3.6.3 and got

╰─ ./darwin-amd64/helm push app-0.1.2.tgz my-artifactory
Error: unknown command "push" for "helm"

Did you mean this?
	pull

Run 'helm --help' for usage.

╰─ helm version
version.BuildInfo{Version:"v3.9.3", GitCommit:"414ff28d4029ae8c8b05d62aa06c7fe3dee2bc58", GitTreeState:"clean", GoVersion:"go1.19"}

Same issue with helm 3.10.0
NAME       	URL
bitnami    	https://charts.bitnami.com/bitnami
my-charts	https://jfrog.domain.com/artifactory/my-charts

helm push helm-charts/test-chart-0.1.0/test-chart/ my-charts
Error: scheme prefix missing from remote (e.g. "oci://")

Should "helm push" work with ChartMuseum? According to the CM docs, you upload with either curl or the plugin: https://chartmuseum.com/docs/#uploading-a-chart-package

I had the same problem after upgrading to helm 3.10.2 and it seems the ChartMuseum plugin in it's recent version (installed as helm plugin install https://github.com/chartmuseum/helm-push) is needed and then helm cm-push ... is the command.  In Gitlab-CI this looks like so:
helm-package:
  stage: build
  image:
    name: alpine/helm:3.10.2
    entrypoint: [""]
  variables:
    CHART: chart
  before_script:
    - apk add git
    - helm plugin install --version=v0.10.3 https://github.com/chartmuseum/helm-push.git
    - >
      helm repo add ${CHART}
      --username ${CI_REGISTRY_USER}
      --password ${CI_REGISTRY_PASSWORD}
      ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/stable
  script:
    - helm package ${CHART} -d ${CHART}
    - helm cm-push ${CHART}/*.tgz ${CHART}

Thank you @jensens . Closing this as answered.

Error: scheme prefix missing from remote (e.g. "oci://")
I am getting this error while pushing my Chart to Amazon ECR.
Note : This comes up once in a while, after 1-2 hours the error goes away and I can start pushing again.
How do I fix it?
My Helm Version is 3.9.3

cm-push instead of push, then it works


TransactionScope not supported

Operations happening within a .NET transaction scope don't work properly.

Can now be handled by using a shared connection.


Add document generation task

Grunt task to create docs used for https://github.com/walmartlabs/lazojs.org/issues/19.
Probably belongs in a build task for lazojs.org, but unless there is any objection, this should work for now.

@michaeljacobdavis Is there a reason why we can't just list lazo as a dependency of lazojs.org and make the doc generation part of lazojs.org?

@jstrimpel Nope, it actually already is from https://github.com/walmartlabs/lazojs.org/pull/21. Good thinking!


[question] ZWaveError: Failed to send the command after 3 attempts

Having a lot of issues with my z wave network. Frequently it will start up ok, and then after a while it will abruptly stop working, and I get this error. When this happens, nothing on the network will work in terms of commands. It still receives notifications from sensors, but it is unable to turn on any lights/fans/etc.
This is what I see in the debug window.
2021-07-01 12:30:49.249 ERROR ZWAVE-SERVER: Z-Wave error Failed to send the command after 3 attempts (Status Fail)
ZWaveError: Failed to send the command after 3 attempts (Status Fail)
at Driver.sendMessage (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:2271:23)
at Driver.sendCommand (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:2405:28)
at Driver.trySendCommandSupervised (/usr/src/app/node_modules/zwave-js/src/lib/driver/Driver.ts:2494:15)
at MultilevelSwitchCCAPI.set (/usr/src/app/node_modules/zwave-js/src/lib/commandclass/MultilevelSwitchCC.ts:172:47)
at Proxy.MultilevelSwitchCCAPI. (/usr/src/app/node_modules/zwave-js/src/lib/commandclass/MultilevelSwitchCC.ts:311:33)
at ZWaveNode.setValue (/usr/src/app/node_modules/zwave-js/src/lib/node/Node.ts:752:14)
at Function.handle (/usr/src/app/node_modules/@zwave-js/server/dist/lib/node/message_handler.js:19:44)
at Object.node (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:37:91)
at Client.receiveMessage (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:91:99)
at WebSocket. (/usr/src/app/node_modules/@zwave-js/server/dist/lib/server.js:44:45
I am running the zwavejs2mqtt docker on an unraid system. The usb stick is the zooz 700 stick.
A reboot will seem to fix the issue for a little bit, but I am frequently right back where I started. I have tried to heal the network, I have rebooted, unplugged the USB and plugged it back in. Sometimes the issue will go away on its own. Any ideas?

According to the specifications, Status Fail:

Indicates that the network is busy (jammed).

There's something interfering with your stick so it cannot send anything. You could try putting it on an extension cord, away from metallic surfaces. Apparently, the USB ports themselves can be enough to cause interference.

Same issue here with my z-wave network (happening after a couple of hours/days)
I use a conbee 2 for zigbee and I have the impression that both are starting to malfunction at the same time, maybe a way to explore.
I will try to get some logs next days.

Interesting anecdote that may be helpful to others -- despite using an extension cable, I was experiencing this on a daily basis when using my UZB-7 with an Intel NUC. I've since moved the Z-Wave stick it to a dedicated Raspberry Pi 4 in a different location and have not experienced this a single time since.


Is there a way to add a class to a c3 object?

I am trying to add a background to a c3 gauge, and an issue that occurs when I have multiple gauges is that both backgrounds end up being hooked up to the first gauge that gets rendered because I am d3.selecting (.c3-chart-arcs) and then inserting the background as the first child. So my question is, is there a way to effectively add a class to a c3 object, particularlly the c3-chart-arcs g element.
I tried doing d3.select('c3-chart-arcs').node().setAttribute, but it always ends up breaking for both of them. And doing d3.classed() doesn't work either.

Hi @taichatha! This is more of a support question — would you mind please asking instead on the C3 Google Group or Gitter channel? Thanks!


Apex Pro - ghost keypress bugs when crypto-oled is running

oled crypto ticker works, but when python script  is running it is also causing weird ghost keypress bugs to the keyboard.
For example when crypto-oled  is running I no longer can select text  with ctrl+shift+alt +mouse pointer in sublime text
It is also randomly pressing CTRL key (tested with Aqua'S  Key Test). Or just portion of keys stops working completely. When I close  crypto-oled   keyboard no longer seem to have this issues.

A temporary solution can now be found under releases, v3.3. Hopefully, this fixes your problems. If not try updating the keyboard module or by turning the hotkey off.


comment error.

Laravel Version: 7.3.0
PHP Version: 7.3.15
Database Driver & Version:

Description:
I can't use comment.
\vendor\laravel\framework\src\Illuminate\View\Compilers\BladeCompiler.php
67:   protected $compilers = [
// 'Comments',
221: $value = $this->compileComponentTags(
$this->compileComments($this->storeUncompiledBlocks($value))
);
help me.
Steps To Reproduce:

sorry!
I was do it,
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
thanks!


Enrich Number fields with min/max attributes when the Integer rule is…

Min and max attributes are only added if the validation rule is Number. Also add those attributes if the validation rule is Integer.

Q
A

Is bugfix?
❌

New feature?
✔

Breaks BC?
❌

Thanks!


Transfer Belt.List docs

We transferred the names and type definitions, but explanations and examples are missing.
Current work: https://github.com/reason-association/reasonml.org/blob/master/pages/belt_docs/list.mdx
Belt List docs: https://bucklescript.github.io/bucklescript/api/Belt_List.html
Please comment on this issue if you would like to pick it up.

Happy to grab this! @nikgraf

Go for it @lessp 👍

already done, yay


docs: fix a tiny typo in docs/components.md

Signed-off-by: ChAnYaNG97<EMAIL_ADDRESS>NONE

/lgtm
rewriting the section can happen in a different PR (if someone picks it up), change looks good to me.

Hi @ChAnYaNG97
Thank you for your contribution. The documentation was updated in https://github.com/kubevirt/kubevirt/pull/7689 and therefore I am closing this PR.
/close


Language for specifying P4_16 architectures

I talked about this topic at an earlier P4 LDWG meeting.  Creating this issue to track any progress on the topic.  Here is a link to my published work on this: https://github.com/jafingerhut/p4-guide/tree/master/specifying-p4-architectures

I'm very excited to see people pursue this direction!


Add test cases

@eladiw - I added the following fix:
      try {
        ///...

        // Adding a timeout to make sure Flux cycle is complete
        setTimeout(done, 100);

      } catch (e) {
        return done(e);
      }

This way it's clearer what the setTimeout is for


Add example for configuring JS collocation in _Layout.cshtml

This advice should work for Razor pages and for MVC views. I'm not sure about scripts provided by Razor class libraries, I don't use them personally.

Hello @sliekens ... It's a reasonable tip, but this would need to call out that every page of the layout must have a collocated JS file.
@Rick-Anderson ... Are you interested in this?

@guardrex I see why you might think that it always adds a script tag to every page, but asp-src-include omits the script tag when there are no matching files. So, this allows a mix of pages with and without collocated scripts.

I see. I looked it up, and it didn't say that was the case ...
https://learn.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/script-tag-helper?view=aspnetcore-8.0#asp-src-include

For context about why this works:
<!-- <script asp-src-include="@(ViewContext.View.Path).js"></script> -->
<script asp-src-include="/Pages/Index.cshtml.js"></script>

The ScriptTagHelper sees there is no src attribute, so it deletes the original <script> tag.
https://github.com/dotnet/aspnetcore/blob/48a07213d4d8df15c6dffccd161844842c196998/src/Mvc/Mvc.TagHelpers/src/ScriptTagHelper.cs#L307-L313
Then it uses the string "/Pages/Index.cshtml.js" as a globbing pattern to find matching files. It then renders a new script tag for each matching file. Since the pattern doesn't include any wildcards (*), it should either find 1 or 0 matching files. If no matching file is found, no script tag is rendered.

update the PR with a note about this behavior?

Probably best to wait for Rick to see this. It seems harmless enough as a tip. Rick might want to document the underlying behavior in the Script Tag Helper article and cross-link to it from here. The cross-link will probably be to xref:mvc/views/tag-helpers/built-in/script-tag-helper#asp-src-include. And ... he can dissolve the INCLUDE file at the same time.
He'll be along in a few hours ... he's in a different time zone 🌔.

@Rick-Anderson sorry, what's an RP sample? 😀

@Rick-Anderson sorry, what's an RP sample? 😀
/edit: having just realized RP means Razor Pages, what are your expectations for such a sample?

Sorry for using RP, I should have spelled it out. Just the simplest possible sample that demonstrates JS collocation in _Layout.cshtml and asp-src-include omits the script tag when there are no matching files. So, this allows a mix of pages with and without collocated scripts.
You can do the sample in another PR and add add closes  #33400

Okay @Rick-Anderson I canceled the automerge because I had already pushed a part of the sample to this branch. I will move the changes over to a new PR.

@sliekens sorry about that, merging here would have been fine. I didn't realize you could generate a sample that fast and didn't want to hold up this PR. Either way is fine.

Okay, I pushed the sample to this branch after all.
I used dotnet new razor, removed the Privacy page and instead added two pages.

a page with a collocated JS script

another page without any script

@Rick-Anderson if you could review again, I hope this is what you had in mind.

@Rick-Anderson if you could review again, I hope this is what you had in mind.

Looks great. I'll test it tomorrow.

@sliekens  moved to #33697, I carried your commit so you'll get credit for the merge.

Cool, thanks 😎👍


Added changes to dist.Dockerfile and docker-compose.yml

Support GDS and APOC plugins + fix the networking issue with the localhost as described.
When you use localhost url inside a container, it doesn't treat it as the host localhost, but inside of the container.
There are two options you can go about. One is to add:
network_mode: host
to the cartography service. Then the localhost points to the host machine and it should find Neo4j at localhost:7474.
Instead of specifying --neo4j-uri=bolt://localhost:7687 you can specify --neo4j-uri=bolt://neo4j:7687 to point at Neo4j instance container. The URL is identical to the service name.

Hi @VJftw, @ryan-lane - any chance you have cycles to help take a skim at the Docker changes?

@achantavy @ryan-lane please check now.

You removed the user and image lines from the cartography container in the
compose file.
We want the container to run as the user defined in the image (defined by
number; its possible that the image needs to add a user explicitly rather
than just specifying the uid?). We don't want the container running as
root, because that is insecure.
If the image line is removed, then to use the docker compose setup, you'd
have to build the image to use it. With the image line defined, you can run
cartography and it'll pull the image from the registry.
I'm asking for you to keep those lines in. If it's not working with that,
let's fix things to make it work.
On Fri, Aug 26, 2022, 8:11 PM Steve Solun @.***> wrote:

@.**** commented on this pull request.
In docker-compose.yml
https://github.com/lyft/cartography/pull/905#discussion_r955934803:

cartography:

image: lyft/cartography
user: cartography

build:

 context: .

 dockerfile: dist.Dockerfile

This is a working docker-compose setup, if someone wants to change
anything, let them change or tell me exactly what should I change in order
to finish this PR. Maybe we can add some explanations to the docs? Please
advise how would you like to proceed.
—
Reply to this email directly, view it on GitHub
https://github.com/lyft/cartography/pull/905#discussion_r955934803, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AALXSMW4Q4OJXYYSB73OJZTV3CQ7JANCNFSM57UK4KGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

@ryan-lane for some reason I am getting the following error:
docker compose up
[+] Running 1/9
 ⠇ neo4j Pulling                                                                                2.9s
   ⠿ a9fe95647e78 Already exists                                                                                0.0s
   ⠦ 4015b6e8cc8d Pulling fs layer                                                                                0.6s
   ⠦ fd343789f78f Pulling fs layer                                                                                0.6s
   ⠦ f361af981f24 Pulling fs layer                                                                                0.6s
   ⠦ 2b95c30758e7 Waiting                                                                                0.6s
   ⠦ e6e9cfe06407 Waiting                                                                                0.6s
   ⠦ fc07026944f6 Waiting                                                                                0.6s
 ⠿ cartography Error                                                                                2.9s
Error response from daemon: pull access denied for lyft/cartography, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

And the end of docker-compose is looks like:
cartography:
    # build:
    #   context: .
    #   dockerfile: dist.Dockerfile
    image: lyft/cartography
    user: cartography
    init: true
    restart: on-failure
    depends_on:
      - neo4j
    environment:
      - EXPERIMENTAL_NEO4J_4X_SUPPORT=True
    volumes:
      - /Users/stevesolun/.aws:/root/.aws/

@ryan-lane no such repository on DockerHub, I will build and upload it there but maybe you guys want it to be official.

@ryan-lane please check it out now :)

Ah, I think the official one is at github, not docker hub. The reference
needs to be fixed!
On Sat, Aug 27, 2022, 12:13 AM Steve Solun @.***> wrote:

@ryan-lane https://github.com/ryan-lane no such repository on
DockerHub, I will build and upload it there but maybe you guys want it to
be official.
—
Reply to this email directly, view it on GitHub
https://github.com/lyft/cartography/pull/905#issuecomment-1228619484,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALXSMQJXV7KSAJ3RGKHSKTV3DNJDANCNFSM57UK4KGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Sorry it didn't work, I have posted the error.
If you want me to change the reference, fix the image/image name.
@ryan-lane I think everything is there and we can just approve it to let people use it. Just guide me with image reference. Hopefully we will finish this long PR.

@ryan-lane I have fixed the image, please have a look now. Added some examples for people to use out of the box.

Looks good, just one last piece of feedback about removing the version number from the image.

@achantavy looks good to me. I can't properly approve/merge because something is going on with github and my owners invitation. can you merge?

@steve-solun can you fix the lint error? It's an issue with missing EOF character I believe.


Fix README

Fixes
Proposed Changes
Added spacing between words in README.

Hi Justin!
I see commits which are not related to your changes!
Could you pull top-commits from develop branch please?
After that I'm asking you to rebase your feature branch plz!
If rebase operation failed with merge conflicts, it is better to create new feature branch and cherry pick your commit.
Good luck!

Justin!
The rebase operation has succeeded!
Congrats!


python -> python3

If you want use Python 3.4+, so in ubuntu 18.04 you have to install setup.py, with python3 and not simple python.
And, I never code in Python, so you never tell us, what file type create: .txt, .py, .xls ...
Tks for this project.

Thanks for the tip about Ubuntu, I forgot python 2 is still the default there.
I added a line to the README about config file extension.


Define the motors and actions for the lift

 Define the motors and actions for the lift #6

Add Dcmotor for Lift


rake doesn't follow redirects on nuget

When I run rake it tries to download NUnit package; the response is a redirect but Net::HTTP doesn't follow those.  I had to hack the Rakefile not to delete old files, and download and extract NUnit manually.
On my Debian system I have NUnit installed as a separate package anyway...

I actually just updated the URL in the Rakefile this morning: a290481676f4ee69c40b1df717a211cf0929c530. Broken?

I guess so; it's the new one that's failing for me.

Ack. Need to figure out how to make Ruby's HTTP client follow redirects…
On Sat, Dec 10, 2011 at 3:17 PM, Chip Salzenberg
<EMAIL_ADDRESS>wrote:

I guess so; it's the new one that's failing for me.

Reply to this email directly or view it on GitHub:
https://github.com/kayak/kayak/issues/23#issuecomment-3094410


Condor cli

Merged dockerize changes from develop branch

Commented out the unused import in CondorUtils.java to enable compilation


[Excel] (Custom functions) Fix XHR sample

Docs Build status updates of commit 06d48fd:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/custom-functions-web-reqs.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


check other cluster role bindings for subscription admin

Signed-off-by: Roke Jung<EMAIL_ADDRESS>Check other cluster role bindings to determine subscription admin role.

/hold

/lgtm

The test failure is not related to this change. Merging.


Features/background location update

I was facing the scenario within you have to modify the preset of Background Location updates even when you start with an authorization like "When In Use".
Whit this in mind, I just added the possibility by an entity, to modify this capability as well.
For my personal project I found it very useful and handy to manage.
Hope you appreciate,
Dario

@d4r1091 : I was finally looking at this with a coworker. In line 134 to 142 of INTULocationManager.m, there's code that will automatically set this based upon your info.plist entry for UIBackgroundModes. Apple's documentation suggests to me that even if you set allowsBackgroundLocationUpdates to true, without the correct entry in the info.plist your app won't get background updates.
We don't understand why an app would ever want to set this if it's not going to work.
I'm going to close this, but feel free to add a comment if you think that isn't the case or we missed something.

Hey @lwdupont sorry for the big delay :)
Basically, the reason why I added that method was because of my intention to enable the background notification updates only in some certain conditions.
i.e. in my app I've a "radar" function that aim to use the background location whether normally I set it to "when in use"

No worries on the delay, and yes, makes sense. Vs always on or always off. I'll review it one more time in the next few days, but seems reasonable to me. cc @eoghain

I could do without all of the whitespace changes, but the actual code change makes sense to me.

Yeah sorry for the whitespaces...it's been a problem of indentation :) if you want I'll review adding only the needed lines

That'd be great @d4r1091, appreciate it.


HasManyQuery.RESTAdapterMixin - causing delete to no longer work.

<EMAIL_ADDRESS><EMAIL_ADDRESS>It appears that when destroying a record that has the HasManyQuery.RESTAdapterMixin in the adapter, it caused the following error to occur with the JSONAPIAdapter.
Cannot set property 'jqXHR' of undefined
See this stackoverflow quesion
After removing the Mixin from the adapter, everything is working again.

Thanks for the bug report, this should have been fixed in v0.1.1, please try updating to the latest version. Let me know if it is still an issue.

Yes updating worked.


enforcer helm chart doesn't support setting up multiple gateways

The current helm chart doesn't support passing values of multiple gateways/envoys. Raising this issue to resolve it.
https://github.com/aquasecurity/aqua-helm/blob/master/enforcer/templates/enforcer-daemonset.yaml#L53
Update the  enforcer-daemonset.yaml:
value: {{ .Values.gate.host | default "aqua-gateway-svc:8443" }}
And then pass a comma separated list of host:port similar to the following in values.yaml:
gate:
host: <IP_ADDRESS>:8443,<IP_ADDRESS>:8443

The Enforcers are able to pass in multiple GW values by the 'AQUA_SERVER' environment variable (e.g., AQUA_SERVER=aqua-gateway:8443, aqua-gateway-svc:8443, and so on).  As you pointed out, the parsing is done incorrectly in the enforcer/values.yaml on line 53.

The Enforcers are able to pass in multiple GW values by the 'AQUA_SERVER' environment variable (e.g., AQUA_SERVER=aqua-gateway:8443, aqua-gateway-svc:8443, and so on). As you pointed out, the parsing is done incorrectly in the enforcer/templates/enforcer-daemonset.yaml on line 53.

@coolhitaga thanks for pointing this out. The Enforcers are in fact able to pass in multiple GW values by the 'AQUA_SERVER' environment variable (e.g., AQUA_SERVER=aqua-gateway:8443, aqua-gateway-svc:8443, and so on). As you pointed out, the parsing is done incorrectly in the enforcer/templates/enforcer-daemonset.yaml on line 53.

@coolhitaga thanks for raising the awareness on this problem.  The Enforcers are in fact able to pass in multiple GW values by the 'AQUA_SERVER' environment variable (e.g., AQUA_SERVER=aqua-gateway:8443, aqua-gateway-svc:8443, and so on). As you pointed out, the parsing is done incorrectly in the enforcer/templates/enforcer-daemonset.yaml on line 53.

Aqua team, is there an update on this issue. By when do you think we can have a fix of it?

@coolhitaga I believe @rshmiel is working on this issue.  Feel free to submit a PR so we can resolve the issue quicker.

We do work on a fix and it will be ready soon
Will update when it is

@ericgomes56 @coolhitaga  Hey,
we have just merged this PR: #184
@KoppulaRajender FYI

thanks @rshmiel @ericgomes56 @KoppulaRajender


Feat/navigation

In addition to changing the navigation, I also refactored some parts of the code and added basic animations with frammer-motion to give the site some style.

@mraguinaldo Obrigado pela PR

De nada mano.
António Pedro @.***> escreveu no dia domingo,
17/09/2023 à(s) 09:34:

@mraguinaldo https://github.com/mraguinaldo Obrigado pela PR
—
Reply to this email directly, view it on GitHub
https://github.com/angolaosc/aosf-website/pull/9#issuecomment-1722425095,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A234E7H44EEK35B3BNAHOSTX22YX3ANCNFSM6AAAAAA43O4F5M
.
You are receiving this because you were mentioned.Message ID:
@.***>


Feature 33 develop GitHub

Since we are not renaming METdbLoad to METdatadbLoad, the changes for moving from NCAR to DTCenter organization are confined to the GitHub issue templates. Recommend that we delete the master branch and make develop the new default branch so that these updated GitHub issue templates actually take effect.

Merging the pull request. Made develop the default. Looks like this merge will just update the templates.


Kafka/RabbitMQ proxy

With the proxy, applications written for Kafka should be able to switch to RabbitMQ with limited code changes.

We need to reconfirm, if that's needed


[software-bridges 1/x] Update API to support automatic bridge creation

Update API to support automatic bridge creation
SriovNetworkNodePolicySpec - Bridge field added
SriovNetworkNodeStateSpec - Bridges field added
SriovNetworkNodeStateStatus - Bridges field added
VirtualFunction - RepresentroName field added
Update API according to the design doc

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

9 of 133 (6.77%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.3%) to 38.324%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

api/v1/sriovnetworknodepolicy_types.go
0
3
0.0%

api/v1/zz_generated.deepcopy.go
9
130
6.92%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
4884

Relevant Lines:
12744

💛  - Coveralls

@zeeke @adrianchiris Thanks for the review. I addressed your comments.


Eager produces n + 1 requests with belongs_to

Using the following:
type Room struct {
    ID       int          `db:"id"`
    // [...]
    Provider RoomProvider `belongs_to:"room_provider"`
}

rooms := models.Rooms{}
q := tx.Eager("Provider")
if err := q.All(&rooms); err != nil {
    return err
}

The SQL produced is 1 query for the main request, then n requests (one for each row) to fetch providers. In the case of 1 to 1 relations, it should use LEFT JOIN, which is more efficient.
More reference about this issue: https://use-the-index-luke.com/sql/join/nested-loops-join-n1-problem

I think this would also be valuable for 1 to many relations, as the link describes.  Having to do N queries for relatively simple relations and small result set returns, the network time far outstrips the extra processing time.
While I can't speak for all active record implementations, some ORM frameworks definitely make this decision, including your referenced link and Django's ORM.  SQLAlchemy also can do 1-to-many like this.

from my understanding, the active record rubygem implement eager load using below two queries
select * from rooms ....;
select * from room_providers where room_id IN (1,3,5, ....);

first, it fetch all rooms from db and collect distinct room ids
then it fetch room providers using IN (...) query
finally it bind room provider orm object to corresponding room object.
it seems GORM implment eager load in the same way.
http://doc.gorm.io/crud.html#preloading-eager-loading

Has anyone started tackling this one yet?  I'd be game for it as it's currently impacting a project I'm working on.

I haven't had time to do something about this yet, unfortunately!  I'd be happy to test it out on my own project and offer input as you work through ideas.

are you saying that the query only does 1 query?
i dont recommend this. this is not the way rails active record works.
once you do a left join, you will have problem with other select fields and where condition because it will start asking you to put in full table namespace to select and duplicate record may happen if there are multiple parent (which i know shouldn't be, but will happen)

It is the way the ActiveRecord implementation in the link works, as well as the way that several very prominent ActiveRecord implementations work.  Django's is probably the most well-known, and they just using table aliasing to build the query.  There's no issues with multiple parents since each inclusion of each table is aliased to a unique name (t1, t2, t3, etc.).  This behavior is far more useful for the average case than requiring users who are already intentionally asking for Eager behavior to have to still do their own 1-N query batches with IN clauses.  Most of the uses of Eager we see in our own application implementations are not 1-1, they're 1-N.

@stanislas-m is referring to using only 1 query as in there will be no sub query with IN clauses.
am i right?

As far as I read, yes.  I meant the situation where query 1 gets the list of IDs you want to select, and a separate query 2 use IN clauses to get the related tables of records, that's what I wanted to see avoided for 1-N relations.

Thinking about it you are going to do loops over the results either way... I think going for the more end-user usable approach (run the original All, grab ids, do where on other table with IN of the ids and then merge the results into our original objects) makes the most sense.

That strategy works very poorly performance-wise for returning result sets across nested tables, as you're now generating N queries worth of IN clauses.  To refer to the original link, my expectation would be:
c.add(Restrictions.ilike("lastName", 'Win%'));

c.setFetchMode("sales", FetchMode.JOIN);
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

List<Employees> result = c.list();
It generates the following query:

select this_.subsidiary_id as subsidiary1_0_1_
     , this_.employee_id as employee2_0_1_
       -- MORE this_ columns on employees
     , sales2_.sale_id as sale1_3_
       -- MORE sales2_ columns on sales
  from employees this_
  left outer join sales sales2_
          on this_.subsidiary_id=sales2_.subsidiary_id
         and this_.employee_id=sales2_.employee_id
 where lower(this_.last_name) like ?```

One query, where the related tables can have N results in them, and the construction of those results back to models happens as part of the Eager fetch.  This would make has_one and has_many operate just like belongs_to, and offers great benefits in not creating excessively-long SQL statements with giant IN clauses, or having to create N/batch_size queries to avoid excessively-long SQL statements.  If the user really wants to split things into IN clauses, that's something they can do independently, but they can't build up the mapping of the result set of a nested Eager query by themselves.

oh no, arent we already using in clause for the eager part?

Yes, that's exactly what I was hoping this ticket would be fixing.

To summarize: the goal of this fix is to reduce the n+1 queries, by performing two queries, the first ALL query to get a list of records, and a second IN query to get a list of records which match the id's returned by the first query.
Currently, After an all query is performed, the Eager method iterates over the rows returned by all and performs an individual select = query for each of the rows.
My approach was going to be to create a separate boolean method(say "Includes" since that matches the rails syntax, but something like "Accumulate" might be more accurate that tells eager to do the IN query rather than iterate over each row.  I was then going to modify/refactor the "eagerAssocations" method in finders.go to accommodate this difference.
I could simply make this the default behavior, but I guess I wonder why Rails doesn't have this as the default behavior?

So I'm curious, do all dialects support sub-queries? Because if they do then instead of doing the id collect phase after the all and building a giant id array IN query for the second, we could basically have the first query be a sub-query for the second which could make things easier.
By way of the above example:
1st query: select * from rooms
2nd query: select * from providers where id in (select provider_id  from rooms) (note that we could use the same original statement for the sub-query with the only change being in the projection, so any wheres, limits, etc would cross over as well)
The results of this can be loaded into a map by id to make faster associations in the joining loop.
I'm just thinking out load... ^^

in rails it will collect all ids and make it a another query with In clauses (without left join).
and this is done by paginated result, meaning 1 eager query per page.
@mclark4386 sounds good, but im still thinking how it will effect complicated queries from original query

I don't think anyone has started any code for this yet, so please mention any complicated queries you think of that my be an issue @u007 and others! Will make for good test cases for whoever ends up working on it!

I've got some code written for this, nothing pretty.  I can push my branch up if anyone wants to take a look.  I was able to rewrite the function so that it would perform the one query (I think it does in fact use the subquery that @mclark4386 mentioned above) but where I'm at now is that it's associating all the join records with the last record from the initial query.
I think this is because the associations each include a pointer to the original record, and some of the magic behind the query automagically associates the join records with the record included in the association.
It seems like there are two paths forward:
1: Create an intermediary that pulls the needed info out of the association, run the query independently (I think this reference is what's linking the join query to the original all query) https://github.com/gobuffalo/pop/blob/master/finders.go#L208  and then stich the two back together.
The other would be to dig into the internals of the query and association, which I would imagine would be the better designed solution, but I may need some help with that spelunking.

Guys I have worked on a proposal a couple of week ago,  I've decided to share my progress with all of you. Please take a look when you have the chance and share your thoughts. This issue has got a lot of attention lately and I really would like to contribute on something to solve this.
https://github.com/gobuffalo/pop/pull/146

hi @mclark4386 i think its not possible to query based on parent query. we do have eager support for custom query. therefore the ideal way todo it will be alike rails, pick all current ids and put it as a where clause for subsequence query

This should be fixed with #146. Thanks @larrymjordan!


More classes needed

I need more classes

Class for handeling the Load and SPC Loadcollector as well as the Loadstep creation
Class for the Material/Property Handling and especially the Optimization Property

partially closed by #4

closed by #5


Bluetooth: ATT: Fix handling to EATT channels

EATT channels use bt_l2cap_chan_send which does return the number of
bytes sent on success not 0 as bt_l2cap_send.
Signed-off-by: Luiz Augusto von Dentz<EMAIL_ADDRESS>

@jhedberg @joerchan shall we push this one then, it doesn't seem there is any comment pending resolution.


[Feature] Workers, operator and bastion hosts deployed with VNIC without associated network security group

Operator should have a NSG - make sure you are using the latest. Worker is being worked on by @karthicgit and you'll be able to specify your nsgs after the 1st run. We dont use NSG for bastion.


Contradicting information about Segoe Fluent Icons font

Quoted from Icon list:

the Segoe Fluent Icons font includes many more icons than we can show here

The following tables display all Segoe Fluent Icons glyphs

It seems to me that all glyphs are listed. Can this be confirmed?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 15e1f4b4-3d25-c08c-e3b0-12011d3bba0f
Version Independent ID: 3b140070-493f-0b2c-f7c4-3fb89192d2d0
Content: Segoe Fluent Icons font - Windows apps
Content Source: hub/apps/design/style/segoe-fluent-icons-font.md
Product: uwp
Technology: design
GitHub Login: @hickeys
Microsoft Alias: hickeys

I think the shown icons are more like advised ones. The font indeed has many more, including deprecated ones.

Thanks for that answer.

I'm sure there are people who have a much better answer though...


Fix Caching Logic

If we try to add a user or remove a user from a group, it takes ages to clean that up. we should be able to remove this cache logic and make this group caching much smoother.

Fixed with this commit`