Unable to run fairseq_cli.eval_lm script for MoE with a sharded checkpoint

🐛 Bug
I trained a MoE model on multiple nodes and am now attempting to calculate eval losses on a new dataset using this model. I am using the example script from the MoE branch to do this. I originally trained the model on 64 GPUs (4 nodes), but now hope to calculate eval losses using only 4 or 16 GPUs on a single node.
My checkpoint directory has files that look like this:
$ ls $MODEL_DIR/checkpoint_last*
checkpoint_last-rank-0-shard0.pt    checkpoint_last-rank-27-shard27.pt  checkpoint_last-rank-44-shard44.pt  checkpoint_last-rank-61-shard61.pt  checkpoint_last-shared-shard20.pt  checkpoint_last-shared-shard38.pt  checkpoint_last-shared-shard55.pt
checkpoint_last-rank-10-shard10.pt  checkpoint_last-rank-28-shard28.pt  checkpoint_last-rank-45-shard45.pt  checkpoint_last-rank-62-shard62.pt  checkpoint_last-shared-shard21.pt  checkpoint_last-shared-shard39.pt  checkpoint_last-shared-shard56.pt
checkpoint_last-rank-11-shard11.pt  checkpoint_last-rank-29-shard29.pt  checkpoint_last-rank-46-shard46.pt  checkpoint_last-rank-63-shard63.pt  checkpoint_last-shared-shard22.pt  checkpoint_last-shared-shard3.pt   checkpoint_last-shared-shard57.pt
checkpoint_last-rank-12-shard12.pt  checkpoint_last-rank-2-shard2.pt    checkpoint_last-rank-47-shard47.pt  checkpoint_last-rank-6-shard6.pt    checkpoint_last-shared-shard23.pt  checkpoint_last-shared-shard40.pt  checkpoint_last-shared-shard58.pt
checkpoint_last-rank-13-shard13.pt  checkpoint_last-rank-30-shard30.pt  checkpoint_last-rank-48-shard48.pt  checkpoint_last-rank-7-shard7.pt    checkpoint_last-shared-shard24.pt  checkpoint_last-shared-shard41.pt  checkpoint_last-shared-shard59.pt
checkpoint_last-rank-14-shard14.pt  checkpoint_last-rank-31-shard31.pt  checkpoint_last-rank-49-shard49.pt  checkpoint_last-rank-8-shard8.pt    checkpoint_last-shared-shard25.pt  checkpoint_last-shared-shard42.pt  checkpoint_last-shared-shard5.pt
checkpoint_last-rank-15-shard15.pt  checkpoint_last-rank-32-shard32.pt  checkpoint_last-rank-4-shard4.pt    checkpoint_last-rank-9-shard9.pt    checkpoint_last-shared-shard26.pt  checkpoint_last-shared-shard43.pt  checkpoint_last-shared-shard60.pt
checkpoint_last-rank-16-shard16.pt  checkpoint_last-rank-33-shard33.pt  checkpoint_last-rank-50-shard50.pt  checkpoint_last-shared-shard0.pt    checkpoint_last-shared-shard27.pt  checkpoint_last-shared-shard44.pt  checkpoint_last-shared-shard61.pt
checkpoint_last-rank-17-shard17.pt  checkpoint_last-rank-34-shard34.pt  checkpoint_last-rank-51-shard51.pt  checkpoint_last-shared-shard10.pt   checkpoint_last-shared-shard28.pt  checkpoint_last-shared-shard45.pt  checkpoint_last-shared-shard62.pt
checkpoint_last-rank-18-shard18.pt  checkpoint_last-rank-35-shard35.pt  checkpoint_last-rank-52-shard52.pt  checkpoint_last-shared-shard11.pt   checkpoint_last-shared-shard29.pt  checkpoint_last-shared-shard46.pt  checkpoint_last-shared-shard63.pt
checkpoint_last-rank-19-shard19.pt  checkpoint_last-rank-36-shard36.pt  checkpoint_last-rank-53-shard53.pt  checkpoint_last-shared-shard12.pt   checkpoint_last-shared-shard2.pt   checkpoint_last-shared-shard47.pt  checkpoint_last-shared-shard6.pt
checkpoint_last-rank-1-shard1.pt    checkpoint_last-rank-37-shard37.pt  checkpoint_last-rank-54-shard54.pt  checkpoint_last-shared-shard13.pt   checkpoint_last-shared-shard30.pt  checkpoint_last-shared-shard48.pt  checkpoint_last-shared-shard7.pt
checkpoint_last-rank-20-shard20.pt  checkpoint_last-rank-38-shard38.pt  checkpoint_last-rank-55-shard55.pt  checkpoint_last-shared-shard14.pt   checkpoint_last-shared-shard31.pt  checkpoint_last-shared-shard49.pt  checkpoint_last-shared-shard8.pt
checkpoint_last-rank-21-shard21.pt  checkpoint_last-rank-39-shard39.pt  checkpoint_last-rank-56-shard56.pt  checkpoint_last-shared-shard15.pt   checkpoint_last-shared-shard32.pt  checkpoint_last-shared-shard4.pt   checkpoint_last-shared-shard9.pt
checkpoint_last-rank-22-shard22.pt  checkpoint_last-rank-3-shard3.pt    checkpoint_last-rank-57-shard57.pt  checkpoint_last-shared-shard16.pt   checkpoint_last-shared-shard33.pt  checkpoint_last-shared-shard50.pt
checkpoint_last-rank-23-shard23.pt  checkpoint_last-rank-40-shard40.pt  checkpoint_last-rank-58-shard58.pt  checkpoint_last-shared-shard17.pt   checkpoint_last-shared-shard34.pt  checkpoint_last-shared-shard51.pt
checkpoint_last-rank-24-shard24.pt  checkpoint_last-rank-41-shard41.pt  checkpoint_last-rank-59-shard59.pt  checkpoint_last-shared-shard18.pt   checkpoint_last-shared-shard35.pt  checkpoint_last-shared-shard52.pt
checkpoint_last-rank-25-shard25.pt  checkpoint_last-rank-42-shard42.pt  checkpoint_last-rank-5-shard5.pt    checkpoint_last-shared-shard19.pt   checkpoint_last-shared-shard36.pt  checkpoint_last-shared-shard53.pt
checkpoint_last-rank-26-shard26.pt  checkpoint_last-rank-43-shard43.pt  checkpoint_last-rank-60-shard60.pt  checkpoint_last-shared-shard1.pt    checkpoint_last-shared-shard37.pt  checkpoint_last-shared-shard54.pt

To Reproduce
Steps to reproduce the behavior:

First, I attempted to run a command that looks like this (basically the same as the example):

export PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}/home/$USER/fairseq"
NUM_GPUS=`ls /dev/ | grep -E 'nvidia[0-9]+' | wc -l`

CHECKPOINT_TO_PROCESS='checkpoint_last'

TOKENS_PER_SAMPLE=1024
BATCH_SIZE=1
MODEL_CAPACITY=32 # based on train script = 2 * (local_batch_size)/(global_num_experts) = 2 * (8*1024)/512 = 32
MOE_EVAL_CAPACITY_TOKEN_FRACTION=`python3 -c "print($MODEL_CAPACITY/($BATCH_SIZE * $TOKENS_PER_SAMPLE))"`
DATA_PATH=$FINAL_PATH/data/

MODEL_DIR="$FINAL_PATH/fairseq/"
MODEL_PATH="$MODEL_DIR/$CHECKPOINT_TO_PROCESS.pt"

set -ux

python -m fairseq_cli.eval_lm \
  $DATA_PATH \
  --path $MODEL_PATH \
  --gen-subset test_shifted \
  --sample-break-mode none \
  --tokens-per-sample $TOKENS_PER_SAMPLE \
  --batch-size 1 \
  --fp16 \
  --output-word-probs \
  --is-moe \
  --distributed-world-size $NUM_GPUS \
  --model-overrides "{'world_size': $NUM_GPUS, 'moe_eval_capacity_token_fraction': $MOE_EVAL_CAPACITY_TOKEN_FRACTION}"

This script crashes with the error:
-- Process 1 terminated with the following error:
Traceback (most recent call last):
  File "/home/rohitd/.venv/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 69, in _wrap
    fn(i, *args)
  File "/home/gandiva/rohitd/fairseq/fairseq/distributed/utils.py", line 335, in distributed_main
    main(cfg, **kwargs)
  File "/home/rohitd/fairseq/fairseq_cli/eval_lm.py", line 391, in main
    is_moe=is_moe or is_base_moe,
  File "/home/rohitd/fairseq/fairseq/checkpoint_utils.py", line 450, in load_model_ensemble_and_task
    raise IOError("Model file not found: {}".format(filename))
OSError: Model file not found: /home/rohitd/ALL_FILES/fairseq/checkpoint_last-rank-1.pt

It looks like the script is not picking up the fact that files have a -shard-{number} in their filename. So, I tried looking through the arguments and found this flag: --use-sharded-state. I tried adding this flag and rerunning the code, but this also resulted in the same error:
-- Process 2 terminated with the following error:
Traceback (most recent call last):
  File "/home/rohitd/.venv/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 69, in _wrap
    fn(i, *args)
  File "/home/rohitd/fairseq/fairseq/distributed/utils.py", line 335, in distributed_main
    main(cfg, **kwargs)
  File "/home/rohitd/fairseq/fairseq_cli/eval_lm.py", line 391, in main
    is_moe=is_moe or is_base_moe,
  File "/home/rohitd/fairseq/fairseq/checkpoint_utils.py", line 450, in load_model_ensemble_and_task
    raise IOError("Model file not found: {}".format(filename))
OSError: Model file not found: /home/rohitd/ALL_FILES/fairseq/checkpoint_last-rank-2.pt

Then, I tried making a list of arguments that might potentially fix this. I found:

 --num-shards and --shard-id - but both of these are arguments for the dataloader, so they are unlikely to help checkpoint loading.
--ddp-backend - setting this to fully_sharded might help - when training I set this flag, so perhaps I need to set it for eval as well>
--zero-sharding - don't think I used ZeRO, so don't see why we should use this.

I tried using just the --ddp-backend fully_sharded argument without setting --use-sharded-state and same error:
-- Process 0 terminated with the following error:
Traceback (most recent call last):
  File "/home/rohitd/.venv/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 69, in _wrap
    fn(i, *args)
  File "/home/rohitd/fairseq/fairseq/distributed/utils.py", line 335, in distributed_main
    main(cfg, **kwargs)
  File "/home/gandiva/rohitd/fairseq/fairseq_cli/eval_lm.py", line 391, in main
    is_moe=is_moe or is_base_moe,
  File "/home/rohitd/fairseq/fairseq/checkpoint_utils.py", line 450, in load_model_ensemble_and_task
    raise IOError("Model file not found: {}".format(filename))
OSError: Model file not found: /home/rohitd/ALL_FILES/fairseq/checkpoint_last-rank-0.pt

