Fast sync fails with Max Retries reached and backward sync keeps waiting for pre-conditions

Description
When setting up a Besu node to sync with the Kiln network and connected to a Lighthouse Beacon, we keep having issues with syncing (using FAST sync mode) and finding peers.
Steps to Reproduce (Bug)

Configure a Besu node for Kiln
Configure a Lighthouse beacon for Kiln, and set the Execution client as the Besu node.
Start both services

Expected behavior: [What you expect to happen]
Both Lighthouse and Besu are able to sync.
Actual behavior: [What actually happens]
Lighthouse gets synced and connected to Besu.
However, keeps showing errors that Besu is Far behind (even if besu showed logs that confirmed the control from Beacon).
Frequency: 100% of times on this setup.
Versions (Add all that apply)

Image version: fab10/besu:22.4.3-SNAPSHOT (running on kubernetes)

Additional Information (Add any of the following or anything else that may be relevant)

Besu setup info - genesis file, config options

       --data-path=/data                                                                                │
│       --host-allowlist=*                                                                                │
│       --network=kiln                                                                                │
│       --rpc-http-enabled=true                                                                                │
│       --rpc-http-host=<IP_ADDRESS>                                                                                │
│       --rpc-http-cors-origins=*                                                                                │
│       --rpc-http-port=8545                                                                                │
│       --rpc-http-max-active-connections=300                                                                                │
│       --rpc-ws-enabled=true                                                                                │
│       --rpc-ws-host=<IP_ADDRESS>                                                                                │
│       --rpc-ws-port=8546                                                                                │
│       --engine-host-allowlist=*                                                                                │
│       --engine-rpc-http-port=8550                                                                                │
│       --engine-jwt-enabled=true                                                                                │
│       --engine-jwt-secret=/opt/secrets/jwtsecret.hex                                                                                │
│       --override-genesis-config=terminalTotalDifficulty=20000000000000                                                                                │
│       --data-storage-format=BONSAI                                                                                │
│       --sync-mode=FAST                                                                                │
│       --fast-sync-min-peers=1                                                                                │
│       --rpc-http-enabled=true                                                                                │
│       --rpc-http-api=ETH,ADMIN,NET,WEB3

Logs

Logs with errors on fast sync:

 2022-06-20 14:39:00.618+00:00 | nioEventLoopGroup-3-1 | INFO  | SyncTargetManager | Found common ancestor with peer Peer 0xe2c33c7b8a5c0ed167... PeerReputation 100, validated? true, disconnected? false at b │
│ 2022-06-20 14:39:03.857+00:00 | nioEventLoopGroup-3-1 | INFO  | SyncTargetManager | Found common ancestor with peer Peer 0xe2c33c7b8a5c0ed167... PeerReputation 100, validated? true, disconnected? false at b │
│ 2022-06-20 14:39:06.946+00:00 | nioEventLoopGroup-3-1 | INFO  | SyncTargetManager | Found common ancestor with peer Peer 0xe2c33c7b8a5c0ed167... PeerReputation 100, validated? true, disconnected? false at b │
│ 2022-06-20 14:39:11.938+00:00 | nioEventLoopGroup-3-1 | INFO  | FastSyncDownloader | Re-pivoting to newer block.                                                                                │
│ 2022-06-20 14:39:11.938+00:00 | nioEventLoopGroup-3-1 | INFO  | FastSyncDownloader | Starting sync.                                                                                │
│ 2022-06-20 14:39:11.938+00:00 | nioEventLoopGroup-3-1 | INFO  | FastSyncDownloader | Clearing bonsai flat account db                                                                                │
│ 2022-06-20 14:39:12.065+00:00 | nioEventLoopGroup-3-1 | INFO  | TransitionPivotSelector | A finalized block is present, use it as pivot                                                                        │
│ 2022-06-20 14:39:12.066+00:00 | nioEventLoopGroup-3-1 | INFO  | PivotSelectorFromFinalizedBlock | Returning finalized block hash as pivot: 0xde6cad12a72f83e8f24fd936a49bef5fa67ebdee68100aedd58b4d5463613b1a  │
│ 2022-06-20 14:39:12.069+00:00 | nioEventLoopGroup-3-1 | INFO  | AbstractRetryingPeerTask | No useful peer found, checking remaining current peers for usefulness: 0                                            │
│ 2022-06-20 14:39:17.070+00:00 | EthScheduler-Timer-0 | INFO  | AbstractRetryingPeerTask | No useful peer found, checking remaining current peers for usefulness: 0                                             │
│ 2022-06-20 14:39:22.070+00:00 | EthScheduler-Timer-0 | INFO  | AbstractRetryingPeerTask | No useful peer found, checking remaining current peers for usefulness: 0                                             │
│ 2022-06-20 14:39:27.073+00:00 | EthScheduler-Timer-0 | ERROR | FastSyncDownloader | Encountered an unexpected error during fast sync. Restarting fast sync in PT5S seconds.                                    │
│ java.util.concurrent.CompletionException: org.hyperledger.besu.ethereum.eth.manager.exceptions.MaxRetriesReachedException: Task failed: MAX_RETRIES_REACHED                                                    │
│     at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)                                                                                │
│     at org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask.executeTask(AbstractRetryingPeerTask.java:85)                                                                                │
│     at org.hyperledger.besu.ethereum.eth.manager.task.AbstractEthTask.executeTaskTimed(AbstractEthTask.java:150)                                                                                │
│     at org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask.lambda$handleTaskError$1(AbstractRetryingPeerTask.java:126)                                                                     │
│     at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)                                                                                │
│     at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)                                                                                │
│     at org.hyperledger.besu.ethereum.eth.manager.EthScheduler.lambda$failAfterTimeout$11(EthScheduler.java:278)                                                                                │
│     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)                                                                                │
│     at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)                                                                                │
│     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)                                                                                │
│     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)                                                                                │
│     at java.base/java.lang.Thread.run(Thread.java:829)                                                                                │
│ Caused by: org.hyperledger.besu.ethereum.eth.manager.exceptions.MaxRetriesReachedException: Task failed: MAX_RETRIES_REACHED                                                                                │
│     ... 13 more                                                                                │
│ 2022-06-20 14:39:32.075+00:00 | EthScheduler-Timer-0 | INFO  | FastSyncDownloader | Starting sync.                                                                                │
│ 2022-06-20 14:39:32.075+00:00 | EthScheduler-Timer-0 | INFO  | FastSyncDownloader | Clearing bonsai flat account db                                                                                │
│ 2022-06-20 14:39:32.193+00:00 | EthScheduler-Timer-0 | INFO  | WaitForPeersTask | Waiting for 1 total peers to connect. 0 peers currently connected.                                                           │
│ 2022-06-20 14:40:37.465+00:00 | Thread-13 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:42:37.466+00:00 | Thread-14 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:43:24.990+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-20 14:44:37.467+00:00 | Thread-15 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:46:37.467+00:00 | Thread-16 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:48:37.468+00:00 | Thread-17 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:49:48.736+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-20 14:50:37.469+00:00 | Thread-18 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:52:37.470+00:00 | Thread-19 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:54:37.471+00:00 | Thread-20 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:56:12.569+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-20 14:56:37.472+00:00 | Thread-21 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 14:58:37.473+00:00 | Thread-22 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 15:00:37.474+00:00 | Thread-23 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-20 15:02:36.715+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577

Same issue after 12h hours:

│ 2022-06-21 08:06:36.761+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:06:37.851+00:00 | Thread-536 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:08:37.852+00:00 | Thread-537 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:10:37.853+00:00 | Thread-538 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:12:37.853+00:00 | Thread-539 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:13:00.932+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:14:37.854+00:00 | Thread-540 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:16:37.855+00:00 | Thread-541 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:18:37.855+00:00 | Thread-542 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:19:24.808+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:20:37.856+00:00 | Thread-543 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:22:37.856+00:00 | Thread-544 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:24:37.857+00:00 | Thread-545 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:25:48.575+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:26:37.858+00:00 | Thread-546 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:28:37.858+00:00 | Thread-547 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:30:37.859+00:00 | Thread-548 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:32:12.658+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:32:37.860+00:00 | Thread-549 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:34:37.860+00:00 | Thread-550 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:36:37.861+00:00 | Thread-551 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:38:36.787+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:38:37.862+00:00 | Thread-552 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:40:37.862+00:00 | Thread-553 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:42:37.863+00:00 | Thread-554 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:44:37.864+00:00 | Thread-555 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:45:00.576+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:46:37.864+00:00 | Thread-556 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:48:37.865+00:00 | Thread-557 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:50:37.866+00:00 | Thread-558 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:51:24.804+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:52:37.867+00:00 | Thread-559 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:54:37.867+00:00 | Thread-560 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:56:37.868+00:00 | Thread-561 | INFO  | BackwardSyncContext | Waiting for preconditions...                                                                                │
│ 2022-06-21 08:57:48.839+00:00 | vert.x-worker-thread-0 | INFO  | EthProtocolManager | disconnecting peers with total difficulty over<PHONE_NUMBER>4577                                                            │
│ 2022-06-21 08:58:37.869+00:00 | Thread-562 | INFO  | BackwardSyncContext | Waiting for preconditions...

