Unable to create K8s 1.17 Shoots

/area quality
/kind bug
/kind regression
What happened:
Unable to create K8s 1.17 Shoots.
What you expected to happen:
To be able to create K8s 1.17 Shoots.
How to reproduce it (as minimally and precisely as possible):

Create a K8s 1.17.17 Shoot

Make sure that the creation fails with:

  lastErrors:
    - description: >-
        task "Waiting until the Kubernetes API server can connect to the Shoot
        workers" failed: retry failed with context deadline exceeded, last
        error: could not forward to vpn-shoot pod (timeout after 5 seconds):
        error forwarding ports: error upgrading connection: error dialing
        backend: dial tcp <IP_ADDRESS>:10250: i/o timeout
      taskID: Waiting until the Kubernetes API server can connect to the Shoot workers
      lastUpdateTime: '2022-04-21T11:53:46Z'

The vpn-seed sidecar container fails to connect to the apiserver while fetch the vpn-shoot Service:
$ k -n shoot--foo--bar logs kube-apiserver-59b46dfc5b-h5d9w vpn-seed

[Thu Apr 21 11:55:39 UTC 2022]: No tunnel endpoint found
[Thu Apr 21 11:55:44 UTC 2022]: trying to identify the endpoint (load balancer name of vpn-shoot service) myself...
[Thu Apr 21 11:55:44 UTC 2022]: error: could not identify any endpoints
[Thu Apr 21 11:55:44 UTC 2022]: No tunnel endpoint found
[Thu Apr 21 11:55:49 UTC 2022]: trying to identify the endpoint (load balancer name of vpn-shoot service) myself...
[Thu Apr 21 11:55:49 UTC 2022]: error: could not identify any endpoints
[Thu Apr 21 11:55:49 UTC 2022]: No tunnel endpoint found
[Thu Apr 21 11:55:54 UTC 2022]: trying to identify the endpoint (load balancer name of vpn-shoot service) myself...
[Thu Apr 21 11:55:54 UTC 2022]: error: could not identify any endpoints
[Thu Apr 21 11:55:54 UTC 2022]: No tunnel endpoint found

The failing part is https://github.com/gardener/vpn/blob/4d6e7282c4e995b84b5099a6a24028f0d19ebfc3/seed/network-connection.sh#L56-L66.
/ # curl -vvv \
>         --connect-timeout 5 \
>         --max-time 5 \
>         --silent \
>         --cacert /srv/secrets/vpn-seed/ca.crt --cert /srv/secrets/vpn-seed/tls.crt --key /srv/secrets/vpn-seed/tls.key \
>         --header "Accept: application/json" \
>         --request GET \
>         "https://kube-apiserver/api/v1/namespaces/kube-system/services/vpn-shoot"
*   Trying <IP_ADDRESS>:443...
* TCP_NODELAY set
* Connection timed out after 5001 milliseconds
* Closing connection 0

Anything else we need to know?:
Environment:

Gardener version: 61e391ecb37013c8fa0637136bb03ba9f4ddac91
Kubernetes version (use kubectl version):
Cloud provider or hardware configuration:
Others:

What is the issue here, i.e. why is the vpn-seed unable to connect?

kube-apiserver logs are filled with
I0421 11:47:31.790068       1 aggregator.go:229] Finished OpenAPI spec generation after 643.234728ms
I0421 11:47:32.911152       1 log.go:172] http: TLS handshake error from <IP_ADDRESS>:54314: local error: tls: bad record MAC
E0421 11:47:34.287614       1 authentication.go:104] Unable to authenticate the request due to an error: x509: certificate
signed by unknown authority
E0421 11:47:34.996896       1 authentication.go:104] Unable to authenticate the request due to an error: x509: certificate
signed by unknown authority
E0421 11:47:36.150202       1 authentication.go:104] Unable to authenticate the request due to an error: x509: certificate
signed by unknown authority
I0421 11:47:37.964542       1 log.go:172] http: TLS handshake error from <IP_ADDRESS>:54336: local error: tls: bad record MAC
E0421 11:47:37.994918       1 authentication.go:104] Unable to authenticate the request due to an error: x509: certificate
signed by unknown authority