Then I tried setting both --ddp-backend fully_sharded and --use-sharded-state together, and it's still the same:
-- Process 3 terminated with the following error:
Traceback (most recent call last):
  File "/home/rohitd/.venv/lib/python3.7/site-packages/torch/multiprocessing/spawn.py", line 69, in _wrap
    fn(i, *args)
  File "/home/rohitd/fairseq/fairseq/distributed/utils.py", line 335, in distributed_main
    main(cfg, **kwargs)
  File "/home/rohitd/fairseq/fairseq_cli/eval_lm.py", line 391, in main
    is_moe=is_moe or is_base_moe,
  File "/home/rohitd/fairseq/fairseq/checkpoint_utils.py", line 450, in load_model_ensemble_and_task
    raise IOError("Model file not found: {}".format(filename))
OSError: Model file not found: /home/ALL_FILES/fairseq/checkpoint_last-rank-3.pt

Expected behavior
The fairseq_cli.eval_lm script loads the MoE model and prints the eval loss.
Environment

fairseq Version: git+https://github.com/pytorch/fairseq@ebea0072062e2e8f4563644f27546df355357f5e#egg=fairseq
PyTorch Version: 1.12.0
OS: Ubuntu 18.04.6 LTS
How you installed fairseq (pip, source): git clone followed by git checkout moe followed by pip install --editable .
Build command you used (if compiling from source):
Python version: 3.7.5
CUDA/cuDNN version: cuda_11.6.r11.6/compiler.30978841_0
GPU models and configuration: 4 * NVIDIA v100

You could circumvent this by just running eval using the train loop itself - just specify the checkpoint and then specify your new dataset as a CL arg to train.py - this works, but requires as many GPUs as were used during training - which, in my case was 64 GPUs - it would be nice if there was a way to use the fairseq_cli.eval_lm script instead, to be able to run it on one node.
Also, another issue that I noticed with using train.py is the calculating eval PPL is extremely slow:
2022-10-18 07:52:22 | INFO | fairseq.modules.fused_bias_gelu | Done with compiling and loading fused kernels.
2022-10-18 07:56:38 | INFO | train_inner | {"epoch": 2, "update": 1.367, "loss": "3.734", "moe_gate_loss": "10.9212", "overflow_expert1": "1.683", "overflow_expert2": "48.656", "entropy_gating": "5.45", "expert1_balance_top": "34.515", "expert1_balance_bottom": "9.431", "unused_expert1_count": "0.496", "expert2_balance_top": "65.803", "expert2_balance_bottom": "1.361", "unused_expert2_count": "42.408", "all_to_all_cpu_time_ms": "0", "all_to_all_cuda_time_ms": "0", "inner_loss": "3.576", "ppl": "11.93", "wps": "228.1", "ups": "0", "wpb": "524288", "bsz": "512", "num_updates": "572001", "lr": "1.09659e-07", "gnorm": "0.179", "loss_scale": "8", "train_wall": "1026", "cuda_gb_allocated": "9.5", "cuda_gb_reserved": "12.1", "cuda_gb_free": "22.3", "wall": "0"}
2022-10-18 07:56:38 | INFO | fairseq_cli.train | begin validation on "test_shifted" subset on rank 0
2022-10-18 07:56:38 | INFO | fairseq_cli.train | got valid iterator on "test_shifted" subset on rank 0
2022-10-18 07:56:38 | INFO | fairseq_cli.train | Begin looping over validation "test_shifted" subset with length "419"
2022-10-18 07:56:38 | INFO | fairseq_cli.train | Inside the handler
2022-10-18 10:55:16 | INFO | test_shifted | {"epoch": 2, "test_shifted_loss": "3.699", "test_shifted_moe_gate_loss": "10.1184", "test_shifted_overflow_expert1": "0", "test_shifted_overflow_expert2": "0", "test_shifted_entropy_gating": "5.451", "test_shifted_expert1_balance_top": "37.697", "test_shifted_expert1_balance_bottom": "7.838", "test_shifted_unused_expert1_count": "0.894", "test_shifted_expert2_balance_top": "64.978", "test_shifted_expert2_balance_bottom": "1.549", "test_shifted_unused_expert2_count": "36.374", "test_shifted_all_to_all_cpu_time_ms": "0", "test_shifted_all_to_all_cuda_time_ms": "0", "test_shifted_inner_loss": "3.553", "test_shifted_ppl": "11.73", "test_shifted_wps": "20451.1", "test_shifted_wpb": "523071", "test_shifted_bsz": "510.8", "test_shifted_num_updates": "572001"}
2022-10-18 10:55:18 | INFO | train_inner | {"epoch": 2, "update": 1.367, "loss": "3.823", "moe_gate_loss": "10.8059", "overflow_expert1": "1.684", "overflow_expert2": "48.231", "entropy_gating": "5.453", "expert1_balance_top": "34.583", "expert1_balance_bottom": "9.416", "unused_expert1_count": "0.497", "expert2_balance_top": "65.621", "expert2_balance_bottom": "1.374", "unused_expert2_count": "42.297", "all_to_all_cpu_time_ms": "0", "all_to_all_cuda_time_ms": "0", "inner_loss": "3.667", "ppl": "12.7", "wps": "48.9", "ups": "0", "wpb": "524288", "bsz": "512", "num_updates": "572002", "lr": "1.09121e-07", "gnorm": "0.176", "loss_scale": "8", "train_wall": "2", "cuda_gb_allocated": "17.6", "cuda_gb_reserved": "28.7", "cuda_gb_free": "14.1", "wall": "0"}

It took 3 hours on 64 GPUs to calculate eval loss for 220M tokens. The script I used to run this:
export PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}/home/t-rohitd/fairseq"
EVAL_AT_STEP_NUMBER=checkpoint_2_572000.pt

NODES=4
GPUS_PER_NODE=16

NUM_EXPERTS=512
TOKENS_PER_SAMPLE=1024
BATCH_SIZE=8 # batch size per GPU
GRAD_ACC=1 # gradient accumulation

# launch the job (adjust port and --cpu-bind if needed)
DISTRIBUTED_PORT=12345
srun -o ${LOCAL_CKPT_DIR}/eval_log_${EVAL_AT_STEP_NUMBER}.txt --gpus-per-node ${GPUS_PER_NODE} --ntasks-per-node ${GPUS_PER_NODE} --cpus-per-task 6 --nodes $NODES --mem-per-gpu 80G \
  python fairseq_cli/train.py \
  --train-subset train_shifted --valid-subset test_shifted \
  --distributed-port ${DISTRIBUTED_PORT} \
  --save-dir ${LOCAL_CKPT_DIR} --save-interval-updates 200 --save-async \
  --load-checkpoint-on-all-dp-ranks --checkpoint-shard-count ${TOTAL_GPUS} \
  --ddp-backend fully_sharded --memory-efficient-fp16 --checkpoint-activations \
  --task language_modeling ${SRC_DIR} --tokens-per-sample ${TOKENS_PER_SAMPLE} \
  --arch transformer_lm_gpt2_small --share-decoder-input-output-embed \
  --decoder-layers 24 --decoder-embed-dim 1024 --decoder-ffn-embed-dim 4096 \
  --decoder-attention-heads 16 \
  --moe-expert-count ${NUM_EXPERTS} --moe-freq 2 \
  --moe-gating-use-fp32 --moe-second-expert-policy all \
  --moe-normalize-expert-grad sqrt_world_size \
  --criterion moe_cross_entropy --moe-gate-loss-wt 0.01 --moe-gate-loss-combine-method sum \
  --optimizer adam --adam-betas '(0.9, 0.98)' --clip-norm 0.0 \
  --lr ${LR} --lr-scheduler linear --warmup-updates ${WARMUP_UPDATES} --total-num-update ${TOTAL_UPDATES} \
  --dropout 0.1 --attention-dropout 0.1 \
  --batch-size ${BATCH_SIZE} --update-freq ${GRAD_ACC} --required-batch-size-multiple ${REQUIRED_BATCH_SIZE_MULTIPLE} \
  --max-update ${TOTAL_UPDATES} --log-format json --log-interval 1 --restore-file ${REMOTE_CKPT_DIR}/${EVAL_AT_STEP_NUMBER} \
  --validate-interval-updates 100 --num-workers-valid 1 --max-valid-steps 418

Managed to solve this issue - in case anyone else stumbles on this problem in the future, just thought I'd post what I did here. Let us say we want to use the checkpoint_last for calculating eval PPLs. There are a few things that need to be changed:

In my checkpoint, when training with a world_size of 64 there were 64 checkpoint files in the format checkpoint_last-shared-shard{i}.pt where i ranged from 0 to 63. However, all of them contain the same information. The eval_lm script expects exactly one file with the name checkpoint_last-shared.pt (with no shard{i} in the filename),
Secondly, rename all files checkpoint_last-rank-{i}-shard{i}.pt to remove the -shard{i} part from it.

I did this by creating a new temp directory and creating symlinks. Running this script worked perfectly: (
export PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}/home/t-rohitd/fairseq"
NUM_GPUS=`ls /dev/ | grep -E 'nvidia[0-9]+' | wc -l`

CHECKPOINT_TO_PROCESS='checkpoint_last'

TOKENS_PER_SAMPLE=1024
BATCH_SIZE=1
MODEL_CAPACITY=32 # based on train script = 2 * (local_batch_size)/(global_num_experts) = 2 * (8*1024)/512 = 32
MOE_EVAL_CAPACITY_TOKEN_FRACTION=`python3 -c "print($MODEL_CAPACITY/($BATCH_SIZE * $TOKENS_PER_SAMPLE))"`
DATA_PATH=path/to/my/dataset

# create temporary model checkpoint directory and create symlinks
RANK_PATHS=`find path/to/ckpt/dir/ -name $CHECKPOINT_TO_PROCESS-rank-*.pt`
TEMP_FOLDER=`mktemp -d`
pushd $TEMP_FOLDER
for m in $RANK_PATHS;
do
    filename=`echo $m | rev | cut -d '/' -f1 | rev | sed 's/-shard[0-9]*//g'` # extract only filename from full path
    ln -s $m ./$filename
done;
SHARED_PATH=`find path/to/ckpt/dir/ -name $CHECKPOINT_TO_PROCESS-shared-shard0.pt`
filename=`echo $SHARED_PATH | rev | cut -d '/' -f1 | rev | sed 's/-shard[0-9]*//g'`
ln -s $SHARED_PATH ./$filename
popd

set -ux
python -m fairseq_cli.eval_lm \
  $DATA_PATH \
  --ddp-backend fully_sharded \
  --path $TEMP_FOLDER/$CHECKPOINT_TO_PROCESS.pt \
  --gen-subset test_shifted \
  --sample-break-mode none \
  --tokens-per-sample $TOKENS_PER_SAMPLE \
  --batch-size $BATCH_SIZE \
  --fp16  --is-moe --distributed-world-size $NUM_GPUS \
  --model-overrides "{'world_size': $NUM_GPUS, 'moe_eval_capacity_token_fraction': $MOE_EVAL_CAPACITY_TOKEN_FRACTION}" \
  --log-format json

The output of this command looks something like this: (running this command requires a lot of RAM - in my case, peak memory utilisation was around 500+ GB) so this process will OOM on nodes with limited RAM.
2022-11-16 07:05:19 | INFO | fairseq.checkpoint_utils | load_model_ensemble_and_task is_moe=True
2022-11-16 07:05:19 | INFO | fairseq.moe_checkpoint_utils | Found total 64 expert files and current distributed world size: 16, Stitching experts to able to load on current world size.
.
.
.
2022-11-16 07:47:42 | INFO | fairseq_cli.eval_lm | Evaluated <number> tokens in <time>s (<float> tokens/s)
2022-11-16 07:47:42 | INFO | fairseq_cli.eval_lm | test_shifted Loss (base 2): <float>, Perplexity: <float>