and Logs from lighthouse:
│ Jun 21 08:57:48.585 INFO New block received                      root: 0xa19595f352018856e6d42467b9a530a620c13ac4dc0a0d528fc9cebe880582c9, slot: 732864                                                        │
│ Jun 21 08:57:54.000 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x48e8703b1e02d25afc619d1bbfbb0d19caaa192d128134ae6e8d22fdc701f7eb), service: slot_notifier          │
│ Jun 21 08:57:54.001 INFO Synced                                  slot: 732864, block: 0xa195…82c9, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x48e8…f7eb (unverified), pee │
│ Jun 21 08:58:00.624 INFO New block received                      root: 0xc4ef6c18201443621ec8ab32985e4aaa36f5cd68a2cce2eb095398d89fc431af, slot: 732865                                                        │
│ Jun 21 08:58:06.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x1c6591b7627a307aeec7a15ea40e7725bcd5ea8b00c5b1907a08e13ae60272d5), service: slot_notifier          │
│ Jun 21 08:58:06.001 INFO Synced                                  slot: 732865, block: 0xc4ef…31af, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x1c65…72d5 (unverified), pee │
│ Jun 21 08:58:18.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x1c6591b7627a307aeec7a15ea40e7725bcd5ea8b00c5b1907a08e13ae60272d5), service: slot_notifier          │
│ Jun 21 08:58:18.001 INFO Synced                                  slot: 732866, block:    …  empty, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x1c65…72d5 (unverified), pee │
│ Jun 21 08:58:24.197 INFO New block received                      root: 0xb73db67f143c486890d95d2929431c3bb67248c81dfb6316a29fde7f296fdb3d, slot: 732867                                                        │
│ Jun 21 08:58:30.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x3ace7a3a2fd43e2686cfac48d568357aebe8dc63317c59da90cf6b015fffbf0c), service: slot_notifier          │
│ Jun 21 08:58:30.001 INFO Synced                                  slot: 732867, block: 0xb73d…db3d, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x3ace…bf0c (unverified), pee │
│ Jun 21 08:58:37.671 INFO New block received                      root: 0xdc93885ce79a92edae1754305039cba47f28186ce005900587b700d68d6097be, slot: 732868                                                        │
│ Jun 21 08:58:42.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x5dbf8712fab6ab4a99388b184950ebbe26a8d4f4a544af131001623ee2acdfc4), service: slot_notifier          │
│ Jun 21 08:58:42.001 INFO Synced                                  slot: 732868, block: 0xdc93…97be, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x5dbf…dfc4 (unverified), pee │
│ Jun 21 08:58:48.217 INFO New block received                      root: 0x13d84c4bd54e4377b784c65a6999f2dae3aef57ffed34081c43143fc847b4e30, slot: 732869                                                        │
│ Jun 21 08:58:53.727 ERRO Error fetching block for peer           error: BlockHashMissingFromExecutionLayer(ExecutionBlockHash(0xf23681bc9b1587fd33113797fd35dd353ca5dee8436662e706ded0017af000ad)), block_root │
│ Jun 21 08:58:54.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x48c3fd2228ebc2df49f1f04a72f4d5f8cae329680023ffce1f4270abda19f49e), service: slot_notifier          │
│ Jun 21 08:58:54.001 INFO Synced                                  slot: 732869, block: 0x13d8…4e30, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x48c3…f49e (unverified), pee │
│ Jun 21 08:58:54.636 ERRO Error fetching block for peer           error: BlockHashMissingFromExecutionLayer(ExecutionBlockHash(0x6cb7f7287d181ffa93ac08db4ab1bc7f5f8c8fe1f6239a30be060bfe0aa3e8a9)), block_root │
│ Jun 21 08:58:55.231 ERRO Error fetching block for peer           error: BlockHashMissingFromExecutionLayer(ExecutionBlockHash(0x09986e0a44f3a7387f79fad0c8fcffe81e4e8bd0a688b5a292ea32470d89f908)), block_root │
│ Jun 21 08:59:00.153 INFO New block received                      root: 0x84f3e46d78a69d88e68081b220982281b334122ce1b710b4b35f166d636053f7, slot: 732870                                                        │
│ Jun 21 08:59:06.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0x585b5bddd510467e6a6100e7fb555d5c1e005b42471355a80833f113fefdb2d4), service: slot_notifier          │
│ Jun 21 08:59:06.001 INFO Synced                                  slot: 732870, block: 0x84f3…53f7, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0x585b…b2d4 (unverified), pee │
│ Jun 21 08:59:12.254 INFO New block received                      root: 0x3eabcbd0f0fa52e09b8611a9419845d019d6ad31c9fcf8f9ddc8b3952222b041, slot: 732871                                                        │
│ Jun 21 08:59:18.001 WARN Head execution payload is unverified    execution_block_hash: ExecutionBlockHash(0xe002453629192b9ed8fa8f90586038f03c91f4e94d79697ef2c30480bb76d843), service: slot_notifier          │
│ Jun 21 08:59:18.001 INFO Synced                                  slot: 732871, block: 0x3eab…b041, epoch: 22902, finalized_epoch: 22900, finalized_root: 0x7c5d…c37f, exec_hash: 0xe002…d843 (unverified), pee │
│ Jun 21 08:59:24.167 INFO New block received                      root: 0xe4994f031b02975573539f8242ec6f902d6dd9eeccedce8feb845ba7d44b3eb3, slot: 732872

Hi Ricardo,
I was not able to replicate this issue using the latest (22.4.4) version of Besu with the latest unstable version of lighthouse. I was able to get them to sync. The message (FarBehind) on LH appeared until Besu finished sync
Initially, I also could not find the message:
INFO  disconnecting peers with total difficulty over.
Looking into the code, it seems that the code where best got stuck was introduced by the PR:  https://github.com/hyperledger/besu/pull/3944.
I believe that the issue was caused by the block:
https://github.com/jflo/besu/blob/e8674bdea9cd885c66be52c63bca78d68479a940/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthProtocolManager.java#L394
This code, however, was reverted by the PR https://github.com/hyperledger/besu/pull/3978.
Would be able to tested it again with the latest stable version of Besu?

Closing this one since the issue seems to be caused by an unstable code that got removed from Besu

thanks. @Gabriel-Trintinalia which version fixed this issue?

thanks @Gabriel-Trintinalia


As a Project Coordinator, I want to see the status of every form in the task list, so that I know what my progress is

Description:
When looking at the task list, created in #366, the user should be able to tell whether each of the tasks is Not Started, Complete, Incomplete or has Attention Required
This needs to take into account pages that render multiple forms, e.g. contacts or managers
Acceptance Criteria:
Given that I am viewing a project revision task list

When none of a task's form(s) were updated since the previous revision
Then the status in the task list should be Not Started

When some of a given task's form(s) was updated since the previous revision, their status is staged
And the other forms were not updated (e.g. one contact was updated, the others were not)
Then the status in the task list should be Complete

When some of a task's forms were updated since the previous revision
And their status is pending
Then the status in the task list should be Incomplete

When some of a task's forms were updated since the previous revision
And their status is staged
And they have validation errors
Then the status in the task list should be Attention Required

Development Checklist:

[ ] The task list should have a fixed width, to avoid page layout changes when the status of a task changes
[ ] An isPristine computed column should be added to easily find out if a form_change was updated. Looking at created_at vs updated_at won't work since changes can be undone, this needs to compare the new_form_data against the previous form, using the column created in #374
[ ] The Attention Required status should be bold
[ ] Meets the DOD

Notes:

Hey team! Please add your planning poker estimate with ZenHub @BCerki @dleard @gurjmatharu @pbastia

I may be mistaken but for the acceptance criteria point:
When some of a task's forms were updated since the previous revision
And their status is staged
And they have validation errors
Then the status in the task list should be Attention Required

The status should be pending, no?  I don't think we can stage forms with validation errors.

Also it looks like we're creating a project_contact form in status pending when we create a new project.  Is this expected behaviour?

The status should be pending, no? I don't think we can stage forms with validation errors.

No, this is correct. When you click on the submit button at the bottom of a form, it should change to staged, regardless of validation errors. Looking at the code in ProjectForm it does look like there's a bug:
  const handleSubmit = async (e: ISubmitEvent<any>) => {
    await handleChange(e.formData, "staged");
    props.onSubmit();
  };
...
    <FormBase
        ...
        onSubmit={handleSubmit}
      >
        <Button type="submit" style={{ marginRight: "1rem" }}>
          Submit Project Overview
        </Button>
      </FormBase>

onSubmit will only be called if validation passes on the front-end, which means that, as you're indicating, a form failing validation can't be staged.
We probably want to separate await handleChange(e.formData, "staged"); and props.onSubmit(); into two different handlers.
  const handleSubmit = async (e: ISubmitEvent<any>) => {
    props.onSubmit();
  };

  const handleSubmitClick = async () => {
    await handleChange(revision.projectFormChange.newFormData, "staged");
  };
...
    <FormBase
        ...
        onSubmit={handleSubmit}
      >
        <Button type="submit" style={{ marginRight: "1rem" }} onClick={handleSubmitClick}>
          Submit Project Overview
        </Button>
      </FormBase>

