how run run_infer.py,I meet a problem

Hello, I trained this network on the CONSEP dataset and got the training weight of each epoch (...)How should I use these weights.I tried to run the run_inferption.py file like this:--gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=50. Tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask.However, the following error is displayed
/home/dc2-user/anaconda3/envs/pytorch160/bin/python /data0/hover_net-master/run_infer.py --gpu=0,1 --nr_types=6 --type_info_path=type_info.json --batch_size=64 --model_mode=oright --model_path=./logs/01/net_epoch=50.tar --nr_inference_workers=8 --nr_post_proc_workers=16 wsi --input_dir=./Dataset/CoNSeP/Test/Images/ --output_dir=./Dataset/sample_tiles/pred/ --save_thumb --save_mask
|2021-01-19|08:35:52.802| [INFO] .... Detect #GPUS: 2
WARNING: Detect checkpoint saved in data-parallel mode. Converting saved model to single GPU mode.
Traceback (most recent call last):
File "/data0/hover_net-master/run_infer.py", line 181, in
infer = InferManager(**method_args)
File "/data0/hover_net-master/infer/base.py", line 27, in init
self.__load_model()
File "/data0/hover_net-master/infer/base.py", line 68, in __load_model
net.load_state_dict(saved_state_dict, strict=True)
File "/home/dc2-user/anaconda3/envs/pytorch160/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for HoVerNet:
size mismatch for decoder.tp.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.tp.u0.conv.weight: copying a param with shape torch.Size([5, 64, 1, 1]) from checkpoint, the shape in current model is torch.Size([6, 64, 1, 1]).
size mismatch for decoder.tp.u0.conv.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([6]).
size mismatch for decoder.np.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.np.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.np.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.hv.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
Process finished with exit code 1
How should I set the path to --model_path?Or I should have made those arguments to run_infertion.py

It looks like there are some spelling errors in your command line args. Please can you send it again with code formatting please so we can read it better.

It looks like there are some spelling errors in your command line args. Please can you send it again with code formatting please so we can read it better.

sorry Let me rephrase
I trained this network on the CoNSeP dataset and got the training weight of each epoch (net_epoch=5.tar...(As shown above)) ,How should I use these weights in run_infer.py.  I tried to run the run_infer.py file like this:  python run_infer.py  --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=50. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask.   However, the following error is displayed
/home/dc2-user/anaconda3/envs/pytorch160/bin/python /data0/hover_net-master/run_infer.py --gpu=0,1 --nr_types=6 --type_info_path=type_info.json --batch_size=64 --model_mode=oright --model_path=./logs/01/net_epoch=50.tar --nr_inference_workers=8 --nr_post_proc_workers=16 wsi --input_dir=./Dataset/CoNSeP/Test/Images/ --output_dir=./Dataset/sample_tiles/pred/ --save_thumb --save_mask
|2021-01-19|08:35:52.802| [INFO] .... Detect #GPUS: 2
WARNING: Detect checkpoint saved in data-parallel mode. Converting saved model to single GPU mode.
Traceback (most recent call last):
File "/data0/hover_net-master/run_infer.py", line 181, in
infer = InferManager(**method_args)
File "/data0/hover_net-master/infer/base.py", line 27, in init
self.__load_model()
File "/data0/hover_net-master/infer/base.py", line 68, in __load_model
net.load_state_dict(saved_state_dict, strict=True)
File "/home/dc2-user/anaconda3/envs/pytorch160/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for HoVerNet:
size mismatch for decoder.tp.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.tp.u0.conv.weight: copying a param with shape torch.Size([5, 64, 1, 1]) from checkpoint, the shape in current model is torch.Size([6, 64, 1, 1]).
size mismatch for decoder.tp.u0.conv.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([6]).
size mismatch for decoder.np.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.np.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.np.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.hv.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
Process finished with exit code 1
How should I set the path to --model_path? Or I should have made those arguments to run_infer.py？？？

sorry Let me rephrase
I trained this network on the CoNSeP dataset and got the training weight of each epoch (net_epoch=5.tar...(As shown above)) ,How should I use these weights in run_infer.py.  I tried to run the run_infer.py file like this:  python run_infer.py  --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=50. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask.   However, the following error is displayed
/home/dc2-user/anaconda3/envs/pytorch160/bin/python /data0/hover_net-master/run_infer.py --gpu=0,1 --nr_types=6 --type_info_path=type_info.json --batch_size=64 --model_mode=oright --model_path=./logs/01/net_epoch=50.tar --nr_inference_workers=8 --nr_post_proc_workers=16 wsi --input_dir=./Dataset/CoNSeP/Test/Images/ --output_dir=./Dataset/sample_tiles/pred/ --save_thumb --save_mask
|2021-01-19|08:35:52.802| [INFO] .... Detect #GPUS: 2
WARNING: Detect checkpoint saved in data-parallel mode. Converting saved model to single GPU mode.
Traceback (most recent call last):
File "/data0/hover_net-master/run_infer.py", line 181, in
infer = InferManager(**method_args)
File "/data0/hover_net-master/infer/base.py", line 27, in init
self.__load_model()
File "/data0/hover_net-master/infer/base.py", line 68, in __load_model
net.load_state_dict(saved_state_dict, strict=True)
File "/home/dc2-user/anaconda3/envs/pytorch160/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for HoVerNet:
size mismatch for decoder.tp.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.tp.u0.conv.weight: copying a param with shape torch.Size([5, 64, 1, 1]) from checkpoint, the shape in current model is torch.Size([6, 64, 1, 1]).
size mismatch for decoder.tp.u0.conv.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([6]).
size mismatch for decoder.np.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.np.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.np.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.hv.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
Process finished with exit code 1
How should I set the path to --model_path? Or I should have made those arguments to run_infer.py？？？