Selective downgrade

Add a setting to automaticaly downgrade the agnet model from gpt4 to 3.5.
This option must be available on SDK.

Add a variable to prompt.state.json, set value to the current model:
{
    "model": "gpt-4-0613"
}

Edit the prompt settings:
<settings mode={{state.model}} />

Then on demand change the the "model" state value to for example: "gpt-3.5-0613"
After that every incoming meesage will be processed by 3.5 model.


Package resources error from wandb when using an editable installation of Icenet

IceNet version: 0.2.0
Python version: 3.9.16
Operating System: CentOS Linux release 7.9.2009 (Core)
wandb version: 0.13.10

Description
An exception related to package resources is raised when running icenet commands when using an editable installation of icenet (see below for summarized output).
All three of the following seem necessary to reproduce:

Wandb is imported (it does not occur if wandb is completely commented out, but merely importing wandb is enough to trigger the behaviour)
Icenet is run from a console script (e.g. icenet_train).  Calling icenet.model.train.main directly from python (with appropriate command line arguments preset) works fine
An editable install of icenet is used (pip install -e . and even with --config-settings editable_mode=strict)

Workaround: don't use an editable installation
This may be wandb's fault. Both wandb and the console scripts both access the package dependency list.
Output (edited for brevity)
$ icenet_train notebook_testrun 42 -b 2 -e 10 -m -qs 4 -w 4 -n 0.6 -nw

Traceback (most recent call last):
  File "[...]/lib/python3.9/site-packages/pkg_resour
ces/__init__.py", line 3030, in _dep_map
    return self.__dep_map
  File "[...]/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2826, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

[...]

  File "[...]/lib/python3.9/site-packages/pkg_resour
ces/_vendor/packaging/_tokenizer.py", line 163, in raise_syntax_error
    raise ParserSyntaxError(
pkg_resources.extern.packaging._tokenizer.ParserSyntaxError: Expected closing RIGHT_PARENTHESIS
    numpy (>='1.20')
          ~^

Interesting quick google raised this, perhaps a broken component in newer installations?

I also noticed that, although it doesn't seem directly related (we don't seem to need testpath, for instance), but the root cause could be the same.


feat: remove useless sdk-base dependency

Codecov Report

Merging #5 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master     #5   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines          65     63    -2
=====================================
- Hits           65     63    -2

Impacted Files
Coverage Δ

lib/profiler.js
100% <ø> (ø)
: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 07e13ac...d78ad00. Read the comment docs.


Pagination on documents-tab component is not working correctly

The pagination on the documents page of a workspace is not working correctly. Only the page number 1 is visible and hence the user is not aware about how many pages are there in total.

The number of pages should be visible clearly and the user should be able to click on the page number to navigate to that page. Can be implemented similar to how it is done for session history.

Since we are using DDB we can't get total count unless we retrieve all documents in advance, which would be very inefficient.
Closing this as not planned.

I agree.
In order to make the UI explicit, can we add Next/Previous buttons instead of showing page number? This way, we can disable the next button when there no more pages left.
Also we should provide a search functionality so that users can search for the documents. But maybe this can be done separately.


Sometimes extension host zombie stays around

I often happens to me that I have a zombie extension host somewhere. Unsure how that happens but I think it should self terminate when its parent PID isn't there anymore.

You should figure out what's the full argument list of that process, to really figure out which process it is. Use htop for that.

Cos the extension host binds on port 5870 and cos subsequent starts of the extension host cannot bind to that port (see message about using 5871) I have high confidence that this is the extension host being orphan.

I also sometimes see it, though would expect the killing strategy to take place. I believe this can happen when starting an invalid electron application (debugging an extension "out of dev" without specifying the path to vs code for this case).

@jrieken @joaomoreno @alexandrudima whenever you see this please update here with what you did before. I know I get this every once in a while but I never memorize what I did that lead me there...

I never noticed having this.

I still think it happens more often when developing on extensions, e.g. when you launch an extension for debugging. That might explain why you do not see it and others more often (that happen to work on extensions more often).

Maybe I run into this when with the integration tests, esp during dev when the don't always succeed or I kill the execution with Ctrl+C

I'm running into this on a daily basis with the following setup (deb from the homepage):
kda@toster ~ $ code --version
1.2.0
kda@toster ~ $ code --list-extensions
ms-vscode.cpptools
kda@toster ~ $ uname -a
Linux toster 4.4.0-22-lowlatency #40~14.04.1-Ubuntu SMP PREEMPT Fri May 13 22:47:02 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
kda@toster ~ $ lsb
lsblk        lsb_release
kda@toster ~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 17.3 Rosa
Release:	17.3
Codename:	rosa
kda@toster ~ $ apt-cache policy code
N: Unable to locate package code
kda@toster ~ $ apt-cache policy visual-studio-code
visual-studio-code:
  Installed: 1.2.0-1465219835
  Candidate: 1.2.0-1465219835
  Version table:
 *** 1.2.0-1465219835 0
        100 /var/lib/dpkg/status

A simple scenario to reproduce:
kda@toster ~ $ code
# Now close the window
kda@toster ~ $ ps -ax | grep code
20588 ?        Ssl    0:01 /usr/share/code/code
20590 ?        S      0:00 /usr/share/code/code --type=zygote --no-sandbox
20666 ?        Sl     0:00 /usr/share/code/code /usr/share/code/resources/app/out/bootstrap --type=SharedProcess
20763 ?        Sl     0:00 /usr/share/code/code ./terminalProcess

@semihalf-kardach-stanislaw the process that hangs around seems to be the shared process though and not the extension host process. If you can confirm that please open a new issue on this!

@bpasero Just to be sure. How can I confirm it beyond inspecting the command line?

@semihalf-kardach-stanislaw yeah command line is totally enough to verify!

This is not the extension host process staying around, but a process spawned from the extension host that does not terminate. I just had this issue again and noticed 2 ts-server processes running even though no other VS Code was running (+ many git processes which I think @joaomoreno fixed recently).

After killing the ts-server process, things worked again in terms of debugging.
@dbaeumer does the ts-server have protection to terminate itself when its parent dies?

@dbaeumer the stdFork behaves the same as stdin (I hope), given all the unref dancing at https://github.com/Microsoft/vscode/blob/master/src/vs/base/node/stdForkStart.js#L159
So if there are no more listeners on stdin, the fake stdin stream gets unrefed by me and node will shut down gracefully. Maybe stdin behaves differently?

Is it that if the standard stdin closes, node implicitly unrefs it?

@alexandrudima the problem is not that the extension host (which creates the fake stdin pipe/socket) doesn't exit. It does. But somehow the fake stdin doesn't closed hence the tsserver doesn't exit. What I was trying to say is: do we need a close call on the fake stdin/out when the extension host shuts down.

@alexandrudima any additional input?

@dbaeumer
https://github.com/Microsoft/vscode/blob/master/src/vs/base/node/stdForkStart.js#L130
I give to process.stdin the exact named pipe connection that node gives me. If node decides to give an error, process.stdin should get an error, etc.
If you don't want to, I can debug what node gives in there, maybe with the new node version something has changed... ?

not reproducable

Some more findings: the tsserver can't block the extension host to exit. But if the extension host is still active then of course the tsserver will still be there because it only exists if the extension host closed the stdin pipe. In addition I don't see why the tsserver should block the debugging port of the extension host. It doesn't even know about that port.
Possible reasons why the tsserver doesn't exit are:

the stdin stream doesn't close or node never receives an event for it
the tsserver is busy (endless loop)
the tsserver is in debug mode and sits on a breakpoint

If someone sees this and the tsserver is the only process hanging around could you please drag me in so that I can check why the tsserver doesn't exit itself.

I encounter this on Ubuntu 15.10, I wrote a TCP socket server , start it and receive thing from client , then stop server. But when I restart the TCP socket server it got panic, I found the process still exist and it still listen the socket. But in Mac OS it work fine.

@qianguozheng which process did still exist. Your TCP socket server. If so how do you exit / shutdown the server?

@dbaeumer  The TCP socket server did still exist, I kill the pid of the server( using netstat -luntp to find its pid)

@qianguozheng I mean how is the socket server to shutdown in the first place. Under Linux a process is not killed when its parent process exists. So the socket server must have some code to exit itseldf. Otherwise it wills stay around.

Closing the issue. Alex and I rewrote how the extension host is shutdown and I didn't see any tsserver or extension host processes hanging around. Please ping if one of you still thinks this is an issue.

re https://github.com/Microsoft/vscode/issues/7168#issuecomment-260743929 - I do but we are tracking that somewhere else I believe


Add IPSec backend

Uses ESP in tunnel mode and a PSK.
Strongswan is used as the IKE daemon
Communicate with the strongswan charon using VICI

Strongswan adds ~5MB (uncompressed) to the image size.
I have added minimal documentation and automated tested but it would be great to
add more before this is released.
I have also only performed minimal manual testing, so this backend is
"experimental" until more testing has been performed.
Huge thanks to @MohdAhmad @eyakubovich and @mkutsevol for their initial work on
getting ipsec added to flannel.

The authors have been named, but a quick shout out & backlinks to the PR's which have come before:
https://github.com/coreos/flannel/pull/637
https://github.com/coreos/flannel/pull/516
https://github.com/coreos/flannel/pull/290


Code Release

Where's the code to test this out?

Hi, thanks for your interest. Our paper is under review now. Code will be released upon paper acceptance. Thanks for your understanding.


Enhancing UXP-Browser Compatibility for SWC, Introducing Menu Control's Polyfills for CSS Grid and Logical Properties for 0.37 version

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

@ashutoshshukla8920 - Please run yarn format:fix to make prettier and linter error go away.

@ashutoshshukla8920 - sp-menu-group has css class .header which has got logical properties being used, we have to handle that too.


Issues with constrained parameters depending on each other

Problem
julia> using Turing

julia> @model function buggy_model()
           lb ~ Uniform(0, 0.1)
           ub ~ Uniform(0.11, 0.2)
           x ~ transformed(Normal(0, 1), inverse(Bijectors.Logit(lb, ub)))
       end

buggy_model (generic function with 2 methods)

julia> model = buggy_model();

julia> chain = sample(model, NUTS(), 1000);
┌ Info: Found initial step size
└   ϵ = 3.2
Sampling 100%|█████████████████████████████████████████████████████████████████████████████| Time: 0:00:01

julia> results = generated_quantities(model, chain); # (×) Breaks!
ERROR: DomainError with -0.05206647177072762:
log was called with a negative real argument but will only return a complex result if called with a complex argument. Try log(Complex(x)).
DomainError detected in the user `f` function. This occurs when the domain of a function is violated.
For example, `log(-1.0)` is undefined because `log` of a real number is defined to only output real
numbers, but `log` of a negative number is complex valued and therefore Julia throws a DomainError
by default. Cases to be aware of include:

* `log(x)`, `sqrt(x)`, `cbrt(x)`, etc. where `x<0`
* `x^y` for `x<0` floating point `y` (example: `(-1.0)^(1/2) == im`)
...