This fix may be required in the other forms too (not sure since they're actually multiple forms). As you fix this, make sure to add tests for this specific scenario: "clicking the submit button should stage a form with validation errors".
The idea of the staged status is to indicate that the user tried to submit the form (or navigated away from the page, to be added with #375). A pending form will likely fail validation, especially when you create a new project and all of the required fields are empty, and we don't want to bombard the user with validation errors and "Attention Required" statuses.

Also it looks like we're creating a project_contact form in status pending when we create a new project. Is this expected behaviour?

This is currently expected, yes, as a primary contact is required. The fact that the primary contact is in the "optional" section of the steps is an issue that we'll need to tackle at some point.

@matthieu-foucault thanks!  I'll add the form fix into this issue, and add tests.  One thing of note is that the project_contact form won't ever be in a state to show Not started as shown in the screenshot.

Thanks @gurjmatharu ! Tested in dev by:

Adding a new project: status changed/updated accordingly as I completed the form. Status that I observed included incomplete, not started and completed.
Editing an existing project: after editing an existing project, saving and then going back to that project - all the statuses appeared to revert to 'Not started'.

Observations:

when adding a new project, I wasn't able to save until all steps completed - even the optional steps. This may be captured in an existing bug ticket or it could be user error on my part. FYI @matthieu-foucault
I keep getting error messages, but have no idea what the error is (nothing is being displayed). I believe there is a bug ticket for this one as well.


Imaging 247

This PR addresses JIRA issue 247.  Upon acceptance, I believe that 247 can be closed.

Coverage increased (+0.02%) to 75.901% when pulling ebb7afc6a1ad7ecc3870fae2c7d847acf428a5d4 on gwlucastrig:imaging-247 into 63965de3ec90a4388c3641ddedd56c6e550f29c6 on apache:master.

Good explanation both here and on JIRA. Thanks again @gwlucastrig ! Change looks good to me!


Kd/fix team avatar aspect ratio

Fixes broken aspect ratio for avatars in org members list admin page.
Before:

After:
aspect ratio is preserved for avatar (with fixed width)
min-width is set to prevent single-character text lines

Codecov Report

Merging #14200 (ecd8f42) into master (632800e) will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #14200      +/-   ##
==========================================
+ Coverage   42.00%   42.02%   +0.02%
==========================================
  Files         733      733
  Lines       78713    78713
==========================================
+ Hits        33061    33081      +20
+ Misses      40218    40204      -14
+ Partials     5434     5428       -6

Impacted Files
Coverage Δ

services/pull/pull.go
42.85% <0.00%> (+0.50%)
:arrow_up:

models/gpg_key.go
53.90% <0.00%> (+0.57%)
:arrow_up:

modules/git/batch_reader_nogogit.go
46.26% <0.00%> (+1.49%)
:arrow_up:

modules/process/manager.go
75.00% <0.00%> (+2.50%)
:arrow_up:

models/unit.go
49.31% <0.00%> (+2.73%)
:arrow_up:

modules/git/repo_language_stats_nogogit.go
63.82% <0.00%> (+6.38%)
:arrow_up:

modules/indexer/stats/db.go
60.00% <0.00%> (+12.00%)
:arrow_up:

modules/util/timer.go
85.71% <0.00%> (+42.85%)
:arrow_up:

Continue to review full report at Codecov.

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

@kdumontnu pleace "Update Branch"

@kdumontnu pleace "Update Branch"

please update the branch. In general it's better if you allow maintainers to push to the branch.

please update the branch. In general it's better if you allow maintainers to push to the branch.

@zeripath this fork belongs to an org, so the standard maintainer checkbox isn’t an option :(

@zeripath this fork belongs to an org, so the standard maintainer checkbox isn’t an option :(

@zeripath @6543 @techknowlogick all set

@zeripath @6543 @techknowlogick all set


add babel-polyfill and rename compnent

Pull Request Test Coverage Report for Build 28

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 26:
0.0%

Covered Lines:
6

Relevant Lines:
6

💛  - Coveralls


Stop traversing tar and instead extract to tempfile directory

Updated to use Pipenv
Changed preferred calling convention when using python (main.py)
Updated README and CONTRIBUTING with best practices
Updated Github Actions to use all of this
Add support for Python 3.8

Oh, I guess if master doesn't have the updated actions the tests won't run... Guess I'll just merge to test for now...


Add cargo doc flag or functionality to open docs at a specific crate

Problem
I believe it may be useful to add a flag or functionality to choose what crate cargo doc --open opens to. For repositories with a lot of local crates, this could be useful for newcomers who want to know where to start.
A current workaround is to generate docs for all crates and then package the specific crate you want.
cargo doc --all
cargo doc -p <desired-crate> --open

However, that workaround requires circumstantial knowledge of cargo doc. Perhaps, the spirit of what this is trying to accomplish can be achieved in one cargo doc command.
Proposed Solution
I haven't dug too deep into the cargo doc codebase yet, but generally, the solution could look like the following:
cargo doc --open-at-crate <desired-crate>

Alternatively or additionally, users could specify a "default docs crate" that cargo doc --open opens to.
[package]
default_doc_crate = "<desired-crate>"

Notes
This functionality might already exist and I could be missing something! Thanks for reading and for all contributors to cargo.
Similar issue: https://github.com/rust-lang/cargo/issues/3805

Sorry, I didn't fully understand the problem. Doesn't cargo doc -p <package> --open fit what you need? I feel like cargo doesn't need a "build all docs" to open only the doc of a specific package with that command. Is there any prominent error preventing you from building only the specific doc?

In a repository with multiple crates using Cargo workspaces, I believe you need to build docs for all crates in the workspace and then run cargo doc -p <package> --open. The workaround I described covers for this.
cargo doc --all
cargo doc -p <desired-crate> --open

Essentially, the behavior I am identifying is the following: build docs for all crates in the Cargo workspace, and then ensure one of the crates is the "default" one that is opened. For the repository I am referencing, we have many sub-crates, so it would be a nice-to-have for there to be a "default" crate that cargo doc --open (or equivalent) lands on.
(I try to avoid off topic comments, but good to see you @weihanglo. Hope SUSE is going well 😄)

Hmm… just did a quick test with a workspace. I can open the doc of a specific crate without building all at once.

Click to see the repro script
#! /usr/bin/env bash
mkdir test-open && cd test-open

cargo new --lib a
cat <<EOF > a/src/lib.rs
/// # a
pub fn a() {}
EOF

cargo new --lib b
cat <<EOF > b/src/lib.rs
/// # b
pub fn b() {}
EOF

cargo new --lib c
cat <<EOF > c/src/lib.rs
/// # c
pub fn c() {}
EOF

cat <<EOF > Cargo.toml
[workspace]
members = ["a", "b", "c"]
EOF

And I got the point of default-doc-open. It's similar to what default-run does. I can see the value for newcomers of a project. Though I foresee people might want to --open a lot of different stuff 😆 Will bring up this to the next triage meeting if no other high priority issues.
(Off topic: Thanks! I am doing well. The only change is your leaving 🥲)


Incorporate latest live changes into master.

Docs Build status updates of commit f331d7c:
:warning: Validation status: warnings

File
Status
Preview URL
Details

articles/libraries/numerics/installation.md
:warning:Warning

Details

articles/concepts/multiple-qubits.md
:white_check_mark:Succeeded

articles/language/index.md
:white_check_mark:Succeeded

articles/techniques/file-structure.md
:white_check_mark:Succeeded

articles/libraries/numerics/installation.md

Line 31: [Warning] Invalid file link:(~/media/vs2017-nuget-console-menu.png).

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


Removed reload button in Game

https://github.com/sopra-fs23-group-40/Client/commit/7988b99dac933d020799e1f38afd393dfc7f60ec


Sorting issues

I'm having some sorting issues with int8 column on Postgresql database.
Number 10 and 30 sorted as varchar I think, but not number 20

Unfortunately can't reproduce it. Please tell your OS.

Are there more columns? Maybe you have sorted by another column first. As far as I can tell from two days of using DBeaver, it supports sorting by multiple columns and uses the order in which you clicked on the sorting headers.

Are there more columns? Maybe you have sorted by another column first. As far as I can tell from two days of using DBeaver, it supports sorting by multiple columns and uses the order in which you clicked on the sorting headers.

Hey I just know this feature, and yes this because multiple sorting. Thank you for your information


Speaker got error message when trying to update their session

Larry Gilleck (DOI) attempted to update his session description but received this error message when trying to save.
The referenced group (node:1) is invalid.

When I logged in as admin and tried to update the txt myself, I got this message:
Temporarily Unavailable
The website you are trying to reach is having technical difficulties....

Try again. That may be due to CDN.
On Mon, Jun 22, 2015 at 12:24 PM, Jessica Dearie<EMAIL_ADDRESS>wrote:

When I logged in as admin and tried to update the txt myself, I got this
message:
Temporarily Unavailable
The website you are trying to reach is having technical difficulties....
—
Reply to this email directly or view it on GitHub
https://github.com/Drupal4Gov/Drupal-GovCon-2015/issues/115#issuecomment-114170783
.

Saved for me now.

still having some issues with editing sessions. I've had two recent complaints. Mohan and this one:
First Name: Theresa
Last Name: Devine
Email Address<EMAIL_ADDRESS>Inquiry Type: Sessions
Subject: THE DIGITAL AGE OF HEALTHY PEOPLE 2020 - added presenter
Message:
Hello!
I wanted to see if it would be possible to add one presenter to our session,
THE DIGITAL AGE OF HEALTHY PEOPLE 2020, to discuss some of the taxonomy work
that we've done with the site using Drupal. Matt Allen from CommunicateHealth
would be a wonderful addition to the discussion.
Thanks for your consideration! Please let me know if you need any other
information from me.
I added the speaker, but probably need to look at this for next year as the random can't edit a node thing is still happening.

more can't edit. Really think this should be a priority item for next year.


FI-1333: First Pass Bulk Data Tests WIP

This PR is a work in progress - my main goal is to share what I've done so far and get some feedback to make sure I'm on the right track. Keep in mind that the code isn't as clean as I think it could be (especially with inputs/outputs) but I think it gets the job done for a first pass - definitely open to suggestions on best to pass information like an access_token between tests. There are also extraneous comments throughout trying to explain my thought process and lingering organizational questions. The first test - TLS authorization - has not been implemented yet, so ignore the TlsTester class file and related additions to the assertions.rb file. I will update the PR once I've taken a stronger look at that. I tested using the https://bulk-data.smarthealthit.org/index.html service and using the keys in the dev_suites/ui_onc_program/multi_patient_api/bulk_data_jwks.json file.
Also was unsure how to deal with the deprecated BDA tests - I ended up just deleting them, but I saw in program that they have a tag denoting this. Should I implement that?

PR Status as of 12/2:
Bulk_Data_Authorization.rb (Group 1) and its unit tests are ready to be reviewed. Same situation with Bulk_Data_Group_Export (Group 2) and its unit tests as well. Bulk Data Utils contains a lot of the backbone of the testing methods for these groups.  As part of Group 3, I implemented a stream method in the http_client class, which basically just builds upon Faraday's stream functionality - this should also be ready for review, and there are corresponding unit tests as well.
In-Progress:

[ ]

To-Do:
Implement


Could support multi-line regexps with github.com/icholy/replace

After a little IRC chat, @icholy wrote a neat streaming replacer. And he made it do regexps too! (As long as they're guaranteed to have matches shorter than a threshold, default 64 KiB.)
sub could use icholy/replacer to implement multi-line regexps. See flags s and m, https://github.com/google/re2/wiki/Syntax
This could be used for things like sub -m '\n\n\n+' '\n' to replace two or more blank lines with just one.
Background: http://doc.cat-v.org/bell_labs/structural_regexps/
(replace might still be buggy: https://github.com/icholy/replace/issues/2)

Also if I'm too much of a burden just let me know, I'll pile up these ideas and once the pile is big enough I'll end up writing code for them myself ;-)

The replace.Regexp*  functions are allowed to call the replace callback functions multiple times with the same match. (This happens when the destination buffer is too small). This will cause sub to print duplicates of the substitutions it made. Instead of calling the callback again, I should be saving the result on failure. So replace won't work here as-is.

Oh I didn't think about the diff output mode. With replace, the data at hand isn't necessarily line-aligned either!
It could do something have a wrapper that insists on widening the "window" to the newlines preceeding and following the actually relevant data, just to output a (potentially multi-line) diff.

Or just use an actual differ and feed the original and replaced content to it? That would get you diff -u style context, too (at the cost of having more fluff in the output).

Line aligned wouldn't be enough because, if there were multiple matches on a single line, the callback would be invoked with each match separately and output duplicates.

Yeah I'd personally rather just feed the result to a separate differ. I like the diff -u context.


Coordinate with IgBlast to support AIRR germline set format

I believe @jianye00 has mentioned in the past that IgBlast would be willing to consider using an AIRR format for germline sets as an input instead of its internal tables. Now that we have an experimental format, it would be worthwhile to start the discussion to see what IgBlast's requirements are, and whether there are any gaps with what's provided in the AIRR format.
This could provide immediate benefits to users as potentially many non-model organism could be annotated using IgBlast as well as open up downstream analysis tools.

Hi Scott,
Are you talking about the sub-region boundaries like FWR1, CDR1 for germline V and J genes?  We essentially need the start and stop positions.  Yes this would complement the missing organisms for IgBlast and possibly holes even in some supported organisms.

Are you talking about the sub-region boundaries like FWR1, CDR1 for germline V and J genes? We essentially need the start and stop positions. Yes this would complement the missing organisms for IgBlast and possibly holes even in some supported organisms.

Yes, those should be part of the annotation, like these in SequenceDelineationV. I'm not sure what's available for J genes, but we should update the spec if something is missing.
        - fwr1_start
        - fwr1_end
        - cdr1_start
        - cdr1_end
        - fwr2_start
        - fwr2_end
        - cdr2_start
        - cdr2_end
        - fwr3_start
        - fwr3_end
        - cdr3_start

Are the NCBI tools able to read YAML/JSON files? The structure of the data can get a little complicated because there are a number of different objects nested together.
I'll include @williamdlees as he can help answer specifics about how coordinates are specified, in comparison to how IgBlast might need them.

IgBlast does not r read Json format but I saw other tools here use it.  Point me to your data and I'll take a look.

OGRDB germline sets. There is an AIRR (JSON) link to download.

There are a number of C++ JSON libraries, e.g., Boost has a JSON parser.

There's an explanation of the schema here.  For V-genes, the important fields are coding_sequence, which is the IMGT-gapped sequence, and v_gene_deliniation.  For J genes we provide coding_sequence and j_codon_frame.

@jianye00 was this added in 1.20.0?

Yes, it is supported already in 1.20.0.  There is a python script  makeogrannote.py in the bin folder of the release package.  You can use that to produce your custom annotation file out of AIRR JSON file.  The you just feed it to igblast (see "Procedure to use custom FWR/CDR annotation" in https://ncbi.github.io/igblast/cook/How-to-set-up.html for more details).

Hi Jian,
There are some potentially breaking changes in the JSON format which you should be aware of, although it looks to me as though the scripts will run ok. The changes are detailed here: https://wordpress.vdjbase.org/index.php/ogrdb_news/germline-set-format-updates/. The key change is that coding_sequence is no longer gapped – although there is an IMGT gapped sequence in the v_gene delineation, if the scheme is IMGT. These changes are live now.
makeogrdb.py uses coding_sequence, but as it strips the dots out I think it should run ok.
Likewise makeogrannote.py makes calls to GetDotCounts which aren’t needed any longer, but they shouldn’t do any harm.
All the best
William
From: jianye00 @.>
Sent: Monday, July 10, 2023 4:46 PM
To: airr-community/airr-standards @.>
Cc: William Lees @.>; Mention @.>
Subject: Re: [airr-community/airr-standards] Coordinate with IgBlast to support AIRR germline set format (Issue #599)
Yes, it is supported already in 1.20.0. There is a python script makeogrannote.py in the bin folder of the release package. You can use that to produce your custom annotation file out of AIRR JSON file. The you just feed it to igblast (see "Procedure to use custom FWR/CDR annotation" in https://ncbi.github.io/igblast/cook/How-to-set-up.html for more details).
—
Reply to this email directly, view it on GitHub https://github.com/airr-community/airr-standards/issues/599#issuecomment-1629224950 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACXBI7N54ZP3LRXOOR2KTWDXPQPRVANCNFSM5RSKGHAQ .
You are receiving this because you were mentioned.Message ID: @.***>

Thanks William.  We'll check to make sure it works.
On Tuesday, July 11, 2023 at 12:07:20 PM EDT, William Lees<EMAIL_ADDRESS>wrote:

Hi Jian,
There are some potentially breaking changes in the JSON format which you should be aware of, although it looks to me as though the scripts will run ok. The changes are detailed here: https://wordpress.vdjbase.org/index.php/ogrdb_news/germline-set-format-updates/. The key change is that coding_sequence is no longer gapped – although there is an IMGT gapped sequence in the v_gene delineation, if the scheme is IMGT. These changes are live now.
makeogrdb.py uses coding_sequence, but as it strips the dots out I think it should run ok.
Likewise makeogrannote.py makes calls to GetDotCounts which aren’t needed any longer, but they shouldn’t do any harm.
All the best
William
From: jianye00 @.>
Sent: Monday, July 10, 2023 4:46 PM
To: airr-community/airr-standards @.>
Cc: William Lees @.>; Mention @.>
Subject: Re: [airr-community/airr-standards] Coordinate with IgBlast to support AIRR germline set format (Issue #599)
Yes, it is supported already in 1.20.0. There is a python script makeogrannote.py in the bin folder of the release package. You can use that to produce your custom annotation file out of AIRR JSON file. The you just feed it to igblast (see "Procedure to use custom FWR/CDR annotation" in https://ncbi.github.io/igblast/cook/How-to-set-up.html for more details).
—
Reply to this email directly, view it on GitHub https://github.com/airr-community/airr-standards/issues/599#issuecomment-1629224950 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ACXBI7N54ZP3LRXOOR2KTWDXPQPRVANCNFSM5RSKGHAQ .
You are receiving this because you were mentioned.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>


Taker griefing, podle

This is a lovely project, keep it up!
Some of the attack vectors that joinmarket suffers from applies as well, and I didn't see this one in the roadmap. I assume there is no coordinator blinding, so the taker knows common input&output ownership of makers.
The taker can start a new transaction, then invite a lot of makers, seeing their common inputs, then aborting the round. After a couple attempts, without much cost, this malicious taker knows the entire utxo set of each maker, thus substantially decreasing privacy, including past coinjoins.
This attack was executed against joinmarket in the past, and they solved it by introducing poodles. The maker only reveals his utxo, if the taker proves that he controls a utxo. This enforces some cost to the taker, the creation of a utxo. This also enables blaming and punishing misbehaving takers, as makers can gossip used poodles and loosely deny double spends.

Thank you for this, I knew there were some issues here. I will look into this


Rethink test structure

The actual test structure using an index (test.ava.js) works but is not ideal as we discussed in here.

@amwmedia what do you think about this ? It that branch, if you run npm run develop just that test works, but I did it to get you opinion as soon as possible.

I like it! I'd say go ahead and run with this approach if it does the job (I didn't actually pull and run it myself yet).

Ok, yeah, it works fine. I will work on this today.

take a look, I made some changes to the structure. got rid of the common mock folder, created a base AvaTest class that abstracts a lot of the boilerplate.
I also refactored the async await calls to use co.wrap. For some reason async/await was wreaking havoc on my linter. 😦

The changes are good 😉 . It is a pity to lost async await, I really don't know co.wrap but I was excited to use async, anyway good job with the changes :thumbsup: .
Out of curiosity, what linter are you using?

I'm running atom and there's a .jshintrc in place right now on this project. I'd be fine with switching it over to eslint and using async/await. I just didn't want to wrestle with that right now, and it was not easy to debug with my linter yelling at me. However, co.wrap/yield is basically the same thing. It just creates a function that returns a promise from a generator function.

end result is the same, so I didn't want to spend the time to figure it out at the moment when I have so many other things I want to get done on here haha

For sure, doesn't matter 😉 .  I was saying this like, oh man, the first time that I used and works without problems, could be possible? Hahahaha Now we know.
Anyway, the question about the linter it was also related that the other day I thought it could be great having the linter integrated into the building process instead of an IDE/text editor, but like you said, there is other important things in the project and then I forget it. If you also think it could be a great thing in the next days I could open and issue related with this to disscus it, I have this approach in my projects, ESLint integrated with NPM so I can work on this.

Yeah, I think something like that would be nice. I could pretty easily add the linter process into a pre-commit hook too, which would be nice. I have set that up for some other projects before.


Extract box shadow CSS rule to a CSS variable

box-shadow: 0 0.1rem 0.4rem 0 rgba(0, 0, 0, 0.4) is used 13 times across the project.
It should be included as a CSS variable in the src/css/units.css file and then imported into the files where it is needed.

@rkclark I will take this issue if you don't mind. Thanks


Logger pluralize

Adds a little bit to https://github.com/tancredi/fantasticon/pull/66/files

Feel free to squash when merging this, my patch was not only a trivial one but also wrong :)


SDV-757 - calculate working days in the past

Added method to calculate working days in past

Can achieve the same by calling a method with negative offset so closing PR

@jeremyquinton maybe add an alias method then that does converts the
positive increment to a negative, will be easier for someone else to use it
in future
On Mon, Jul 20, 2015 at 11:17 AM, Jeremy Quinton<EMAIL_ADDRESS>wrote:

Closed #16 https://github.com/ministryofjustice/date-utils/pull/16.
—
Reply to this email directly or view it on GitHub
https://github.com/ministryofjustice/date-utils/pull/16#event-359846960.

@brettminnie we didn't merge this in the end you can just pass a negative value to the workingDaysFrom method
https://github.com/ministryofjustice/date-utils/blob/master/src/DateUtils/WorkingDays.php#L106
and it works! Bonus feature.

...just pass a negative value...

This doesn't sound good, random values are never clear.
I see two options here:

Alias as suggested
Easiest option is probably to pass in a static that has a value of -1, at least then it is descriptive :wink:

The method call looks like below
workingDaysFrom(new DateTime(), -20)

Which will give me 20 working days ago.
I don't see anything wrong with this. Its not a random value its a negative integer literal.
I think the alias is a good suggestion however we only need this method call for a step in a behat test and as the gherkin is descriptive this is good enough.

Sorry, I didn't realise it was an actual value - I thought it was just a flag. My bad, thanks for clarifying :smile:

I would have used the alias method to make it a bit more descriptive
something like
public function workingDaysInThePast($daysInPast)  {
   // abs to ensure we are multiplying a positive value by -1
    $daysInPast = abs($daysInPast) * -1;

  return $this->workingDaysFrom(new DateTime(), $daysInPast);

}

Would just simplify it for the end user
On Thu, Jul 23, 2015 at 10:45 AM, Eddie Abou-Jaoude <
<EMAIL_ADDRESS>wrote:

Sorry, I didn't realise it was an actual value - I thought it was just a
flag. My bad, thanks for clarifying [image: :smile:]
—
Reply to this email directly or view it on GitHub
https://github.com/ministryofjustice/date-utils/pull/16#issuecomment-124035581
.

I'll accept a PR :-)

Cool, will knock one up at some point :)


Hold Splashes should have a Note Color disabled version.

What feature do you want to get added on the base engine?
Basically, when the player has note colors off, just use a different version of the hold splash image that actually has the original colors.
To test your sight, and reliability, please select the option of what should NOT be requested.
Stage Editor and 6K+ support.

i dont even understand the issue

i dont even understand the issue

hold note splashes in base game are separated into 4 different png files
normal hold splashes are combined into 1 png


PrintScreen

As you can see, i'm using android studio, with the "Nexus 6" emulater, with API 29

Now a printscreen on my mobile device, a Samsung Galaxy Gran Prime (SM G530H).


bug: creating a proposal with polygon space returns a "Unsupported space" error

When creating a proposal on a Polygon space, it returns the "Unsupported space" error.

This is due to missing authenticator in space settings.
Seems like we're ensuring the presence of authenticators when creating a space, but not when editing


Feature/js make docker container

This depends on #34 once we get that one merged up with #33 changes this will be test-able

@NerdsvilleCEO the yarn work is merged

@NerdsvilleCEO feel free to rebase and merge

but also @NerdsvilleCEO maybe add something to the README for how to use this with Docker? Not everyone (read: me) is a docker expert (read: I have no idea about how to docker)

@treznick I am going to take a look at this today I didn't get the notifications until just now

Will get these docs made today @treznick apologies for the delay this week has been crazy

@NerdsvilleCEO no worries! we all have our day jobs, and our night jobs fighting crime in masks and capes

@NerdsvilleCEO We had to change the merge base branch from master to develop, and so can you confirm whether this work is still good and rebase on develop?


issue-1169: Use SpringBoot "@Value + Resource" to load YAML resources.

Pull Request Description
This is a proposed fix for #1169
Technical details

Uses built-in SpringBoot @Value + Resource instead of custom ResourceLoader
In order for the above to work - defined a function to be used in SpEL of the @Value to resolve path properly
Override the path resolve in test env by setting an override property prefixed to classpath:

Concerns:

Although we now leverage the built-in Spring Boot reosurce loading, some of the complexity around the path resolving is still present - albeit pushed under the surface a bit. I was hoping to not have to "pretty up" the paths like this but I wanted to follow through w/ the solution, get it in front of everyone as a working PR, and then we can decide what we want to do w/ it.

TODOs

[ ] Group to decide to move forward or not w/ these changes
[ ] If group consensus is to move forward - create a unit test for YamlPropertyPathResolver.

Acceptance Test

[x] Building the code with mvn clean install -Dintegration.tests still works.
[x] Running mvn spring-boot:run in the strongbox-web-core still starts up the application correctly.
[ ] Building the code and running the strongbox-distribution from a zip or tar.gz still works.
[ ] The tests in the strongbox-web-integration-tests still run properly.

Questions

Does this pull request break backward compatibility?

[ ] Yes
[x] No

Does this pull request require other pull requests to be merged first?

[ ] Yes, please see #...
[x] No

Does this require an update of the documentation?

[ ] Yes, please see strongbox/strongbox-docs#{PR_NUMBER}
[x] No

@sbespalov
@fuss86
@carlspring
Please and thank you...

Hi, @bono007 !
Thank you for your contribution!
Would you mind signing the ICLA, as described in the Contributing page?

Done. Emailed to<EMAIL_ADDRESS>

I'll try to review it tomorrow :) Sorry

No worries. I am at SpringOne so I have been busy doing that all day.

Thanks for signing the ICLA! :)

@fuss86
Yeh it is just an alternate impl hidden a bit below the surface. I think its worth adding as well. I like your suggestion of de-yaml'ing it and making it more generic. I will do that. I don't think I will name i t resource loader as that is too close to normal boot classes. I will come up w/ something though.

Uggh Windows is trash. I will look into that as well.

@fuss86 that clearly did not help. So... how do you run tests against windows?

AWS route did not workout. I found an ISO and installed into VirtualBox... I can now repro the issue... I am going to bed now but will dig more in the am. I will get it straightened out.

@fuss86 ok - hopefully this one works.. I got past the issue on my local Windows VM. 🤞

@fuss86 we have a green run... I repeat... we have a green run :)

I'll spin off a build on our infractructure! Thanks! :)

@bono007 it looks like your changes are affecting the strongbox-distribution. Could you please check it out?
You should be able to go into the Artifacts tab in Jenkins and download the strongbox-distribution/strongbox-vault/logs/strongbox.log. It contains strongbox's startup log for the distribution and a few exceptions have occurred there (there fore failing the Jenkins stage).

@carlspring can you kick off another distribution build?

@bono007 ,
The username under which you're committing and pushing to Github seems to be mis-configured. You will have to look into how to configure your git settings properly, amend the author of the commits and then force push back to the branch. (When your user is properly set up, you see your avatar when against your commits in the commit history, otherwise it's a default grey avatar).

I'm afraid it's still fIling.

Interesting on the commit history. I will look into it.

@carlspring - I squashed and rebased w/ proper user. Also, this should fix the issue. My previous fix was off by a /. Also, I need to add a unit test for this path resolver once this is fixed.

@carlspring
@fuss86
I have added a unit test to cover the property path resolver. This is ready for a final once-over and then one more round through verification.

@bono007 ,
Your latest changes are building fine across our pipeline. Thanks! :)
@fuss86, @sbespalov ,
Could you please review? Thanks! :)

@carlspring
@fuss86
I have addressed the latest comments - please review.

When can we merge this one?

Merge? :)

Merge? :)

We're waiting for @sbespalov 's final word. :)