My previous comment was to type your command line arguments with code formatting.
python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=50. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask

My previous comment was to type your command line arguments with code formatting.
python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=50. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask

I retrained the pytroch version network to run the same process as the original TensorFlow version, In addition, I also changed the way of extracting slices from win_size = [540,540] step_size = [164, 164] to [540,540] [80,80] during the training, and the weights I obtained for each round of training are shown in the following figure，so I am  not using WSI mode., I used the tile model.

I used invalid model mode-oright, but this error is due to a network structure mismatch. I used the same network for training and testing, but the weight of the model used in the testing stage was the weight saved in the training stage. Why did it prompt me about the problem of network structure mismatch.
python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=net_epoch=5. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask
In the test phase, should the path of this model point to the weights of a certain round that have been saved during the training phase, such as the weights of round 5 in the figure above.
2021-01-19|08:35:52.802| [INFO] .... Detect #GPUS: 2
WARNING: Detect checkpoint saved in data-parallel mode. Converting saved model to single GPU mode.
Traceback (most recent call last):
File "/data0/hover_net-master/run_infer.py", line 181, in
infer = InferManager(**method_args)
File "/data0/hover_net-master/infer/base.py", line 27, in init
self.__load_model()
File "/data0/hover_net-master/infer/base.py", line 68, in __load_model
net.load_state_dict(saved_state_dict, strict=True)
File "/home/dc2-user/anaconda3/envs/pytorch160/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for HoVerNet:
size mismatch for decoder.tp.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.tp.u0.conv.weight: copying a param with shape torch.Size([5, 64, 1, 1]) from checkpoint, the shape in current model is torch.Size([6, 64, 1, 1]).
size mismatch for decoder.tp.u0.conv.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([6]).
size mismatch for decoder.np.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.np.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.np.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.hv.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).

I retrained the pytroch version network to run the same process as the original TensorFlow version, In addition, I also changed the way of extracting slices from win_size = [540,540] step_size = [164, 164] to [540,540] [80,80] during the training, and the weights I obtained for each round of training are shown in the following figure，so I am  not using WSI mode., I used the tile model.