Unfortunately, I will be OOO soon, so I can't try myself, but maybe it is because of https://github.com/gardener/gardener/blob/a64cf673641b14692c7a1656bf67302e8c154577/pkg/operation/botanist/component/kubeapiserver/secrets.go#L328 - can you try changing this to secretsmanager.SignedByCA(v1beta1constants.SecretNameCACluster)?
I see that the cluster CA is used in vpn-shoot when the ReversedVPN feature is disabled (https://github.com/gardener/gardener/blob/master/pkg/operation/botanist/component/vpnshoot/vpnshoot.go#L157) but here we sign with the client CA which is a mismatch.

Unfortunately, I will be OOO soon, so I can't try myself, but maybe it is because of
https://github.com/gardener/gardener/blob/a64cf673641b14692c7a1656bf67302e8c154577/pkg/operation/botanist/component/kubeapiserver/secrets.go#L328

can you try changing this to secretsmanager.SignedByCA(v1beta1constants.SecretNameCACluster)?
I see that the cluster CA is used in vpn-shoot when the ReversedVPN feature is disabled (https://github.com/gardener/gardener/blob/master/pkg/operation/botanist/component/vpnshoot/vpnshoot.go#L157) but here we sign with the client CA which is a mismatch.

I will try. Thanks.

/ # curl -vvv \
>         --connect-timeout 5 \
>         --max-time 5 \
>         --silent \
>         --cacert /srv/secrets/vpn-seed/ca.crt --cert /srv/secrets/vpn-seed/tls.crt --key /srv/secrets/vpn-seed/tls.key \
>         --header "Accept: application/json" \
>         --request GET \
>         "https://<IP_ADDRESS>/api/v1/namespaces/kube-system/services/vpn-shoot"

Gives following error
Unable to get Local Issuer Certificate
We need to use ca.crt here to mitigate the issue https://github.com/gardener/gardener/blob/28329fd8a93051f6c8cd92767cd5a981e52be589/pkg/operation/botanist/component/kubeapiserver/deployment.go#L741-L744
This seems to solve the issue describe above
{
	Name:  "APISERVER_AUTH_MODE_CLIENT_CERT_CA",
	Value: volumeMountPathCA + "/" + secrets.DataKeyCertificateCA,
},


Celery worker crashes

Hi,
Fresh build, didn't modified anything.
Ubuntu 21.10
Docker version 20.10.12, build e91ed57
docker-compose version 1.29.2, build 5becea4c
worker_1    | [2022-03-01 10:38:31,399: CRITICAL/MainProcess] Unrecoverable error: TypeError('Channel._connparams.<locals>.Connection.disconnect() takes 1 positional argument but 2 were given')
worker_1    | Traceback (most recent call last):
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 923, in create_channel
worker_1    |     return self._avail_channels.pop()
worker_1    | IndexError: pop from empty list
worker_1    |
worker_1    | During handling of the above exception, another exception occurred:
worker_1    |
worker_1    | Traceback (most recent call last):
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/retry.py", line 45, in call_with_retry
worker_1    |     return do()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 608, in <lambda>
worker_1    |     lambda: self._connect(), lambda error: self.disconnect(error)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 673, in _connect
worker_1    |     raise err
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 661, in _connect
worker_1    |     sock.connect(socket_address)
worker_1    | TimeoutError: [Errno 110] Connection timed out
worker_1    |
worker_1    | During handling of the above exception, another exception occurred:
worker_1    |
worker_1    | Traceback (most recent call last):
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/worker.py", line 203, in start
worker_1    |     self.blueprint.start(self)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/bootsteps.py", line 116, in start
worker_1    |     step.start(parent)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/bootsteps.py", line 365, in start
worker_1    |     return self.obj.start()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 326, in start
worker_1    |     blueprint.start(self)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/bootsteps.py", line 116, in start
worker_1    |     step.start(parent)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/consumer/connection.py", line 21, in start
worker_1    |     c.connection = c.connect()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 422, in connect
worker_1    |     conn = self.connection_for_read(heartbeat=self.amqheartbeat)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 428, in connection_for_read
worker_1    |     return self.ensure_connected(
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 454, in ensure_connected
worker_1    |     conn = conn.ensure_connection(
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/connection.py", line 382, in ensure_connection
worker_1    |     self._ensure_connection(*args, **kwargs)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/connection.py", line 434, in _ensure_connection
worker_1    |     return retry_over_time(
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/utils/functional.py", line 312, in retry_over_time
worker_1    |     return fun(*args, **kwargs)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/connection.py", line 878, in _connection_factory
worker_1    |     self._connection = self._establish_connection()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/connection.py", line 813, in _establish_connection
worker_1    |     conn = self.transport.establish_connection()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 947, in establish_connection
worker_1    |     self._avail_channels.append(self.create_channel(self))
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 925, in create_channel
worker_1    |     channel = self.Channel(connection)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/kombu/transport/redis.py", line 679, in __init__
worker_1    |     self.client.ping()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/commands/core.py", line 954, in ping
worker_1    |     return self.execute_command("PING", **kwargs)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/client.py", line 1173, in execute_command
worker_1    |     conn = self.connection or pool.get_connection(command_name, **options)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 1370, in get_connection
worker_1    |     connection.connect()
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 607, in connect
worker_1    |     sock = self.retry.call_with_retry(
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/retry.py", line 48, in call_with_retry
worker_1    |     fail(error)
worker_1    |   File "/home/python/.local/lib/python3.10/site-packages/redis/connection.py", line 608, in <lambda>
worker_1    |     lambda: self._connect(), lambda error: self.disconnect(error)
worker_1    | TypeError: Channel._connparams.<locals>.Connection.disconnect() takes 1 positional argument but 2 were given
hellodjango_worker_1 exited with code 0

any clues?

Hi,
Based on:
worker_1    |     sock.connect(socket_address)
worker_1    | TimeoutError: [Errno 110] Connection timed out

It looks like maybe it can't connect to Redis.
After you docker-compose up does Redis start up successfully?

yep, it was availability issue. It's working fine now, thanks! Great stuff :+1:


support saving a subset of components

The solution to this is to do the following with the current API:

serialize current storage
remove the unwanted components from the entities that contain them

currently you can't really modify entities you are iterating (planned)
the app must have this information with the current API which is bad

serialize storage with the removed components

This feature might be worth implementing in the future if this is deemed to heavy for some usecases, but as is, it is not worth the complexity.


[BUG] test_cast_float_to_timestamp_side_effect intermittently fails on 3.3.0 based CDH

Describe the bug
It was reported that the newest version of CDH (which is not yet released) based on Spark 3.3.0 using spark rapids 22.06 is intermittently failing test test_cast_float_to_timestamp_side_effect.
https://github.com/NVIDIA/spark-rapids/blob/branch-22.06/integration_tests/src/main/python/cast_test.py#L389
When it is wrong the results are:
AssertionError: GPU and CPU timestamp values are different at [0, '(IF(c_b, CAST(0 AS TIMESTAMP), CAST(c_f AS TIMESTAMP)))']
.....
cpu = datetime.datetime(1969, 12, 31, 16, 0, 1)
gpu = datetime.datetime(1969, 12, 31, 16, 0)

note it look slike the python process might not be in UTC here, but when they run the tests the java should be in UTC:
--conf spark.driver.extraJavaOptions=-Duser.timezone=UTC \
--conf spark.executor.extraJavaOptions=-Duser.timezone=UTC \
--conf spark.sql.session.timeZone=UTC \
--driver-java-options '-ea -Duser.timezone=UTC ' \

this looks like its just an issue with the tests not ignoring the order.  I was able to reproduce this on CDH cluster by removing the ansi conf and check to skip if < 3.3.0.
failed with:
CPU OUTPUT: [Row((IF(c_b, CAST(0 AS TIMESTAMP), CAST(c_f AS TIMESTAMP)))=datetime.datetime(1970, 1, 1, 0, 0, 1)), Row((IF(c_b, CAST(0 AS TIMESTAMP), CAST(c_f AS TIMESTAMP)))=datetime.datetime(1970, 1, 1, 0, 0))]
GPU OUTPUT: [Row((IF(c_b, CAST(0 AS TIMESTAMP), CAST(c_f AS TIMESTAMP)))=datetime.datetime(1970, 1, 1, 0, 0)), Row((IF(c_b, CAST(0 AS TIMESTAMP), CAST(c_f AS TIMESTAMP)))=datetime.datetime(1970, 1, 1, 0, 0, 1))]


Document chaining transports [13115]

This PR documents eProsima/Fast-DDS#2103.

I have rebased to remove the commit that updated the requirements.txt file. The update was already done in #302.

DCO is complaining :grimacing: Can you fix it?


Suggestion: improve stack traces with explicit function names

🚀 Feature request
Current Behavior
When an exception happens inside of an operator, the stack trace is ambiguous: it does not say which operator the exception occurred inside of.
const { pipe } = require("fp-ts/function");
const O = require("fp-ts/Option");

const as = O.some(1);
const fn = () => {
  throw new Error("oops");
};
pipe(as, O.map(fn));

Error: oops
    at fn (/Users/oliverash/Development/fp-ts-stack-trace-test/Option.js:6:9)
    at /Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/fp-ts/lib/Option.js:411:61
    at pipe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/fp-ts/lib/function.js:188:20)
    at Object.<anonymous> (/Users/oliverash/Development/fp-ts-stack-trace-test/Option.js:8:1)

Observe the second entry in the stack:
    at /Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/fp-ts/lib/Option.js:411:61

This entry represents the function returned by map, which is an anonymous function with no name:
//                 ⬇ this function
const map = (f) => (fa) => {
  return isNone(fa) ? none : some(f(fa.value));
};

Nothing in the stack trace tells you that this exception occurred during the execution of map.
Desired Behavior
When an exception happens inside of an operator, the stack trace should not be ambiguous: it should say which operator the exception occurred inside of, similar to Array.prototype.map:
const as = [1, 2, 3];
const fn = () => {
  throw new Error("oops");
};
as.map(fn);

Error: oops
    at fn (/Users/oliverash/Development/fp-ts-stack-trace-test/Array.js:3:9)
    at Array.map (<anonymous>)
    at Object.<anonymous> (/Users/oliverash/Development/fp-ts-stack-trace-test/Array.js:5:4)

Observe the second entry in the stack:
    at Array.map (<anonymous>)

Suggested Solution

We can achieve similar behaviour with fp-ts behaviours if we provide explicit function names for the functions returned by operators such as map:
const map = (f) => {
  const fn = (fa) => {
    return isNone(fa) ? none : some(f(fa.value));
  };
  Object.defineProperty(fn, "name", { value: "Option.map" });
  return fn;
};

The stack trace now appears like so:
 Error: oops
     at fn (/Users/oliverash/Development/fp-ts-stack-trace-test/Option-new.js:20:9)
-    at /Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/fp-ts/lib/Option.js:411:61
+    at Option.map (/Users/oliverash/Development/fp-ts-stack-trace-test/Option-new.js:12:37)
     at pipe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/fp-ts/lib/function.js:188:20)
     at Object.<anonymous> (/Users/oliverash/Development/fp-ts-stack-trace-test/Option-new.js:22:1)

Full example for testing:
const { pipe } = require("fp-ts/function");

const none = { _tag: "None" };
const some = (a) => {
  return { _tag: "Some", value: a };
};
const isNone = (fa) => {
  return fa._tag === "None";
};
const map = (f) => {
  const fn = (fa) => {
    return isNone(fa) ? none : some(f(fa.value));
  };
  Object.defineProperty(fn, "name", { value: "Option.map" });
  return fn;
};

const as = some(1);
const fn = () => {
  throw new Error("oops");
};
pipe(as, map(fn));

Who does this impact? Who is this for?

All users who care about the debugging experience when exceptions inevitably happen.
Describe alternatives you've considered

Additional context

Your environment

Software
Version(s)

fp-ts

TypeScript

Interestingly RxJS (which also uses pipeable operators) doesn't suffer from the same problem:
const { pipe } = require("fp-ts/function");
const Rx = require("rxjs");
const RxO = require("rxjs/operators");

const as = Rx.of(1);
const fn = () => {
  throw new Error("oops");
};
pipe(as, RxO.map(fn)).subscribe();

Error: oops
    at MapSubscriber.fn [as project] (/Users/oliverash/Development/fp-ts-stack-trace-test/Rx.js:7:9)
    at MapSubscriber._next (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/operators/map.js:49:35)
    at MapSubscriber.Subscriber.next (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/Subscriber.js:66:18)
    at Observable._subscribe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/util/subscribeToArray.js:5:20)
    at Observable._trySubscribe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/Observable.js:44:25)
    at Observable.subscribe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/Observable.js:30:22)
    at MapOperator.call (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/operators/map.js:32:23)
    at Observable.subscribe (/Users/oliverash/Development/fp-ts-stack-trace-test/node_modules/rxjs/internal/Observable.js:25:31)
    at Object.<anonymous> (/Users/oliverash/Development/fp-ts-stack-trace-test/Rx.js:9:23)

Side note: I know exceptions are discouraged in FP, but inevitably they can still happen, e.g. if the types or wrong or you call a function which you didn't realise would throw.

I would prefer using named functions function x() instead of const x = () => so that the change wouldn't hurt the readability of code but, in principle, I am not opposed to improving traces even though this should be considered a precautionary measure rather than a standard (APIs that throw should be wrapped in things like IOEither)

One concern would be to make sure the non-exported named functions dont get mangled by minification. I think by default non top level functions get mangled which would lead to no real gain here, right? Also, don't source maps provide you this information?

don't source maps provide you this information?

Hmm, source maps can't help if the function doesn't have a name. Reduced test case:
const map = () => () => 1;
map().name // => ''

> One concern would be to make sure the non-exported named functions dont get mangled by minification.

That won't be an issue as long as you're using source maps.


Priorities are not shown as intended in org-agenda

Following the discussion in reddit, the priorities are still shown as [#A], [#B], and [#C] if the agenda is opened at the time when the file from org-agenda-files is not yet open and contains #+SETUPFILE.
The recepie for emacs -Q (Org mode 8.2.10):

Create an empty ~/tmp/1.setup
Create the file ~/tmp/6.org with the following content:

#+SETUPFILE: ~/tmp/1.setup

* TODO [#A] check |- (alphapapa/org-super-agenda: Supercharge your Org daily/weekly agenda by grouping items) :BOOKMARK:
:PROPERTIES:
:CREATED: [2018-02-28 Wed 08:18]
:Source: https://github.com/alphapapa/org-super-agenda/
:END:
* TODO report clock report alignment problem when "|" is in the task name
:PROPERTIES:
:CREATED: [2018-02-28 Wed 20:28]
:END:
:LOGBOOK:
CLOCK: [2018-02-28 Wed 20:28]--[2018-02-28 Wed 20:29] =>  0:01
:END:

Insert the following into scratch:

(eval-and-compile
  (require 'package)
  (setq package-archives '(("MELPA" . "http://melpa.org/packages/")
			   ("ELPA" . "http://tromey.com/elpa/")
			   ("gnu"  . "http://elpa.gnu.org/packages/")
			   ("SC"   . "http://joseito.republika.pl/sunrise-commander/")
                           ("org" . "http://orgmode.org/elpa/")
                           )
	load-prefer-newer t
	package-user-dir "~/.emacs.d/elpa"
	package--init-file-ensured t
	package-enable-at-startup nil)
  (unless (file-directory-p package-user-dir)
    (make-directory package-user-dir t))
  (setq load-path (append load-path '("~/.emacs.d/site-lisp/")))
  (setq load-path (append load-path (directory-files "~/.emacs.d/site-lisp/" t "^[^.]" t)))
  (setq load-path (append load-path (directory-files package-user-dir t "^[^.]" t)))
  (package-initialize))

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
(eval-when-compile
  (require 'use-package))
(use-package diminish :ensure t)
(require 'bind-key)

(use-package org-fancy-priorities
  :ensure t
  :hook
  (org-mode . org-fancy-priorities-mode)
  :config
  (setq org-fancy-priorities-list '("⚡" "⬆" "⬇" "☕")))

(use-package org
  :mode ("\\.org$" . org-mode)
  :demand t
  :init
  (setq org-agenda-files '("~/tmp/6.org"))
)

M-x eval-buffer
M-x org-agenda "t"

The priority is still shown as [#A]. Note, that everything is fine if #+SETUPFILE is not there. The recepie also works when setup file is not empty (my real case).

I implemented something similar to "fancy priorities" using prettify-symbols-mode but abandoned it because of this issue. I would pick this up in heartbeat if this could be resolved!

I also think that its an issue with org mode, and I was just working on a dirty fix like the one you posted. I am also still testing the approach of using overlays, which are buffer-dependent instead of text-dependent, but I still have to find a way to update them without using font-lock.

Fixed in c6541f50b64e99f313bbc986654e1ec9ba78fe74. It also fixes #2.
Sorry for taking so long the last weeks have been busy. I solved it using overlays and it seems to be working. @yantar92 do you think you can test it on your setup just to be safe? It's on the fix-agenda branch. If you can't do it I will merge it in a few days anyway.

Works for me. Thank you!

Hi, I am also facing this issue. I have only begun using emacs and can't get it to work no matter where and how I try to hook fancy priorities and org agenda. Any tips? Also, sorry if this is not the place to ask, I would be happy to delete this and move it to the right forum. Cheers!

@ChauhanT i tried it with latest Emacs (27.1) and latest org mode version (9.4.4) and it works fine. if you are using spacemacs or some other emacs distribution make sure it is not shipping an older (possibly broken as it has been known to happen) version of org mode.
you can try Μ-x org-version to see what version you have installed. If it is older I suggest you install the latest org mode version through the official repo. Just follow the instructions to add the repo to your package archive list, then run M-x list-packages, find org and install it.

@harrybournis  Thank you for responding! I just checked the version numbers: I'm on emacs version 27.1 (Debian backports), and org mode version 9.5. But it is doom emacs and not vanilla. The relevant excerpt from my config.el is below, in case you might want to have a look and I'm doing something blatantly moronic.
;; org
(after! org
  (setq-default major-mode 'org-mode)
  (setq!
   org-agenda-skip-deadline-if-done t
   org-agenda-skip-scheduled-if-done t
   org-agenda-skip-timestamp-if-done t

   org-directory "~/Dropbox/Notes/"

   org-todo-keywords '((sequence "TODO(t)" "DONE(d!)"))

   org-startup-folded 'content

   org-priority-highest '?A
   org-priority-lowest  '?D
   org-priority-default '?D
   org-priority-start-cycle-with-default t
   org-priority-faces '((?A :foreground "#F54768")
                        (?B :foreground "#F5C747")
                        (?C :foreground "#62A6EB")
                        (?D :foreground "#A0A0A0"))
   )
)

;; org-fancy-priorities
(after! org-fancy-priorities
  (setq!
   org-fancy-priorities-list
   '("🅐" "🅑" "🅒" "🅓")
   ;; '("!!!" " !!" "  !" "zzz")
   ))

;; org-agenda
(after! org-agenda
  (setq!
   org-agenda-files (directory-files-recursively "~/Dropbox/Notes/" "\\.org$")

   org-agenda-prefix-format
   '((agenda . "%i  %?-12t% s")
     (todo   . "%i  ")
     (tags   . "%i  ")
     (search . "%i  "))
   org-agenda-todo-keyword-format ""))

@smalltimer i installed doom emacs and the issue was that org-fancy-priorities was never hooked to start when org mode was enabled. When you want a mode to start when another mode does then you add a hook. Try this and let me know if it works so I can update the documentation with a section on doom emacs since a lot of people seem to be using it:
(add-hook! 'org-mode-hook 'org-fancy-priorities-mode)
(add-hook! 'org-agenda-mode-hook 'org-fancy-priorities-mode)
(after! org-fancy-priorities
  (setq! org-fancy-priorities-list '("🅐" "🅑" "🅒" "🅓")))

@harrybournis Thank you very much for going through all that trouble!
I tried, but it did not work. I put the hooks between the (after! org ...) and (after! org-fancy-priorities ...) blocks. My reasoning was that the hooks need org-mode to be initialised before they will make sense.
Also, in doom.d/init.el did you use the +pretty flag ? This seems to turn on org-bullets and, of course, org-fancy-priorities.

@smalltimer I am not sure about org-bullets, but i don't think org-fancy-priorities is included by default in doom emacs. I did not make any adjstments except the ones I sent you for ~/.doom.d/config.el and you also need to add the package in ~/.doom.d/packages.el like this:
(package! org-fancy-priorities)

I think this is what is missing. in order to verify if a package is installed you should try M-x and writing its name. At the very least you should see the function that enables the mode.

@harrybournis  Yes, I have that in the ~/.doom.d/packages.el. I followed along with this tutorial before adding more customisation. I think it's a strange interaction between org-agenda and fancy-priorities because in the .org buffers I can see the priorities very nicely (symbols as well as faces).
In the agenda view, however, I can only see the symbols for files which have been visited. So in the agenda mode: 1. I can see the symbols but not the faces for today and all future days. 2. Neither the symbols nor the faces (I can only see [#A] etc.) for all days in the past if the .org files containing the todo have not been visited.

@smalltimer ok please open another issue, call it "org agenda not working in doom emacs" or something and post any configuration you have so I can replicate the issue and find a fix

@harrybournis  Nice one, thank you for being so active and helpful. I'll do it today.


wrongly load prev_frame image and target in MOT.__getitem__

because no_obj_imgs removed from self.ids, the ids has a new map relation between img_id. the above code will get wrong prev_frame image_id

In this line the CocoDetection parent class if always called with remove_no_obj_imgs=False for the MOT class:
https://github.com/timmeinhardt/trackformer/blob/686fe60858e4f61497a4544b95f94487614d0741/src/trackformer/datasets/mot.py#L24
That is why for MOT no frame is removed from self.ids and the prev_image_id should be correct.

yes, you are right. Then how these images which do not include any objects attend to the training process. Because they don't have any annotations, won't they affect the model performance？ Thank you for your reply.

There are only very few frames without any objects but this is generally something that might even happen from the random cropping data augmentation. So no, these do not effect the model training in a deteriorating way. The model just learns to not predict/track any objects in these scenarios.

Thank your for your patient reply


Remove progress checkmarks from tab control

Per UI updates in this Figma - https://www.figma.com/file/jZ6RROEeT5GxcS6Q5zHugU/Updated-Test%2C-Evaluate%2C-%26-Next-Step-Pages---Kaitlin?node-id=135%3A52347&viewport=51%2C-2161%2C0.9272481799125671

These are removed


feat: SARIF Output Support

What's being changed?

This pull request adds support for SARIF output to Legitify.
Is this PR related to an existing issue?

This PR closes #11.
Check off the following:

[x] This PR follows the CONTRIBUTION.md guidelines
[x] I have self-reviewed my changes before submitting the PR

Additional Notes
An example of the SARIF output produced by this feature can be seen here. Microsoft provides this nifty tool if you'd like to parse/visualize the results.
This PR introduces a dependency on github.com/owenrumney/go-sarif/v2/sarif.
With ❤ from @XpiritBV.

The last few commits fix and improve the output's SARIF spec conformance.
Here are some screenshots of how the results look in the GitHub Security Center:

I'm also working on an update to the action.yml for Legitify to upload the SARIF results (see the sarif-action-support branch).
A simple demonstration is available at https://github.com/XpiritUSA/test-legitify.

@chtzvt thanks a lot for this PR! your effort is really appreciated!
Most of my comments are pretty minor. let me know if you have any questions.
It seems that the tests are failing.
one issue is the Aux being nil (see the comment on that), but another issue is that output_format_test.go should have a case for sarif now. Ideally we'll have a thorough tests for that output, but for now would be great to add a "TODO add dedicated tests for sarif output" there

@gal-legit Thanks for your feedback!
I've implemented the changes you've requested, as well as working tests that validate Legitify's SARIF output against the SARIF specification JSON schema.

@chtzvt
Thanks for all your effort! Also, I love the sarif test you added!
We'll add support for code-scanning results in legitify's action based shortly :)

Fantastic! Glad to see it ship.
I started work on the SARIF action in the sarif-action-support branch. If that looks like the direction you'd want to go with, I can open another PR.

@chtzvt
Ahh, I just realized that I missed the fact that you mentioned that in your original comment too.
I already implemented it today actually (see gofri/sarif-action branch).
Sorry for not alerting before.
We don't want the SARIF output to replace the existing output, but rather to come on top of it.
TBH that was the original motive for implementing the convert command in the first place.
Anyway, I'd love to hear your thoughts on this.
I'm gonna test the action to make sure that everything works as expected and I'll open a PR then.


Extract type providers to standalone projects

move in-box type providers out of the box and turn into a community projects
Type providers:

[ ] DbmlFile
for a database schema encoded in a .dbml file.
[ ] EdmxFile
to access a database with the schema in an .edmx file, using a LINQ to Entities mapping.
[ ] ODataService
to access an OData service.
[ ] SqlDataConnection
to access a SQL database.
[ ] SqlEntityConnection
to access a database, using a LINQ to Entities mapping.
[ ] WsdlService
for a Web Services Description Language (WSDL) web service

as a todo/roadmap issue, each one can be a separate issue
a good approach ihmo is:

create a new repo (scaffold etc)
add visualfsharp as git submodule
import source/tests as linked item from submodule
build  + tests + nuget
when ok, pr to remove from codebase the code

pro:

we can start without changing the original visualfsharp codebase
is easy to apply/test if the visualfsharp codebase change

i can do the wsdlService when if we choose how to proceeed (vNext obv)

It would be great to make progress on this.
I go back and forth about whether these should be one DLL/nuget-package or multiple.   The simplest path is probably still just to have one DLL (FSharp.Data.TypeProviders) and one nuget package.  I can see pros and cons both ways, so it is worth trying to assess what problems that would cause, e.g.
PRO splitting:

the OData and EF type providers will need to evolve, probably by switching away from using the command line code-generation tools. (The command line code-gen tools are,  AFAIK, not fully up-to-date with latest features available to C# clients, which call an API to do the code generation rather than calling a command-line tool).  This kind of evolution may best happen in split projects

CON splitting:

much simpler to get the split done

existing docs and samples always talk about FSharp.Data.TypeProviders.dll.

multiple repos need multiple active owners to manage PRs, testing etc.

Either way, it's important to know if the package(s) would be shipped and signed as Microsoft packages (with the corresponding support licences), or whether community-provided packages would be sufficient.
Cheers
don

Yes, we need to balance the number of nuget/repo.
My random number is 2 :smile:
We should group type providers by dependencies:

sql (need reference to System.Data.dll): dbml, edmx, sql, sqlentity

FSharp.Data.TypeProviders.Sql.dll ?

webservice client (need reference to httpclient): wsdl and odata

FSharp.Data.TypeProviders.WebserviceClient.dll ?

two assemblies => two repositories.

tests automation work is reused ( sql -> create database, http -> consume fake webservice )
easier to manage multiple framework profiles
2 is a low number of repo :smile: not too much overhead

after the fork, each repository can choose to create multiple nuget packages, if needed.
This way we need only two repo (low number) and after the initial repo bootstrap ( wsdl + sqldataconnection ) is easier to add the others ( odata to http, dbml+edmx+sqlentity to sql) because test instrastructure (create database, create webservice) is already in place.

Another question:
The visualfsharp extension should include these nugets (battery included standard library) in gac?
For example ruby standard library moved from an a single package to a group of gem (= nuget).
the discussion and the result is https://github.com/rubysl (the ruby stdlib is big, like the .net bcl).
The equivalent f# stdlib is like fsharp.core nuget + fsharp.data.typeprovider nuget + etc.
Without assembly split, the ms package can include the FSharp.Data.TypeProviders.dll, downloaded from the  FSharp.Data.TypeProviders nuget, so backward compatibility.
I dont think it should (not for typeproviders, maybe for fsharp.core), but i ask anyway

We'd be happy to move these out.  I like the plan of new owners standing up new repo(s) and getting things in shape, then we pull the plug and remove from VF# deployment/tests.
Mini brain dump:

At MVP summit we hear feedback that in-box Microsoft blessing is still very important at many companies, i.e. that moving this to pure community ownership could be harmful for adoption
I think all of the TPs rely on exe codegen tools. Code for sniffing location of these tools only finds fairly old versions at this point.  Could cheaply get a lot of new support simply by updating to find the latest version of these tools.
Some of the TPs take codegen tool output (in C#) and compile on the fly with csc.exe.  Maybe worth looking at Roslyn-based hosted compile?

Please avoid relying on the GAC.  Our current dependence on it is a historic misstep, it won't really work cross platform anyway.  So please do not introduce any new GAC requirements.

What GAC requirement is there? On FSharp.Core or something else?

MS support is really important, this is a library already supported by MS, so is good to continue like that. Maybe this can be relaxed having a core team by community+ms?
I dont want GAC'es assemblies ( whoa, scary word :ghost: :ghost: ), just askin, i understand the answer is no :+1:
the @latkin braindump should be the first issues on the new repo :smile:
I'll add open question and decisions to the issue summary ( best place is the wiki, but is closed to collaboration, make it public! no spam :smile:  )
Anyway, this is future, but with we can start with wsdl (repo+submobule+build+ci -> nuget) without changing visualfsharp codebase.
I can do the bootstrap of this repo (like a poc), if someone ( /cc @dsyme @KevinRansom @latkin  ) help me. We can discuss on gitter/slack to move faster, after the open question are closed.

Personally I feel that if Microsoft is planning to offer enterprise support including updated Microsoft-signed nuget packages for new functionality, then it's probably optimal just to keep these particular type providers in this repository and start accepting pull requests for them.  The testing is already in place here, for example, as are all the engineering guidelines, CLA mechanism, repository ownership, internal Microsoft packaging and engineering processes etc.
If Microsoft plan to split out the packages into new repositories then it probably really has to be done by Microsoft repo owners. The new repo ownership would be by Microsoft anyway, and most of the cost will be in adjusting the Microsoft engineering, release and support processes.
Alternatively (or concomitantly) I think it's fine to fork out new "fsprojects" versions of the type providers to evolve the functionality in the F# community in the same way as many other F# community projects. This would likely enable a much faster iteration rate, for starters, a bit like has been done with the Visual F# Power Tools (though that's not a fork).
It's also a bit like FSharp.Core.  There is a general intention from everyone to move that into a nuget package, and indeed there is already a community/Xamarin-provided FSharp.Core nuget package.  But to get a Microsoft-published package, much the work is on the Microsoft internal side, e.g. to adjust packaging, templates, tooling.  Everyone wants to help with this but there's a limit to what can be done without visibility of the internal Microsoft build and release processes. And there are limits w.r.t. timing too (Visual Studio 2015 v. vNext v. vNext++)
Anyway, I don't think there's any particular rush with this.  Unblocking it would be good but it may be one of those things we just need to wait for.

Ok got it, thx @dsyme for feedback, we need to wait ms decision about support first.
i understand now is ok having the code inside visualfsharp repo, but moving to a new repo  can help to have an independent versioning ( that's really important because visualfsharp is really more locked down than a library like wsdl type provider, more easier to evolve/fix ),  decrease the visualfsharp codebase (less code/tests), speedup things in visualfsharp (tests suite)
i was trying to bootstrap the repo ( without a proper fork, there is already visualfsharp/openfsharp/FSharp.Compiler.Service and is good to have only a crossplat project, not crossplat vs ms ), but i am too hasty :smile:
It's only that i see https://github.com/dotnet projects and seem an easier flow, but obviously is not, sry

The code for FSharp.Data.TypeProviders is now available as an F# community library and nuget package at https://github.com/fsprojects/FSharp.Data.TypeProviders/. I'll close this issue and move it over to there, since splitting the type providers is still a plausible thing to do (though I suspect there's no particular reason to do it at the moment)

Really thx @dsyme  .
That's good because make it easier to contribute. It's a really nice thing. :+1:
About split i'll comment in the other repo.
I think only wsdl it's usefull atm, other tp are deprecated by community projects ( more advanced ).
tp in this repo are pretty much dead code now ( a good thing )


keytool can't find JDK

New installation of Flutter. When you go to use keytool, you get an error because the JDK cannot be found.

Can you clarify? Don't believe keytool is part of flutter...

keytool could not find the Java JDK, not Flutter.

Right, but keytool isn't our binary, so can you clarify how this is a Flutter issue?

Mainly because the Flutter documentation tells you how to build an Android
APK and it doesn't work.
On Mon, Jun 12, 2017 at 12:31 AM, Michael Thomsen<EMAIL_ADDRESS>wrote:

Right, but keytool isn't our binary, so can you clarify how this is a
Flutter issue?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/10158#issuecomment-307711368,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADEtRBt1LYecvA_eMrCgXVm-QEcm5ttks5sDOk6gaJpZM4Nemgu
.

Ah, got it, yes we can improve docs.


CPU GetHeight doesnt use the shore edge water depth to attenuate the water motion

I might do it myself but I havent looked at all the lod camera stuff yet, I guess first you have to work out which lod camera the point is in then sample its depth texture at the right position, then duplicate the maths in the shader.

my heart sank a little bit when i read this. i had a great plan here - all of the cpu collision queries were supposed to come from displacement textures. this would mean cpu collision takes advantage of the inherent LODing, and the visuals/collision would always exactly match. the cpu would have to just select whichever displacement texture is available at a point and then sample it, without needing to add all the components together.
however when i tried it i got massive pipeline stalls when reading the texture back. i had a test running where i was rendering a texture and then reading it back ~20 frames later and i still got a massive stall. i'm almost certain this is something broken in unity. i will try getting a latest version of unity and reproducing this issue in a small standalone project, and then submit it as a bug report.
in the meantime your idea should work, and i'll look at implementing this. im not stoked on adding more computation and memory accesses to the height samples - but your caching work should offset that cost!

Promising news - to address this very stall issue unity has introduced an async GPU readback api. I came across it via this recent tweet: https://twitter.com/_kzr/status/951760588127924224
I have a small project which does the old and new readback paths, and the new api has no stall whatsoever, and the implementation is really simple. I've got it working with the right texture format and I'm ready to have a stab at it in Crest. I'll keep you posted.
The catch is that the API is in the experimental stage (introduced in 2018.1), and currently only supports DX11/12. It sounds like Unity will expand the platform support next. However, if the 2018.1 dependency or the current limited platform support sound like issues to you, let me know.
(Older links for the record: https://medium.com/google-developers/real-time-image-capture-in-unity-458de1364a4c , https://answers.unity.com/questions/465409/reading-from-a-rendertexture-is-slow-how-to-improv.html , https://forum.unity.com/threads/readpixels-stalls-the-pipeline-in-unity-5.339324/ ).

We are on unity 2018.1 so that works for us, and dx11. Hopefully its also
supported on consoles.
On Sun, May 20, 2018 at 9:00 AM, Huw Bowles<EMAIL_ADDRESS>wrote:

Promising news - to address this very stall issue unity has introduced an
async GPU readback api. I came across it via this recent tweet:
https://twitter.com/_kzr/status/951760588127924224
I have a small project which does the old and new readback paths, and the
new api has no stall whatsoever, and the implementation is really simple.
I've got it working with the right texture format and I'm ready to have a
stab at it in Crest. I'll keep you posted.
The catch is that the API is in the experimental stage (introduced in
2018.1), and currently only supports DX11/12. It sounds like Unity will
expand the platform support next. However, if the 2018.1 dependency or the
current limited platform support sound like issues to you, let me know.
(Older links for the record: https://medium.com/google-
developers/real-time-image-capture-in-unity-458de1364a4c ,
https://answers.unity.com/questions/465409/reading-from-
a-rendertexture-is-slow-how-to-improv.html , https://forum.unity.com/
threads/readpixels-stalls-the-pipeline-in-unity-5.339324/ ).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/huwb/crest-oceanrender/issues/12#issuecomment-390438152,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOU9GM0-2HA25hKP3xtULbmYwS8NNhtjks5t0KQhgaJpZM4UEIul
.

So maybe the great plan worked out after all - reading back the shape data asynchronously worked out well and comes with a load of advantages. I've created a pull request to capture the notes, and any feedback:
https://github.com/huwb/crest-oceanrender/pull/13
Let me know what you think.

I am closing this for now, as I don't have plans to do further work on this. I wrote my understanding of the status at the bottom of #14 . Reopen if I have overlooked something.


Add code/text cell from top toolbar menu

Add buttons 'Code' and 'Text' to top toolbar
Hookup events to these buttons and make sure cells are created
Troubleshoot issues if any

Hooked up both code and text cells from horizontal tool bar


Unable to follow RSS feeds that got too big

Describe the bug
Recently, I saw some blogs I follow become red in the sidebar of commafeed, and I thought that their RSS feed must be broken.
However, they are not.
So I tried to re-add them, but it is no longer possible and commafeed returns the following error:
jakarta.ws.rs.WebApplicationException: Response size exceeds the maximum allowed size (5242880 bytes)

To Reproduce
Steps to reproduce the behavior:

Go to commafeed.com
Click on the top bar '+'
Paste 'https://blog.ploeh.dk/archive/' as the feed url
Click 'Next'
See error

Expected behavior
Feed can still be used, even if size a bit big.
sidenote: it could be nice if a feed on the sidebar had a on-hover tooltip showing the last refresh message. Because the only place where you can guess why it's red it's by editing it, and checking the last refresh message.
Screenshots

Environment (please complete the following information):

commafeed.com;
Browser [e.g. chrome, firefox]: any
Device [e.g. desktop, mobile]:

Additional context
Add any other context about the problem here.

another blog leading to the same issue in commafeed: https://danluu.com/atom.xml

Well it's neither an issue nor a bug, it's a feature that is deliberately enabled on the free instance on commafeed.com. Large feeds require a lot of memory to be parsed and are thus blocked, as mentioned here.
You're free to self-host CommaFeed on your own server and configure it as you'd like :)

@Athou : fair enough!
Then, the website could say "you've reached the limits of this free instance of comma feed".
I'll check and start self hosting it.
Nonetheless, thank you for providing that free version! It's been great, and I'm grateful!

You're right, I guess the error message could be improved 😄

Hi, I'm also facing this issue, but I'm self-hosting Commafeed through Docker and I haven't imposed have a memory limit. How can I tell commafeed to not be so shy and use the available memory?
This are my docker stats
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
ffffffffffff   commafeed       0.04%     297.6MiB / 7.748GiB   3.75%     544MB / 76.9MB    382MB / 3.81GB    55


The scrollbar is not very attractive

Description
The website is beautiful but the scrollbar is very simple.
I can add styling to the scrollbar so that it looks more attractive and the website also looks better.
I can change the styling of scrollbar .Can you assign this issue to me?
Screenshots
No response
Additional information
No response

Due to some error I am unable to run it in my local machine. Hence unassigning this issue. Sorry for inconvinience


fix broken build pipe

ci/cd is broken due to error from actions  actions/setup-python@v2
Tried this with v4 as well - no luck.
see also this ci/cd run

the error refers to checking available version:
Run actions/setup-python@v2
  with:
    python-version: 3.8.10
    token: ***
Version 3.8.10 was not found in the local cache
Error: Version 3.8.10 with arch x64 not found
The list of all available versions can be found here: https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json

I've checked the link and x86 for 3.8.10 is available in there.


the internal jit_generator tester is currently broken

After the latest refactoring, the jit_generator doesn't compile anymore. This seems to be simple include issue. However, we moved many function definition between several headers, so we need to check which header needs to be included in jit_validation.c

Fixed in 84a82dd.


Adding Jupyter Book content for v0.4 release

#109 Merging the Jupyter Book pedagogical content, largely based on the JOSS article, to the package for v0.4. This will help users become familiar with the content behind the code, and to know which method to choose for themselves. This will also make the Jupyter Book more useful than just a place for the tutorial notebooks to live. This can be expanded in future releases.
Pending tasks for @asemposki:

[x] Reduce output from bilby if possible
[ ] Full review

I attempted tox build on my machine, and the Book is failing again in the Trees_BMM_2D notebook, citing a RunTime error.

I also just added the option for Colab to run these notebooks. I remember using it for the BAND camp and I don't like it as much as Codespaces, but Colab is the only one of the two that currently has a direct launch option from the Book. I will include a Codespace introduction in the book though, too, so people know how to navigate there. That will probably just be the instructions on the README of the whole repo.

I will merge this in today, if all checks are passing, as everything looks good and we've both checked it over a few times as we've made progress.


opencv 3.4.10/ efficientnet/ Yolo v3

I am trying to interpret a model with EfficientNet as backbone for Yolo v3 Detector.
I got this error:
cv2.error: OpenCV(4.2.0) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:686: error: (-212:Parsing error) Unsupported activation: smish in function 'ReadDarknetFromCfgStream'
The activations and functions like add grouped convolutions, sigmoid, swish, scale_channels are also added to opencv and These feature merged to opencv:3.4.
My Question is:
How can I pip install opencv-python with opencv 3.4.10 instead of opencv 4.2.0?

3.4.10 and 4.3.0 releases are currently blocked, for more info:

https://github.com/skvark/opencv-python/issues/316
https://github.com/skvark/opencv-python/issues/309


GitHub-Autolink Spam on large Repositories

Summary
On bigger repositories, with many dev'ed PRs in parallel, the status comments of this action link all of them as intended.
However this leads to a GitHub annotating each of the PRs with all the other PRs. This is due to GitHub autolinker recognizing the PR-Links and annotating the linked PR with something like "This PR was mentioned in PR".
Feature Suggestion
The Status Comments are nice and give a good feedback of what the action produced, so disabling the comments is not the optimal Solution here.
We should provide a way to reduce the AutoLink spam without giving away the comments nicities.
Possible Implementation
I was thinking about some kind of templating we can provide for the action. So we can give the Users the ability to Structure the comments themselves.
This is the way for example release-drafter/release-drafter handles dynamic outputs.
So we use some kind of templating Engine (e.g. go-template) and provide the users a documentation of what parameters we compile into the Template. This way they can leave out what they want to leave out, or can even use handmade messages for the Comments ✨ 🎨

Also consider just updating the existing comment instead of adding new ones. The old ones don't matter anyway, don't they?

Or we can also use labels as we are doing it currently in the backend. 👍


Handle Sighup

@shishirb-MSFT This is a reupload of the previous pr, unfortunately when we created the snapshot the PR did not get copied over, mind re-reviewing?

Verified this change works on iteration 5.
Modified /etc/deliveryoptimization/admin-config.json to contain:
{
"DOCacheHost": "www.microsoft.com"
}
ran sudo systemctl kill -s SIGHUP deliveryoptimization-agent.service  to refresh configs
With do plugin installed, did an apt install of npm and verified through logging that client configs were refreshed, bad mcc host was banned, and download finished succesfully.


make_repeatable_pair line throws Error E5108

I tried to get this plugin to work, but are getting an error when sourcing my vimrc:
It works fine up to this stage, since map ; rightfully maps to nvim-next
lua << EOF
local nvim_next_builtins = require("nvim-next.builtins")
 require("nvim-next").setup({
     default_mappings = {
         repeat_style = "original",
     },
     items = {
         nvim_next_builtins.f,
         nvim_next_builtins.t
     }
 })
local next = require("nvim-next").setup()
local next_integrations = require("nvim-next.integrations")
EOF

However when adding the line before EOF
vim.keymap.set("n", "f", next.make_repeatable_pair(functions.F, functions.f))

it throws:
E5108: Error executing lua [string ":lua"]:13: attempt to index global 'functions' (a nil value)
stack traceback:
        [string ":lua"]:13: in main chunk

However it seems those lines are working
local nqf = next_integrations.quickfix()
vim.keymap.set("n", "[d", nqf.cprevious, { desc = "previous quickfix list item" })
vim.keymap.set("n", "]d", nqf.cnext, { desc = "next quickfix list item" })

None of the mapping (; or ,) do the desired though (i.e. repeating), probably because of this issue.

The following line
vim.keymap.set("n", "f", next.make_repeatable_pair(functions.F, functions.f))

doesn't work because there is no functions variable. (my bad, I will correct the readme)
Having said that, this line is redundant (again, I should make it more clear in the readme) provided that you have:
    items = {
         nvim_next_builtins.f,
         nvim_next_builtins.t
     }

which does exactly that during the setup.
The offensive line is only needed if someone would like to setup mapping on their own (e.g. to something else than f/t).

I created #18 to address this issue, let me know if it clarifies enough.

Thanks for the clarification and provided code. I suppose I'll just remove the lines in questions, however for the sake of testing, I've tried you suggested, but get a new error:
E5108: Error executing lua vim/keymap.lua:0: opts: expected table, got function
stack traceback:
        [C]: in function 'error'
        vim/shared.lua: in function 'validate'
        vim/keymap.lua: in function 'set'
        [string ":lua"]:17: in main chunk

Again, the same line is the culprit.
This is my vim entry:
lua << EOF
local nvim_next_builtins = require("nvim-next.builtins")
require("nvim-next").setup({
   default_mappings = {
       repeat_style = "original",
   },
   items = {
     nvim_next_builtins.f,
     nvim_next_builtins.t
   }
})
local next_integrations = require("nvim-next.integrations")
local nqf = next_integrations.quickfix()
local next = require("nvim-next").setup()
vim.keymap.set("n", "[d", nqf.cprevious, { desc = "previous quickfix list item" })
vim.keymap.set("n", "]d", nqf.cnext, { desc = "next quickfix list item" })
local functions = require("nvim-next.builtins.functions")
vim.keymap.set("n", "f", next.make_repeatable_pair(functions.F, functions.f))
EOF

sorry I was writing this from the top of my head and didn't have time to test it.
I forgot that the next.make_repeatable_pair function returns pair of functions (prev and next).
I updated the readme accordingly.


Move CommandResult to Executable.Result, or just change name to just Result

Command classes such as Command, CommandGroup, Executable aren't often going to be interacted with by the user, so I'd like to separate CommandResult from them, which rules out Executable.Result.
This only leaves Result left, but that may conflict with existing libraries, mainly Kotlin's Result

Not implementing this still doesn't rule out #25.


Site documentation fix

On https://vriad.com/blog/zod/ under "Custom Union Types," F.parse(null) should return "null" and not "42." It's correct on the Github README, just not on the site.

Fixed! Thanks for pointing that out. 🤙


Encode values larger than maxStorableValue as infinity

TODO: is this problematic for turn costs?

It's only conservative as long as the maximum value we allow to be encoded exceeds what's relevant for routing decisions. #2987 is an example where this strategy introduces artificial weight limits that are far lower than what is actually tagged in OSM, while the encoded value is still in the range of values relevant to truck routing. Searching for a route with a 26t truck in my case.
Ideally, the EV should be able to cover all "sane" values (see #2989), so that we can ignore values that are either tagging errors like kilograms instead of tonnes, or are far too high for our intended use case.
For example, this way has a maximum weight limit of 120t. In practice, this is so high that it's irrelevant for any normal vehicle. But by limiting it to the maximum storage value of the EV, we create an artificial limit within the range of values relevant to large trucks.


Should support left and right alignment within cells

Is your feature request related to a problem?
No response
Describe the solution you'd like
Should support left and right alignment within cells
Describe alternatives you've considered
none
Additional context
No response

This will also be included in the "improve spreadsheet" epic


feat: support for customized worker

Summary
Resolved #262.
+   - id: ethereum.core
-   - network: ethereum
      network: ethereum
      worker: core
      endpoint: ethereum
      parameters:
        block_number_start:

Before
rss3-node --indexer.network=ethereum --indexer.worker=core --indexer.parameters={}

Now
rss3-node --worker.id=ethereum.core

Checklist

[x] The commit message follows Angular Contributing guidelines;
[x] Tests for the changes have been added (for bug fixes / features);

Does this PR introduce a breaking change?

[x] Yes
[ ] No

Other information

https://github.com/RSS3-Network/Node/issues/262


moved to node20, replaced yarn with good ol' npm

coverage: 70.635% (+16.9%) from 53.716%
when pulling 7335687f43cb31aaae21216a8129b7d697e35e58 on node-20-no-yarn
into 7a4ed21c59253c92e6928fb8203f590d6058c284 on main.


Many interop tests failing on master

https://grpc-testing.appspot.com/job/gRPC_interop_master/4271/#showFailuresLink  since build 4256.
Majority of the tests involve Java, was there a change in grpc-java that introduced the breakage?

Hmm ... looking over the commits from yesterday, https://github.com/grpc/grpc-java/commit/8825f355dfd9b72622769388500f71f8b472e57f looks suspicious.
@carl-mastrangelo can you take a look?

Thanks Nathan! The Java PR might be https://github.com/grpc/grpc-java/pull/1726.  Our last green build was yesterday at 2:07PM and https://github.com/grpc/grpc-java/pull/1726 was merged at 2:17PM.

We think we know the route cause and it will get fixed within the next few hours.

Seems fixed now. Thanks java team for handling this quickly.


Fresh install of 1.1.5 fails trying to upgrade

I'm new to Elkarte and I'm installing it for the first time... I follow all the steps and it succeeds and I get the page that says I can go use the forum... that link puts me into the install/upgrade.php page.  I enter the administrator credentials and click "Continue" and it takes me to a progress page that says:
Database Changes
Executing database changes
Please be patient - this may take some time on large forums. The time elapsed increments from the server to show progress is being made!
Executing: "" (0 of )

Database Updates Complete! Click Continue to Proceed.

At that point I get an error in the server log:
PHP Notice:  Undefined index: debug_items in /var/www/html/elk/install/TemplateUpgrade.php on line 823, referer: https://my.server/elk/install/upgrade.php
Clicking "Continue" has no effect.  Trying to do it over again gets me back to the same page.  Going to https://my.server/elk takes me back again to the same page.

To clarify, this is a fresh install and it took you to the upgrade script instead?

After the fresh install, on the "all finished" page, I clicked the link that is supposed to take you to your newly installed forum... but it took me to the upgrade page instead.

Yes, it is a fresh install, but he didn't tick the "delete install directory" at the end of the install procedure.
Since this is not the first time, I guess I'll have to make it mandatory in order to proceed.
@eddieray via ftp (or cpanel or whatever), delete the directory named "install". That will do. ;)

Removing the install directory can't work unless the parent directory is writable by the web server user, which we probably don't want (and isn't listed in the directories to make writable at the beginning of the install).  Do you mean "empty the install directory"?

When I write "delete" I mean "delete". :wink:
If your configuration prevents the php user to delete the directory, then you have to do it manually.

Maybe a message would be appropriate that states, "If your web server user can't delete the install directory, then you will need to do it manually before proceeding."
Then you can also make the change to check the checkbox by default, and refuse to proceed unless the directory is deleted (one way or the other). ;-)
Side note:  The install was simple and the procedure was clear right up until this point.
Thanks!

As a side effect of it taking me through the failed upgrade process, when I login as the admin users I see the following message:
"You have an active admin session in place. We recommend to end this session once you have finished your administrative tasks."
How do I clear out the admin session from the failed upgrade process?  Or do I have to reinstall from scratch because of this odd failure scenario?

This is not a side effect of an error, this is a feature.
When you log to the admin area, an "admin session" is started, since the "admin session" allows you to access the admin area without inserting the password, there is this reminder/warning.
Nothing is wrong, if you want to get rid of it you can either wait (the admin session should expire in about half an hour) or enter the admin area and use main => end admin session.

Okay, thanks.  The failing upgrade page was telling me that there was already an upgrade in progress each time I tried to go back through and try to get past it, so I thought this might have been a carry over from that "already in progress" thing.


package private one.util.streamex.Joining.Accumulator is used in public API

I integrated streamex into one of my Jenkins plugins, but RevApi noticed, that the package private class one.util.streamex.Joining.Accumulator is used in your public API. So it would make sense to make the class public as well (or remove the reference.
{
  "ignore": true,
  "code": "java.class.nonPublicPartOfAPI",
  "old": "class one.util.streamex.Joining.Accumulator",
  "new": "class one.util.streamex.Joining.Accumulator",
  "justification": "ADD YOUR EXPLANATION FOR THE NECESSITY OF THIS CHANGE"
  /*  "classSimpleName": "Accumulator",
  "exampleUseChainInNewApi": "one.util.streamex.Joining.Accumulator is used as a type parameter or type variable bound on method java.util.function.Function<one.util.streamex.Joining.Accumulator, java.lang.String> one.util.streamex.Joining::finisher() (method java.util.function.Function<one.util.streamex.Joining.Accumulator, java.lang.String> one.util.streamex.Joining::finisher() is part of the API)",
  "package": "one.util.streamex",
  "classQualifiedName": "one.util.streamex.Joining.Accumulator",
  "exampleUseChainInOldApi": "one.util.streamex.Joining.Accumulator is used as a type parameter or type variable bound on method java.util.function.Function<one.util.streamex.Joining.Accumulator, java.lang.String> one.util.streamex.Joining::finisher() (method java.util.function.Function<one.util.streamex.Joining.Accumulator, java.lang.String> one.util.streamex.Joining::finisher() is part of the API)",
  "elementKind": "class",
  "oldArchive": "io.jenkins.plugins:plugin-util-api:hpi:2.17.0",
  "oldArchiveRole": "primary",
  "newArchive": "io.jenkins.plugins:plugin-util-api:hpi:2.18.0-SNAPSHOT",
  "newArchiveRole": "primary",
  "breaksVersioningRules": "true",
  */

},

It does not affect my code, it just violates an important API rule: public members should not use package private arguments or types. So I just wanted to let you know that you should increase the visibility to avoid that other people will get warnings when they use Revapi.
I ignore the warning in my component: https://github.com/jenkinsci/plugin-util-api-plugin/blob/master/pom.xml#L276

No, I should not increase the visibility, as this would make the implementation detail class visible which is much worse and may limit the future evolution of the library. I think that a warning from a third-party tool is not enough reason for exposing the library internals. If you know how to make this tool happy without exposing the internals, without changing existing API and without performance degradation, feel free to file a pull request. Thanks.


./script/bootstrap fails on Ubuntu 18.04 (64 bit)

I am trying to build firmware for nrf52840 on Ubuntu 18.04 machine. I executed ./script/bootstrap as a first step and it failed with following error:
  Using cached https://files.pythonhosted.org/packages/b2/34/bfcb43cc0ba81f527bc4f40ef41ba2ff4080e047acb0586b56b3d017ace4/zipp-3.1.0-py3-none-any.whl
Installing collected packages: zipp, importlib-metadata, markdown, tabulate, pygments, mdv
Successfully installed importlib-metadata-1.6.1 markdown-3.2.2 mdv-1.7.4 pygments-2.6.1 tabulate-0.8.7 zipp-3.1.0
./script/bootstrap: 69: ./script/bootstrap: brew: not found
Failed to install shfmt. Install it manually if you need.
darshan@Ubuntu18:~/OT/openthread$

It's searching for bew on Ubuntu! Seems like script is for Mac OS. What can be done to fix this?

Yes, brew also works on Linux. If not installed, you will have to install shfmt manually. You can find it on GitHub.

But why to have brew when aptutils already there? Some packages already getting installed with apt, why some required to have brew?

@iDarshan , note that only the install of shfmt failed and shfmt is only needed if you plan to contribute shell scripts to the OpenThread project.
You can also install shfmt using snap: https://snapcraft.io/install/shfmt/ubuntu
I'm not aware of an official apt package for shfmt. Let us know if you can find one.

@jwhui That means ./script/bootstrap is successfull and I can move forward with the build. I tried to build nrf52840 firmware and it fails with following errors (only partial log pasted). Seems like something broken in latest master branch.
/home/darshan/OT/openthread/examples/../src/core/common/debug.hpp:79:15: note: in definition of macro 'OT_ASSERT'
         if (!(cond))    \
               ^~~~
In file included from /home/darshan/OT/openthread/examples/../src/core/thread/thread_netif.hpp:40:0,
                 from /home/darshan/OT/openthread/examples/../src/core/common/instance.hpp:73,
                 from /home/darshan/OT/openthread/examples/../src/core/api/channel_manager_api.cpp:37:
/home/darshan/OT/openthread/examples/../src/core/coap/coap_secure.hpp:265:71: error: 'nullptr' was not declared in this scope
     otError SendMessage(Message &aMessage, ResponseHandler aHandler = nullptr, void *aContext = nullptr);
                                                                       ^~~~~~~
/home/darshan/OT/openthread/examples/../src/core/coap/coap_secure.hpp:265:97: error: 'nullptr' was not declared in this scope
     otError SendMessage(Message &aMessage, ResponseHandler aHandler = nullptr, void *aContext = nullptr);
                                                                                ^~~~~~~
/home/darshan/OT/openthread/examples/../src/core/coap/coap_secure.hpp:286:60: error: 'nullptr' was not declared in this scope
                         ResponseHandler         aHandler = nullptr,
                                                            ^~~~~~~
/home/darshan/OT/openthread/examples/../src/core/coap/coap_secure.hpp:287:60: error: 'nullptr' was not declared in this scope
                         void *                  aContext = nullptr);
                                                            ^~~~~~~
cc1plus: all warnings being treated as errors
In file included from /home/darshan/OT/openthread/examples/../src/core/meshcop/dataset_manager.hpp:44:0,
                 from /home/darshan/OT/openthread/examples/../src/core/thread/thread_netif.hpp:61,
                 from /home/darshan/OT/openthread/examples/../src/core/common/instance.hpp:73,
                 from /home/darshan/OT/openthread/examples/../src/core/api/channel_manager_api.cpp:37:
/home/darshan/OT/openthread/examples/../src/core/meshcop/dataset.hpp:332:81: error: 'nullptr' was not declared in this scope
     otError ApplyConfiguration(Instance &aInstance, bool *aIsMasterKeyUpdated = nullptr) const;
                                                                                ^~~~~~~
Makefile:4252: recipe for target 'api/libopenthread_mtd_a-border_router_api.o' failed
make[4]: *** [api/libopenthread_mtd_a-border_router_api.o] Error 1
make[4]: *** Waiting for unfinished jobs....
In file included from /home/darshan/OT/openthread/examples/../src/core/thread/thread_netif.hpp:76:0,
                 from /home/darshan/OT/openthread/examples/../src/core/common/instance.hpp:73,
                 from /home/darshan/OT/openthread/examples/../src/core/api/channel_manager_api.cpp:37:
/home/darshan/OT/openthread/examples/../src/core/thread/address_resolver.hpp:309:56: error: 'nullptr' was not declared in this scope
                              CacheEntryList *  aList = nullptr);
                                                        ^~~~~~~
In file included from /home/darshan/OT/openthread/examples/../src/core/thread/thread_netif.hpp:89:0,
                 from /home/darshan/OT/openthread/examples/../src/core/common/instance.hpp:73,
                 from /home/darshan/OT/openthread/examples/../src/core/api/channel_manager_api.cpp:37:
/home/darshan/OT/openthread/examples/../src/core/utils/child_supervision.hpp: In member function 'ot::Child* ot::Utils::ChildSupervisor::GetDestination(const ot::Message&) const':
/home/darshan/OT/openthread/examples/../src/core/utils/child_supervision.hpp:181:61: error: 'nullptr' was not declared in this scope
     Child *  GetDestination(const Message &) const { return nullptr; }
                                                             ^~~~~~~
cc1plus: all warnings being treated as errors
Makefile:4266: recipe for target 'api/libopenthread_mtd_a-channel_manager_api.o' failed
make[4]: *** [api/libopenthread_mtd_a-channel_manager_api.o] Error 1
Makefile:433: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
Makefile:586: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
Makefile:512: recipe for target 'all' failed
make[1]: *** [all] Error 2
examples/Makefile-nrf52840:329: recipe for target 'do-build-cortex-m4' failed
make: *** [do-build-cortex-m4] Error 2
darshan@Ubuntu18:~/OT/openthread$

@iDarshan , it seems you may have some stale build files that need to be regenerated. Can you try the following:
git clean -xfd
./bootstrap
make -f examples/Makefile-nrf52840

Note that the git clean command will blow away any changes you have in your tree.

@jwhui That worked. git clean was not needed though. Please add in README that in Linux if script/bootstrap shows error due to brew for shfmt, its ok to move ahead with build.

@jwhui That worked. git clean was not needed though. Please add in README that in Linux if script/bootstrap shows error due to brew for shfmt, its ok to move ahead with build.

Submitted #5161. I opted to improve the output from the script itself in this PR. Please review.


Complete, working ETH chain limit order example

Can you please provide a complete, working example that can be used to successfully place a limit order on the ETH chain?  Thank you for your help.  I think that this will be helpful to a lot of users.
Have been spending a lot of time with the example code trying to perform the most basic function of all: placing an example limit order.  So far, have not succeeded. From looking at other people's repos online, it appears that others are having trouble too.
All of the example code contains many missing pieces that the user is intended to know how to fill in correctly, and very little error handling when this does not work.  For example, in the quick start:
const contractAddress = '0x5fa31604fc5dcebfcac2481f9fa59d174126e5e6';
const walletAddress = '0x4758822de63992df27cacf1ba11417bbacace033';
const chainId = 1;
const web3 = new Web3('...');
// You can create and use a custom provider connector (for example: ethers)
How are we supposed to figure out what is the correct contract address?  How are we supposed to know what to put in for '...'? Have tried many attempts to do this correctly based on other examples. This may be apparent to the writers of this example, but it's certainly not apparent to a new user.  There are many, many pieces that all have to be correct, and if anything isn't perfect, all you get is a completely unclear generic error message.
Basically, cannot get a single one of the example code snippets provided to work, because none of them are complete, all of them assume that the user already knows how to fill in the missing pieces and make required changes to the code to get it to work.
So far, all I'm able to get back from the API in trying to submit limit orders is things like:
{"statusCode":400,"message":"order is invalid with reason: unknown","error":"Bad Request"}
{ statusCode: 400, message: 'maker is invalid', error: 'Bad Request' }
Thank you

Hi,
Sorry, but No...
Not Yet.
One day I'll let You Know, and everyone, but first I need recognize Myself.
I lost My memoris.

I would guess that the contract address is the LimitOrderProtocol contract of 1nch. You can find it here: https://docs.1inch.io/docs/limit-order-protocol/introduction#limit-order
But yeah, agree with you. Would be great to have this info mentioned on the guide.


Restore pnpm dev functionality

Fix missing import for ACAIResourceView.css
Fix TypeError: window.acquireVsCodeApi is not a function
Update mount script from src/main.tsx to src/ACAIResourceView/index.tsx

@sampjvv I wanted to get pnpm exec vite working again so I could do #3.  I'll wait for your next branch to actually land these changes, as I expect things will look different.

thanks, I see. My main issue has been importing apollo. my project doesn't like it because I'm using commonJS and apollo doesn't support being imported with a require statement (something along those lines). Any ideas?


Fix error in StandardDeviation

let mut sd = StandardDeviation::new(6).unwrap();
assert_eq!(sd.next(1.872), 0.0);
assert_eq!(round(sd.next(1.0)), 0.436);
assert_eq!(round(sd.next(1.0)), 0.411);
assert_eq!(round(sd.next(1.0)), 0.378);
assert_eq!(round(sd.next(1.0)), 0.349);
assert_eq!(round(sd.next(1.0)), 0.325);
assert_eq!(round(sd.next(1.0)), 0.0);

Before the fix, this test failed at the last line because sd.next(1.0) would return NaN
The StandardDeviation calculation ends with (self.m2 / self.count as f64).sqrt(), and clearly self.m2 should be zero when six 1.0s are given.
But a floating-point error occurs, and self.m2 becomes -0.0000000000000000000000002757268708510092  - which is a negative number, and sqrt() of a negative number is NaN.
To prevent this, self.m2 must be set to zero if it's negative.
self.m2 can't be negative mathematically, so if it is, then it must be zero (+floating-point error).

@edwardycl Interesting bug! Thank you for the report and fix!

@edwardycl The fix is out in version 0.3.1


Getting this error trying to install lattice-app

Trying to deploy lattice-app in vagrant version of lattice. I have nothing installed and I'm using the basic memory suggestion of 128 mb of lattice-app. Suggestions?
No port specified, image metadata did not contain exposed ports. Defaulting to 8080.
No working directory specified, using working directory from the image metadata...
Monitoring the app on port 8080...
No start command specified, using start command from the image metadata...
Start command is:
/lattice-app
Creating App: private-lattice-app
.Error, could not place all instances: insufficient resources. Try requesting fewer instances or reducing the requested memory or disk capacity.
Resources look like this for storage:
root@ubuntu-trusty-64:/etc/init# df -h
Filesystem                               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--trusty--64--vg-root  8.5G  2.7G  5.4G  34% /
none                                     4.0K     0  4.0K   0% /sys/fs/cgroup
udev                                     2.0G  4.0K  2.0G   1% /dev
tmpfs                                    396M  404K  395M   1% /run
none                                     5.0M     0  5.0M   0% /run/lock
none                                     2.0G     0  2.0G   0% /run/shm
none                                     100M     0  100M   0% /run/user
/dev/sda1                                 65M   37M   24M  61% /boot
vagrant                                  233G   44G  190G  19% /vagrant

That looks like vagrant, right?  As a habit, we recommend running ltc test -v directly after bringing up a new cluster using vagrant up or terraform apply.  My suspicion is the cluster hadn't warmed up enough when you attempted this command.

I get the same error with lattice 0.7 and private docker repository. Running ltc test -v produces failed tests.


Loading Plugins when in proxied enviroment

Currently, the plugins dont load when you have to go through a proxy because you are inside a corporate enviroment. So grafana fails here trying to get them directly without proxy.
Adding grafana_enviroment to the task where plugins are installed.

This role has been deprecated in favor of a the grafana-ansible-collection collection.


Fix spelling mistake: kQuery++ -> jQuery++

Coverage remained the same at 96.262% when pulling a62015cd5c6c1b991f9fe2af7b127d9c1ed0efac on kquery into 6247d0c07c000ba0cd68a192d518014744ef74d3 on master.


Copyright and License update

Copyright and License update in README and each source code file

Hello @hwpplayer1
Thank you for your contribution.
I'm ok with updating file headers to include the other contributors, however, there is no need to include the license in the README file, there is already a LICENSE file which gets detected correctly Github and all code scanning tools.


Refactor TreeReference

A few code quality refactors and starting to work (slowly) towards an immutable implementation of TreeReference

Can one of the admins verify this patch?


SA1106 false positive on class with no body

To reproduce:
public class A;

This incorrectly triggers SA1106 "The C# code contains an extra semicolon."
It feels like a similar thing to #3267, but that was for records and this is for classes

I can't reproduct this with the latest beta. The issue you refer to was about a record, but the fix was not specific to records. Looks like you are simply using an old release.

Although it looks like the fix #3268 was merged nearly 4 years ago and version 1.1.118 was released on 29/04/2019. Is there going to be a new non-beta version any time soon?

Not likely. See for example #3500.

Duplicate of #3267


NBA Draftkings Showdown

The exposure limits for NBA Draftkings showdown (and likely other showdown types with a captain) don't work as one may think.  I believe the max exposure allows for a player at each position captain and utility.  Is it possible we can have a limiting factor on each?

DraftKings captain mode of optimizer creates separate players for captain and util positions as well as DraftKings do when export players. So max exposure is set twice for captain and util players. I'm not sure that they should be joined, because in this case is not clear what exposure we should use if different exposures set for captain and util and how we can set exposure in csv if it has 2 rows for player.

Can we set exposure by player Id instead of name? This would allow maximum customization

It's not clear what do you mean, can you provide more details?

Sorry. On the csv import each player has a name and an associated player id that they are imported with. The number in parentheses.
If we set out max exposures using the player Id we can distinguish between the max exposure of a captain and a utility player since the player id is different by position.

How do you set exposure in your code? Do you use get_player_by_name method and then set max_exposure attribute for returned player?

I use the get player by name.

I will add get_player_by_id method to optimizer that search player by id.

you rock.


enhancement: replace threads with coroutines [sc-756]

:loudspeaker: Type of change

[ ] Bugfix
[ ] New feature
[x] Enhancement
[ ] Refactoring

:scroll: Description

:bulb: Motivation and Context

:green_heart: How did you test it?
:pencil: Checklist

[ ] I reviewed submitted code
[ ] I added tests to verify changes
[ ] All tests passing
[ ] No breaking changes

:crystal_ball: Next steps

Forgot to add an overarching comment to the review - @ahmadshabib nice work, but I have some small concerns about the defaults, and a bigger concern on whether publishing functions as intended. Maybe this would be a good opportunity to add some tests to the library, as we've been planning for a while.

@gpopides

To be clear: the publisher changes mean we now publish on a single thread and just rely on it being fast enough, right?

Yes exactly


Communication: Allow users to reference FAQs  in post

Checklist
General

[x] I tested all changes and their related features with all corresponding user types on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Client

[x] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
[x] I strictly followed the client coding and design guidelines.
[x] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[x] I documented the TypeScript code using JSDoc style.
[x] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Motivation and Context

Description

Steps for Testing

Prerequisites:

1 Instructor
1 Course with FAQ Enabled

Log in to Artemis
Navigate to Course Overview
Create a new post in a channel
See the FAQ reference button and click on it
Make sure, only FAQs in the state ACCEPTED are in the list (you can find this on the faq management page)
Create a reference to an existing FAQ.
Click on the reference -> you should be forwarded to faq overvier and it automatically scrolls to the FAQ you referenced
Go to Course Management
Go to Edit Course
Uncheck box 'Faq Enabled'
Verify that you cannot reference a faq in this course

Testserver States

[!NOTE]
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.

Review Progress

Performance Review

[ ] I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance even for very large courses with more than 2000 students.
[ ] I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance even for very large courses with more than 2000 students.

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Exam Mode Test

[ ] Test 1
[ ] Test 2

Performance Tests

[ ] Test 1
[ ] Test 2

Test Coverage

Class/File
Line Coverage
Confirmation (assert/expect)

course-faq.component.ts
98.61%
✅

course-overview.component.ts
85.25%
✅

metis.service.ts
85.92%
✅

posting-content.components.ts
97.46%
✅

posting-markdown-editor.component.ts
100%
✅

faq-reference-action
95%
✅

Screenshots

Summary by CodeRabbit
Release Notes

New Features

Integrated FAQ functionality into the course model, allowing courses to have associated FAQs.
Enhanced the FAQ component with sorting and dynamic scrolling capabilities.
Added methods for fetching and displaying FAQs related to courses.
Introduced a new action in the text editor for inserting FAQ references.
Added a method for generating router links to the FAQ section of a course.
Included a new icon for FAQ references in the posting content.
Expanded the data model to include frequently asked questions associated with courses.

Bug Fixes

Improved error handling during course loading, including specific checks for unauthorized access.

Documentation

Expanded localization support by adding entries for FAQs in multiple languages.

Tests

Added new test cases to ensure correct handling of FAQ references in components and services.

Walkthrough
The changes in this pull request involve enhancements related to Frequently Asked Questions (FAQs) across multiple components of the application. Key modifications include the introduction of new properties and methods in the Course model to manage FAQs, updates to the CourseFaqComponent for dynamic scrolling and sorting of FAQ items, and enhancements in the CourseOverviewComponent for fetching FAQs. Additionally, new routing capabilities for FAQs are added in the MetisService, alongside updates to localization files and test suites to ensure comprehensive coverage of the new features.
Changes

File
Change Summary

src/main/webapp/app/entities/course.model.ts
Added import for Faq, new function `isFaqEnabled(course: Course

src/main/webapp/app/overview/course-faq/course-faq.component.html
Simplified <hr> element and added a <div> wrapper around <jhi-course-faq-accordion> with id and template reference variable.

src/main/webapp/app/overview/course-faq/course-faq.component.ts
Added imports, properties for faqId and faqElements, and methods sortFaqs() and scrollToFaq(faqId: number). Updated ngOnInit to handle faqId from query parameters.

src/main/webapp/app/overview/course-overview.component.ts
Added Faq and FaqService imports, introduced method `setFaqs(course: Course

src/main/webapp/app/shared/metis/metis.service.ts
Added method getLinkForFaq(): string to generate a router link for FAQs.

src/main/webapp/app/shared/metis/metis.util.ts
Updated ReferenceType enum to include FAQ.

src/main/webapp/app/shared/metis/posting-content/posting-content-part/posting-content-part.components.ts
Added faQuestion icon for ReferenceType.FAQ in referenceIcon method.

src/main/webapp/app/shared/metis/posting-content/posting-content.components.ts
Updated computePostingContentParts method to handle FAQ references and modified regex in getPatternMatches to include [faq]...[/faq].

src/main/webapp/app/shared/metis/posting-markdown-editor/posting-markdown-editor.component.ts
Imported isFaqEnabled and FaqReferenceAction, integrated FAQ action into ngOnInit.

src/main/webapp/app/shared/monaco-editor/model/actions/communication/faq-reference.action.ts
Introduced FaqReferenceAction class for inserting FAQ references in the text editor.

src/main/webapp/i18n/de/metis.json
Added localization entry "faq": "FAQ" in German.

src/main/webapp/i18n/en/metis.json
Added localization entry "faq": "FAQ" in English.

src/test/javascript/spec/component/overview/course-faq/course-faq.component.spec.ts
Updated tests to include SortService, added tests for sorting and scrolling FAQs.

src/test/javascript/spec/component/shared/metis/posting-content/posting-content.component.spec.ts
Added test for computing parts when referencing a FAQ.

src/test/javascript/spec/component/shared/metis/postings-markdown-editor/postings-markdown-editor.component.spec.ts
Added tests for PostingMarkdownEditorComponent to validate behavior with FAQ feature toggled on and off.

src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-communication-action.integration.spec.ts
Updated tests to include FaqReferenceAction.

src/test/javascript/spec/helpers/mocks/service/mock-metis-service.service.ts
Added method getLinkForFaq() to MockMetisService.

src/test/javascript/spec/helpers/sample/metis-sample-data.ts
Introduced constants metisFaq1, metisFaq2, metisFaq3 and added them to metisCourse under faqs.

src/test/javascript/spec/service/metis/metis.service.spec.ts
Added test case for getLinkForFaq() method in MetisService.

Possibly related PRs

#9325: Introduces new functions and properties related to FAQs in the course.model.ts file, enhancing the management of FAQs.
#9477: Allows tutors to propose FAQs, directly relating to the changes in this PR that enhance the FAQ management system.
#9467: Adds default messages for empty FAQ views, complementing the changes that enhance the user interface for displaying FAQs.
#9561: Modifies filtering logic for conversations, relevant to refining the filtering of conversations to display only relevant channels.
#9526: Addresses console errors related to undefined checks in the FAQ component, enhancing the robustness of the component's rendering logic.
#9480: Reduces the height of channel and chat item cards, related to overall user interface improvements in the FAQ section.
#9439: Removes deprecated router modules, relevant to the modernization of the application's structure, including the FAQ management system.
#9443: Migrates the git diff report module to standalone components, aligning with modernization efforts in the FAQ management system.

Suggested labels
ready to merge, communication, small, bugfix
Suggested reviewers

JohannesWt
florian-glombik
az108
rabeatwork
krusche
Malekos74

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤ Share

X
Mastodon
Reddit
LinkedIn

🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:

Review comments: Directly reply to a review comment made by CodeRabbit. Example:

I pushed a fix in commit <commit_id>, please review it.
Generate unit testing code for this file.
Open a follow-up GitHub issue for this discussion.

Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:

@coderabbitai generate unit testing code for this file.
@coderabbitai modularize this function.

PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:

@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
@coderabbitai read src/utils.ts and generate unit testing code.
@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
@coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (Invoked using PR comments)

@coderabbitai pause to pause the reviews on a PR.
@coderabbitai resume to resume the paused reviews.
@coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
@coderabbitai full review to do a full review from scratch and review all the files again.
@coderabbitai summary to regenerate the summary of the PR.
@coderabbitai resolve resolve all the CodeRabbit review comments.
@coderabbitai configuration to show the current CodeRabbit configuration for the repository.
@coderabbitai help to get help.

Other keywords and placeholders

Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
Add @coderabbitai or @coderabbitai title anywhere in the PR title to generate the title automatically.

Documentation and Community

Visit our Documentation for detailed information on how to use CodeRabbit.
Join our Discord Community to get help, request features, and share feedback.
Follow us on X/Twitter for updates and announcements.

After clicking on a refereced FAQ, it doesn't show up in the FAQs overview, it just dissapear from the FAQs list
In the first screenshot are all the faqs available

I cant reproduce this one, i also checked ts1 and i was able to see the faq

2. After disabling FAQ, I can still see and click onto already referenced FAQs. Referencing new faq is, as expected, not possible

This is the intended behaviour right now. You are still able to access faq's when clicking on the link. This is a known issue, which is not related to this PR.

After some more testing, it seems to me that the problem is more chat related than course related. In the course where I said that it worked above, switching to another chat channel, the feature does not work anymore

Tested on TS4. There is an issue unfortunately.
I tried testing on Practical Course: Interactive Learning WS24/25 and Practical Course: Interactive Learning SS24.
On both of them I can see the FAQ reference button which lists the FAQs, however after I send the message, clicking on the reference links doesn't take me anywhere. Except for this one 'special' FAQ (WS24/25) :

For some reason the reference link works only for this one. Otherwise at all.
I can also confirm that I do not see the FAQ button once I have unchecked the 'Enable FAQ' when editing the course. 👍

@vinceclifford @JanaNF  Thanks for testing. I see the behavour and i know it needs to be fixed, but this is out of scope for this PR. Being able to access sides even the you dont see the sidebar item is currently the default behaviour and should be adressed in a seperate PR.

Tested on ts4, and I had the following issue:

I enabled the FAQ
I did not see the FAQ reference button
I went outside of the course and joined a text channel again
I saw the FAQ reference and could create a link, click on it and see the FAQ page
After I disabled the FAQ page
I could still reference to a FAQ page
But when I went to another course and went back to a text channel, I did not see the FAQ reference button

I sadly cant reproduce it. Sounds for me like a weird caching issue tbh


Trees: Options drop-down is not very user friendly

Probably low priority.
As a user who is not used to coding syntax, it could be difficult to write an entry in the right format for this dropdown (see images below). It is not clear which options are available.
These options could possibly be split into several dropdowns, maybe under an "Advanced Settings" header.
The dropdown:

The description of the dropdown:

Suggestion: Remove this input field.
The user will probably not understand how to use it and it doesn't really seem neccessary

question: can we remove it?

Input from Per:
We could create an advanced-options card where we can add options such as symbol size, y_axis etc.
We should add some documentation about what each option means.


Ribbon: java.net.UnknownHostException should be considered as connection failure error

My feeling is a UnknownHostException should be treated as a connection failure (no connection occurred after all...).
This could be handled by adding java.net.UnknownHostException to the list of connectionRelated exceptions in RequestSpecificRetryHandler.

Hi @brenuart
My understanding spring cloud retry mechanism is the use of spring-retry completed RequestSpecificRetryHandler  this class will be used in retry?

SpringRetry is opt-in and not suitable for those using Netflix's legacy RestClient (retry is then handled by Ribbon itself).

@brenuart
Thank you for your reply, I just read the source code. I think what you mean is that you want to make the following changes:
In the RequestSpecificRetryHandler  class
  protected List<Class<? extends Throwable>> connectionRelated =
            Lists.<Class<? extends Throwable>>newArrayList(SocketException.class, UnknownHostException.class);

This is right?
In addition, I would like to say RequestSpecificRetryHandler  is a ribbon  project, if we need to add we should submit PR in Netflix/Ribbon ?

PR welcome @brenuart. Since we're not focusing on RestClient much

@spencergibb I'll prepare the PR. Should we understand the RestClient approach is deprecated and the new "official" setup is HttpClient + SpringRetry?

Those are the defaults now.

RibbonClient has been deprecated by Netflix since we started integration

@spencergibb No idea why some checks failed - the "unknown classes" issue does not seem to be related at all to my changes...
Anyway, could you please have a look at my PR comments?

I'm off this week and next, so I will later, or maybe someone else will review prior

Happy New Year then… and see ya next year ;-)