Merge? :)

Thanks for all the hard work, @bono007 ! Congratulations on your first pull request! :)


Using a prediction file with fewer genes than that in training data results in error

I did the scaden process step using a bulk RNA-seq dataset (named NewData) that has about 18,000 genes, and then ran predict using an older dataset that shares only about 15,000 genes with NewData. I got the following error.

KeyError: "Passing list-likes to .loc or [] with any missing labels is no longer supported. The following labels were missing: Index(['PANO1', 'BTNL3', 'SSSCA1', 'PNOC', 'USMG5',\n       ...\n       'TMEM56-RWDD3', 'SIGLEC6', 'CCR6', 'VARS', 'CTAGE5'],\n      dtype='object', length=703)

I fixed this by adding the missing genes to the old dataset, and setting zero counts for these genes across all samples. Now, I can get predict to run without errors, but I don't know if I should trust the results.
Would the proper way be to run the process-train-predict steps again with each dataset that needs to be predicted ?

Hi @nagendraKU ,
yes, you need to run process with each dataset, because it subsets to the same number of genes and then performs normalization. The command doesn't take long though, so it shouldn't be a problem.
Best,
Kevin


Upsert array and Insert array memory leaks

Hey David, me again :)
Take a look at the following results:

Insert Test:
-- Memory Used: 36MB - Elapsed: 81163ms
Insert Array Test:
-- Memory Used: 116MB - Elapsed: 1981ms
Insert Bulk Test:
-- Memory Used: 35MB - Elapsed: 1987ms
Insert or Update Test:
-- Memory Used: 36MB - Elapsed: 83342ms
Upsert Test:
-- Memory Used: 116MB - Elapsed: 2179ms
Manual Upsert Test:
-- Memory Used: 35MB - Elapsed: 145922ms
Finished.