I used invalid model mode-oright, but this error is due to a network structure mismatch. I used the same network for training and testing, but the weight of the model used in the testing stage was the weight saved in the training stage. Why did it prompt me about the problem of network structure mismatch.
python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright --model_path="./logs/01/net_epoch=net_epoch=5. tar "--nr_inference_workers=8 --nr_post_proc_workers=16 wsi- input_dir = ". / the Dataset/CoNSeP/Test/Images/" - output_dir = ". / the Dataset/sample_tiles/Mr Pred/" - save_thumb - save_mask
In the test phase, should the path of this model point to the weights of a certain round that have been saved during the training phase, such as the weights of round 5 in the figure above.
2021-01-19|08:35:52.802| [INFO] .... Detect #GPUS: 2
WARNING: Detect checkpoint saved in data-parallel mode. Converting saved model to single GPU mode.
Traceback (most recent call last):
File "/data0/hover_net-master/run_infer.py", line 181, in
infer = InferManager(**method_args)
File "/data0/hover_net-master/infer/base.py", line 27, in init
self.__load_model()
File "/data0/hover_net-master/infer/base.py", line 68, in __load_model
net.load_state_dict(saved_state_dict, strict=True)
File "/home/dc2-user/anaconda3/envs/pytorch160/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1045, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for HoVerNet:
size mismatch for decoder.tp.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.tp.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.tp.u0.conv.weight: copying a param with shape torch.Size([5, 64, 1, 1]) from checkpoint, the shape in current model is torch.Size([6, 64, 1, 1]).
size mismatch for decoder.tp.u0.conv.bias: copying a param with shape torch.Size([5]) from checkpoint, the shape in current model is torch.Size([6]).
size mismatch for decoder.np.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.np.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.np.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.np.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
size mismatch for decoder.hv.u3.conva.weight: copying a param with shape torch.Size([256, 1024, 5, 5]) from checkpoint, the shape in current model is torch.Size([256, 1024, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.4.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.5.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.6.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u3.dense.units.7.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.conva.weight: copying a param with shape torch.Size([128, 512, 5, 5]) from checkpoint, the shape in current model is torch.Size([128, 512, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.0.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.1.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.2.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u2.dense.units.3.conv2.weight: copying a param with shape torch.Size([32, 32, 5, 5]) from checkpoint, the shape in current model is torch.Size([32, 32, 3, 3]).
size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).

@zerodohero  For everyone sake, please please read what you input as the command

python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright
-------------------------------------------------------------------------------------------------------------------------------^^^

Also, the internal pytorch error clearly indicate what wrong with it

size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
Only original use 5x5 kernel, fast use 3x3. You are loading a orignal checkpoint into fast model because of wrong input in the command.

I close the thread as this doesnt seem to go anywhere when you can't communicate.

@zerodohero  For everyone sake, please please read what you input as the command

python run_infer.py --gpu="0,1" --nr_types=6 --type_info_path="type_info.json" --batch_size=64 --model_mode=oright
-------------------------------------------------------------------------------------------------------------------------------^^^

Also, the internal pytorch error clearly indicate what wrong with it

size mismatch for decoder.hv.u1.conva.weight: copying a param with shape torch.Size([64, 256, 5, 5]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).
Only original use 5x5 kernel, fast use 3x3. You are loading a orignal checkpoint into fast model because of wrong input in the command.

I close the thread as this doesnt seem to go anywhere when you can't communicate.


[LANG-1541] - ArrayUtils.contains() fails to handle Double.NaN

Coverage decreased (-0.01%) to 94.934% when pulling 5abe7d7329afd11b31223d78774201ebfa1f342c on arturobernalg:feature/LANG-1541 into 6b3f258ed7f8737740a22599458c0c468864b837 on apache:master.

Hm, now that I look at the code, the change is in a deeper method that returns an index but you are not testing the method you changed, and this is likely why you did not find the bug in your implementation ;-)
Please see git master for the proper fix and test. I you want to contribute a Jira and PR for the Float version, that would be most welcome :-)

Hi @garydgregory
I really appreciate the comments.
i've created the Jira and the PR with the fix.
LANG-1615


[Bug]: Localstack container does not start on Jenkins

Module
LocalStack
Testcontainers version
1.17.3
Using the latest Testcontainers version?
Yes
Host OS
Linux
Host Arch
X86
Docker version
20.10.16

What happened?
I am using Testcontainers' Localstack Module for advanced integration testing with Spring Boot, replacing the AmazonS3 client with the one from Localstack. I have set up my integration test roughly as follows (only relevant parts):
// FurnitureDetailsControllerIT.kt

@Testcontainers
@SpringBootTest
@ExtendWith(SpringExtension::class)
@AutoConfigureMockMvc
@DirtiesContext
class FurnitureDetailsControllerIT {

  @Autowired
  private val amazonS3: AmazonS3? = null

  companion object {
    @Container
    var localStack: LocalStackContainer =
      LocalStackContainer(DockerImageName.parse("localstack/localstack:latest")).withServices(LocalStackContainer.Service.S3)

    @JvmStatic
    @DynamicPropertySource
    fun properties(registry: DynamicPropertyRegistry) {
      registry.add("cloud.aws.s3.endpoint") { localStack.getEndpointOverride(LocalStackContainer.Service.S3) }
      registry.add("cloud.aws.credentials.access-key") { localStack.accessKey }
      registry.add("cloud.aws.credentials.secret-key") { localStack.secretKey }
    }
  }
(...)
}

Everything runs fine when running the integration test locally (from my IDE or command line using Maven), meaning I can see the localstack container spinning up in the logs:
13:54:16.360 [main] INFO 🐳 [remote-docker.artifactory.mycompany.com/localstack/localstack:0.13.0] - Container remote-docker.artifactory.mycompany.com/localstack/localstack:0.13.0 started in PT4.6099665S

However, when running on Jenkins, the build fails because of an error message.

2022-09-28 14:27:19.971  INFO 1185 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Container remote-docker.artifactory.mycompany.com/localstack/localstack:latest is starting: ec383bda85f2636c3bef3f6b3938ac169636e4542244e3067b5184b6b03a6e35

2022-09-28 14:28:20.612 ERROR 1185 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Could not start container

org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Ready\.

I guess it has to do with the temporary directory needed by Localstack. When running on my Windows machine I have to manually click on "Share It" before the test resumes:

I suppose since the test is failing on Jenkins (because I cannot click on "Share It" there) starting the container will eventually time out and the test will fail.
I read that you can configure the directory using the TMPDIR environment variable as described in https://docs.localstack.cloud/localstack/configuration/. But using that variable is deprecated. What is the best way to set the temp directory to Jenkins working directory without having to explicitly conset to sharing that directory?
Note: I am already using Testcontainers' MongoBD module successfully, which starts a dockerized MongoDB instance. That works flawlessly, so I am not sure if it's an issue with Testcontainers or Localstack.
Relevant log output
No response
Additional Information
I have already tried playing around with various environment variables (for example to disable persistence or change the data directory) but nothing worked

Thanks for the detailed issue report @tiefenauer.
I don't think it is directly related to the Docker Desktop popup you shared, since this is something specific to Docker Desktop on Windows and I would assume your Jenkins is not running on Windows (you shared above that this is a Linux host). How is Docker installed and available on Jenkins?
Our LocalStackContainer mounts the Docker socket, I could imagine this might be an issue on your Jenkins setup. I have to check with the other module maintainers why this is necessary (I am not very experienced with LocalStack).
https://github.com/testcontainers/testcontainers-java/blob/a9c2e9e148097f4996dc7a96f85fced1ee857ddc/modules/localstack/src/main/java/org/testcontainers/containers/localstack/LocalStackContainer.java#L97
For further debugging, I would suggest you try to start the LocalStack container directly using Docker in your Jenkins job and check if it comes up successfully:
docker run -v /var/run/docker.sock:/var/run/docker.sock localstack/localstack:latest

We use Jenkins in a docker-in-docker (DIND) setup, so the agent running the build is a docker container itself. Unfortunately I don't have access to the Jenkins instance itself, so I cannot try out the docker command you provided.

I assume your setup will fail for the line I've linked above. The LocalStackContainer won't be available to mount the Docker socket. There is currently no easy way to disable this mount, besides copying the LocalStackContainer class into your own code and patching out the line. You can give it a try.
I need to check in with @eddumelendez why mounting the Docker socket is necessary, maybe we can make it optional in the LocalStackContainer implementation.

I just copied LocalStackContainer.java to my codebase and commented out line 97 (from above comment).
Still the same result:
2022-09-29 16:09:20.129  INFO 1287 --- [ream--609944143] ?.a.s.com/testcontainers/ryuk:0.3.3]     : Pull complete. 3 layers, pulled in 2s (downloaded 5 MB at 2 MB/s)