In contrast, if we use Prior to sample, we're good:
julia> chain_prior = sample(model, Prior(), 1000);

Sampling 100%|█████████████████████████████████████████████████████████████████████████████| Time: 0:00:00

julia> results_prior = generated_quantities(model, chain_prior); # (✓) Works because no linking needed

The issue is caused by the fact that we use DynamicPPL.invlink!!(varinfo, model) when constructing a transition, which is what ends up in the chain rather than an issue with the inference itself.
For example, if we use AdvancedHMC.jl directly:
julia> using AdvancedHMC: AdvancedHMC

julia> f = DynamicPPL.LogDensityFunction(model);

julia> DynamicPPL.link!!(f.varinfo, f.model);

julia> chain_ahmc = sample(f, AdvancedHMC.NUTS(0.8), 1000);
[ Info: Found initial step size 3.2
Sampling 100%|███████████████████████████████| Time: 0:00:00
  iterations:                                   1000
  ratio_divergent_transitions:                  0.0
  ratio_divergent_transitions_during_adaption:  0.0
  n_steps:                                      7
  is_accept:                                    true
  acceptance_rate:                              0.7879658455930968
  log_density:                                  -5.038135476673508
  hamiltonian_energy:                           7.775565727543868
  hamiltonian_energy_error:                     -0.11294798909710124
  max_hamiltonian_energy_error:                 0.5539216379943772
  tree_depth:                                   3
  numerical_error:                              false
  step_size:                                    1.1685229504528063
  nom_step_size:                                1.1685229504528063
  is_adapt:                                     false
  mass_matrix:                                  DiagEuclideanMetric([1.0, 1.0, 1.0])

julia> function to_constrained(θ)
           lb = inverse(Bijectors.Logit(0.0, 0.1))(θ[1])
           ub = inverse(Bijectors.Logit(0.11, 0.2))(θ[2])
           x = inverse(Bijectors.Logit(lb, ub))(θ[3])
           return [lb, ub, x]
       end
to_constrained (generic function with 1 method)

julia> chain_ahmc_constrained = mapreduce(hcat, chain_ahmc) do t
           to_constrained(t.z.θ)
       end;

julia> chain_ahmc = Chains(
           permutedims(chain_ahmc_constrained),
           [:lb, :ub, :x]
       );

Visualizing the densities of the resulting chains, we also see that the one from Turing.NUTS is incorrect (the blue line), while the other two (Prior and AdvancedHMC.NUTS) coincide:

Solution?
Fixing this I think will actually be quite annoying :confused: But I do think it's worth doing.
There are a few approaches:

Re-evaluate the model for every transition we end up accepting to get the distributions corresponding to that particular realization.
Double the memory usage of VarInfo and always store both the linked and the invlinked realizations.
Use a separate context to capture the invlinked realizations.

No matter how we do this, there is the issue that we can't support this properly for externalsampler, etc. that uses the LogDensityFunction, without explicit re-evaluation of the model :confused: Though it seems it would still be worth adding proper support for this in the "internal" impls of the samplers
Might be worth providing an option to force re-evaluation in combination with, say, a warning if we notice that supports change between two different realizations
@yebai @devmotion @sunxd3

This can be resolved with something like https://github.com/TuringLang/DynamicPPL.jl/pull/588 + some minor changes to Turing.Inference.getparams by turning
# Extract parameter values in a simple form from the invlinked `VarInfo`.
DynamicPPL.values_as(DynamicPPL.invlink(vi, model), OrderedDict)

into
vals = if DynamicPPL.is_static(model)
    # Extract parameter values in a simple form from the invlinked `VarInfo`.
    DynamicPPL.values_as(DynamicPPL.invlink(vi, model), OrderedDict)
else
    # Re-evaluate the model completely to get invlinked parameters since
    # we can't trust the invlinked `VarInfo` to be up-to-date.
    extract_realizations(model, deepcopy(vi))
end

This then defaults to the "make sure we're doing everything correctly"-approach, but allows the user to avoid all the additional model evaluations by just doing:
model = DynamicPPL.mark_as_static(model)

before passing model to sample
As noted in the PR, we probably should have something a bit more general to also capture when we need to use a fully blown UntypedVarInfo to allow arbitrary number of parameters + changing between evaluations, but given that we will (soonTM) have a more flexible approach to UntypedVarInfo which can grow arbitrarily (https://github.com/TuringLang/DynamicPPL.jl/pull/555) this might not be so important.

Combining aforementioned PRs, I imagine putting something like the following in our sample:
if DynamicPPL.has_static_constraints(model)
    model = DynamicPPL.mark_as_static(model)
end

and then continue business as usual.

It's indeed a VarInfo issue, but the way we do it with SimpleVarInfo is exactly to re-evaluate the model :shrug: So what I'm suggesting is to always do this by default, because that will always produce the right thing, and then allow specialization in the cases where it makes sense

For example, a good use-case is https://github.com/TuringLang/Turing.jl/pull/2099 where we need to (inv)link all the time to go between constrained (used to condition) and unconstrained (used in sampling). We really shouldn't be doing this through re-evaluation of the model unless needed :confused:


Error/Freeze and plugin crash in startup on Velocity

Description
I'm using docker to run my server with itzg/bungeecord.
The plugin worked fine this morning.
This evening, I have restarted my development server when I noticed that my server doesn't want to boot and was blocked at luckperms startup step. (ProxyInitializeEvent)
Reproduction Steps
Start the server with the jar in /plugins without any luckperms data/config folder.
Expected Behaviour
Load every file and let the proxy be able to finish loading.
Server Details
Velocity 3.2.0-SNAPSHOT (git-b0988bc5-b227)
LuckPerms Version
v5.4.61
Logs and Configs
[init] Resolving type given VELOCITY
[init] Downloading https://papermc.io/api/v2/projects/velocity/versions/3.2.0-SNAPSHOT/builds/227/downloads/velocity-3.2.0-SNAPSHOT-227.jar
[mc-image-helper] 22:06:36.676 INFO  : Downloaded /server/velocity-3.2.0-SNAPSHOT-227.jar
[init] Setting initial memory to 512m and max to 1024m
2023-02-18 22:06:37,561 main WARN Advanced terminal features are not available in this environment
[22:06:38 INFO]: Booting up Velocity 3.2.0-SNAPSHOT (git-b0988bc5-b227)...
[22:06:38 INFO]: Loading localizations...
[22:06:39 INFO]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 1.1.x (Linux x86_64) ciphers
[22:06:39 WARN]: The proxy is running in offline mode! This is a security risk and you will NOT receive any support!
[22:06:39 INFO]: Loading plugins...
[22:06:39 INFO]: Loaded plugin luckperms 5.4.61 by Luck
[22:06:39 INFO] [ashlesscore]: Loaded velocity plugin, awaiting for proxy initialization...
[22:06:39 INFO]: Loaded plugin ashlesscore 1.0.0-SNAPSHOT by Farmeurimmo
[22:06:39 INFO]: Loaded 2 plugins

Extra Details
And the server isn't continuing. This should be the proxyInitializeEvent with all luckperms startup and after my plugin.
BUT, luckperms create the folder "luckperms" within it another called "libs" with a file named "adventure-4.11.0. jar" in it.

I mean the server is idle and is doing nothing like if it was waiting for something.

It has finally boot but with this error :
[init] Resolving type given VELOCITY
[init] Downloading https://papermc.io/api/v2/projects/velocity/versions/3.2.0-SNAPSHOT/builds/227/downloads/velocity-3.2.0-SNAPSHOT-227.jar
[mc-image-helper] 22:18:32.553 INFO  : Skipping /server/velocity-3.2.0-SNAPSHOT-227.jar since it is already up to date
[init] Setting initial memory to 512m and max to 1024m
2023-02-18 22:18:33,467 main WARN Advanced terminal features are not available in this environment
[22:18:34 INFO]: Booting up Velocity 3.2.0-SNAPSHOT (git-b0988bc5-b227)...
[22:18:34 INFO]: Loading localizations...
[22:18:34 INFO]: Connections will use epoll channels, libdeflate (Linux x86_64) compression, OpenSSL 1.1.x (Linux x86_64) ciphers
[22:18:34 WARN]: The proxy is running in offline mode! This is a security risk and you will NOT receive any support!
[22:18:34 INFO]: Loading plugins...
[22:18:35 INFO]: Loaded plugin luckperms 5.4.61 by Luck
[22:18:35 INFO] [ashlesscore]: Loaded velocity plugin, awaiting for proxy initialization...
[22:18:35 INFO]: Loaded plugin ashlesscore 1.0.0-SNAPSHOT by Farmeurimmo
[22:18:35 INFO]: Loaded 2 plugins
[22:18:35 INFO]:         __
[22:18:35 INFO]:   |    |__)   LuckPerms v5.4.61
[22:18:35 INFO]:   |___ |      Running on Velocity - Velocity
[22:18:35 INFO]:
[22:18:35 INFO] [luckperms]: Loading configuration...
[22:18:42 INFO] [luckperms]: Loading storage provider... [H2]
[22:18:42 INFO] [luckperms]: Loading internal permission managers...
[22:18:42 ERROR]: Couldn't pass ProxyInitializeEvent to luckperms
java.lang.NoClassDefFoundError: me/lucko/luckperms/lib/bytebuddy/dynamic/scaffold/subclass/ConstructorStrategy
	at me.lucko.luckperms.common.plugin.AbstractLuckPermsPlugin.enable(AbstractLuckPermsPlugin.java:215) ~[?:?]
	at me.lucko.luckperms.velocity.LPVelocityBootstrap.onEnable(LPVelocityBootstrap.java:143) ~[?:?]
	at me.lucko.luckperms.velocity.Lmbda$1.execute(Unknown Source) ~[?:?]
	at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: me.lucko.luckperms.lib.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy
	at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass0(PluginClassLoader.java:87) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at com.velocitypowered.proxy.plugin.PluginClassLoader.loadClass(PluginClassLoader.java:64) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	... 9 more
[22:18:42 INFO] [ashlesscore]: Registering dependencies...
[22:18:42 ERROR]: Couldn't pass ProxyInitializeEvent to ashlesscore
net.luckperms.api.LuckPermsProvider$NotLoadedException: The LuckPerms API isn't loaded yet!
This could be because:
  a) the LuckPerms plugin is not installed or it failed to enable
  b) the plugin in the stacktrace does not declare a dependency on LuckPerms
  c) the plugin in the stacktrace is retrieving the API before the plugin 'enable' phase
     (call the #get method in onEnable, not the constructor!)

	at net.luckperms.api.LuckPermsProvider.get(LuckPermsProvider.java:53) ~[?:?]
	at main.java.net.ashless.velocity.AshlessCore.onProxyInitialization(AshlessCore.java:62) ~[?:?]
	at main.java.net.ashless.velocity.Lmbda$3.execute(Unknown Source) ~[?:?]
	at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:598) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:479) ~[velocity-3.2.0-SNAPSHOT-227.jar:3.2.0-SNAPSHOT (git-b0988bc5-b227)]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