A sample project is attached:
LiteDBUpsertLeak.zip
Now, don't underestimate the 80MB difference, that's for 100,000 rows. Increasing the number to 1M rows and you get this:

Insert Array Test:
-- Memory Used: 1172MB - Elapsed: 21948ms
Insert Bulk Test:
-- Memory Used: 24MB - Elapsed: 22438ms
Upsert Test:
-- Memory Used: 1172MB - Elapsed: 24621ms
Finished.

The proposed new method should kinda solve the problem with Upsert. I didn't actually go through all parts of the code as I was expecting to get lost, but simply batching the array seems to solve the problem. I have no idea why tho, so the underlying problem is still there.
Do you maybe cache something in transactions? It seems like a common problem with long transactions.

Hi! With the objective of organizing our issues, we are closing old unsolved issues. Please check the latest version of LiteDB and open a new issue if your problem/question/suggestion still applies. Thanks!


add generateMerkleProof and generateMerkleUpdate functions for dictionaries

Easiest way to use merkle proofs / updates from FunC is through dictionaries. I thought it will be nice to have some functionality to generate those exotic cells from this library.
I've tested these methods on some FunC code and it worked correctly. I've also added some tests that utilise exoticMerkleProof functions which check correctness too.
Here's an example on how to use it.
TS:
let d = Dictionary.empty(Dictionary.Keys.Uint(8), Dictionary.Values.Uint(32));
d.set(1, 11);
d.set(2, 22);
d.set(3, 33);