2022-09-29 16:09:20.133  INFO 1287 --- [           main] ?.a.s.com/testcontainers/ryuk:0.3.3]     : Creating container for image: remote-docker.artifactory.mycompany.com/testcontainers/ryuk:0.3.3

2022-09-29 16:09:20.236  INFO 1287 --- [           main] ?.a.s.com/testcontainers/ryuk:0.3.3]     : Container remote-docker.artifactory.mycompany.com/testcontainers/ryuk:0.3.3 is starting: fcf85be7ab6b40f67864d99ad16a8bbb8f6f5adc19061019a5de83c17bb496ee

2022-09-29 16:09:20.661  INFO 1287 --- [           main] ?.a.s.com/testcontainers/ryuk:0.3.3]     : Container remote-docker.artifactory.mycompany.com/testcontainers/ryuk:0.3.3 started in PT4.725721649S

2022-09-29 16:09:21.132  INFO 1287 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Container remote-docker.artifactory.mycompany.com/localstack/localstack:latest is starting: 4d6d878d5a4275a71acd9077ae25d513aedf0d17aba55e0e62cf834f3bdbb77a

2022-09-29 16:10:21.579 ERROR 1287 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Could not start container

org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Ready\.

@tiefenauer I found a thread related to localstack and dind setup in the localstack's slack. If there is a way to reproduce the issue will be helpful for localstack team and for us.

@eddumelendez : Unfortunately, I can't open the link to the slack thread since I'm not a member of this community (can I become one?). Unfortunately, I don't have insight into our company's Jenkins setup. It is a master node spinning up worker DIND agents as needed using Kubernetes.
Also investigating the log output did not give me any hints other than Localstack timing out. I'm posting it here for completeness:
2022-10-04 09:44:07.431 ERROR 1326 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Could not start container

org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Ready\.
'
	at org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:49) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:51) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:926) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:480) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:340) ~[testcontainers-1.17.2.jar:na]
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81) ~[duct-tape-1.0.8.jar:na]
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:338) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:326) ~[testcontainers-1.17.2.jar:na]
	at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.start(TestcontainersExtension.java:242) ~[junit-jupiter-1.17.2.jar:na]
	at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.access$200(TestcontainersExtension.java:229) ~[junit-jupiter-1.17.2.jar:na]
	at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$null$1(TestcontainersExtension.java:59) ~[junit-jupiter-1.17.2.jar:na]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$getOrComputeIfAbsent$4(ExtensionValuesStore.java:86) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.computeValue(ExtensionValuesStore.java:223) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.get(ExtensionValuesStore.java:211) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.evaluate(ExtensionValuesStore.java:191) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore$StoredValue.access$100(ExtensionValuesStore.java:171) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.ExtensionValuesStore.getOrComputeIfAbsent(ExtensionValuesStore.java:89) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.execution.NamespaceAwareStore.getOrComputeIfAbsent(NamespaceAwareStore.java:53) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$beforeAll$2(TestcontainersExtension.java:59) ~[junit-jupiter-1.17.2.jar:na]
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
	at org.testcontainers.junit.jupiter.TestcontainersExtension.beforeAll(TestcontainersExtension.java:59) ~[junit-jupiter-1.17.2.jar:na]
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$10(ClassBasedTestDescriptor.java:381) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:381) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:205) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:80) ~[junit-jupiter-engine-5.8.2.jar:5.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) ~[junit-platform-engine-1.8.2.jar:1.8.2]
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220) ~[junit-platform-launcher-1.3.1.jar:1.3.1]
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188) ~[junit-platform-launcher-1.3.1.jar:1.3.1]
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202) ~[junit-platform-launcher-1.3.1.jar:1.3.1]
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181) ~[junit-platform-launcher-1.3.1.jar:1.3.1]
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128) ~[junit-platform-launcher-1.3.1.jar:1.3.1]
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150) ~[surefire-junit-platform-2.22.2.jar:2.22.2]
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124) ~[surefire-junit-platform-2.22.2.jar:2.22.2]
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) ~[surefire-booter-2.22.2.jar:2.22.2]
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) ~[surefire-booter-2.22.2.jar:2.22.2]
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) ~[surefire-booter-2.22.2.jar:2.22.2]
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418) ~[surefire-booter-2.22.2.jar:2.22.2]