[22:18:42 INFO]: Listening on /<IP_ADDRESS>:25577
[22:18:42 INFO]: Velocity and some of its plugins collect metrics and send them to bStats (https://bStats.org).
[22:18:42 INFO]: bStats collects some basic information for plugin authors, like how many people use
[22:18:42 INFO]: their plugin and their total player count. It's recommended to keep bStats enabled, but
[22:18:42 INFO]: if you're not comfortable with this, you can opt-out by editing the config.txt file in
[22:18:42 INFO]: the '/plugins/bStats/' folder and setting enabled to false.

I checked luckperms folder and it seems that the plugin created/retrieve everything that he needs.

Read this, and for the 2nd error make sure main.java.net.ashless.velocity.AshlessCore has a (soft) depend set on LuckPerms and isn't getting an instance of the API in a static field,

There isn't any error like said in the FAQ

Whoops, try deleting the libs folder and restarting

This is taking to much time I think...

I can ping the repos.

Nevermind he is idling without downloading anything.

Maybe it's a problem with the new Velocity update?

Because i can't startup Velocity too on #227 (#226 works fine for me)

Maybe it's a problem with the new Velocity update?
Because i can't startup Velocity too on #227 (#226 works fine for me)

I can also reproduce this behavior.

luckperms-dump.txt
Here's the thread dump from the moment it's stuck in the Performing initial data load stage. The only plugin running on the proxy is LP.

Maybe it's a problem with the new Velocity update?
Because i can't startup Velocity too on #227 (#226 works fine for me)

You're right, I'm not having any trouble with the B226 version of velocity.

This is fixed in build 228


Crafting Hangs up when crafting multiple items.

Crafting randomly stops after sending materials to machines for processing. IE, gold dust is sent to be smelted into an ingot, ingot is smelted and reimported back into the system, but crafting does not continue. Manually removing the item and placing it back in the system will make crafting resume. Happens randomly (doesn't happen every time) but consistently (happens often). Items are being reimported into the system using EnderIO Item Conduits attached to and Interface.

Can't repro on the dev version, when I'll release it let me know if it's fixed

You still having this issue, @varukasalt ?

Seems to no longer be a problem in the current release.


🔥 Refactor To Allow Plugins, Tree Shaking & More Color Spaces

Added

Ability to extend plugins
Tree Shaking with Webpack
Bundle size analyzer (webpack plugin) ← only runs in production build
Harmony plugin
Mix in LCHA space (needs work to be more accurate)
isValid() function & format getter is more robust
Conversion helper functions to different color spaces
Option to hexa() for rounding.
Tests for conversions (need to test plugins more thoroughly & finalize)
Ability to extend parsers → allows to extend ColorMaster instantiation by CSS name
LABA, LCHA, XYZA, HSVA conversion logic to and from RGBA
static Parsers property to simplify logic.
Community related files & templates for issues/PRs.

Fixed

Negative hue parsing
Closest color logic by adding helper functions. Added random() outside of ColorMaster class. Start of mix() - working on RGBtoLAB & RGBtoLCH
Fixed Jest config & adjusted coverage thresholds to be at least 85%

Changed

Refactor to only use RGB behind the scene
Parser functionality to be more general (better RegExp)
All accessibility functions are now more general (independent of input format)
ColorMaster class to make it default export a function that returns an instance
Opts to be alpha for some method
Separated parsers from conversion logic

Removed

Redundant typing on class method opts objects

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@94a25ac). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #15   +/-   ##
=========================================
  Coverage          ?   88.80%
=========================================
  Files             ?       19
  Lines             ?      411
  Branches          ?      112
=========================================
  Hits              ?      365
  Misses            ?       46
  Partials          ?        0

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 94a25ac...4295579. Read the comment docs.


Large documents

Currently, the toolkit does not scale up for larger documents.  On my MacBook, I started to notice lag for some commands on a documents with around 2500 nodes.  It would be nice to identify the bottlenecks, add benchmarking, and have a story for how to scale up an editor.

For benchmarking this, would you use a jQuery style selector in DevTools to count up the nodes under the contenteditable section of the element?

I'm working with a variation of the Basic example (from here).
If we consider the basing the child node count of <elm-editor> with a small-ish example like this:

This is some sample textlkjlkj

lkjlkajsdflkdjsaflkjdsalkfjds

asdflkdsajfkldsjafkldsjalkfjdsaklfjdslkajfkldsjafkljdsafkljsaldkfjsadfasldfkjsdaf

lkjkjkljasfdsaf

lkjlkjlkj

lkjkljklj

lkjlkjklj

lkjlkjklj

For getting the total nodes, we would need to evaluate the nodes at the top-level, and recursively descend each to count their nodes at level, correct?
If so, I think this would be a potential way to count the above:
$("div[data-rte-doc='true']").getElementsByTagName("*").length

When I evaluate that in Console for DevTools on the node
, I get 18 as the result (which I'm reasonably sure if the count for the children of
).
Or maybe it's easier to just operate from <elm-editor>:
$("elm-editor").getElementsByTagName("*").length
// 21 output

Is this the sort of beginnings of benchmarking that you were considering for this issue?
I assume that having some sample text to load into examples of varying node count would be helpful too.

I just realized that the 2500 nodes might be a Debug.log of the root's children, so toBlockArray and Array.length 🤦


Invalid mnemonic

while recovering wallet via seed word

@Deveshshankar  it's working fine with hexa seed

Work fine in both case


Add HRD (Home Realm Discovery) Service

Add HRD (Home Realm Discovery) Service to the list of required services. This service should not be blocked.

Learn Build status updates of commit 5066294:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

powerapps-docs/limits-and-config.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 5066294:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

powerapps-docs/limits-and-config.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


[Bug]: Very poor performance on Linux BizHawk

Describe the bug
When running the tracker in the Linux version of BizHawk, the emulator can barely keep a normal fps, let alone fast forward. The FPS drops are constant but vary wildly, and streaming video elsewhere on the system exacerbates the issue.
I assume it has something to do with the way the tracker draws graphics, since non-graphical lua files have never caused any issues for me. There are no errors in any of the logs. Notably, this happens on the NDS tracker as well.
Steps to Reproduce

Run EmuHawkMono.sh and load an Emerald ROM.
Launch tracker via lua console.
(Optional) Stream video in a browser or Discord.

What tracker version are you using?
v8.4.2
What operating system are you using?
Linux (Pop OS)
What emulator(s) are you seeing the problem on?
Bizhawk 2.9
Relevant log output
No response
Additional Information
No response

Thanks for the report. I have a few questions to understand the issue better:

Does this issue persist if you don't use the tracker at all? If so, it could be an issue with your Bizhawk setup
If it only occurs with the Tracker open, can you check the Lua Console's text output at the times when its slow or sluggish, its possible its reporting some errors there.
What setting is selected under Config > Display > Display Method? Mine is "Direct3D9"
Can you share a screenshot of the entire settings page under Config > Customize > Advanced tab? If there is an option for Lua Core, try changing it to the other option and test.

The issue only happens when the tracker is active.

This is the only output on the console:

Loading Ironmon Tracker for Bizhawk (Gen 3)
Ironmon Tracker v8.4.2 successfully loaded
> Tracker Notes: Loaded from last play session.

The display method is OpenGL, since Direct3D9 is not supported in the Linux version.
Here is the requested screenshot:

(Unchecking "Run lua scripts when turboing" does allow turbo to hit a stable 550ish fps, but that doesn't really help when the game lags at normal speed or for fast forward.)

I'm not sure how to go about resolving this issue, as it appears its reliant on external factors outside of the Tracker script's control. As such, I'm closing this issue for now.
It's possible that not all Linux OS's are compatible with Bizhawk + Tracker script, given their different environments. If you were otherwise able to resolve this issue on your end, I'd be interested to hear how.


Multiple suggest source tables

Search for more than just address points in suggest endpoint.
You can test here: https://utah.maps.arcgis.com/apps/webappviewer/index.html?id=97a1529c31c84a93956968d48c6e08ad

There are a lot of search widgets on that page. can you describe what should do what to set expectation?

There are a lot of search widgets on that page. can you describe what should do what to set expectation?

Look at the placeholders. The middle one on the bottom that shows "staging" is the one that is running the code from this PR.

@steveoh No rush just wanted to make sure that this is still on your list...


Fusion components

When moving to the new @equinor/fusion-framework-cli, all the components from fusion-components are not usable anymore (most of them since their bound to the portal)

Component
Status
Action
Details

ErrorBoundary
WIP
Create cookbook

ErrorMessage
Need grooming

MarkdownViewer
Done
Create cookbook

Step
Need grooming
Move over to Fusion React Components

Stepper
Need grooming
Move over to Fusion React Components

DataTable
AG-GRID

DataTableColumn
AG-GRID

PersonCard
WIP

PersonPhoto
WIP

PersonPicker
WIP

SearchableDropdown
Fix click outside,  clear text
https://equinor.github.io/fusion-react-components/?path=/docs/data-searchabledropdown--component
https://storybook.eds.equinor.com/?path=/docs/inputs-autocomplete--introduction

SearchableDropdownOption

https://equinor.github.io/fusion-react-components/?path=/docs/data-searchabledropdown--component
https://storybook.eds.equinor.com/?path=/docs/inputs-autocomplete--introduction

ErrorTypes
Need grooming

NavigationDrawer
EDS
Might create a Fusion “wrapper” which uses Navigation Routes for simply creation and matching
https://storybook.eds.equinor.com/?path=/docs/navigation-sidebar--primary

NavigationStructure
EDS
Create cookbook
https://storybook.eds.equinor.com/?path=/docs/navigation-sidebar--primary

SkeletonBar
Ok

https://equinor.github.io/fusion-react-components/?path=/docs/data-skeleton--page

SkeletonDisc
Ok

https://equinor.github.io/fusion-react-components/?path=/docs/data-skeleton--page

Spinner
Ok

https://storybook.eds.equinor.com/?path=/docs/feedback-progress-indicators-star--introduction

Tab
EDS

https://storybook.eds.equinor.com/?path=/docs/navigation-tabs--introduction

Tabs
EDS

https://storybook.eds.equinor.com/?path=/docs/navigation-tabs--introduction

TextArea
EDS

https://storybook.eds.equinor.com/?path=/docs/inputs-textarea--introduction

TextInput
EDS

https://storybook.eds.equinor.com/?path=/docs/inputs-textfield--introduction

ModalSideSheet
EDS
Might create a “wrapper” which unifies Fusion side sheet with scrim
https://storybook.eds.equinor.com/?path=/docs/surfaces-sidesheet--introduction

This is a duplicate of #794 . Closing.


Perceived Legitimacy Readiness - IP Protection

http://aleberrycreative.com/swag/perceived-legitimacy/#PitchTwo
Due:  14 Jun 2016
We are using free templates right now. But would be good to provide a one/two pager on the "unauthorised practice of law" issue and how we stand on it.
Would @jobchong @imjien @norvin be willing to work on this?

can reference ABA's recent request for input, and some letters that came back
http://www.americanbar.org/content/dam/aba/images/office_president/responsive_law_unregulated.pdf

also, the luppino piece at http://www.kauffman.org/neg/section-7# may be entertaining.

https://docs.google.com/document/d/1WQ8aj-29th31wo14sG42zweE7du7fdsZ94vKwHXHrqw/edit done by @norvin. I will summarise it into the desired length.

The company-facing document is at https://docs.google.com/document/d/1qd_4j0gqWHbjyc7HX2Z3-InUF8F4DZclBv5xxG3cOps/edit. From what I understand, the final result desired is the company's outward-facing official stand on what it is actually doing (hence we are not practicing law, limitation of liability, etc.). This document will come in a bit.


Landmark problem due to insufficient precision

For the bidirectional landmark algorithm (likely also for unidir LM) it can happen that the precision is not sufficient even for small areas and when the factor is properly estimated. Especially if roads are grid-like like in RoutingAlgorithmWithOSMTest.testCampoGrande where ShortestWeighting is used. In general a perfect-consistent weight estimate is not possible (as we store the weight as short and loose precision) and when there are multiple very similar alternatives for a route from A to B a problem can happen when the longer of those very similar alternatives is earlier explored than the shorter one (due to bigger rounding errors), which can lead to the problem that the SPTEntry is polled from the queue although the now shorter alternative wants to update it and prioQueue.remove returns false in AbstractNonCHBidirAlgo:
} else if (entry.getWeightOfVisitedPath() > weight) {
  boolean removed = prioQueue.remove(entry);

You can trigger a problem if you throw an error in these cases:
if (!removed)
  throw new IllegalArgumentException("Cannot find element with object " + entry + " in queue: " + prioQueue.toString());

It is similar to the fixed problem in #1749 (#1557) but I don't think this time we can or should do something about it.
That removed is false is not really a problem as the new, smaller entry is just added again to the priority queue even if the previous entry wasn't found. Also the weights of the alternatives must be very close and so it has no practical impact (<0.1m for ShortestWeighting). Even more seldom is the case that the slightly better alternative cannot be found (if the search stops too early) and we have not yet seen this case in tests otherwise landmark would return a different path than e.g. Dijkstra.
Still I stumbled over this problem when I tried to implement a slightly more efficient prioQueue.update method that requires the existence of the previous element in the queue. And it took me a long time to figure out what the real problem is. Increasing landmark-weight precision would improve the situation, but to guarantee that the removed variable is under all conditions true we would have to store the landmark weights lossless as double (8 bytes) I think, which we can't do memory-wise (not even 3 byte instead of 2).
I thought I still have to document this as an issue.

Thanks for figuring this out and documenting it as well. I am not sure if I understand yet. Why are rounded weights related to prioQueue.remove? PriorityQueue#remove uses indexOf so it tries to find an element that equals the given one. Since SPTEntry does not override equals this means we are looking at object equality ==. However, I am not 100% sure how this interacts with the SPTEntry#compareTo implementation. Is object equality based on the weights because SPTEntry implements compareTo? Would it help to implement equals (using the adjNode). And if you use another type of queue could this not be done in a way that we remove (or update) the element by adjNode as well? We do not care about elements with similar weights afterall. All we want to do is update the element with a certain traversalId (adjNode for node-based).

Yes, for PriorityQueue we do not use rounded weights and all is fine there. The rounding issue happens at an earlier level or maybe I found a wrong explanation :)
What we need for A* is a heuristic estimate that underestimates the distance. This is fine even with rounding issues as we always "round down" for landmarks. But the problem is IMO that the heuristic needs to be consistent, i.e. it should always "round down" in the same manner but it does not in our case as the rounding errors can fluctuate between 0 and 1. And so for a slightly longer alternative to the destination it could happen that there is a constellation where the landmark weights are "rounded" towards picking a slightly longer alternative and explore it slightly ahead of the real shortest path. When this happens at some point the SPTEntry of the slightly longer alternative could be polled from the PriorityQueue before the shortest path tree explores the same SPTEntry for the correct shortest path and then it tries to update the existing SPTEntry but it won't find it in the PriorityQueue anymore, i.e. removed is false. The chances for that are very very low and even if there are such problems the differences are often in the area of <1e-10 but especially for the previously mentioned testCampoGrande I saw "big" differences of nearly 0.1m.
This problem can also happen without landmarks I think, but the differences are likely always <1e-10.


file list API response is not wrapped like the others in a response

/api/1.3/servers/atsec-chi-00/configfiles/ats

should be

config file generation in TO has been removed. closing.


Multiseat multihead with hardware accellerated

Dear folks,
I´ve looking forwardin achieve a multiseat instalation linux that enables webrowsing with hw acceleration.
I have a 4 mini display port graphics card (Radeon WX3200 pro).
Just found some info for doing this with 4 spare gpu, but thats not the case.
Would xrdp help on that anyway? Can Xrdp output physically per user on the same gpu, like that?
Just wondering new paths, as most of information are very outdated or doesnt work anymore.
Thanks in advance

In addition, I verified that ASTER can do it with windows.
How does it works? https://www.ibik.ru/
I know that here might not be the best place to look, however with your knowledge on X, you probably might know what is and what is not possible.
Apreciate your help


Project fails to build on macOS 12 / Xcode 14 / mac destination

Describe the bug
The project fails to build on the configuration identified in the title.  The problem occurs on both Github. Actions and the SDK build system.
The problem is apparently due to the recent release of swift-collections 1.1.0.
Expected Behavior
Project should build successfully on all supported tools versions and platforms.
Current Behavior
Project fails to build on the build configuration identified in the title.
Here is an example CI build with the failure in the logs:
https://github.com/awslabs/aws-sdk-swift/actions/runs/7832449011/job/21371164845
Reproduction Steps
Build the project on the identified configuration, ensuring swift-collections 1.1.0 is the installed version.
Observe compile failure in the build logs
Possible Solution
Remove swift-collections as a dependency of aws-crt-swift.  CRT indicates that swift-collections is required but unused.
Additional Information/Context
No response
AWS SWIFT SDK version used
main
Compiler and Version used
Xcode 14.0.1
Operating System and version
macOS 12

Released with:
https://github.com/awslabs/aws-sdk-swift/releases/tag/0.35.0
https://github.com/smithy-lang/smithy-swift/releases/tag/0.40.0


mina-signer: use string instead of boolean for compilation option

We need to make the mina-signer change that goes with this PR: https://github.com/MinaProtocol/mina/pull/13232

Context: If we don't expose this in mina-signer, it's not really real. Why is this feature important? It prevents replay attacks from an arbitrary string-labeled network (instead of just two, which isn't enough in a world with projects like zeko)


Remove the CMake warnings on the Mac

This is the warning in question:
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

really no longer relevant


Tag release

Releases need to be tagged for easier versioning in package.json of node projects.

Tagging has begun.


Added missing Dependency

There is one Package that is needed to, I added into the pkg install command

I didn't have it installed and got into the game successfully, this extra package doesn't seem to be necessary.

For me Nothing startet without it


Add NumberOfUniqueWords primitive

Fixes #138

Right now this doesn't handle contractions:
can't is tokenized by nltk into can and t. I'm working to see if there is a way around that


Inconsistent behaviour of SimdPartialOrd::simd_min and simd_max when values are not comparable

When values are not comparable, these methods always return the second value.
An example of this is calling simd_min on a valid f32 and f32::NaN:
let number = 1.0f32;
let nan = f32::NAN;
println!("{}", number.simd_min(nan)); // Prints "NaN"
println!("{}", nan.simd_min(number)); // Prints "1"

This happens because the current implementation of simd_min is the following:
fn simd_min(self, other: Self) -> Self {
    if self <= other {
        self
    } else {
        other
    }
}

and a <= (or any syntax-sugared comparison in general) between two instances of a PartialOrd type where a.partial_ord(&b) returns None is evaluated to false.

On a side note, all the other comparison methods under SimdPartialOrd will return a bool regardless of whether the values are actually comparable or not. I imagine this is either SIMD requirement or a convenience choice, but at this point isn't the trait behaving more like a SimdOrd which is implemented for PartialOrd types like f32 and f64 for convenience?


add a warning to the changeset page if a user mentions google

Fixes #3063
This moves a check that's very common in our post-changeset validation up before the user even makes the mistake. This doesn't prevent the user from saving the changeset yet. We may want to do that in a second pass, but there are innocuous ways to mention Google, like "This feature isn't in Google Maps, but it does exist.", so blocking save entirely is probably too strong.
cc @geohacker @bhousel for the review

Thanks, this is a great check to have..


Feature: provide relevant error messages

Netlify build wraps plugins event handlers with a try/catch and report those as bugs.
Using catch-all will result in reporting all errors as user errors (including bugs).
For example we might want to report a relevant error here:
https://github.com/nimbella/netlify-plugin-nimbella/blob/2969462b33aa84d0c44a0c82285dc55e7a439f44/index.js#L84
if the token had been revoked or has expired.

Another example is when parsing redirects:
https://github.com/nimbella/netlify-plugin-nimbella/blob/beca8fd4b911f939de21ec47a018ba4dfbbe1afa/index.js#L143


RHBXMSQE-352 - refactoring + two new testcases

PR was created because of this [1]
[1]
https://projects.engineering.redhat.com/browse/RHBXMSQE-352

+1 !

I am in the middle of something but will merge that in once done, so assigning to myself

merged into master, thanks @jomarko


New Publisher CreateAnalysisViewEntryPart in Codeunit 424 Export Analysis View

Please add a new publisher event OnAfterFillNextCellRowsCreateAnalysisViewEntryPart (In codeunit 424 Export Analysis View, function “CreateAnalysisViewEntryPart” as shown below:

New publisher Event:
[IntegrationEvent(false, false)]
local procedure OnAfterFillNextCellRowsCreateAnalysisViewEntryPart(AnalysisViewEntry : Record "Analysis View Entry";VAR TempExcelBuffer : Record "Excel Buffer" temporary)
begin
end;

You help us implementing the requests faster when your request contains AL code copied from VSCode instead of screenshots.


Adding support to vagrant-libvirt centos image as per issue #2180

Hi there I'm requesting this pull request for adding support to vagrant-libvirt and running centos image.
I've created a dedicated centos-libvirt format for avoiding breaking old setup.
In my setup I had also to change subnet in the vagrant file because it's overlapping with the docker one that my machine is using. May I propose to update the documentation somewhere for reporting it?
Thanks

In my setup I had also to change subnet in the vagrant file because it's overlapping with the docker one that my machine is using.
@chapsuk can you check it?
Thanks

Hi, can you please merge master, bento image was replaced to centos/7 in https://github.com/kubernetes-incubator/kubespray/pull/2153

Ok, rebased and merged, but it seems main changes are alredy shipped by #2153, I've added only reference to vm cpu.

/lifecycle frozen


Guzzle 7 Not Found

PHP version: 7.4.7
Description
Cannot find Guzzle 7.0.1, even though the package provides a psr18 implementation (https://github.com/guzzle/guzzle/blob/7.0.1/composer.json#L38).
How to reproduce
composer show:
guzzlehttp/guzzle                  7.0.1   Guzzle is a PHP HTTP client library
guzzlehttp/promises                v1.3.1  Guzzle promises library
guzzlehttp/psr7                    1.6.1   PSR-7 message implementation tha...
php-http/cache-plugin              1.7.0   PSR-6 Cache plugin for HTTPlug
php-http/client-common             2.1.0   Common HTTP Client implementatio...
php-http/discovery                 1.8.0   Finds installed HTTPlug implemen...
php-http/httplug                   2.1.0   HTTPlug, the HTTP client abstrac...
php-http/message                   1.8.0   HTTP Message related tools
php-http/message-factory           v1.0.2  Factory interfaces for PSR-7 HTT...
php-http/multipart-stream-builder  1.1.0   A builder class that help you cr...
php-http/promise                   v1.0.0  Promise used for asynchronous HT...

Example code:
Psr18ClientDiscovery::find();

Error:
Http\Discovery\Exception\NotFoundException: No PSR-18 clients found. Make sure to install a package providing "psr/http-client-implementation". Example: "php-http/guzzle6-adapter".

/data/vendor/php-http/discovery/src/Psr18ClientDiscovery.php:27
/data/src/HttpClient/Builder.php:108
/data/src/Client.php:79
/data/tests/ClientTest.php:29

Caused by
Http\Discovery\Exception\DiscoveryFailedException: Could not find resource using any discovery strategy. Find more information at http://docs.php-http.org/en/latest/discovery.html#common-errors
 - Puli Factory is not available
 - No valid candidate found using strategy "Http\Discovery\Strategy\CommonClassesStrategy". We tested the following candidates: Http\Discovery\Strategy\CommonClassesStrategy::symfonyPsr18Instantiate, Http\Discovery\Strategy\CommonClassesStrategy::buzzInstantiate.
 - No valid candidate found using strategy "Http\Discovery\Strategy\CommonPsr17ClassesStrategy". We tested the following candidates: .

/data/vendor/php-http/discovery/src/Exception/DiscoveryFailedException.php:41
/data/vendor/php-http/discovery/src/ClassDiscovery.php:79
/data/vendor/php-http/discovery/src/Psr18ClientDiscovery.php:25

🚀


האפליקציה מציגה חפיפה במקום שלא הייתי בו

היי, ראיתי שהאפליקציה מציגה שיכול להיות שהייתה חפיפה ביני ובין חולה קורונה במקום ושעה שמאוד רחוקים מהמקום שבו הייתי באותו הזמן.
האפליקציה הציגה 4 חפיפות כאלה.
האם אתם מכירים באג כזה?

Same here

It seems the app is receiving geolocation points retrospectively regarding (only now) confirmed patients and matches your geolocation history movements. In the past 24h I've received around 20 push notifications from the 24th of March chance of exposure. It's good information, however I thought it's a mistake at first impression. After looking on my timeline at that date closely, I realized I did overlap the patient, approx. 200 meters, but I was in a car, driving. Still, "nice to have" data. And seems #145 is going to fix the repetitive push notifications for the same point, gazillion times, even in the middle of the night 🙄
אז לסיכום. יכול להיות שהייתם 100-500 מטרים ליד חולה שרק התברר עכשיו כחולה, אפילו שהייתם ברכב (לא הליכה). כרגע נראה שיש באג באפליקציה שגורם לאותו התרעה להופיע שוב ושוב ונראה ששוחרר כבר תיקון לאייפון לפי #145

I too am getting repeating notifications for the same two "matches" even after dismissing them.
Unlike @rafi my so called "matches" are for points of data over 2km from my location. I've double checked with my google maps history and during both "matches", I was home all day.
Also, the application does not show an address. It just shows
בדיקת קורונה - חיפה
Which I had to check the health department COVID19 map to find out that it is actually a convention center at the south exit of Haifa.

We appreciate your ongoing involvement in giving useful feedback on the app. Since the app doesn't transmit any data to the server (to ensure ultimate privacy) we rely on feedback like your comments here to understand where users face issues. It really helps us improve the app!
We fixed most of the bugs that caused the repeated notifications. Please update to the new version (1.1.2), released on 31.3 (note that it might take some time to propagate to all users on the Play/App Stores).
The primary reasons for most repeated notifications and false-alarms were:

Minor errors with the timestamps of confirmed patients locations (the source of the data is manual epidemiological investigations)
The fact that the app relied on a relatively lenient radius (500 meters at launch and then 150 meters). We narrowed it down to 50m radius and even consider using building polygons or bounding boxes.
The fact that the app receives location data from the phone's OS location service in a varying frequency, not controlled directly by the app (because we don't want it to drain the battery).

I'm closing the issue for now. But please, if you still experience repeated notifications or any other bugs - let us know!


Windows "ctrl" key being pressed during input results in error

Having some code like:
let input: String = Input::new()
        .with_prompt("Some prompt?")
        .interact()
        .unwrap();

On Windows if the "ctrl" key is pressed below will occur:
thread 'main' panicked at 'called `Result::unwrap()` on an
error: "Not a terminal" }', src/main.rs:17:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Looks like PR #192 addresses this, closing.


How can i remove DOI field

Thank you for your script to fix bib from mendeley.
I have some problems with the DOI field. I use BibTeX to create the ref, but some article has an underscore in DOI field that make a problem. How can I remove the DOI field in the bib file?

The short answer is to directly modify the source code by copying the code for removing the URL (lines 325-333 in current source version) and in the copy change the argument "url =" in the call to strncmp to "doi =". Compiling this code should then successfully remove all DOIs.
However, I do note that the printing of DOIs would also depend on the options of your bibliography style. For example, by default DOIs are not included in bibliographies made using the IEEE style. I also note that if you are getting links made for your DOIs then there is probably a hyperlink option in your document that is creating these (e.g., the hyperref  package). The links won't work for the default Mendeley formatting of DOIs because of the missing "dx.doi.org/" at the start of every DOI.


ext.flutter.structuredErrors isn't compatible with code that manipulates FlutterError.onError multiple times

If you have code that temporarily adds a FlutterError.onError handler, then puts it back, and while that code has its handler hooked you temporarily turn on then off the inspector's support of structured errors, you'll lose the value of FlutterError.onError. There's other similar failures likely to happen here.
cc @jacob314 @goderbauer

Solutions:

Make the code in widget inspector more robust so that which listener is attached to onError is the source of truth about whether the inspector is listening for errors. That would fix the immediate bug described. Risk is there are some tricky edge cases related to hot reload that we need to handle correctly.
Support multiple simultaneous error listeners. There are some other framework callbacks where supporting multiple listeners could also be more robust than having a single global callback.

Not sure what "turn on then off the inspector's support of structured errors" means so can't really repro this. Is this issue still relevant?


[US] As a Portal SC, I can create an Attestation on the AttestationRegistry

As a Portal, I can anchor on chain an Attestation. Only registered Portals can anchor an Attestation on-chain
More details on this specification in the issue #7
Requirements

Only registered Portals can create Attestations
Attestations are created through the Attestation Registry smart contract
Attestations are identified via their keccack(portalId, nonce), where the nonce is the number of attestations already created with this Portal, minus 1. (The third Attestation created with the Portal 0xabc...ef will have the id keccack(abi.encodePacked(0xabc...ef, 1)
Attestations should be found:
* by index, for a specific Portal
* directly by their id
Creating an Attestation should trigger an event

Todo

[ ] Create a AttestationRegistry contract
[ ] Create a Attestation struct to store a Attestation data
[ ] Add a mapping to store Attestations per Portal, per index (portalAddress => AttestationIndex => struct Attestation)
[ ] Add a mapping to store Attestations per Id (AttestationId => tuple(portalAddress, AttestationIndex))
[ ] Add an mapping of uint256 to get the number of Attestations per portalAddress
[ ] Add a getter to get the length of an array of Attestations for a Portal
[ ] Add a create() function to add a new Attestation to the mapping and the array. This create method is only callable by a Portal registered
[ ] To create an Attestation, it must have bytes data and bytes32 schemaId
[ ] When an Attestation is created, 1/ add it to the attestationsPerPortal 2/ add its portal and index in the list , 2/ add it to the 3/ emit a custom AttestationCreated event
[ ] Add a AttestationRegistry script to be able to deploy it easily + a pnpm command to trigger it
[ ] Add a AttestationRegistry set of unit tests to cover the happy path + the errors and events triggering

Naive implementation of the AttestationRegistry

contract AttestationRegistry()

{

	public mapping (address => uint256) attestationsLengthPerPortal;
	public mapping (address => Attestation[]) attestationsPerPortal;
	public mapping (bytes32 => uint256) attestations;

	modifier onlyPortals()
	{
		// @dev: Test that the portalRegistry knows this Portal
		if (bytes(portalRegistry.portals(msg.sender)) == '0x')
		{
			revert AttestationCreatorNotAPortal(msg.sender);
		}
		_;
	}

	function create(bytes32 schemaId, bytes attestationData) onlyPortals()
	{

		bytes32 attestationId = keccack(abi.encodePacked(msg.sender, attestationsLengthPerPortal[msg.sender]));

		Attestation attestation = Attestation(
			schemaId: schemaId,
			attestationData: attestationData,
			isRevoked: false,
			createdAt: block.timestamp
			attestationId: attestationId
		)

		attestationsPerPortal.push(attestation);
		attestations[attestationId] = attestation;
		attestationsLengthPerPortal[msg.sender]++;
                emit AttestationCreated(schemaId, msg.sender, attestationId, attestationData)
	}

}

Acceptance criteria

Should include a script to deploy the Attestation Registry
Should include 100% unit-tests (including accessing the metadata through the mapping)

Additional information

Workload estimate

TBD

This one probably makes #39 redundant, right?


Unexpected end of JSON input

When i do
let res = await Http.request({
                    url:"xxxxx",
                        method: "DELETE,
                        headers: {
                          Authorization: "Bearer XXXX"
                       }
               });
console.log("res",res);

and the server responds with an empty body (which is valid for DELETE) and status 204. then i get the above error. it seems this library tries to parse the body no matter what.
Which platform(s) does your issue occur on?

Android 11

ok so this is not an issue in this library, i called content.toJson() on an empty response. however i still would argue that the toJson method should get some error handling for such cases. for example if the body is empty return either null or an empty object. but do not crash.

... just gonna leave this here https://github.com/klippa-app/nativescript-http/issues/50

@manciuszz Your problem was that the toJson() is automatically called when you do console.log on the response object right? Because that's not something that is caused by nativescript-http. That's rather nativescript console.log automatically executing the methods. You could try to wrap it in a new Promise like this:
response.json = () => new Promise((resolve, reject) => {
  resolve(response.content.toJSON());
});

That will probably fix it as that returns a promise that still needs to be resolved, while your previous implementation returns a Promise.resolve.
@eikaramba
I understand the problem. This library is a drop-in replacement for the NativeScript Core HTTP, and thus tries to replicate the behavior. This library behaves the same, as can be seen here and here for Android and here and here for iOS.
I rather do not change that behavior by default.
However, I could introduce a "Safe mode" that would do extra checks before executing JSON.parse, what do you think?

wow super interesting because i struggled with the console.log error myself and it was driving me nuts. so thank you for that explanation. i am not going crazy afterall :)
i wasn'T aware that the default nativescript library has the same "problem". so i might aggree with you leaving it like it is and putting the responsibility on the developer to catch this accordingly.
one thing could also be to output a console message and informing that the response was not a valid json so that it is clear why this is happening. again, i could see developers doing a simple console.log(response) to check and then wonder why it is not working at all.

I have created a NativeScript runtime issue about this odd problem: https://github.com/NativeScript/android-runtime/issues/1693
The main issue is that NativeScript called this method toJSON, which the console.log for some reason always calls, if it's not there, but a toString is there, it will execute toString.


ez_setup should remove bad downloaded tar file if there was a failure

Originally reported by: sureshvv (Bitbucket: sureshvv, GitHub: sureshvv)

It leaves behind a zero length file. Subsequent runs assume the file is good and fail at a different point.

Bitbucket: https://bitbucket.org/pypa/setuptools/issue/81

Hello, I think we can close this issue now, since ez_setup is no longer used by setuptools and the standard way of installing packages is now via pip.
If anyone would like to re-open this issue, please feel free to write a comment bellow and we will be gladly consider the new information 😄.


logo: fix position of central polygon

The central polygon in the logo was shifted vertically to the top and not properly centered. I've fixed its position, so it's now equidistant to the polygons above and below.

Great PR!


Add new topic properties

archivable flag
number of partitions
max message size
time and space limits for topic storage

Only the archivable flag is exposed in the GUI (as it is the only one non-admin topic owners should get to choose), all are supported in the REST API (only admins may set Kafka settings).

Added policy changes to disallow making public topics private again to this patchset.


Is there going to be an update for it to work for Mac OS?

Duplicate of #18

Closed by https://github.com/RS117/RLHD/pull/59


Allows all party members to create invites

This PR should allow every party member to send invites as discussed on Discord.
Previously only the party leader (and moderators) could send party invites.

As per the discord discussion, there are other places this check would need to go (Tachyon party_in.ex being the one that was found at the time).


Use a more standard way to surface truncated query responses

Description
As of now, executing a query can sometimes give truncated results. This can happen when the server starts streaming the response to the client but fails before the whole response has been streamed back. The most common situation here is query timeout. If all the results are not streamed back in the timeout period, then the response gets cut. The client sees a 200 OK response and tries to parse the JSON.
We have built some solutions for this. There is no generic solution but implemented depending on the result format (CSV, Array, Object, etc.) and query protocol (SQL/JSON). We add some newline characters and if the client doesn't see those newline characters at the end, it considers the response truncated. This, however, doesn't work with clients that speak standard HTTP language such as curl.
There is a provision in the chunked encoding mechanism to signal truncated responses. The server sends a final terminating chunk and the client uses that terminating chunk to confirm that response is complete. Jetty is supposed to do the same but for some reason, it sends a terminating chunk even if the response is incomplete. I verified this by running Wireshark locally and inspecting the frames
For a truncated response

For a complete response

But then, I also found this commit that clearly has a fix and even a test case to verify the behavior we want.
After doing a bit more fiddling, I realized that we are closing the ResultWriter in SqlResource try-block and that, in turn, closes the response output stream. That effectively signals the end of the response and the timeout exception in the query is thrown afterward. At this point, throwing an exception would likely have no effect on the response bits being sent by Jetty.
We just need to flush the data and that's something already done by ResultWriter#writeResponseEnd. So that's what this fix does. I didn't remove the close method from ResultWriter yet. Though we might as well remove that too.
Here is what I get using a curl command to issue a query
Before the fix
< Vary: Accept-Encoding, User-Agent
< Content-Encoding: gzip
< Transfer-Encoding: chunked
<
{ [13 bytes data]
100 1295k    0 1295k  100   255   221k     43  0:00:05  0:00:05 --:--:--  5789
* Connection #0 to host localhost left intact

After the fix
< Vary: Accept-Encoding, User-Agent
< Content-Encoding: gzip
< Transfer-Encoding: chunked
<
{ [13 bytes data]
100 1443k    0 1443k  100   255   172k     30  0:00:08  0:00:08 --:--:--     0* transfer closed with outstanding read data remaining
100 1443k    0 1443k  100   255   172k     30  0:00:08  0:00:08 --:--:--     0
* Closing connection 0
curl: (18) transfer closed with outstanding read data remaining

Release note

This PR has:

[ ] been self-reviewed.

[ ] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[ ] a release note entry in the PR description.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[ ] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[ ] been tested in a test Druid cluster.

I haven't tested the router yet but I think, the router should just work without any changes.


APPDUX-80: Make Settings icon inactive for non-admin users

Motivation
https://issues.redhat.com/browse/APPDUX-80
What
Make the Settings icon inactive for non-admin users and display a tooltip explanation.
Why
Recent requirement to not allow non-admins access to certain areas of the Solution Explorer UI.
Verification Steps
To test:

Log into Solution Explorer on an OpenShift 4 cluster as an Administrator e.g. kube:admin.
Verify that the Settings cog in the masthead is clickable and opens the Settings page.
Close the Solution Explorer browser tab.
In OpenShift, log out as  and click github to log in with your dev credentials.
Launch Solution Explorer from the application launcher.
Click  from the masthead and select Log out.
Log back into Solution Explorer with your GitHub credentials.
Verify that the Settings cog is now grayed out and when you hover over it, a tooltip appears and explains why.

Checklist:

[x] Code has been tested locally by PR requester
[ ] Changes have been successfully verified by another team member

Progress

[x] Finished task

Additional Notes
For testing, you can point your OpenShift cluster to my Solution Explorer docker image at:
docker.io/mfrances17/dev-tutorial-web-app:latest
For a limited time, you can also view the changes on the UXD OpenShift 4 cluster:

https://tutorial-web-app-redhat-rhmi-solution-explorer.apps.uxd.cloudservices.rhmw.io/
Screencaps
Masthead logged in as Dev:

Masthead logged in as Admin:

Settings page after click as Admin:

@mfrances17 Looking good! For the tooltip, is there a way to either (1) change the background color to a gray or (2) move it further away from the hover point? The detail and shape of it are getting lost in the masthead since it looks like the same background color.

@mfrances17 Will the update to change the settings page to add the empty state be part of this PR or a different one? I can still get to and change the settings page as a "developer".

@mfrances17 Looking good! For the tooltip, is there a way to either (1) change the background color to a gray or (2) move it further away from the hover point? The detail and shape of it are getting lost in the masthead since it looks like the same background color.

I'll take a look and see if there's something we can do, and run it past you.

@mfrances17 we should also test this with one of the customer-admin users (e.g. customer-admin01 when using the testing-idp). They are not cluster admins, but should still be able to access those settings.

@mfrances17 we should also test this with one of the customer-admin users (e.g. customer-admin01 when using the testing-idp). They are not cluster admins, but should still be able to access those settings.

Will do, thanks.

h

Yes, much better. Thanks.


Fix indentation for deployment annotation

Description

Additional context and related issues

Release notes
( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
( ) Release notes are required, with the following suggested text:
*

Also .. does this break the chart and should be a release blocker for version 10?

Also .. does this break the chart and should be a release blocker for version 10?

As you might have already figured out this is a blocker for deployment


When adding previous and next arrow next to carousel indicators, previous event selects correct indicator while next event does not

First of all, thanks for taking the initiative to open up a maintained repo of materialize. I hope someone can help me out here.
Summary
When I add a previous and next arrow next to the carousel indicators and hook up previous() and next() events on them for going to next/previous slide, when clicking on the next arrow (i.e. calling next() event), every even second indicator is "skipped". Skipped meaning the indicator is not marked correctly on the second and fourth slide in my example. When using the previous arrow (i.e. calling previous() event), this is working fine.
JSFiddle: https://jsfiddle.net/BenBITDesign/8qgb4yon/1/
Expected Behavior
I would expect the next() event to work like the previous() event and mark the indicator correctly at all times.
Current Behavior
When calling the next() event while on the first slide to go to the second slide (or from the third to the fourth slide), the indicator does not mark the second (or fourth) dot correctly. It stays on the first (or third) dot while it's on the second (or fourth) slide. This keeps going every second slide if you would add more slides. You can easily see this by clicking on the next arrow and watching the indicator dots in the JSFiddle.
Important note: The previous() event works fine on all slides
Going to the second slide with the next arrow, the second indicator is not activated:

Possible Solution
I have not been able to figure out how the JavaScript selects the indicator to mark myself. I would think that the selection for the previous() event is currently not matching the selection for the next() event. The previous() event works fine on all slides.
Steps to Reproduce (for bugs)

Open JSFiddle linked above
Click the next arrow multiple times and see the indicator not being marked as active correctly every second slide
(note) Clicking the previous arrow will indicate the correct indicator at all times

Context
I bumped into this while I was trying to create next/previous arrows next to the indicators for moving the slides as seen in the JSFiddle.
In addition to this issue, clicking the indicators is also not working correctly now. When clicking the second indicator, the third slide is activated. Most likely because I have added child elements in the
 and the count is wrong. I have added  items in the hope that it is only counting
 items but that does not seem to be the case.
Your Environment

Version used:
Browser Name and version: Microsoft Edge Version 86.0.622.69
Operating System and version: Desktop, Windows 10
Link to your project: https://jsfiddle.net/BenBITDesign/8qgb4yon/1/

I can confirm this bug appears on Opera on Android as well, so it's not just an Edge bug if that helps anyone want to work on it.

Hi, sorry for the inactivty.
I could reproduce this issue in Firefox too, added the bug tag

by the way, carousel images are broken here is a fix : (click here to reveal)


Discord -> IRC url pasting spams multiple urls

Describe the bug
Discord user pastes URL into a bridged channel, three urls are spammed
To Reproduce
Steps to reproduce the behavior:
In discord paste (just) the following url : https://twitter.com/jaroso7811/status/1422074117814112257
Expected behavior
On IRC
 https://twitter.com/jaroso7811/status/1422074117814112257
Actual behavior
On IRC
 https://twitter.com/jaroso7811/status/1422074117814112257 embed: https://t.co/tUhGl3pZxc -
https://twitter.com/jaroso7811/status/1422074117814112257
Screenshots/debug logs
If applicable, add screenshots to help explain your problem.
Use logs from running matterbridge -debug if possible.
Environment (please complete the following information):

OS: [e.g. linux]
Linix
Description:	Ubuntu 16.04.7 LTS
Release:	16.04
Codename:	xenial

Matterbridge version: output of  matterbridge -version
version: 1.22.2 641ed187

Additional context
Please add your configuration file  (be sure to exclude or anonymize private data (tokens/passwords))

Can confirm that it's equally egregious when posting e.g. a YouTube link, especially if, like me, you can't figure out how or if to stop the bot pinging you on IRC every time you say something on Discord, lol.

I can not reproduce this anymore, reopen if you can :)


Apply short syntax , use spread operator in Todo component

It`s possible use short syntax of spread operator in this place.

Yes it is. Thank you!


Add gRPC support

Add gRPC support as a middleware, similar to the RoundTripper based HTTP support.

This should actually work with the gRPC-compattible connect-go already.

I need this feature. could i contribute this?

Sure - I could review a contribution for this. The failsafehttp package allows you to create either a Failsafe RoundTripper, or a Failsafe Request. It also has a RetryPolicyBuilder for building retry policies with built in handling for common response codes.
I don't have any ideas yet for what a failsafegrpc package might look like, but I'm interested to hear what you think.

I plan to use UnaryClientInterceptor and StreamClientInterceptor.
Same as failsafehttp, supporting RetryPolicyBuilder to handle common retryable grpc status code(ex. DEADLINE_EXCEEDED, UNAVAILABLE) is good.

That's sounds good. On the server side, we should also allow creating a failsafe tap handle (used via grpc.InTapHandle) that could be used for things like server side circuit breakers or rate limiters.


Code cleanup

Although these modifications are trivial, and should not break anything, I successfully built an APK using ant debug.

Cherry-picked all but "Removed unused imports". Thanks!