// we want to prove that there is a key `3` with corresponding value `33` in the dictionary to a smart contract that only stores the hash of the whole dictionary
const proof: Cell = generateMerkleProof(d, 3);

FunC:
(slice, int) begin_parse_exotic (cell c) asm "XCTOS";

int check_proof (int merkle_root, cell merkle_proof, int index, slice expected_data) {
    (slice cs, int special?) = merkle_proof.begin_parse_exotic();

    if (~ special?) {
        return false;
    }
    if (cs~load_uint(8) != 3) { ;; Merkle proof
        return false;
    }
    if (cs~load_uint(256) != merkle_root) {
        return false;
    }

    cell dict = cs~load_ref();
    (slice data, int found?) = dict.udict_get?(8, index);

    if (~ found?) {
        return false;
    }

    return equal_slices(data, expected_data);
}

I opened this PR to ton-core org at first, but looks like it was moved here.
https://github.com/ton-core/ton-core/pull/29

I just found a bug in the merkle proof generation. Going to fix it and optimise as well.

@dvlkv I fixed the generation of Merkle proofs! Also made the code more straight-forward.
I have also additionally tested it in my Airdrop project and it works as intended:

https://github.com/Gusarich/airdrop


would netstandard2.0 support be possible for this library?

Hi there, awesome library! I am using it in various projects.
Would it be possible to support netstandard2.0 as well? I would love to use the html DSL for generation of the file scaffold for rendering plots in Plotly.NET, it would make that part of the library way easier to customize and adapt. We plan to move to .net5 eventually, but so far we are stuck on netstandard2.0 and it would be awesome if you would consider supporting it if there are no major blockers. Cheers!

Looks like the thing stopping going to netstandard2.0 is the use of ArrayPool
https://github.com/giraffe-fsharp/Giraffe.ViewEngine/blob/fdba5cd627919b06c516c9e94e93662f37dc706e/src/Giraffe.ViewEngine/Engine.fs#L640
Options here are:

this is available in netstandard2.1 but this might not be a viable option for you
implement using only Array.create in netstandard2.0 and take the increased memory pressure, which @dustinmoris would need to approve

I've done similar work in FSharp.Control.Websockets so this change wouldn't be difficult.

Mhh.. reading on .NET 5 and .NET Standard I think targetting netstandard2.1 adds little extra value as the latest standard which is supported by .NET Framework is netstandard2.0. I'm inclined to support netstandard2.0 with the Array.create workaround in a compiler switch between netstandard2.0 and net5.0.

@dustinmoris Cool! I filed a PR that implements the tfw specific changes, thanks @TheAngryByrd for providing the hint there!

Just released v1.4.0 with netstandard2.0 support now. Thanks for the help and the work!


update of member text fails

Attempt to specify member text on PAYROLLORG/QRPGLESRC(ERRORTABLE) in Library List heading of Project Explorer

The command fails

Looks like the right parameters were not being passed to the updateMemberText command in code4i. I can create a quick PR to fix this


[website] Update new role template

Propagate #39210, new template: https://deploy-preview-39386--material-ui.netlify.app/careers/react-engineer-x-charts/

Merging this one so it gets on this week's release (considering it's approved already!) 😬


The docs for riverpod aren't really ready for it to replace provider

**Context
As soon as provider is deprecated, riverpod is going to be assumed to be the new "default" state management solution for Flutter. There are other possibilities, e.g. bloc, but provider is so much a part of the Flutter community's core assumptions that riverpod is already perceived as "provider 2.0." With that in mind, the docs should support existing provider users moving to riverpod as well as new Flutter devs starting with riverpod w/o ever having used provider.
Describe what scenario you think is uncovered by the existing examples/articles

The "Long story short" section is short and sweet, but doesn't describe what's going on and doesn't mention the more common use case of mutating a UDT, e.g. how do I update a Person in a way that causes build to be called?
The Motivation section assumes existing provider knowledge. It should start from scratch, assuming most users will be new to Flutter and/or state management and will not be existing provider users.
The README should cover the common cases with sample snippets, e.g. rewriting the counter app and how to implement CRUD in a Todo app.

Describe why existing examples/articles do not cover this case
Normally I'd be happy to submit a PR but to date, the onramp docs for riverpod have actually stopped me from adopting it. I want something that walks me through the core use cases like the existing provider docs do. I'm happy to submit PRs/give more detailed feedback once I've seem enough to help me grok riverpod like I do provider.

related: https://github.com/flutter/website/issues/7455

Hello!
I agree. The docs need a big update. There's one in progress, but I'll keep your feedback in mind :)

Hi there,
@rrousselGit would it make sense to open a whole section named "Cookbooks" in the documentation (or something similar)?
I feel like I can contribute there, it's been a while since my first Riverpod-based App.
Ideas that come up in my mind (in which I think I can deliver):

Basic example with proper explanation for new Flutter peeps (e.g. setState VS Consumer)
StateNotifier & ChangeNotifier (e.g. state management and immutability patterns, etc.)
Authorization / Redirection / Protected Routes (e.g. with GoRouter)
AsyncValue (FutureProvider, StreamProvider) usage (e.g. infinite scrollable list)
etc.

That's definitely planned.
But if you want to contribute, there are other things I'd like to cover first
In particular, I'd like to implement the following toggle from the VueJS docs:

That toggles allows changing the code snippets to switch between a different syntax.
I'd like to do the same, but for flutter_hooks, freezed, StateNotifier vs ChangeNotifier, and the upcoming code-gen-based syntax for providers.

Sure thing, even though I don't clearly understand (atm) which are the two "options" in the switch.
I'd like to ask you how to contribute with the docs, can I do it privately or is it there a contribution guide? Thanks.

You can contact me on twitter :)

Regarding the toggle: What does composition mean in this context? Hooks? (I am aware of the term composition from the OOP days). And if so, that would be very helpful.