2022-10-04 09:44:07.453 ERROR 1326 --- [           main] ?.a.s.com/localstack/localstack:latest]  : Log output from the failed container:
Waiting for all LocalStack services to be ready
2022-10-04 07:43:07,834 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2022-10-04 07:43:07,836 INFO supervisord started with pid 16
2022-10-04 07:43:08,840 INFO spawned: 'infra' with pid 21
2022-10-04 07:43:09,841 INFO success: infra entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Waiting for all LocalStack services to be ready
SERVICES variable is ignored if EAGER_SERVICE_LOADING=0.

LocalStack version: 1.1.1.dev
LocalStack Docker container id: bf9754b98b8a
LocalStack build date: 2022-10-03
LocalStack build git hash: 4b8318ee

Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready
Waiting for all LocalStack services to be ready

2022-10-04 09:44:07.461  INFO 1326 --- [           main] o.s.t.c.support.AbstractContextLoader    : Could not detect default resource locations for test class [com.swisscom.designa.controller.files.FurnitureDetailsControllerIT]: no resource found for suffixes {-context.xml, Context.groovy}.
2022-10-04 09:44:07.461  INFO 1326 --- [           main] t.c.s.AnnotationConfigContextLoaderUtils : Could not detect default configuration classes for test class [com.swisscom.designa.controller.files.FurnitureDetailsControllerIT]: FurnitureDetailsControllerIT does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
2022-10-04 09:44:07.559  INFO 1326 --- [           main] .b.t.c.SpringBootTestContextBootstrapper : Found @SpringBootConfiguration com.swisscom.designa.DesignaBackendApplication for test class com.swisscom.designa.controller.files.FurnitureDetailsControllerIT
2022-10-04 09:44:07.562  INFO 1326 --- [           main] .b.t.c.SpringBootTestContextBootstrapper : Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.event.ApplicationEventsTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener, com.ninjasquad.springmockk.MockkTestExecutionListener, com.ninjasquad.springmockk.ClearMocksTestExecutionListener, org.springframework.security.test.context.support.WithSecurityContextTestExecutionListener, org.springframework.security.test.context.support.ReactorContextTestExecutionListener]
2022-10-04 09:44:07.563  INFO 1326 --- [           main] .b.t.c.SpringBootTestContextBootstrapper : Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@202199e, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@5864a44f, org.springframework.test.context.event.ApplicationEventsTestExecutionListener@4c8ad35b, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@33b7c027, com.ninjasquad.springmockk.MockkTestExecutionListener@216bf126, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@5cd07f98, org.springframework.test.context.support.DirtiesContextTestExecutionListener@465a6f52, org.springframework.test.context.transaction.TransactionalTestExecutionListener@4be13946, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@35fd03dd, org.springframework.test.context.event.EventPublishingTestExecutionListener@6a0e9645, org.springframework.security.test.context.support.WithSecurityContextTestExecutionListener@7f3b54a9, org.springframework.security.test.context.support.ReactorContextTestExecutionListener@3dd26901, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@60ec668d, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@7ece786b, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@5b75f507, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@75410509, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@761acd22, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener@7b1aeeaa, com.ninjasquad.springmockk.ClearMocksTestExecutionListener@f33f103]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 270.269 s <<< FAILURE! - in com.swisscom.designa.controller.files.FurnitureDetailsControllerIT
[ERROR] com.swisscom.designa.controller.files.FurnitureDetailsControllerIT  Time elapsed: 270.236 s  <<< ERROR!
org.testcontainers.containers.ContainerLaunchException: Container startup failed
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
Caused by: org.testcontainers.containers.ContainerLaunchException:
Timed out waiting for log output matching '.*Ready\.
'

@tiefenauer Check here for joining the LocalStack Slack.

Turns out it was an issue with the company proxy after all. For some reason, LocalStack needs to download dependencies at runtime:
From https://docs.localstack.cloud/localstack/configuration/:

OUTBOUND_HTTP_PROXY: HTTP Proxy used for downloads of runtime dependencies and connections outside LocalStack itself

Since our Jenkins is behind a corporate proxy, I had to set the following environment variables: SKIP_SSL_CERT_DOWNLOAD, OUTBOUND_HTTP_PROXY, OUTBOUND_HTTPS_PROXY. On top of that I had to hardcode the version to 1.1.0 instead of using the latest tag.
So my code now looks like this:
    LocalStackContainer(DockerImageName.parse("localstack/localstack:1.1.0"))
      .withServices(LocalStackContainer.Service.S3)
      .withEnv("SKIP_SSL_CERT_DOWNLOAD", "true")
      .withEnv("OUTBOUND_HTTP_PROXY", "http://{proxy}:{port}")
      .withEnv("OUTBOUND_HTTPS_PROXY", "http://{proxy}:{port}")
      .apply { start() }

Thanks for letting us know @tiefenauer and glad you could resolve it 👍

Thanks for your help. The issue is closed but it would still be interesting why it works with 1.1.0, but not when using the latest tag...

latest does not give you any control over which image is used. So latest might refer to an older version in this case, that was pulled the first time you used latest.

Can you let the LocalStack team know about this, please?

Can you let the LocalStack team know about this, please?
I created a bug but honestly I'm not sure if I'm able to provide all the necessary details.
https://github.com/localstack/localstack/issues/7929


THRIFT-2640: Compact Protocol in Cocoa