Composition is the hooks api versus class/object api for VueJS.
The intent is to show different code snippets / explanations for people who use:
flutter_hooks vs no hooks
freezed vs no freezed
StateNotifier vs ChangeNotifier
So this is really three toggles or checkboxes.
Then we need a way to write examples / code snippets & explanations so that where code would differ you can provide different text/code. I don't think the current method of providing code in separate files scales well to 3 options / potentially 8 different unique combinations.
Then ideally we would need a way to parse and validate code examples, this happens with the current file based code examples.
Finally we need to show the correct code example given the options selected.
One potential way to author these would be:
# Markdown file
Here is some explanation {{#hooks about hooks}}{{#nohooks about no hooks}}.

Then we could have a preprocessing step to publishing the website, or a preprocessing step to show the documentation that takes anything matching {{#id ...}} and only showing the text within when the id is enabled. I know there are a few templating formats similar to this, the main concern is being able to be able distinguish it from regular code.

What Vue does with the togle doesn't really matter. It's more about the idea
For Riverpod, I was thinking of 2 toggles:

hooks
code generation

And maybe a third one for mutable/immutable state

Perhaps less a toggle and more tabs, similar to what alchemy is doing (right part of page):
https://docs.alchemy.com/reference/getnftmetadata
Anyways, much appreciated. I'd really love to see some guidance, especially on hook side of things.

Riverpod is already using tabs atm
But I don't think this scales well. There are too many combinations for tabs

I'm happy to help with converting any code to code that uses hooks. For the most part it is the same except for the naming of the consumer widgets. Right now we just need the infrastructure in place to allow for a ChangeNotifier/StateNotifier toggle in addition to the hooks toggle that already is there using tabs.

this sounds fantastic :)
(both getting Chris 'onboarded', getting featured more by flutter website and getting doc improvements, and the codegen).

Closing in favor of the more appropriate issues for tracking the various points.


fix: correct batch output list shape when using pipeline

The batch output list shape was incorrect in the pipeline process. This fix ensures the correct shape is applied, improving the overall process stability.
Before fixing:

Thanks!


Point out message log and chapter select in dialogue and with highlight

Add dialogue explaining chapter select and message log at the end of Chapter 1 - Opening section
Highlight relevant buttons during dialogue
Add animateFromBelow bool param to highlightElement util function and the HighlightElementEvent for starting the highlight animation from below the element so it is more noticeable when the highlighted elements are at the top part of the HUD (can use this in some other sections such as for the clock in CH3 too)

Closes #567

The audio should be constant 128 bitrate stereo to be consistent with the rest of the sounds. Otherwise looks good!

The audio should be constant 128 bitrate stereo to be consistent with the rest of the sounds (can select that when saving the file in audacity). Otherwise looks good!

Done, it still sounds a bit quieter than the others, maybe it's the source file itself that is lower?


Show street does not decode address, master

Describe the error
A clear and concise description of what the error is.
Show Street Only Shows coordinates and does not show the street
Latest Version MASTER AVAILABLE TESTED ON LOCALHOST:3000
Visual Studio CODE
To play
Steps to reproduce the behavior:

Go to 'Select Device'
Click 'Show Street'
Scroll down to 'Result Shown'
See error
only shows coordinates

Expected behavior
A clear and concise description of what you expected to happen.
Expected behavior show street no coordinates
It must show the encoded address and not just coordinates
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (complete the following information):

Browser [Chrome, edge]
Version [latest version]

Additional context
Add any other context about the issue here.
The Test was done locally and the behavior is unexpected
unless you already have a new setting to decode the address

It looks like you just haven't enabled a proper reverse geocoder. Next time I would recommend asking on the forum first before submitting a bug report.


[REVIEW] ChatBud - Instant Chat Web Application

Project link
https://github.com/guptasajal411/instant-chat-app
Deployed on Heroku
https://try-chatbud.herokuapp.com/

Take a look here
add a release
hide packages
hide wiki if not used

Nice Lighthouse checks on your deployed website

Thanks a lot, Tom! Loved your suggestions 😄

Thank for sharing, reviewed on live stream https://www.youtube.com/watch?v=Hx5s0IqvfL4
Looks great, some of our thoughts:

use releases (ideally automated from GitHub Actions)
use issues even if you are the only person - using issues with labels will help your project get discovered and more contributions
maybe use animated give in README to reduce the images


Select elements on actions looks weird

Thanks for the awesome project. Im using firefox for ubuntu 117.0
In the action section in a normal admin page:

Looks like this

Duplicate issue #112


Change "Observation Type" to "Data Type" or "Record Type"

Observation type is confusing, because there are also "Observations" under Observation type. What about "Data type"?

Or "Occurrence type"


Where is flushEffects documented ?

react-testing-library version: 6.0.0
react version: 16.8.4
node version: 8.14.1
npm (or yarn) version: 6.2.0

Relevant code or config:
var your => (code) => here;

What you did:
I am trying to use flushEffects to test components with useEffect

What happened:
jest says _ReactTestingLibrary.flushEffects is not a function

Reproduction:

Problem description:
It would be great if it is documented somewhere, so i can understand how to use it and which version of react-testing-library supports flushEffects

Suggested solution:

Ok, found this:
https://github.com/kentcdodds/react-testing-library/commit/8e08ccff2f14aa455a8e2881bf554e5381caf171
it says, flushEffects is removed as it is no longer necessary

ok, it seems like it has been removed and we should use act.
I am expecting a callback to be called after first render
should I just render inside act ?
const { queryByTestId, getByText } = act(() =>     render(<EvaluationDetails {...props} />)   );

Ok, it seems render would call ReactDOM.render inside act anyway, so no need to wrap my render calls in act.
but I am still getting warnings:

Warning: An update to EvaluationDetails inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state /
});
/ assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://fb.me/react-wrap-tes
in EvaluationDetails

Warnings issue is covered here:
https://github.com/kentcdodds/react-testing-library/issues/281
But i would still like to see some documentation for act/flushEffects
Some of @kentcdodds old videos still refer to flushEffects and it is not completely obvious by just looking at the docs that it has been removed/replaced

I have same issue and I haven't resolved it yet

you mean you were not able to get rid of the warnings, even though your tests pass?
or are your tests failing because of this ?

no my test doesn't pass

umm, in my case, my tests pass, just that the warning is still displayed.
May be you have another issue with your tests?
These are my observations:

You do not need to wrap your test code in act, as RTL would already do that for you, both for initial render and fireEvent.
You may have been changing your component outside of these use cases, in which case you might need to wrap that in act.

codesandbox/example ?

this is the code, even I use act the test fails :

what happens without act ?
fireEvent should already wrap your calls in act , so you shouldn't need to

it fails, even if I use wait and waitForElement

In my use case, i wait for an element to appear using waitForElement and then do my assertions.
If i don't wait, then the assertion is called before the state changes, which is expected I would say.

thank u very much. my bad the problem is in my implementation

Having a similiar issue and wondering if there are best practices around how to test useEffect with a fetch call when the component is loading.  I have tried many ways, but can't seem to get it working correctly.  Basically I have a form that preloads data in useEffect if there is an id in the route.  There will then be an Update button that is available to click and update the data.
it('should update values when required fields are populated and update is clicked', async () => {
const props = {
match: {
params: {
id: 1
}
}
};
nockGets(config); //nock for get request for route loaded
const { getByText } = render();
const updateButton = await waitForElement(() => getByText('Update'));
fireEvent.click(updateButton);
expect(true).toBeTruthy(); //just a basic test
...
Obviously this test passes, but getting an error when trying to actually find what I expect and getting this warning in the logs
Warning: An update to CreateForm inside a test was not wrapped in act(...).
  When testing, code that causes React state updates should be wrapped into act(...):

  act(() => {
    /* fire events that update state */
  });
  /* assert on the output */

I have tried wrapping in act, but got errors around trying to perform async in act wasn't allowed.  In the end I am just trying to see how this simple use case has been solved for around making an http request in useEffect as I am sure I am missing something simple.

See #281 for issues with async calls in act
Closing because the original issue (flushEffects) is resolved


Some mouses won't work or will present jerky/uneven movement

Hi all!
I've bought a new (used) Logitech M535 BT Classic mouse to test compatibility further on the new mouse code.
Unfortunately, it seems the custom Report Descriptor parser is not processing the Mouse report correctly.
Cause of the bug: The custom parser calculates report lengths based on the assumption that the mouse will only send multiples of 8-bit as the report chunk for the different axis:
https://github.com/Hamberthm/esp32-bt2ps2/blob/965c9a52116aaa8f2f398a35549b14172ea377cd/main/bt_keyboard.cpp#L1816
Turns out mouses like this one like to send their reports on 12-bit chunks for each axis. Yikes!
Fix coming soon.
Humberto

Fixed on source. Pending release.


Upgrade PostgreSQL to version 10

Azure offers PostgreSQL 10 and we are on 9 at the moment, it'd be nice to be on the latest version but not a dealbreaker. It's probably easier to do this now than later.
This is most likely done by passing a parameter in the ARM template.
If we've put the version in the README, remember to update that too.

cc @himal-mandalia

Yes, this should be specified as a Postgres version in the template.json - @EwanNoble do you know the format to do this? Feel free to do it in a branch and open a PR. We may need to tear down / recreate the DB after.


New Audio Command: !nani

Add a new audio command to the overlay called !nani
Doing this command will trigger the stereotypical "NANI!!" audio queue you hear for animes. Find a source you feel best embodies the power of NANI and add it as a new source.
Good source for audio that might help on the hunt: https://www.myinstants.com/index/us/
Instructions:

Add audio source to: app/static/assets/audio
Add new command information to /app/scripts/helpers/audioFactory.js
Test audio to make sure it isn't too loud compared to other audio commands, tweak the volume if it is

Here's my PR #71 :)


[TAP] execute the command from the project root

so that arc unit also works when you're in a subdirectory

Awesome!


Radio Blips not clearing

Radio blips are not clearing for other clients, it clears for the person switching, but everyone on the radio channel can see his blip after he has switch. It has always been like this and I cannot fin a solution, can you please look into it. Thank-you!
function Radio.event:characterUnload(user)
user:disconnectRadio() --Removes others blips , they can still see his blip
end
function Radio.event:playerLeaveGroup(user)
user:disconnectRadio() --Removes others blips , they can still see his blip
end
function Radio.event:playerJoinGroup(user)
user:disconnectRadio() --Removes others blips , they can still see his blip
end

When using the Radio ON/OFF it clears it fine, its when they don't do that before switching groups, characters is does not work properly.

I can't reproduce it on my own, you should try to debug what is happening in Radio.tunnel:clearPlayers https://github.com/ImagicTheCat/vRP/blob/master/vrp/client/radio.lua#L77

Same issue, it removes the blips for the user leaving the group, but the users that where already in the group can still see the blip for the player that has left the group.

@IllInuz And if you use the OFF/ON menu toggle it works fine both ways... Maybe something to do with the ON/OFF being inside a menu @ImagicTheCat ?


Document that PUT doesn't support partial updates

sending the following json to update a service:
"{"apiVersion":"v1beta1","port":6380,"containerPort":6379}"
fails with 422 and message: "service "" is invalid: name: required value ''"
It's not clear from the message what is exactly the problem.
is the "name" field missing? isn't it called "id" at the moment?
if yes, another issue (#3085) points on the fact that including the id fails the request with another error.

Update requires the full resource to be specified. GET the resource, modify the fields you want to change, and do a PUT.

Using #3084 for the field name conversion problem.

As mentioned, PUT should not accept partial updates - PATCH should, and the issue for that is #4578.
This is documented in api-conventions.md: "Otherwise, PUT expects the whole object to be specified." Where else does it need to be documented?

http://kubernetes.io/third_party/swagger-ui/


Training on Arabic language

I have generated data.mdb with images that contain a Arabic word in each of them.
I've made the following modification in create_dataset.py. That is, I've encoded the labels into utf-8 to avoid ascii error.
 def writeCache(env, cache):
    with env.begin(write=True) as txn:
        for k, v in cache.iteritems():
            #print(k ,v)
            if 'label' in k:
              txn.put(k.encode(),v.encode('utf-8'))
            else:
              txn.put(k.encode(),v)

I am not sure how to deal with str2label() and ascii2label() in utilities.lua
In str2label(),
for i, str in ipairs(strs) do
        for j = 1, string.len(str) do
            local ascii = string.byte(str, j)          -- this segments by 'half a character' due to the utf-8
            labels[i][j] = ascii2label(ascii)
        end
    end

To illustrate what I mean by 'half a character',
original word: 'ستشهاديتان'
after encode('utf-8'): b'\xd8\xb3\xd8\xaa\xd8\xb4\xd9\x87\xd8\xa7\xd8\xaf\xd9\x8a\xd8\xaa\xd8\xa7\xd9'
string.byte() will take \xd8 as one character, but a character is actually made up of \xd8\xb3

the neural network is in fact only interested in labels representing chars (0, 1, 2, ...).
Why not simply map each of your arabic chars (UTF8, containing 1 or multiple bytes)  to a number in 0..255 (byte)?
It should of course be a continues range of numbers, so if you have 5 chars, then assign the numbers 0, 1, 2, 3, 4.
Then you can map your arabic string to a byte string in which each char uses only 1 byte.
The neural networks outputs a byte string containing the labels, which you can map back to a arabic text.

@githubharald Thanks! I tried to do that.
Could anyone advise how to iterate through the utf-8 literal properly and apply string.byte( ) in lua?

no, sorry.
If you can't find a solution for LUA, you could consider switching to a Python/TensorFlow implementation of CRNN (just search for it on github, there should be multiple repos). In Python this task should be pretty easy.


Update the v1.1.1 README.md to be accurate

I have updated the readme to match the accurate path for the configuration.  There is not a branch for 1.1.1 so I was unable to try to make the PR against that version.  I have not tested this for v4 so this PR may be irrelevant for that version, but the README.md on version 1.1.1 is incorrect.

thank you for your PR, but this would modify the Strapi v4 docs. the docs for v3 are located in docs/v3
either you could modify your PR to fix the docs in the docs/v3 folder or I will update them directly

@alexkainzinger yup Im closing this right now, wasnt sure if it was the same issue for v4

I will still update the docs for v3! thx for pointing it out 👍


query: add initial time-based query pushdown

Add time-based pushdown mechanism. It works by directly querying a
Thanos Store node if it is the only one partially or fully matching the
time range of a query. I believe that this will be the case most of the
times because typically Sidecar/Ruler/Receive cover a few days of time
range and horizontally balanced Thanos Store instances cover the
historical data from remote object storage. With query-frontend in front
splitting the queries into smaller parts means that with higher time ranges, most of
the queries can be simply pushed down. For example, with Sidecars
covering 2 days of data, with a 7d query, and a split interval of 1d
this means that 5/7 * 100 = ~71% of processing can be pushed down to the
leaf nodes.
Small ad-hoc tests which touch a lot of timeseries show a 2x reduction
in query duration.
Hide this under an "experimental feature" flag
because this still doesn't have everything implemented intentionally to have a smaller change:

lazySeriesSet for concurrent Select()s in Thanos Store
Missing some of the Prometheus engine flags
Support the selection of StoreAPI nodes in the UI (use only them, not
all endpoints)
No chunks/series limiters

Also, this API could be potentially implemented in other components.
If the approach looks good then we can merge this and implement these in follow-up PRs.
The main parts of this change is in:

New QueryAPI service
New pkg/pushdown/
API request handling code

We are filtering stores using the given time range in the API. But when promql engine performs the Select call, will it use the same time range given from the API?
https://github.com/prometheus/prometheus/blob/f103acd5135b8bbe885b17a73dafc7bbb586319c/promql/engine.go#L762
From this function, IIUC the time range will be adjusted based on the promql queries. WDYT?

We are filtering stores using the given time range in the API. But when promql engine performs the Select call, will it use the same time range given from the API?
https://github.com/prometheus/prometheus/blob/f103acd5135b8bbe885b17a73dafc7bbb586319c/promql/engine.go#L762 From this function, IIUC the time range will be adjusted based on the promql query itself. WDYT?
If we can extract this logic from promql, then maybe it is possible to pushdown instant queries as well.

That's true but I'd like to start simple and cover only one case at the beginning as in this PR. Maybe you could add this idea to https://github.com/thanos-io/thanos/issues/305?

If we would just  expose QuerAPI through gRPC - this might work, but only for super limited cases, where is only one Store matched. We block (or need separate path) for cases where we have count, sum etc function and multiple stores.. I think this is bit of missed opportunity - and we sacrifice a huge complexity if we would have now: QueryAPI, StoreAPI and StorePushdownAPI... etc

But in the same time, we can do a special StoreAPI.Series call with e.g pushdown=true field that will tell the underlying store to give us count of all metric1 series. So it will return us single series
for count(metric1{target=ext1}) as long as we know there are no duplicates across fanouts, we can put that as a result to PromQL engine. PromQL engine will take that as only series count it (but it's only one, so fine) and return to response.

PromQL engine only gets series set as result and it will try to apply count again. How to bypass this and tell it the result was already calculated? I feel if we don't have another API other than Select we cannot achieve query pushdown.

What else do you want than series result as input to PromQL? (: If global PromQL can take raw series but also pre-calculated series from another PromQL engine, in same way, no? (:

OK, I think the main question we have to ask ourselves - do we need another API.
...
I know it might be complex, so maybe a second method to service makes sense, but I would really really like to avoid another API - too much complexity IMO thinking

I understand you and remember this idea from your design document but are these two things exclusive to each other? I really think that we can have both. Just like most of the databases do optimizations at many layers, I think we should do both (and much more). The optimization in this PR is dead simple and quite trivial - the only complex part IMO is implementing the PromQL engine.
To be honest, there is probably no clear-cut answer. But this pull request would solve already many problems in at least two big deployments of Thanos that I know of. Implementing pushdown has been the longest time on our backlog but it has never been properly implemented - perhaps that is because the idea in its entirety is quite complex and we must divide it into smaller parts as in this PR?
Also, I understand that we should strive to implement as generic solutions as possible to ultimately reduce the complexity so that it would be easier to understand the code and maintain it but also on the other hand IMHO sometimes optimization come in smaller pieces, and two extra function calls in queryRange() doesn't seem like a huge overhead at all.
@yeya24 what's your opinion on this topic?

Also, I understand that we should strive to implement as generic solutions as possible to ultimately reduce the complexity so that it would be easier to understand the code and maintain it but also on the other hand IMHO sometimes optimization come in smaller pieces, and two extra function calls in queryRange() doesn't seem like a huge overhead at all.
@yeya24 what's your opinion on this topic?

They can coexist and I think it is okay to have a separate API for pushdown for now as it is under an experimental feature flag. In the short term, it is hard to hack the promql engine to achieve pushdown directly.
What we need to do is to ensure the results consistency between pushdown and normal query. Continuous benchmarking or tests would help so that we can compare the performance.

Right, I understand the final results are just some samples. But the promql engine will apply the promql functions, aggregators again even if some series are pre-aggregated.
I think that's why we need a new API to bypass the series post-processing from the engine. If it is possible to have a hook at the engine side then that would be great.

Could we split this PR then into smaller ones? I could start with a pull request that adds the query engine to Thanos Store with tests. Maybe that would be easier?

Anyway, I think we are still not sure if we need a different API or not. That is what blocks us from developing on main IMO. I would keep it on the feature branch still. We can try different approaches and compare.  I would move this PR as it is into one Thanos pushdown branch (not your forks's PR), then I can try reusing Series and we can experiment. You see I would love to avoid extra API because of complexities like https://github.com/thanos-io/thanos/issues/4780
We would need to implement all twice and it's not trivial code to fan out all. The SIngle pipeline would be nice, if possible.

But the promql engine will apply the promql functions, aggregators again even if some series are pre-aggregated.

That is totally fine, no? We need to do that in order to aggregate pre-aggregated results (:

It's not fine to do that with functions. For example, if you do sum_over_time, where step < range, and then apply sum_over_time on top then the result will be the double of sum_over_time. :P


Fix ruby version

در تاریخ جمعه ۲۸ ژانویهٔ ۲۰۲۲، ۰۳:۵۹ hack3rlife @.***>
نوشت:

Closed #100 https://github.com/pages-themes/hacker/pull/100.
—
Reply to this email directly, view it on GitHub
https://github.com/pages-themes/hacker/pull/100#event-5967554287, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AOOITS2OORYBT66OBULMT2LUYHPP3ANCNFSM5M7M5Z2Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>