It would be nice if this built cleanly with the following warning config: OTHER_CFLAGS = -Wall -Wextra -Weverything -Wno-objc-missing-property-synthesis -Wno-unused-parameter -Wno-auto-import -Wno-documentation-unknown-command -Wno-direct-ivar-access -Wno-objc-interface-ivars -fno-objc-arc
This finds a lot of implicit conversion and ARC issues. Many of those are due to TProtocol.h not being updated similarly to TBinaryProtocol.h to avoid unnecessary indirect returns (and, under ARC, the need for __autoreleasing), like - (void) readStructBeginReturningName: (NSString **) name; which could simply return the name directly.
I know that's a pain though, and I don't want to hold up adding a compact protocol, so we could add an issue to fix this up in a later PR. (More generally, we really need an actual Xcode project with consistent build configuration, and actual protocol tests.)

If you would be so kind as to fix the ttypeToCompactType bit, I think this would be fine to merge. The other fixes can be done later.

Thanks for the comments!
I'll try to fix as much as I can. The code is straight port from C# with C++ bits here and there so I expected it woudn't be merged straight away.
TProtocol indeed looks strange with pointers to objects instead of a simple return but it would require not only library modificaion but also compiler. I think it's better to fix that in a separate issue.

Do you need me to squash the commits?

A squash-merge is fine by me.
I am happy @creker made many small commits as part of the pull request, because it is much easier to review. After squash-merging, the pull request can still be found on GitHub in case anyone wants to research the details of the changes.

I would like to hear someone elses opinion before I'm going to merge
A squash-merge is fine by me.

Gtreat, but that wasn't really the question ;-) What I want to know is if there are any objections against the PR from a technical viewpoint or if all of you are happy with it?

In that case, the remaining warnings I'm seeing are mostly implicit sign conversions and implicit precision loss (integer width narrowing), with a smattering of "ARC would like some __autoreleasing annotations".
Some of these can be resolved by picking variable types that match their eventual uses, like field types should be 16-bit throughout.
Most of these are due to protocol issues as discussed earlier. The protocol output needs updating to be 64-bit friendly as was done with the transport library code. Those issues need to be resolved in tandem with codegen changes, though.
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:127:14: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion]
    if ((n & ~0x7F) == 0) {
           ~ ^~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:143:26: warning: implicit conversion changes signedness: 'const uint8_t' (aka 'const unsigned char') to 'int8_t' (aka 'signed char') [-Wsign-conversion]
  [self writeByteDirect: COMPACT_PROTOCOL_ID];
  ~                      ^~~~~~~~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:144:26: warning: implicit conversion changes signedness: 'uint8_t' (aka 'unsigned char') to 'int8_t' (aka 'signed char') [-Wsign-conversion]
  [self writeByteDirect: (uint8_t)((COMPACT_VERSION & COMPACT_VERSION_MASK) |
  ~                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:183:75: warning: implicit conversion loses integer precision: 'int' to 'uint8_t' (aka 'unsigned char') [-Wconversion]
  uint8_t typeToWrite = typeOverride == 0xFF ? [self compactTypeForTType: fieldType] : typeOverride;
                                               ~                          ^~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:188:57: warning: implicit conversion loses integer precision: 'int' to 'int8_t' (aka 'signed char') [-Wconversion]
    [self writeByteDirect: (fieldID - lastFieldId) << 4 | typeToWrite];
    ~                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:191:28: warning: implicit conversion changes signedness: 'uint8_t' (aka 'unsigned char') to 'int8_t' (aka 'signed char') [-Wsign-conversion]
    [self writeByteDirect: typeToWrite];
    ~                      ^~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:192:21: warning: implicit conversion loses integer precision: 'int' to 'short' [-Wconversion]
    [self writeI16: fieldID];
    ~               ^~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:195:17: warning: implicit conversion loses integer precision: 'int' to 'short' [-Wconversion]
  lastFieldId = fieldID;
              ~ ^~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:211:69: warning: implicit conversion loses integer precision: 'int' to 'int8_t' (aka 'signed char') [-Wconversion]
    [self writeByteDirect: [self compactTypeForTType: keyType] << 4 | [self compactTypeForTType: valueType]];
    ~                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:211:55: warning: implicit conversion loses integer precision: 'int' to 'uint8_t' (aka 'unsigned char') [-Wconversion]
    [self writeByteDirect: [self compactTypeForTType: keyType] << 4 | [self compactTypeForTType: valueType]];
                           ~                          ^~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:211:98: warning: implicit conversion loses integer precision: 'int' to 'uint8_t' (aka 'unsigned char') [-Wconversion]
    [self writeByteDirect: [self compactTypeForTType: keyType] << 4 | [self compactTypeForTType: valueType]];
                                                                      ~                          ^~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:251:26: warning: implicit conversion changes signedness: 'uint8_t' (aka 'unsigned char') to 'int8_t' (aka 'signed char') [-Wsign-conversion]
  [self writeByteDirect: value];
  ~                      ^~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:302:38: warning: implicit conversion loses integer precision: 'int' to 'int8_t' (aka 'signed char') [-Wconversion]
    [self writeByteDirect: size << 4 | [self compactTypeForTType: elementType]];
    ~                      ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:302:67: warning: implicit conversion loses integer precision: 'int' to 'uint8_t' (aka 'unsigned char') [-Wconversion]
    [self writeByteDirect: size << 4 | [self compactTypeForTType: elementType]];
                                       ~                          ^~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:304:33: warning: implicit conversion changes signedness: 'int' to 'int8_t' (aka 'signed char') [-Wsign-conversion]
    [self writeByteDirect: 0xf0 | [self compactTypeForTType: elementType]];
    ~                      ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:304:62: warning: implicit conversion loses integer precision: 'int' to 'uint8_t' (aka 'unsigned char') [-Wconversion]
    [self writeByteDirect: 0xf0 | [self compactTypeForTType: elementType]];
                                  ~                          ^~~~~~~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:315:14: warning: implicit conversion changes signedness: 'long' to 'unsigned long long' [-Wsign-conversion]
    if ((n & ~0x7FL) == 0) {
           ~ ^~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:324:52: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion]
  [mTransport write: varint64out offset: 0 length: idx];
  ~                                                ^~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:344:55: warning: method parameter of type 'NSString *__autoreleasing *' with no explicit ownership [-Wexplicit-ownership-type]
- (void) readMessageBeginReturningName: (NSString **) pname
                                                      ^
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:376:54: warning: method parameter of type 'NSString *__autoreleasing *' with no explicit ownership [-Wexplicit-ownership-type]
- (void) readStructBeginReturningName: (NSString **) pname
                                                     ^
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:392:53: warning: method parameter of type 'NSString *__autoreleasing *' with no explicit ownership [-Wexplicit-ownership-type]
- (void) readFieldBeginReturningName: (NSString **) pname
                                                    ^
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:565:55: warning: implicit conversion changes signedness: 'int' to 'NSUInteger' (aka 'unsigned int') [-Wsign-conversion]
  NSMutableData* buf = [NSMutableData dataWithLength: length];
                       ~                              ^~~~~~
thrift/lib/cocoa/src/protocol/TCompactProtocol.m:566:59: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion]
  [mTransport readAll: buf.mutableBytes offset: 0 length: length];
  ~                                                       ^~~~~~
23 warnings generated.

Where possible without changing the protocol bits that are pinned by codegen, it would be good to address integer width/signedness change issues or add the appropriate under/overflow/undefined behavior checking.
Might be helpful background reading: INT02-C (and other INTxy recommendations) and Type Conversions.
I find that using types that match the APIs I'll be passing them to is far easier than thinking through whether I didn't mess something up across implicit width and signedness changes.

I think we should start by fixing protocols because all other code is mostly depending on them. After that it should be easy to fix type issues.

:+1: Sounds good to me.


add range of shipment date

Changes Unknown when pulling 62620de4b6f6b8d71d58c4560446c16ed646ed5f on indriHutabalian:dev into ** on danliris:dev**.


[All] Add navigator.mediaDevices polyfill

used for enumerating devices. all underlying libraries support this.

included in this is removal of getUserMedia shims


Readme.md not displaying correctly anymore

This is fixed by adding the documentation folder but we need to rethink the documentation structure anyway.

fixed with latest release


RFE: Docker Container?

I would like it if you would add the Dockerfile, and host the image here on github (GHCR). We have it hosted internally at the moment, but as we were trying to run our renovate pipelines in an external gitlab-runner, they failed to reach the internally hosted instance. If you are interested, I could PR the file and the github actions to build/publish it.
Here is the Dockerfile we are using (which likely needs updated), this would actually maybe even be easier if you are already building the app, you could create the container by just "COPY" (ing) the artifact over instead of downloading it :)
FROM frolvlad/alpine-glibc:alpine-3.15

ARG VERSION=1.4.1

RUN wget -O /usr/local/bin/yaml-updater https://github.com/xvik/yaml-updater/releases/download/${VERSION}/yaml-updater-linux-amd64 \
  && chmod +x /usr/local/bin/yaml-updater

CMD ["/usr/local/bin/yaml-updater", "--help"]

It would be great if you can do a PR. Also would appreciate help with github action.
I'm busy with other things now, but if it would be fast to release after your PR I'll of course do it.


Playground can sometimes not show all the text on-screen

Resizing and changing the zoom seems to somewhat help, but it's not consistent

This is fixed now


Prompt when deleting a service should include cluster information

The current message is
Are you sure that you want to delete <service>@<stage>?

It should be
Are you sure that you want to delete <service>@<stage> from <cluster>?

This was fixed in 1.12.


Form action required_slots receives nonsense values in slots_mapped_in_domain

Rasa version:
Rasa Version      :         2.5.1
Minimum Compatible Version: 2.2.0a1
Rasa SDK Version  :         2.5.0
Rasa X Version    :         None
Python Version    :         3.8.0
Operating System  :         Linux-5.4.72-microsoft-standard-WSL2-x86_64-with-glibc2.10
Python Path       :         /home/jem-mosig/miniconda3/envs/rasa-master/bin/python

Issue:
The slots_mapped_in_domain argument of the required_slots function contains the nonsense label "required_slots", which breaks forms. This did not happen in
Rasa Version     : 2.4.3
Rasa SDK Version : 2.5.0
Rasa X Version   : None
Python Version   : 3.8.0
Operating System : Linux-5.4.72-microsoft-standard-WSL2-x86_64-with-glibc2.10
Python Path      : /home/jem-mosig/miniconda3/envs/rasa-master/bin/python

Error (including full traceback):
No error message or traceback. But the contents of slots_mapped_in_domain for a regular form are
["required_slots"]

Command or request that led to error:
Talk to the bot and trigger a form. Print out the contents of slots_mapped_in_domain in the action server code. (Minimal breaking example is attached to this issue.)
Content of configuration file (config.yml) (if relevant):
language: en

pipeline:
  - name: WhitespaceTokenizer
  - name: LexicalSyntacticFeaturizer
  - name: CountVectorsFeaturizer
  - name: DIETClassifier
    epochs: 100
  - name: EntitySynonymMapper

policies:
  - name: RulePolicy
    enable_fallback_prediction: False

Content of domain file (domain.yml) (if relevant):
version: "2.0"

intents:
  - greet
  - goodbye

responses:
  utter_goodbye:
  - text: "Bye"

  utter_ask_trivia_answer:
  - text: "Who am I?"

actions:
- validate_trivia_form

slots:
  trivia_answer:
    type: any
    auto_fill: false
    influence_conversation: false

session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: true

forms:
  trivia_form:
    trivia_answer:
      - type: from_text

The problem was that this relied on a newer SDK version and we don't cut alpha releases, so the main branch could only be used if the SDK was installed from source.


Roll Improvements: support for "dice so nice" module and roll sound

Dice so nice is the 3d dice module and a lot of dice roll modules support it already.
I am adding this as an enhancement request because with my party this was the deciding factor to wait for the future to try mess in a real session because my players want the roll experience they are used to.

This is actually not so easy  with the multiple possible automatical rolls at once, since dice so nice only allows one instance of rolls at a time (and a maximum of 20)
what is your preferred method here?
if its not much work i may think about adding it, since i'm partially interested in using dice so nice as well.

So the problem is when both hit and dmg are selected that it is required to have 2 rolls at once right?
(if I m not mistaken minorQOL with the fast rolls on is just chaining them one after the other)
From a player point of view this will be my ideal expectation:

hit and dmg are not toggled: When i click on the "to hit" button the 3d dices are rolled, the sound is played and the button will be saying "rolling...". When dice animation is finished the result will be displayed on the to hit button. Clicking the damage button will do exactly the same.
hit OR dmg are selected. when executing the attack the dices for the toggled action will be automatically rolled, the card is showed with the text "rolling..." in the appropriate button. the other button will function as the case above.
both hit AND dmg are selected: The ideal scenario here would be that you perform 1 ROLL (since the limitation of dice so nice) that is the sum of all dices used by hit and dmg (this kinda simulates the table top way of rolling damage and hit together that some player like). after the roll is done you have to split the result and recompose the dices used to hit and to damage to show the results as 2 different rolls even if they where rolled together.

for example if the hit is 1d20+7 and damage is 2d8+4 you roll 1 fomula and then you should be able to get individual results from the roll and decompose them into 2.

Main problem is when you attack 2 or more different targets its starting to be a rather long wait time, for each roll to finish and having 2 different attack rolls in one roll is kinda confusing as well.

when you attack multiple targets then it can be skipped, I would say there is no expectation of rolls in that scenario.
The main use case for me is with no target selected.
This is a feature that mostly will be enjoyed by whom looks for less automation and wants to roll everything or most of the things separately

ok so
my suggestion, which i'd be okay to try would be to  just make 3d dice roll, when clicking the buttons yourself. This aligns (for me) with the idea of wanting to take time to wait for rolls and thus being ok with making that one extra click.
This would mean that multi-target woudl be ok, as long as no autoroll is selected.

Ups accidently closed this. This will be moved to a later version.

if this will happen it will not happen before FVTT 0.7.x, due to incoming dice API changes and resulting dice so nice changes.

I don't know what's in the FVTT 0.7 changes are but it looks like the dice API Changes are out with 2.0.  I was thinking of taking a shot at getting this working but will leave alone if you have something in the works or I'm missing something.
Bob

i have nothing in the works currently
and i thought the general FVTT dice api does go through some changes in 0.7
buuuut simone and atro did talk about the changes and they're already taken into account for the v2 of dice so nice.. soooo.. we can hope that it stais like that?

OK so I think this tuned out to be easier than I thought it was going to be.
So I added to index.js the following.  If you have a better place to store if DSN is on/off then obviously feel free to adjust.
Hooks.once('diceSoNiceReady', (dice3d) => {
    game.mess.diceSoNice = true;
});

Then in dice.js or any r.roll() if I missed any just add the following after the r.roll();  I only found r.roll() in dice.js inside rollToHit and rollDmg.
	r.roll();
	// if Dice so Nice is enabled wait for the dice to roll
	if (game.mess.diceSoNice == true)
		await game.dice3d.showForRoll(r).then(displayed => { });

This will delay the update of the card till the dice roll is complete.
If you have a bunch hit and dmg auto rolls set then each roll with be done is succession and then the card displayed.  It would probably be nicer to throw all the dice at once or something but at least it works. I figure if the user wants to use DSN then they are willing to wait for the dice to roll.
I noticed one bug in that if the user turns DSN on/off via its config option, ie not disable the mod but simply turns it on/off, they need to reload the page to get things in sync.
Bob

Did it a little bit different:
For automatic rolls:

rolls to Hit
rolls all dmg die together
renders chat card
If multiple target, the above will be repeated for each target

For manual rolls:

rolls roll and disables all buttons
updates card on roll completion

Also finally added roll sounds