Llama3.2 Vision Model: Guides and Issues

Running the server (using the vLLM CLI or our docker image):

vllm serve meta-llama/Llama-3.2-11B-Vision-Instruct --enforce-eager --max-num-seqs 16
vllm serve meta-llama/Llama-3.2-90B-Vision-Instruct --enforce-eager --max-num-seqs 32 --tensor-parallel-size 8

Currently:

Only one leading image is supported. Support for multiple images and interleaving images are work in progress.
Text only inference is supported.
Only NVIDIA GPUs are supported.
Performance is acceptable but to be optimized! We aim at first release to be functionality correct. We will work on making it fast 🏎

cc @heheda12345 @ywang96

What is the ETA for adding support for multiple images? For a project I'm working on, we're trying to see if it's viable to use vLLM for Llama 3.2 in the next few days.

What is optimal way to use H100s?  I'd guess 8 are not required.

INFO 09-25 18:52:22 engine.py:288] Added request cmpl-7f02d431762140e784491182a7121772-0.
ERROR 09-25 18:52:23 engine.py:157] AssertionError()
ERROR 09-25 18:52:23 engine.py:157] Traceback (most recent call last):
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/multiprocessing/engine.py", line 155, in start
ERROR 09-25 18:52:23 engine.py:157]     self.run_engine_loop()
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/multiprocessing/engine.py", line 218, in run_engine_loop
ERROR 09-25 18:52:23 engine.py:157]     request_outputs = self.engine_step()
ERROR 09-25 18:52:23 engine.py:157]                       ^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/multiprocessing/engine.py", line 236, in engine_step
ERROR 09-25 18:52:23 engine.py:157]     raise e
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/multiprocessing/engine.py", line 227, in engine_step
ERROR 09-25 18:52:23 engine.py:157]     return self.engine.step()
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/llm_engine.py", line 1264, in step
ERROR 09-25 18:52:23 engine.py:157]     outputs = self.model_executor.execute_model(
ERROR 09-25 18:52:23 engine.py:157]               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/executor/distributed_gpu_executor.py", line 78, in execute_model
ERROR 09-25 18:52:23 engine.py:157]     driver_outputs = self._driver_execute_model(execute_model_req)
ERROR 09-25 18:52:23 engine.py:157]                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/executor/multiproc_gpu_executor.py", line 148, in _driver_execute_model
ERROR 09-25 18:52:23 engine.py:157]     return self.driver_worker.execute_model(execute_model_req)
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/worker/worker_base.py", line 327, in execute_model
ERROR 09-25 18:52:23 engine.py:157]     output = self.model_runner.execute_model(
ERROR 09-25 18:52:23 engine.py:157]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/torch/utils/_contextlib.py", line 116, in decorate_context
ERROR 09-25 18:52:23 engine.py:157]     return func(*args, **kwargs)
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/worker/enc_dec_model_runner.py", line 223, in execute_model
ERROR 09-25 18:52:23 engine.py:157]     output: SamplerOutput = self.model.sample(
ERROR 09-25 18:52:23 engine.py:157]                             ^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/models/mllama.py", line 940, in sample
ERROR 09-25 18:52:23 engine.py:157]     next_tokens = self.sampler(logits, sampling_metadata)
ERROR 09-25 18:52:23 engine.py:157]                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1553, in _wrapped_call_impl
ERROR 09-25 18:52:23 engine.py:157]     return self._call_impl(*args, **kwargs)
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py", line 1562, in _call_impl
ERROR 09-25 18:52:23 engine.py:157]     return forward_call(*args, **kwargs)
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 274, in forward
ERROR 09-25 18:52:23 engine.py:157]     maybe_deferred_sample_results, maybe_sampled_tokens_tensor = _sample(
ERROR 09-25 18:52:23 engine.py:157]                                                                  ^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 879, in _sample
ERROR 09-25 18:52:23 engine.py:157]     return _sample_with_torch(
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 819, in _sample_with_torch
ERROR 09-25 18:52:23 engine.py:157]     multinomial_samples[sampling_type] = _multinomial(
ERROR 09-25 18:52:23 engine.py:157]                                          ^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 627, in _multinomial
ERROR 09-25 18:52:23 engine.py:157]     assert seq_group.generator is not None
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157] AssertionError
(VllmWorkerProcess pid=209) INFO 09-25 18:52:23 multiproc_worker_utils.py:244] Worker exiting
(VllmWorkerProcess pid=211) INFO 09-25 18:52:23 multiproc_worker_utils.py:244] Worker exiting
(VllmWorkerProcess pid=210) INFO 09-25 18:52:23 multiproc_worker_utils.py:244] Worker exiting
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 257, in __call__
    await wrap(partial(self.listen_for_disconnect, receive))
  File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 253, in wrap
    await func()
  File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 230, in listen_for_disconnect
    message = await receive()
              ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/uvicorn/protocols/http/httptools_impl.py", line 555, in receive
    await self.message_event.wait()
  File "/usr/lib/python3.12/asyncio/locks.py", line 212, in wait
    await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 7ff530597740

During handling of the above exception, another exception occurred:

  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/dist-packages/uvicorn/protocols/http/httptools_impl.py", line 401, in run_asgi
  |     result = await app(  # type: ignore[func-returns-value]
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/dist-packages/uvicorn/middleware/proxy_headers.py", line 70, in __call__
  |     return await self.app(scope, receive, send)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/dist-packages/fastapi/applications.py", line 1054, in __call__
  |     await super().__call__(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/applications.py", line 113, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py", line 187, in __call__
  |     raise exc
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/middleware/errors.py", line 165, in __call__
  |     await self.app(scope, receive, _send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/middleware/cors.py", line 85, in __call__
  |     await self.app(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/middleware/exceptions.py", line 62, in __call__
  |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py", line 62, in wrapped_app
  |     raise exc
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py", line 51, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/routing.py", line 715, in __call__
  |     await self.middleware_stack(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/routing.py", line 735, in app
  |     await route.handle(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/routing.py", line 288, in handle
  |     await self.app(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/routing.py", line 76, in app
  |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py", line 62, in wrapped_app
  |     raise exc
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/_exception_handler.py", line 51, in wrapped_app
  |     await app(scope, receive, sender)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/routing.py", line 74, in app
  |     await response(scope, receive, send)
  |   File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 250, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/dist-packages/anyio/_backends/_asyncio.py", line 736, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 253, in wrap
    |     await func()
    |   File "/usr/local/lib/python3.12/dist-packages/starlette/responses.py", line 242, in stream_response
    |     async for chunk in self.body_iterator:
    |   File "/usr/local/lib/python3.12/dist-packages/vllm/entrypoints/openai/serving_completion.py", line 248, in completion_stream_generator
    |     async for prompt_idx, res in result_generator:
    |   File "/usr/local/lib/python3.12/dist-packages/vllm/utils.py", line 490, in merge_async_iterators
    |     item = await d
    |            ^^^^^^^
    |   File "/usr/local/lib/python3.12/dist-packages/vllm/engine/multiprocessing/client.py", line 486, in _process_request
    |     raise request_output
    | AssertionError
    +------------------------------------
INFO 09-25 18:52:24 multiproc_worker_utils.py:124] Killing local vLLM worker processes
[rank0]:[W925 18:52:26.595501679 CudaIPCTypes.cpp:16] Producer process has been terminated before all shared CUDA tensors released. See Note [Sharing CUDA tensors]
INFO:     <IP_ADDRESS>:35352 - "GET /health HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application

How can I run the vllm docker image against the meta provided checkpoint (not the huggingface one)?

What is the ETA for adding support for multiple images? For a project I'm working on, we're trying to see if it's viable to use vLLM for Llama 3.2 in the next few days.

Same here. If we can know the ETA for adding support for multiple images and interleaving images, it will be truly appreciated. We also have a project that depends on this kind of SOTA VLMs.
Thank you so much for your hard work and great contributions!

How can I run the vllm docker image against the meta provided checkpoint (not the huggingface one)?

You can add the logic of loading meta provided checkpoint here. The main work will be changing some names of the parameter. And you still need huggingface's configs.

I got a HF checkpoint thatnks to some EU friends, managed to serve the model half of today, but now it's dying

What is the general memory requirement for the model. Seems that 90b model is not able to run on an 8x40GB A100 machine.

What is the general memory requirement for the model. Seems that 90b model is not able to run on an 8x40GB A100 machine.

pif... imagine I tried to run it on 8 A30 :(

Thank you all for trying out Llama3.2 vision model on vLLM!
As you may already know, multimodal Llama 3.2 is quite different from other LlaVA-style VLMs that we currently support on vLLM as it involves cross-attention layers in the language model, and below are the next step and their priorities for features and optimizations related to this new architecture.
P0

[ ] Cross attention mask:

To properly support multi/interleaved image inference, a custom cross attention mask is required but passing attention mask to attention module is not supported on vLLM today. Help wanted!

[ ] Address KV cache waste issue:

We need better memory management for cross attention/encoder-decoder models since the page size cannot be specified separately.

[ ] Optimize inference of mixed requests (text-only & text + image):

Since the model forward pass changes dynamically to the input (text only or text + image), we needed to add additional dummy image + mask for text-only sequences so that mixed requests can be batched
As a result, there's significant room for optimizing both compute & space efficiency.
This is less of an issue for offline inference (where typically requests are either all text-only or all text + image), but more for the online serving case.

P1

[ ] Attention backends other than xformers for cross attention
[ ] Enabling cuda graph

P2

[ ] Image embeddings as input
[ ] Frontend changes for multi/interleave images
[ ] Add xformers implementation for vision encoder attention

Any thoughts on my issue or should I post real separate issue?
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 819, in _sample_with_torch
ERROR 09-25 18:52:23 engine.py:157]     multinomial_samples[sampling_type] = _multinomial(
ERROR 09-25 18:52:23 engine.py:157]                                          ^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157]   File "/usr/local/lib/python3.12/dist-packages/vllm/model_executor/layers/sampler.py", line 627, in _multinomial
ERROR 09-25 18:52:23 engine.py:157]     assert seq_group.generator is not None
ERROR 09-25 18:52:23 engine.py:157]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ERROR 09-25 18:52:23 engine.py:157] AssertionError

https://github.com/vllm-project/vllm/issues/8826#issuecomment-2375593420

@pseudotensor fix is here https://github.com/vllm-project/vllm/pull/8870, sorry I probably missed it in the other issue, will comment there too.

It's a good first attempt but as it currently is it's basically unusable. Without caching the cross attention projections it is insanely slow, probably about 1/20th the speed it should be.

It's a good first attempt but as it currently is it's basically unusable. Without caching the cross attention projections it is insanely slow, probably about 1/20th the speed it should be.

Can you provide more information for us to reproduce your problem? e.g., your benchmark script & your data.

I don't think any of the implementations currently have the cross attention projection caches? But for inference, it looks like the outputs of the cross attention kv projections for attending to the image can be cached after the first token and reused for all subsequent inference steps without being recalculated each time (the image doesn't change).
https://github.com/vllm-project/vllm/blob/bd429f2b75f3622fabaf9c9470ca2e921f6f56ca/vllm/model_executor/models/mllama.py#L674-L707
It's possible I am misunderstanding the code, but it looks like it repeats them each time even though the output should be the same?

I don't think any of the implementations currently have the cross attention projection caches? But for inference, it looks like the outputs of the cross attention kv projections for attending to the image can be cached after the first token and reused for all subsequent inference steps without being recalculated each time (the image doesn't change).
https://github.com/vllm-project/vllm/blob/bd429f2b75f3622fabaf9c9470ca2e921f6f56ca/vllm/model_executor/models/mllama.py#L674-L707
It's possible I am misunderstanding the code, but it looks like it repeats them each time even though the output should be the same?

I suggest you take a look at the actual attention module implementation here to understand how attention with KV cache works.
https://github.com/vllm-project/vllm/blob/bd429f2b75f3622fabaf9c9470ca2e921f6f56ca/vllm/attention/layer.py#L15-L27

OK -- I misunderstood. I think my previous speed issues might have been a skill issue on my part and I dug through the other issues to try to figure out which command line arguments I was missing. Running
CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --gpu-memory-utilization 0.95 --model=FILM6912/Llama-3.2-11B-Vision-Instruct --tokenizer=meta-llama/Llama-3.2-11B-Vision-Instruct --download-dir="/home/user/storage/hf_cache" --dtype=bfloat16 --device=cuda --host=<IP_ADDRESS> --port=30000 --max-model-len=8192 --quantization="fp8" --enforce_eager --max_num_seqs=8

On 3x 3090s is giving me:
Average caption generation time: 40.10s over 166 captions
Recent captions per second: 1.30
Average caption generation time: 43.22s over 235 captions
Recent captions per second: 1.15
Average caption generation time: 44.14s over 308 captions
Recent captions per second: 1.22
Average caption generation time: 45.89s over 368 captions
Recent captions per second: 1.00

Found another weird thing with vllm and LLaMA 3.2 11b, or possibly another failure of myself to read the docs. If I have --enable_chunked-prefill=false on, the model will batch 4-5 requests as running at the same time. If I don't supply this argument, it will only process 1 request at a time and be significantly slower.

Found another weird thing with vllm and LLaMA 3.2 11b, or possibly another failure of myself to read the docs. If I have --enable_chunked-prefill=false on, the model will batch 4-5 requests as running at the same time. If I don't supply this argument, it will only process 1 request at a time and be significantly slower. With that argument I go from about 2.4 sec/caption to 2.1 sec/caption on a 3090.

May I ask you to share vLLM argument for the model deployment that you used?

It's above.

CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --gpu-memory-utilization 0.95 --model=meta-llama/Llama-3.2-11B-Vision-Instruct --tokenizer=meta-llama/Llama-3.2-11B-Vision-Instruct --download-dir="/home/user/storage/hf_cache" --dtype=bfloat16 --device=cuda --host=<IP_ADDRESS> --port=30000 --max-model-len=8192 --quantization="fp8" --enforce_eager --max_num_seqs=8

I'm still having other issues too. vllm will hang randomly sometimes without errors and stop responding to requests after a few hours. :(

It's above.

CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.openai.api_server --gpu-memory-utilization 0.95 --model=meta-llama/Llama-3.2-11B-Vision-Instruct --tokenizer=meta-llama/Llama-3.2-11B-Vision-Instruct --download-dir="/home/user/storage/hf_cache" --dtype=bfloat16 --device=cuda --host=<IP_ADDRESS> --port=30000 --max-model-len=8192 --quantization="fp8" --enforce_eager --max_num_seqs=8 --enable_chunked-prefill=false

Perfectly worked for me. Thank you so much!
Going to tests on Monday. Or tomorrow if the weather become terrible :)))

Perfectly worked for me. Thank you so much! Going to tests on Monday. Or tomorrow if the weather become terrible :)))

Unfortunately performance for me degrades over time and I don't know why. After about an hour of giving it continuous requests throughput falls to about half the original rate. It's very reproducible at least.

Ok, I give up. The one server (which is running on localhost) stops processing requests randomly. It results in long stretches of idle time where no work is being done, rendering the openai server unusable.

Just to report that I have been serving 90b from HF checkpoint without issues (besides when trying to use instructor on top that killed the server).
It's not super fast (~35tok/s) but can handle multiple requests in parallel.
Hardware 8xh100.
I have served more than 10M tokens already ;)

I tried offline inference mode with batch size 8 on a 3090, again it gets hung randomly and stops processing batches.
On ctrl+c it shows it is stuck in return len(self._output_token_ids) + len(self._prompt_token_ids).
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/user/Programs/vllm/caption_vllm.py", line 147, in worker
    outputs = llm.generate(inputs, sampling_params=sampling_params)
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/utils.py", line 1047, in inner
    return fn(*args, **kwargs)
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/entrypoints/llm.py", line 388, in generate
    outputs = self._run_engine(use_tqdm=use_tqdm)
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/entrypoints/llm.py", line 877, in _run_engine
    step_outputs = self.llm_engine.step()
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/engine/llm_engine.py", line 1217, in step
    ) = self.scheduler[virtual_engine].schedule()
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/scheduler.py", line 1189, in schedule
    scheduler_outputs = self._schedule()
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/scheduler.py", line 1154, in _schedule
    return self._schedule_default()
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/scheduler.py", line 989, in _schedule_default
    prefills = self._schedule_prefills(budget,
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/scheduler.py", line 903, in _schedule_prefills
    can_allocate = self.block_manager.can_allocate(seq_group)
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/block_manager_v1.py", line 290, in can_allocate
    self_num_required_blocks = self._get_seq_num_required_blocks(
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/core/block_manager_v1.py", line 282, in _get_seq_num_required_blocks
    return 0 if seq is None else seq.n_blocks
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/sequence.py", line 452, in n_blocks
    return (self.get_len() + self.block_size - 1) // self.block_size
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/sequence.py", line 557, in get_len
    return self.data.get_len()
  File "/home/user/Programs/vllm/env/lib/python3.10/site-packages/vllm/sequence.py", line 273, in get_len
    return len(self._output_token_ids) + len(self._prompt_token_ids)
KeyboardInterrupt

vllm was instantiated like:
    model_name = "meta-llama/Llama-3.2-11B-Vision-Instruct"
    llm = LLM(
        model=model_name,
        max_model_len=8192,  # Adjust as needed
        max_num_seqs=8,      # Adjust as needed
        enforce_eager=True,
        quantization="fp8",
        gpu_memory_utilization=0.98,
    )
    ```

I am getting the following error:
ERROR 09-28 19:27:59 async_llm_engine.py:61] RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasGemmEx( handle, opa, opb, m, n, k, &falpha, a, CUDA_R_16BF, lda, b, CUDA_R_16BF, ldb, &fbeta, c, CUDA_R_16BF, ldc, compute_type, CUBLAS_GEMM_DEFAULT_TENSOR_OP)`
Exception in callback functools.partial(<function _log_task_completion at 0x7c49e15f6e80>, error_callback=<bound method AsyncLLMEngine._error_callback of <vllm.engine.async_llm_engine.AsyncLLMEngine object at 0x7c49dda27aa0>>)
h

Full logs: https://gist.github.com/samos123/43db2724d7ac1bba44a379ce300b156b

I am getting the following error:
ERROR 09-28 19:27:59 async_llm_engine.py:61] RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasGemmEx( handle, opa, opb, m, n, k, &falpha, a, CUDA_R_16BF, lda, b, CUDA_R_16BF, ldb, &fbeta, c, CUDA_R_16BF, ldc, compute_type, CUBLAS_GEMM_DEFAULT_TENSOR_OP)`
Exception in callback functools.partial(<function _log_task_completion at 0x7c49e15f6e80>, error_callback=<bound method AsyncLLMEngine._error_callback of <vllm.engine.async_llm_engine.AsyncLLMEngine object at 0x7c49dda27aa0>>)
h

Full logs: https://gist.github.com/samos123/43db2724d7ac1bba44a379ce300b156b
I reduced memory requirements and afterwards got a new error: https://gist.github.com/samos123/ee858936496e1d314785719f9287230a
Update: I only get the issue when I had --kv-cache-dtype=fp8. After I removed that flag it started working.

@samos123 Yea I'm almost sure fp8 for kv cache isn't working with cross attention yet.
FWIW, the command below works for me on 1xH100
 vllm serve neuralmagic/Llama-3.2-11B-Vision-Instruct-FP8-dynamic --enforce-eager --max-num-seqs 32

I did get it to run stably overnight at 5 seconds/caption on 3090s at --gpu-memory-utilization 0.9 using the openai server.
The problem I'm seeing is that performance degrades very quickly because vllm stops doing batches together. I'm not sure how that is determined (based on kv-cache occupancy?). So it will start out going approximately double the speed then degrade in about 20-30 minutes.
At startup:
INFO 09-29 16:03:38 metrics.py:351] Avg prompt throughput: 45.9 tokens/s, Avg generation throughput: 166.1 tokens/s, Running: 4 reqs, Swapped: 0 reqs, Pending: 11 reqs, GPU KV cache usage: 94.2%, CPU KV cache usage: 0.0%.

After some time:
INFO 09-29 16:06:33 metrics.py:351] Avg prompt throughput: 59.0 tokens/s, Avg generation throughput: 44.0 tokens/s, Running: 1 reqs, Swapped: 0 reqs, Pending: 15 reqs, GPU KV cache usage: 94.8%, CPU KV cache usage: 0.0%.

Setting --gpu-memory-utilization higher seems to make vllm unstable. Turning off most of the logs seems to have helped maintain the Pending: requests at a high amount so they don't fall to zero anymore, but the performance degradation issue over time persists.

The problem I'm seeing is that performance degrades very quickly because vllm stops doing batches together. I'm not sure how that is determined (based on kv-cache occupancy?). So it will start out going approximately double the speed then degrade in about 20-30 minutes.

@AmericanPresidentJimmyCarter Yes, the scheduling is based on kv-cache occupancy.  GPU KV cache usage: 94.8% so I guess that the reason it does not batch more request is that the kv cache does not have enough space.

That makes sense. It seems like a lot of the kv cache may stick around too long to be useful, as when you first start up the server it runs almost twice as fast (and does 3-4x simultaneous requests instead of 1). It would be nice if there was a way to occasionally purge the kv cache like an endpoint I could poll or an argument.

I can confirm that evicting the entire cache every 60 seconds effectively doubles my captioning speed by always making VLLM do batches of size 3-5 on my 3090s.
It seems that there may be issues with the current cache eviction scheme, especially with LLaMA 3.2 multimodal. All image kv cache for cross attention should be dumped as soon as generate finishes.

For anyone perplexed about this: you might need to tweak --max_num_seqs. For 3090/4090 I need to set it at 4.  After countless hours this weekend it seems that this variable controls the number of simultaneous batches and also the quantity of the kv cache filled with each item added to the async engine for generate. Maybe a VLLM dev can chime in on exactly what this is and why it's critical.

Just FYI, on a 8xH100 node I am getting:
INFO 09-30 01:04:27 metrics.py:351] Avg prompt throughput: 209.3 tokens/s, Avg generation throughput│
: 44.8 tokens/s, Running: 1 reqs, Swapped: 0 reqs, Pending: 0 reqs, GPU KV

How can i deploy this to aws it is for an experiment and i am really new to AI ops, can anyone assist me please?

Just FYI, on a 8xH100 node I am getting:
INFO 09-30 01:04:27 metrics.py:351] Avg prompt throughput: 209.3 tokens/s, Avg generation throughput│
: 44.8 tokens/s, Running: 1 reqs, Swapped: 0 reqs, Pending: 0 reqs, GPU KV

whats the ram usage?

~60-70GB

https://docs.vllm.ai/en/stable/models/vlm.html
Am I correct the implication of the above guide that I can do online inference  ONLY with the /v1/chat/completions endpoint and ONLY with a url for the image? Is there another way to supply an image to the model server besides a web url?

Btw I am having no problems serving https://huggingface.co/neuralmagic/Llama-3.2-90B-Vision-Instruct-FP8-dynamic on 2 A100s. Text inference and text+single image inference both work great but is very slow. Looking forward to the optimized implementation :)

https://docs.vllm.ai/en/stable/models/vlm.html
Am I correct the implication of the above guide is that I can do online inference ONLY with the /v1/chat/completions endpoint and ONLY with a url for the image? Is there another way to supply an image to the model server besides a web url?

base64

Indeed,
Here is a guide from OpenAI
https://platform.openai.com/docs/guides/vision
On Sat, Oct 5, 2024, 00:38 39th president of the United States, probably <
@.***> wrote:

https://docs.vllm.ai/en/stable/models/vlm.html
Am I correct the implication of the above guide is that I can do online
inference ONLY with the /v1/chat/completions endpoint and ONLY with a url
for the image? Is there another way to supply an image to the model server
besides a web url?
base64
—
Reply to this email directly, view it on GitHub
https://github.com/vllm-project/vllm/issues/8826#issuecomment-2394754802,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQGGY3NPGVNR6EQVZNYR553ZZ4KHJAVCNFSM6AAAAABO3TDIGWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJUG42TIOBQGI
.
You are receiving this because you commented.Message ID:
@.***>

i m using
CUDA_VISIBLE_DEVICES=0,1 python3 -m vllm.entrypoints.openai.api_server
--gpu-memory-utilization 0.95 --model=meta-llama/Meta-Llama-3.1-8B-Instruct
--tokenizer=meta-llama/Meta-Llama-3.1-8B-Instruct
--download-dir="/home/user/storage/hf_cache" --dtype=float16 --device=cuda
--host=<IP_ADDRESS> --port=30000 --max-model-len=8192
--enforce_eager --max_num_seqs=8
--enable_chunked-prefill=false --tensor_parallel_size=2
i m using 2 nvidia GPU when sending 1 request woking perfect. but when sending parellel 2 request then only 1 is processing and other is blocking till first process not complete. How can i process parellel request. Can anyone help on it. i m new in it

What is the ETA for adding support for multiple images? For a project I'm working on, we're trying to see if it's viable to use vLLM for Llama 3.2 in the next few days.

We are working in this pr. https://github.com/vllm-project/vllm/pull/9095

We are working in this pr. #9095
I don't think that this is the issue, @javed828 is asking about parallel requests.

Are you sure you are sending them in parallel? I had no issues running up to 10 parallel requests (I was on 8xH100).

I don't think that was in reply to javed828's comment: that was in reply to the comment I made about 2 weeks ago at the beginning of the thread.

@ tcapelle  yes i m hitting parellel and i m using nvidia T4

The GPU blocks count is set to be very small compared to the VRAM size. Does anyone have the same issue?
11B, 1 GPU (80GB * 1ea)
INFO 10-08 04:16:45 gpu_executor.py:122] # GPU blocks: 1264, # CPU blocks: 1638
90B, 4GPU (80GB * 4ea)
INFO 10-08 04:17:17 distributed_gpu_executor.py:57] # GPU blocks: 2327, # CPU blocks: 2621

docs.vllm.ai/en/stable/models/vlm.html
Am I correct the implication of the above guide is that I can do online inference ONLY with the /v1/chat/completions endpoint and ONLY with a url for the image? Is there another way to supply an image to the model server besides a web url?

It's pretty easy to hack in support for file:// URIs. I think it makes sense for vLLM not to upstream it for security purposes/related shenanigans, but I threw together a simple patch that worked well in my limited testing. I'll upload it in a sec.

The GPU blocks count is set to be very small compared to the VRAM size. Does anyone have the same issue? Block Size is 16 11B, 1 GPU (80GB * 1ea) INFO 10-08 04:16:45 gpu_executor.py:122] # GPU blocks: 1264, # CPU blocks: 1638 90B, 4GPU (80GB * 4ea) INFO 10-08 04:17:17 distributed_gpu_executor.py:57] # GPU blocks: 2327, # CPU blocks: 2621
u can try to reduce your max_seq_num for setting parms .  u can discover GPU blocks can increase when u decrease max seq num. i think  a lot of  memory be preserved for mm_tokens in each seq.

How can we optimize llama-3.2-11b  to run on 4 T4 GPUs,
vllm serve meta-llama/Llama-3.2-11B-Vision-Instruct --max-model-len 6000 --enforce-eager --max-num-seqs 5 --port 8000 --dtype half --tensor-parallel-size 4 --gpu-memory-utilization 0.97
Avg tokens per second is 2

@tcapelle yes i m hitting parellel and i m using nvidia T4

@javed828  could you please share your serve command here


A few issues I've run into.

Can i fix this somehow?
If I try to close this window "buttons", the program crashes, no reaction to other windows if i click to close it.

Here's another one, if I scroll the slider past the center, I can't interact with it anymore until I scroll to the top of the page myself.

If you go into the inventory, put on any thing on hero, click on the back, enter the inventory again, then there is a very high chance that there is nothing more to work. But if I go back again and sing the therme, everything will be fixed.

Hi, thanks for these reports!

the overlap issue is known and I'll fix it at some point
the error when closing a window is fixed in Dev if you want to try that (you'll need to clone the project locally, not download it)
The other issues with the viewport and the inventory are new to me, I'll investigate them when I can!

Thanks again

I want to say that you did a very cool job! The functionality is amazing.
Do not quit the project, it has great prospects)
If suddenly I stumble upon any other malfunctions, I will definitely notify you about it! Thank you!

Finally got back to working on this thing. I believe all of these issues should now be fixed in the dev branch as of 80aaf0b


Add branch to install git command

To provide the possibility to install a different branch other then master

Thanks!

This is now tagged as v0.4.0 🙂


Patch protoc grpc plugin output

This PR corrects the protoc-gen-grpc output to so the referenced messages correctly honors the ruby_package set in the Google Ads protos. This is a manual fix and will only work for Google Ads until the upstream bug is fixed. (See grpc/grpc#19438)
With this patch, you can generate the Google Ads ruby files using the following:
cd ~/gapic-generator-ruby

cd gapic-generator-ads
bundle exec rake image:local
cd ..

rm -rf ads-output
mkdir -p ads-output

sh gapic.sh --image ruby-gapic-generator-ads -p `pwd`/shared/googleapis -i google/ads/googleads/v1 -o ../../ads-output --config ../config/googleads.yml

Then grepping the output for "Googleads" only returns the README for the YARD documentation directory:
$ grep -r "Googleads" ads-output
ads-output/proto_docs/README.md:# Google Ads Googleads Protocol Buffer Documentation

Can we update the readme too, just for completeness?

Can we update the readme too, just for completeness?

Yes, do you want that change in a separate PR? It is a different change

Can we just add it here? It's just another find-exec-sed line, right?

No, it has to do with how the gem title is calculated when not set in the config file. I want to change the fallback to do something different (and hopefully better) than it is doing now. Of course, we could update the config file and specify the title, which would also change this...

See #168.

With #168 merged the grep won't find any results.


Validate number of logging entries

The MLPerf v7.0 logging was described by a MLPerf Training Logging Spec v0.7 document, which includes a definition of the number of expected logs.
The committee decided to drop support for this document, and the checkers should be the only source of logging rules.
With this decision, we lost the definition of required logs, and submitters don't know, what is expected.
I propose to update verifiers to add support for log entries count validation. This test should be a part of the tool, that has knowledge about a number of nodes/accelerators in the submission. The package checker may be the right choice.

@mwawrzos could you clarify if we still need to address this for v1.1?


Rewriting mapPropsStream with Hooks or new Lifecycle Methods

As a result of React's deprecation of the componentWillMount and componentWillReceiveProps lifecycle hooks, recompose's mapPropsStream now warns

Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details.

I've been working on implementing an equivalent either using Hooks or the new Suspense API or new lifecycle methods.  The following works using the unsafe lifecycle methods
const mapPropsStream = (project) => (wrappedComponent) =>
  class MapPropsStream extends Component {

    state = { mappedProps: undefined }
    props$ = new Subject()

    componentDidMount() {
      this.subscription = this.props$.pipe(startWith(this.props), project).subscribe((mappedProps) => {
        this.setState({ mappedProps })
      })
    }

    UNSAFE_componentWillReceiveProps(nextProps) {
      this.props$.next(nextProps)
    }

    shouldComponentUpdate(props, state) {
      return this.state.mappedProps !== state.mappedProps
    }

    componentWillUnmount() {
      this.subscription.unsubscribe()
    }

    render() {
      return this.state.mappedProps === undefined ?
        null :
        createElement(wrappedComponent, this.state.mappedProps)
    }
  }

However, I haven't been able to accomplish the same thing without UNSAFE_componentWillReceiveProps.  Given that renders are triggered by changes to the props$ props stream, and not the props themselves, I suspect that the Suspense API could be helpful.  Curious if anyone else is tackling the same issue.

the author has discontinued support for recompose and hook could be used as a drop-in replacement for this lib.

Understood, and I think that's a fine choice.  I'm just not sure how (or even if, given the current state of the hooks API) it would be possible to recreate the functionality of mapPropsStream using hooks.
At issue is delaying the component's render from when it receives props to when the observable emits (which may be immediate or not).  The current recompose implementation, and the above simplified reimplementation, essentially achieve that by using shouldComponentUpdate.  Deferring rendering is not something that's supported by hooks atm, though I suspect the suspense API is intended for this type of use case.

Did you manage to reacreate mapPropsStream using hooks? I am looking to do the same

@jameslaneconkling  Did you manage to recreate  the functionality of mapPropsStream using hooks? I am looking for this


chore(main): release 1.19.9

:robot: I have created a release beep boop
1.19.9 (2022-08-04)
Bug Fixes

remove mark inventory file as required (#455) (0e24f96)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/mesosphere/konvoy-image-builder/releases/tag/v1.19.9 :sunflower:


Can't install superset-frontend dependencies by using node v20.11.1 and yarn v1.22.22

Bug description
Introduction
I use node v20.11.1 and yarn v1.22.22 for my project. And represented the superset-frontend directory as a workspace module, by using a custom bash script (which called on the preinstall step):

clone-subdir.sh

#!/bin/bash
REPO_NAME="$(echo $2 | grep -oE '[^/]+$')";
git clone --filter=blob:none --no-checkout $2 $REPO_NAME
cd $REPO_NAME;
git sparse-checkout set --no-cone "$1/*"
if [ -n "$3" ]; then
    git pull origin $3;
    git checkout $3;
else
    git fetch origin;
    git checkout main
    [[ $? != 0 ]] && git checkout master;
fi

package.json

{
  "name": "superset_wrapper",
  "workspaces": ["superset/superset-frontend"],
  "private": true,
  "scripts": {
    "preinstall": "./scripts/clone-subdir.sh superset-frontend git@github.com:apache/superset master"
  },
  "dependencies": {
    "axios": "^1.6.8"
  }
}

Problem
It works fine. But the problem happens on the installation step. I got the next error log at the installation of the superset-frontend dependencies:
error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version "^18.19.1". Got "20.11.1"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Solution
The reason why it happens is the concrete node's version which is set at the engine's field. It will be better to replace the current value with a logical expression like: "node": ">= 18". It will save backward compatibility with the v18 and allow to work with the frontend part by using newer versions.
How to reproduce the bug

Use node v20 and yarn v1 for this case
Create new project
Initialize package.json (with "private": true field)
Set preinstall script
Set workspaces field
Run yarn install

Screenshots/recordings
No response
Superset version
master / latest-dev
Python version
Not applicable
Node version
18 or greater
Browser
Not applicable
Additional context
No response
Checklist

[ ] I have searched Superset docs and Slack and didn't find a solution to my problem.
[ ] I have searched the GitHub issue tracker and didn't find a similar bug report.
[ ] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Recommended node is 18 at this time. nvm use 18
Are you trying to to wrap superset into something else? There are subpackage where you can do some of that here https://github.com/apache/superset/tree/master/superset-frontend/packages, but it's not common or recommended to install the whole app as a dependency

@mistercrunch, yeah, I researched how to integate and use new versions of the @superset-ui/core, @superset-ui/chart-controls and @superset-ui/plugin-chart-echarts. And thats it. Because the old ones from the apache-superset/superset-ui repo are deprecated. And it doesn't work for me.
I tried to install them pointwise via a modified bash-script. But that way was ended unsuccessfully. And as I remember, the errors linked to tsc and files that don't exist in the concrete module (I should try to repeat it, and do research again, I think).
In the end, I decided to try to add superset-frontend as a workspace module. And check if will it work, and will have the same errors. The last ones (about existing files) were resolved, which was important for me. Because the first one can resolved by reconfiguring the root tsconfig.
But also I met with installation problem. But, as I checked, node v20 works correctly as v18. And it installs only with warnings if I install the module separately (without using yarn workspaces). And I thought: "why not to add a range of node' versions?"
P.S. And, sure, I wouldn't set the whole superset-frontend module as a dependency at the end. It contains a huge codebase and a lot of deps.

@mistercrunch, thanks a lot for your comment! While I described my problem above, I got a new alternative idea about how to try to work with the @superset-ui/core, @superset-ui/chart-controls and @superset-ui/plugin-chart-echarts

It'd be really great if these packages can be self-standing, that's the vision for sure, in practice may be tricky with all the webpack/babel/frontend-infra stuff.  I know in the past it was super difficult to work on visualization or components without having it as a mono-repo. Let us know how it goes, and anything you can do to make it easier for the next person is well appreciated.


Delete an owned entity on update?

I have the following model:
public class Address
{
    public int Id {get; set;}
    public string Street {get; set;}
    public int PostCodeId {get; set;}
    public PostCode PostCode {get; set;}
    //etc...
}

public class Customer
{
    public int Id {get; set;}
    public string Name {get; set;}
    public int AddressId {get; set;}
    public virtual void Address Address {get; set;}
}

I load an existing customer with his address, and I want to delete address, so I do:
customer.Address = null;

customer = dbContext.UpdateGraph<Customer>
                (entity, map => map.OwnedEntity(x => x.Address, with => with.AssociatedEntity(x => x.PostCode)));

The customer's address id is set to null correctly. However the address is not being deleted from the db. How can I delete the owned entity from the db?

This is most likely an EF-configuration issue. The default relation in EF for a one-way nav property is one-to-many. (It doesn't know Address is unique to this customer)
Try setting your config to:
HasRequired(c=> c.Address).WithRequired()
or
HasOptional(c=> c.Address).WithRequired()
depending on whether or not Address is optional for a Customer.

I used HasOptional(c => c.Address).WithRequired().
However, it doesn't work because the address is now not being set in the customer although the correct SQL statement is being used.

This issue is still not solved. Could it be because I'm not using EF's default naming conventions?

I am having the same issue.

I had similar issues, fixed both in OwnedEntityGraphNode's Update method below..

setting new value null was not deleting the record - fixed it by adding "changeTracker.RemoveItem(dbValue);" when newValue is null - first IF

replace value of child by setting a new instance was not deleting the old record - fix it by adding "changeTracker.RemoveItem(dbValue);" when new value has id = 0 and old value has id > 0

public override void Update<T>(IChangeTracker changeTracker, IEntityManager entityManager, T persisted, T updating)
        {
            var dbValue = GetValue<object>(persisted);
            var newValue = GetValue<object>(updating);

            if (dbValue == null && newValue == null)
            {
                return;
            }

            // Merging options
            // 1. No new value, set value to null. entity will be removed if cascade rules set.
            // 2. If new value is same as old value lets update the members
            // 3. Otherwise new value is set and we don't care about old dbValue, so create a new one.
            if (newValue == null)
            {
                SetValue(persisted, null);
                // fix - 1) setting new value null was not deleting the record
                changeTracker.RemoveItem(dbValue);
                return;
            }

            if (dbValue != null && entityManager.AreKeysIdentical(newValue, dbValue))
            {
                changeTracker.UpdateItem(newValue, dbValue, true);
            }
            else
            {
                // fix - 2) replace value of child by setting a new instance was not deleting the old record
                var newEntity = entityManager.CreateEntityKey(newValue);
                var dbEntity = dbValue != null ? entityManager.CreateEntityKey(dbValue) : null;
                if (dbEntity != null &&
                    ((int)newEntity.EntityKeyValues[0].Value == 0
                        && (int)dbEntity.EntityKeyValues[0].Value > 0))
                {
                    changeTracker.RemoveItem(dbValue);
                }
                else
                {

                    dbValue = CreateNewPersistedEntity(changeTracker, persisted, newValue);
                }
            }

            changeTracker.AttachCyclicNavigationProperty(persisted, newValue, GetMappedNaviationProperties());

            foreach (var childMember in Members)
            {
                childMember.Update(changeTracker, entityManager, dbValue, newValue);
            }
        }


PID XY Tuning: quadcopter rotates around the desired position

Hello,
I am using PIxhawk with a motion capture to fly indoor.
My settings:
Frame: 380 cm, 3 Cell Battery, mavros, mocap, ,Qgroundcontrol.

My attitude controller and "Z" controller seem to work fine. But my "XY" controller is not well tuned.
When I  try to fly in "Offboard mode" to a desired position  the quadcopter keeps rotating around the desired position,  Radus: 0.3m to 0,7m.
In QGC I see there are Velocity and a Position: Controllers (P,  and PID)

did someone experienced the same behaviour?
Which controller should I tune first (Velocity or Position)?
-Which parameters should I change first ?  Should I decrease or increase ?

I attached a screenshot of the current parameters.
I would appreciate if someone can help me.

First off, you're using an ancient version of QGC. What version of the flightstack are you running?
Secondly, parameters won't help. A log would. Likely that you need to tune your yaw controller, or you have magnetometer interference.

Thank you for the quick reply @mhkabir
I use QGC just to change the parameters, I think I do not need the newest version.
I am using the newest stable release :  v1.2.0 Release,  installed from file https://github.com/PX4/Firmware/releases
I am flying indoor in small lab  with Optitrack.
magnetometer ? I thought  it is only important for GPS navigation. There is no GPS mounted on my Quadcopter. I remap the "Mocap pose" to "mavros/vision_pose"  and check if the "mavros/local_pose" is ok. And I did not check the magnetometer output .
My yaw controller seems to be well tuned when I set a desired yaw, The Quadcopter  rotates and reach. This happen very quicky (aggressive) and does not oscillate.
Would this be a problem of the "FeedForward" parameters?
Thanks.

@aitjellal The problem is that your yaw angle and your X/Y position do not agree. Are you using compass heading instead of the mocap heading?

@LorenzMeier  @mhkabir   Yes, I was using the compass Heading (default ATT_EXT_HDG_M =0).
I then changed it to ATT_EXT_HDG_M =1  (for vision because I have remapped "Optitrack pose" to "vision pose")   and still have problems.  The Quadcopter does not fly to the desired position.
Should I use  "Compass Heading" or "Motion capture heading" ?    Which one is better?
Should I align the Pixhawk  with the Optitrack before I power-on ? (Make the arrow on pixhawk point to Optitrack +X) ?
How should I proceed to set the Heading correctly?
Thank you

Toilet-bowling is typically caused by an offset in the heading. This error is amplified the closer the multicopter is to its target. I'd highly recommend using mocap heading when available. It's about as close to an exact measurement of the mutlicopter's attitude/heading/pose as you can get.
So yes, I'd set ATT_EXT_HDG_M to 2. I'd also play around with the weightings. I'd definitely move ATT_W_EXT_HDG higher than its default of 0.1, since it can be relied on much more highly than the compass in an indoor environment. The exact weightings will be for you to determine. Also, make sure to properly align your mocap system and zero out any yaw that appears in vicon (or whatever system you're using) when the multicopter is placed at "zero" yaw in the room.

Thank you @locustcox .
I set ATT_EXT_HDG_M = 1; and ATT_W_EXT_HDG=95
and "tried" to align the pixhawk with the Tracking system.
For yaw= 0
I expect to get in the mavros/local_position/pose"
Orientation quaternion=
x: 0.0
y: 0.0
z: 0.0
w: 1.0
But I get
orientation:
x: 0.00305893994527
y: 0.00357438427461
z: -0.999928040518
w: 0.0110354179502
(x =0 , y=0,  z= -1, w=0.01)
is this normal ?
thanks

I think there is a bug somewhere in (Mavros ,Mavlink, Px4)
when I align the my Optitrack coordinate frame with Pixhawk
and use external heading (no compass heading, ATT_W_EXT_HDG=1.0)
The positionn x,y,z  is transmitted corretly
but the rotation (Quaternion x,y,z,w) is not sent correctly.
so when I compare
mavros/local_position/pose
and
vrpn_client/pose_world
the positions argees but the rotation do not agree ( , ATT_W_EXT_HDG=1.0)
when I use only the compass  heading , it works.
is this an issue ? is this issue known ?
I think I can  close this issue.
best regards

Was this ever looked into further? I am using a PX4 on a hexacopter. I'm generating a pose estimate using hector mapping and the elevation comes for a sonar sensor. I republish this pose to /mavros/vision_pose/pose. When I look at /mavros/local_position/pose the xyz are right, but the rotation is wrong. For some reason the local position is yawed by 180deg from what I tell it. As well, it drifts back and forth centered on the incorrect yaw even when the drone is still on the ground.


Usage with TCPSocket

Hi, how could I do to retrieve the public key and send it on a tcp socket (to a client) which then uses it to encrypt the data?

I edited the code by myself, so the problem is solved


python3Packages.cwcwidth: fix tests on darwin

Motivation for this change
ZHF #144627 @NixOS/nixos-release-managers
Use the same locale settings used by upstream's CI: https://github.com/sebastinas/cwcwidth/blob/2bc4360474b524148ffde3c8b837cbb0a4f172f5/.github/workflows/build.yaml#L33
This has the effect of skipping some otherwise-failing tests on darwin. Seems slightly counterproductive but who am I to judge?
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 147068 run on x86_64-darwin 1

2 packages marked as broken and skipped:

python38Packages.bpython
python39Packages.bpython

2 packages failed to build:

python38Packages.curtsies
python39Packages.curtsies

2 packages built:

python38Packages.cwcwidth
python39Packages.cwcwidth


Rework screens for disabled extensions to be more enticing

At the moment, whenever the user clicks on an extension tab when that extension is not enabled in the schema, they are greeted with this concise message:

This real estate could be better used to compel the user to enable the extension by showing the value they could get from it.

@1st1, @beerose, @scotttrinh please have a look and share your ideas.


Module.json auto generation

Hi, I'd like to ask if it is possible to re-generate the module.json on other environments as well? Or do I need to commit the module.json initially together with the whole module that was created?

Hi,
You could regenerate it, but usually, that file is committed.

Ah thanks. I'll close this issue now.


Fix CheckStyle issues.

Add newlines before curly braces (LeftCurlyCheck).
Remove unused imports (UnusedImportsCheck).
Add whitespaces as needed (WhitespaceAfterCheck).

The issues regarding asserts and WhiteSpaceAfterCheck are tests that should be using JUnit asserts and not Java assert keyword. That will be fixed in #8081.

CI runs checkstyle, and it is passing, so how is this fixing anything?

Apparently CI is not running checkstyle on tests, if you want to enable that: https://maven.apache.org/plugins/maven-checkstyle-plugin/faq.html#How_do_I_include_the_test_directory_in_Checkstyle then it would make sense to go through and fix those errors.

Added flag to Maven's config to enable CheckStyle on test code.

It looks like I need to either:

Merge #8081 into this PR
Enable the flag in its own PR after this and #8081 is merged

What's your opinion?

We can merge 8081 independently of this since it is wrong regardless of checkstyle.

Understood. I'll add a bunch of spaces to fix the whitespace checkstyle errors in this PR then.


add bracketSameLine as an option?

Any chance you could add bracketSameLine as one of the config options?

Hi @yabdab.
Thanks for suggestion.
Currently bracketSameLine is not supported but a similar behavior could be done by setting the wrap attributes option to force-aligned.
❯ cat .prettierrc.json
{
    "wrapAttributes": "force-aligned"
}

  lorem ipsum dolor sit amet

will format into

    lorem ipsum dolor sit amet

This behavior is almost the same with Prettier default bracketSameLine, except that the first line attribute does not break the line.
So if a bracketSameLine is specified by config, it might be good to interpret the wrapAttributes as being specified as force-aligned.
I'll consider the behavior about it, thanks.

I did that, yet I am still getting this result...
 <svg
            class="h-4 w-4"
            xmlns="http://www.w3.org/2000/svg"
            viewBox="0 0 20 20"
            fill="currentColor"
            aria-hidden="true"
          >
            <path
              fill-rule="evenodd"
              d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
              clip-rule="evenodd"
            />
          </svg>


I don't understand this

The read me is not user friendly and I don't understand how to do anything with the code. Pygame is its own game engine already. Why are we even doing this at all? Also quite frankly, I really do not enjoy working on this code at all. Why should i have to be doing this. I am not a Guinea Pig.

1: what is unclear in the readme that could be changed to make it better
2: this project is using pygame as a base to make a visual game engine similar to unity (if you want examples, look up unity engine)
3: if you have another project you would like to work on I'm fine with that but to me, it seems like you don't have direction for what to do and this is a way for you to dip your feet into a bigger project.

(Somewhat) agreed --- and it is up to the developer to provide "direction."


Version 3 of requirements and configuration management

Needed to resolve a conflict in sidebar.ts, should be okay now


open links in new tab / no edit mode

open links in new tab feature would be great.
also a no edit mode (only view mode) - perhaps as environment variabel in docker

If I can bandwagon this, I would love both options.
Being able to open in new tabs by default would make dashboard checking a bit more streamlined (at least for my practices), and a no-edit mode would be very helpful for when using with smaller touchscreen interfaces.
I recently tried to use bender on my phone, and instead of scrolling the page, I kept just moving elements around.

This should be solved in 1.0.3 now https://hub.docker.com/r/jez500/bender/tags
Toggle of editing is done via the settings page, doing it via env var is a bit more complex but if enough demand I can look into it


Update additional deployment methods in Next steps

@jeanrobertjs : Thanks for your contribution! The author, @sethmanheim, has been notified to review your proposed change.

@jeanrobertjs Looks fine, thank you! #sign-off


Fix the URL for readthedocs page

RTD pages seem to have been shuffled, URL updated

Great spot! You are correct that the docs shifted a bit...thanks for the patch!


Add OpenRouter hosting option

Allow users to host a model using OpenRouter.

Happy to help with this! OpenRouter is openai-compatible: https://openrouter.ai/docs

Added an integration using openai's API


Domain not created running CreateAWSDestination

The CreateAWSDestination python code does not create the domain so the request to create the credentials to
/credentials/domains/users/<user_name> fails with a 404.
Note, that path isn't correct either.
.
I had to add in a creation of a domain of type base64:
my_domain_url = my_domain_url + "/" + domain_name
domain_put_header = {
"Content-Type":"application/vnd.sas.credential.domain+json",
"Accept":"application/vnd.sas.credential.domain+json",
mmAuthorization.AUTHORIZATION_HEADER: mmAuthorization.AUTHORIZATION_TOKEN + admin_auth_token
}
domain_attrs = {
"id":domain_name,
"type":"base64",  # Switch to base64 from password
"description":"AWS credentials"
}
domain = requests.put(my_domain_url,
data=json.dumps(domain_attrs), headers=domain_put_header,verify=my_verify)
That then switched my credential url to
my_credential_url = my_domain_url + "/users/" + user_credential_name
which became  /credentials/domains/<my_domain>/users/<user_name>
That allowed the credentials to be added successfully.

The related destination Jupyter notebook has been deprecated and replaced with a CLI example. The models plug-in to the SAS Viya CLI creates the base64 domain when creating the AWS publishing destination.


ConversionResult in HostObjectBuilder

Still WIP

Changes will be included in https://github.com/specklesystems/speckle-sharp/pull/3448


skip metadata on data cleaning

skips /metadata based objects for data cleaning
qualifies ES function with named parameter
s/object/obj/g (object is a Python keyword)

cc @jsimkins2


Design implementation-agnostic data model schema

Problems
Current data-model problems:

Has a lot of duplications of the same types, e.g. EvaluatesTo<xxx> that is always, from the codec side, always contains just an Expression.

Has non-normalized type names, including noise such as module paths.
Why normalization matters?
For example, there are a plenty of Id types, but in different scopes:

iroha_data_model::peer::Id
iroha_data_model::asset::Id
iroha_data_model::trigger::Id

It produces questions for SDK developer: how should I keep this format, and should I? Or should I try to use the same module-based approach to structure generated code? But it's not really possible due to specifics of my language in particular... If not keep same names, then normalize them, but in which way exactly? PeerId, DataModelPeerId, ModelPeerId?.. How should it be documented for the end user that, e.g., came from other SDK and familiar to some other format? How to synchronize SDKs in terms of type names?
upd: even in Iroha itself names are normalized under iroha_data_model::prelude scope!

Fragile. There are too many implementation specific details.

Wishes

Make implementation-agnostic schema that is a source of truth for both Iroha and SDKs. Make it just a pure SCALE namespace schema as much as possible.
Remove duplicated types
Simplify type names and fit them into a single namespace (i.e. normalize names)

May be also related here: https://github.com/hyperledger/iroha/issues/2020

Related: #3535

BTW: https://github.com/stepchowfun/typical
It is an example of schema-first design with versioning support. Supports Rust and TypeScript atm.

this has been taken care of in #3268


WIP: Noticing more errors in New Relic

What's this PR do?
This PR adds the errorNoticeable helper introduced in #468 to notice Rogue errors, per #477. It looks like we need to add this into all middleware in lib/middleware/messages...
Any background context you want to provide?

Should helpers.sendErrorResponse notice errors by default, like it did prior to #468 ?

Checklist

[ ] Documentation added for new features/changed endpoints.
[ ] Tests added/updated for new features/bug fixes.
[ ] ENV variables added/updated for new features/bug fixes.
[ ] Tested on staging.
[ ] Pinged a PM if this is a larger PR that would benefit from some additional testing love.

Although this PR likely makes sense to add stack traces, I'm still 🤔 about requests for text posts over 256 chars errors don't appear in New Relic errors at all -- regardless of noticing the stack trace. (e.g.  -- I can't find anything in New Relic for request 79d9c193-e483-48c2-ae02-39d6975950b4, yet we can see a text post was never created per #477)  Had an error been thrown, we would still be logging the gambitApiResponse (even for Generic Internal Server Error if the The given data was invalid. Rogue error message isn't returned) per sendResponseWithStatusCode... so this can't be the fix 🤕

Testing on master locally, reverting #477, turning on New Relic, and I do see the error showing up without the stack trace
... confirming we still should have seen the error all along without these changes.

Searching Papertrail for request 79d9c193-e483-48c2-ae02-39d6975950b4 (from https://github.com/DoSomething/gambit/pull/478#issuecomment-464230762) does show that Gambit did produce an error, it just seems that Blink did not retry it... nor was it sent to New Relic (from what I can tell).
Feb 14 10:15:44 gambit-conversations-prod heroku/router:  at=info method=POST path="/api/v2/messages?origin=twilio" host=gambit-conversations-prod.herokuapp.com request_id=79d9c193-e483-48c2-ae02-39d6975950b4 fwd="<IP_ADDRESS>" dyno=web.3 connect=0ms service=312ms status=422 bytes=548 protocol=https
Feb 14 10:15:44 ds-blink-production app/twilio-sms-inbound-gambit-relay.1:  at=warning application=blink env=production code=error_gambit_inbound_relay_response_422 worker=TwilioSmsInboundGambitRelayWorker request_id=79d9c193-e483-48c2-ae02-39d6975950b4 response_status=422 response_status_text="Unprocessable Entity"
Feb 14 10:15:44 gambit-conversations-prod app/web.3:  pid=25 code=422 response#message="The given data was invalid." request_id=79d9c193-e483-48c2-ae02-39d6975950b4 level=error message=sendResponseWithStatusCode


Add matrices for tidy_and_test jobs

Prerequisites

[ ] bazelbuild/bazel#14140

I added the matrices for tidy_and_test. I am not sure why I thought it was dependent upon the stardoc fix.


BIG WIP. DO NOT MERGE!

This pull request introduces 2 alerts when merging d63f3dd9dcfd3df8519b8db92e79b6dfd202663f into dfba8658ea96809e54e7d6b5c9fb446a9c105ed3 - view on LGTM.com
new alerts:

2 for Unused variable

Comment posted by LGTM.com

This pull request introduces 2 alerts when merging ec9ba2bf6bbca64a41c037ae615892eb549e2573 into dfba8658ea96809e54e7d6b5c9fb446a9c105ed3 - view on LGTM.com
new alerts:

2 for Unused variable

Comment posted by LGTM.com

This pull request introduces 2 alerts when merging ecd588521972b8a7adfbd29620feca59d77b9385 into dfba8658ea96809e54e7d6b5c9fb446a9c105ed3 - view on LGTM.com
new alerts:

2 for Unused variable

Comment posted by LGTM.com

This pull request introduces 2 alerts when merging c7a2a23d3c6f83c5665576a7399066e5a55bf6cc into dfba8658ea96809e54e7d6b5c9fb446a9c105ed3 - view on LGTM.com
new alerts:

2 for Unused variable

Comment posted by LGTM.com

This pull request introduces 2 alerts when merging fc36e1be28df399865dd14044c705e6fab65964a into dfba8658ea96809e54e7d6b5c9fb446a9c105ed3 - view on LGTM.com
new alerts:

2 for Unused variable

Comment posted by LGTM.com

@justinbarry is there a reason this needs to be a PR instead of just a branch?  If not, please close this PR until the branch is ready for review/merging.

@tinybike I think this is the only way to get travisci to pay attention to me without modifying the config file. If I had modified the config file I'll offer even money it would accidentally merged to master.

This pull request introduces 1 alert when merging 6336c20196aff6b3753e189e27686c90d321e9c5 into 26eba7d2dfab7d9556eca991b7ca64f7ed8203cd - view on LGTM.com
new alerts:

1 for Unused variable

Comment posted by LGTM.com

This pull request introduces 1 alert when merging 15e54314aeb70bd0878f9f6eee15cbc0ec96146c into 66bebf1ed75c2c2b0f367a0a9f1086690b8b1831 - view on LGTM.com
new alerts:

1 for Unused variable

Comment posted by LGTM.com

This pull request introduces 1 alert when merging 8241e293b628f086d3a2bf2a74c6ade2650701c2 into 66bebf1ed75c2c2b0f367a0a9f1086690b8b1831 - view on LGTM.com
new alerts:

1 for Unused variable

Comment posted by LGTM.com

Closing for now, since Travis is not stable enough.


CopyTo fails to Advance PipeReader on exception

Describe the bug
Using CopyTo to copy the request body stream, a slow connection would trigger 'Reading the request body timed out due to data arriving too slowly. See MinRequestBodyDataRate'
The stream is not cleaned correctly and a write on the response body with 400 results in IO concurrent issue.
To Reproduce
I have not tested this sample, but you need to trigger the MinRequestBodyDataRate
app.Use(async (context, next) =>
{
    try
    {
        using(var stream = new MemoryStream())
        {
            context.Request.body.CopyTo(stream);
        }
    }
    catch (Exception ex)
    {
        context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
        await context.Response.WriteAsync("BadRequest").ConfigureAwait(false);
    }
});

Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Reading the request body timed out due to data arriving too slowly. See MinRequestBodyDataRate.
at Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason reason)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ContentLengthMessageBody.ReadAsyncInternal(CancellationToken cancellationToken)
at System.IO.Pipelines.PipeReader.CopyToAsyncCore[TStream](TStream destination, Func4 writeAsync, CancellationToken cancellationToken) at SpeakerRecognition.Common.Utilities.ControllerExtensions.CopyAudioToAsync(HttpRequest request, MemoryStream audioStream) in D:\a\1\s\private\SpeakerRecognition.Hosts.Service\Extensions\ControllerExtensions.cs:line 177 at SpeakerRecognition.Hosts.Controllers.IdentificationController.IdentifyAsync(String identificationProfileIds, Boolean shortAudio) in D:\a\1\s\private\SpeakerRecognition.Hosts.Service\Controllers\IdentificationController.cs:line 108 at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
Further technical details

ASP.NET Core version 3.0

Notes for triage: This is a similar issue to https://github.com/aspnet/AspNetCore/issues/17723, but in a different location. CopyTo fails to call Advance on the pipe when an exception is thrown so it causes the secondary exception like the one in #17723 "The stream does not support concurrent IO read or write operations.".
That said, MinDataRate exceptions close the connection so draining the request body is unnecessary. Nor is it possible to produce a 400 response like the sample above attempts. This is largely an exercise in exception hygiene and not logging redundant or misleading errors.

@Tratcher, @halter73 any work around in the mean time?
I tried calling Close and cancelPendingRead but they don't help.
I don't know where to get the AdvanceTo parameter from.

@yshahin not really. However, the only impact should be log noise, there should be no functional impact to the app.

@halter73 thinks this may have been fixed (somewhat unintentionally) in 3.1. He'll investigate.
If not, we should get a fix for this, sounds like it's simple enough.


IE 11 cannot render svg when html2canvas.svg.js loaded with require

We are dynamically loading html2canvas.js and html2canvas.svg.js with dojo require.   Works well
in Chrome and Firefox, but in IE we get receive error "html2canvas.svg.js is not loaded, cannot render svg".
Is there a correct way to do the dynamic load for IE, or is there a combined .js file with contents of  html2canvas.js and html2canvas.svg.js?
Thank you.

I am trying to figure out how to render svg on IE too. What's the error message that you are seeing?

Hi.
For me, IE works fine if I load the script files using the

thanks for the reply! I had to do that blue bird thing for promise too.
Are you guys using highcharts for SVG? html2canvas seems to have problems with highchart and I am trying to work it out.

Great!  Glad that helped.
Sorry, no , we are working with maps – MapBox, Leaflet, Esri – trying to get a snapshot of the map area.
…not sure if it relates to Highcharts -  but the other big hurdle we bumped into was when “ tansform translate3d “ style was being used – that caused
all sorts of headaches – so if that’s your situation, let me know and I’ll forward what we discovered.
best,
Keith
From: kevin074<EMAIL_ADDRESS>Sent: Friday, September 15, 2017 12:24 PM
To: niklasvh/html2canvas<EMAIL_ADDRESS>Cc: kgcroteau<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [niklasvh/html2canvas] IE 11 cannot render svg when html2canvas.svg.js loaded with require (#1218)
thanks for the reply! I had to do that blue bird thing for promise too.
Are you guys using highcharts for SVG? html2canvas seems to have problems with highchart and I am trying to work it out.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/niklasvh/html2canvas/issues/1218#issuecomment-329830921 , or mute the thread https://github.com/notifications/unsubscribe-auth/AYyMxUXKxsZokvswpmAvuPlky1elEYSMks5siqSSgaJpZM4PVR1t .

Solved - using the following format with dojo require to load html2canvas with svg.
require(['/resources/html2canvas/html2canvas.min.js',
'resources/html2canvas/html2canvas.svg.min.js'],
function (html2canvas,svg) {
// make html2canvas with svg available globally
html2canvas.svg = svg;
window.html2canvas =  html2canvas;
                });

...and if browser is IE (at ie 11), you can use bluebird to handle Promise:
require(['/resources/html2canvas/bluebird.js'], function (promise) {
//for IE
window.Promise = promise;
});


[es] Fix Kubernetes typo

Fix kubernets to kubernetes

/lgtm
/approve

Thanks for such quick approval!


Is there a maven plugin to help deploy ARM template?

This is a question/feature requests: is there a maven plugin to help deploy ARM template?

No maven plugin, but in intellij azure toolkit, you can deploy a arm template.


[Snyk] Security upgrade jest from 23.6.0 to 24.0.0

Snyk has created this PR to fix one or more vulnerable packages in the `npm` dependencies of this project.

Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

packages/ffe-message-box-react/package.json

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Breaking Change
Exploit Maturity

589/1000  Why? Has a fix available, CVSS 7.5
Prototype Pollution SNYK-JS-MERGE-1040469
Yes
No Known Exploit

494/1000  Why? Has a fix available, CVSS 5.6
Command Injection SNYK-JS-NODENOTIFIER-1035794
Yes
No Known Exploit

601/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 5.6
Prototype Pollution SNYK-JS-YARGSPARSER-560381
Yes
Proof of Concept

506/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 3.7
Regular Expression Denial of Service (ReDoS) npm:braces:20180219
Yes
Proof of Concept

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Coverage remained the same at 82.009% when pulling 4bf5130816e1ac09598ccdcda4943555d5a4b3c0 on snyk-fix-209129e72169fabbc38eef785b88b0fa into d743d78bab0f6a4ce0bc199e8e419261247ca8b6 on develop.


[Feature Request] Support parametrizing the Kind cluster name via CLI or Env

In order to make this program more flexible and usable in environments that share a docker environment, the kind cluster name needs to be parametrized so that there are no conflicts between concurrent executions of the tool, such as in CI.

This was implemented as part of release v0.0.24 🚀


License file

Could you please add a license file to the repo?

closing this as we have updated the repo with a license file


Dockerisation, naming, packaging

Could you please issue a release too?
https://openexchange.intersystems.com/package/Log
On Sun, Nov 7, 2021 at 8:49 AM Eduard @.***> wrote:

Merged #3 https://github.com/intersystems-ru/Log/pull/3 into master.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/intersystems-ru/Log/pull/3#event-5578711932, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAVHEP23QCGPEHOWWPJAVJTUKYHNDANCNFSM5HP7NOQA
.

Done.


Language pack recommendation - Locale unset

Testing #167105
I went through the "Locale unset" steps on an M1 Mac and here is what I have observed:

The scenario steps imply that after setting the display language, and restarting the machine VS Code would start up in French and no notification would be shown. In my case, VS Code started in English and a notification was shown to install the French Language Pack. After installing and restarting VS Code was in French.
The locale key was not present in the argv.json file.

It's interesting that after, I have uninstalled the French Language Pack and VS Code is still in French 🤷🏻♂
I was also able to reproduce the same when running through "Scenario4". There is definitely something on macOS where the language on VS Code is not being set, and a notification is being shown to install the language pack for the locale that is specified in the argv.json file

I did not see the locale get set in argv.json on linux either.

no locale set on windows either

I think I confused the behaviour of "Configure Display Language" with the behaviour of installing a language extension and restarting. I believe that the language should still be configured in the argv.json file after installing the extension pack if it is installed by clicking on the "Install and restart" button.


Can't access fact that contains . in key

Describe the Bug
Can't access fact that contains . in key
Expected Behavior
Data should be replied correctly, because network interface names contains dots when used VLANs.
Steps to Reproduce
Try to access IP from VLAN interface because those contain dot.
root@host ~ # facter networking.interfaces.ens1f0.ip
213.X.Y.Z
root@host ~ # facter networking.interfaces.ens1f0.4001.ip

root@host ~ # facter networking.interfaces."ens1f0.4001".ip

root@host ~ # facter 'networking.interfaces."ens1f0.4001".ip'

root@host ~ #

But this data actually exists!
# facter networking.interfaces
{
  eno8303 => {
    mac => "c4:cb:e1:XX:YY:ZZ",
    mtu => 1500
  },
  eno8403 => {
    mac => "c4:cb:e1:XX:YY:ZZ",
    mtu => 1500
  },
  ens1f0 => {
    bindings => [
      {
        address => "213.X.Y.Z",
        netmask => "<IP_ADDRESS>",
        network => "213.X.Y.Z"
      }
    ],
    ip => "213.X.Y.Z",
    mac => "6c:fe:54:XX:YY:ZZ",
    mtu => 1500,
    netmask => "<IP_ADDRESS>",
    network => "213.X.Y.Z"
  },
  ens1f0.4001 => {
    bindings => [
      {
        address => "10.X.Y.Z",
        netmask => "<IP_ADDRESS>",
        network => "10.X.Y.Z"
      }
    ],
    ip => "10.X.Y.Z",
    mac => "6c:fe:54:XX:YY:ZZ"
    mtu => 1400,
    netmask => "<IP_ADDRESS>",
    network => "10.X.Y.Z"
  },
  ens1f1 => {
    mac => "6c:fe:54:XX:YY:ZZ",
    mtu => 1500
  },
  lo => {
    bindings => [
      {
        address => "<IP_ADDRESS>",
        netmask => "<IP_ADDRESS>",
        network => "<IP_ADDRESS>"
      }
    ],
    ip => "<IP_ADDRESS>",
    mtu => 65536,
    netmask => "<IP_ADDRESS>",
    network => "<IP_ADDRESS>"
  }
}

Environment

Version: 7.23.0-1 (from Debian repo)
Platform: Debian 12

Yes, facter 4 has some bugs with dotted notation. The main problem is it naively splits on dots. I have a feature branch here but it needs more work: https://github.com/puppetlabs/facter/compare/main...joshcooper:dots_3447


Mutation data is undefined when mutate inside onSuccess of useQuery

Describe the bug
The scenario.

Query A (with suspense) requests.
When query A is succeeded, mutation B is called with mutate function.
Mutation B is succeeded and query C has to use response data of mutation B.

I expected above case, but it occurs unexpected behaviour.

Query A (with suspense) requests and succeeded so mutation B is called.
data of mutation B is always undefined so I cannot use response data of mutation B.

Why mutation data is undefined when mutation function is called inside onSuccess of suspended useQuery ?
Thanks for your reading 😃
Your minimal, reproducible example
https://codesandbox.io/s/mutation-with-suspense-onsuccess-hnoxym?file=/src/Test.tsx
Steps to reproduce
You can undefined in console.
Expected behavior
Mutation data has to be updated when mutation is succeeded.
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
MacOS, Chrome
Tanstack Query adapter
react-query
TanStack Query version
v4.28.0
TypeScript version
No response
Additional context
No response

I guess this is because how suspense and useMutation work. suspense unmounts the component, then re-mounts it once fetching has completed. useMutation doesn't share data between instances like useQuery does. So when you call useMutation again, it's a different instance / observer. This observer never had its mutate method called - mutate was called in onSuccess from the "old" observer, because with suspense, we call onSuccess of the query before the component actually mounts.
The solution here would probably be to move the mutation to a useEffect, because then it will happen when the component has re-mounted again, with the correct instance of useMutation:
https://codesandbox.io/s/mutation-with-suspense-onsuccess-forked-98nyju?file=/src/Test.tsx
Of course, in React18 and strict mode, effect run multiple times in development mode ...

@TkDodo
Thanks for your clear answer! I understand what u are saying. But, I think it's hard to know that onSuccess uses mutate function of "old" observer. 🤔 So, onSuccess could be buggy logic... Is it related to with your tweet?

no, it's not strictly related to my tweet, though if the callbacks wouldn't exist, you would need an effect and wouldn't have this problem, too.
What you have to understand is that with suspense, callbacks are invoked at a time when your component is not mounted, because react unmounts the component to show the fallback. And the way useMutation works is that it doesn't share data: A new call to useMutation is a completely new instance. That is on purpose, because you can also call mutate() multiple times and useMutation will only track the latest invocation.
In v5, we have a useMutationState hook that will give you access to the state of all mutations. This wold likely give you data in your case as well:
https://tanstack.com/query/v5/docs/react/reference/useMutationState


Set pconnect to FALSE by default.

Can anyone please tell why is the parameter set to TRUE by default? I mean the database drive...

Why to set it FALSE by default?

Because it creates permanent mysql connections wich are kept in sleeping mode for a long time, that causes database overload in case of high user traffic. I've already had this kind of problem recently. Our mysql server used to went down every time there were many people on the site. It took some time for me to find the reason. Once I changed the parameter from TRUE to FALSE the problem has gone.

 Is this just something somebody should think about when setting the basic configuration for their application?
Should we automatically set things up for high-traffic users or low traffic users? Maybe high-traffic users should be the ones trying a little harder to tailor their environment to be correct for them?
Thoughts on a postcard!

Ok, lets thinks of this issue from a different point of view. Using permanent connections for high traffic websites has too serious disadvantage. This must be true for low traffic websites as well. So there is at least one "-1" for pconnect. Are there any advantages at all in using this type of connection for a standard websites?

@levani Actually, the whole point of using persistent connections is to achieve better performance - see this article on php.net for a more detailed explanation.
In a really high-traffic environment though - it's natural that it can be a "false-positive" so to speak. It can be due to insufficient resources, low max_connections value in your MySQL config, the HTTPd leaving open threads/child processes while it doesn't need to and so on, and so on ...
I personally vote +1 for persistent connections by default, as I don't think that so many developers are in @levani's situation and the rest should generally benefit from re-using the same connection when possible. Plus, maintaining a high-traffic site of any kind usually requires many tweaks on different levels and having a configuration setting to just be switched should be pretty convenient.


chore: Ensures docs type information is available for search indexation

TypeInfoToText components were previously added raw to the pages.json file, now the title and descriptions are output as plain text. In the future, this can be enhanced with more type information if needed.
Adds missing leading slash to search docs routes

:tada: This PR is included in version 1.10.1 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


how to keep data saved after restarting the app?

all saved data removed after restarting the app. there is any way to keep data saved?

@RaniaAAH This is now implemented by default. Please use 1.0.14


[jdk8 linux-x64] : TestJlmRemoteMemoryNoAuth_1 fails on test-docker-ubuntu2004-x64-1 but passes elsewhere

https://trss.adoptium.net/output/test?id=62631ce272761a4c5c17733b
Not sure if it's test issue or machine issue

https://github.com/adoptium/aqa-tests/issues/3603


get method content

class WHArticle {

    let id: Int?
    let type: Int?
    let share_url: String?
    let desc: String?
    let rawJson: [String: Any]?

    public required init(_ json: [String: Any]) {
        id      = json["id"] as? Int
        type    = json["type"] as? Int
        share_url = json["share_url"] as? String
        desc    = json["desc"] as? String
        rawJson = json
    }
}

how i get information below
        id      = json["id"] as? Int
        type    = json["type"] as? Int
        share_url = json["share_url"] as? String
        desc    = json["desc"] as? String
        rawJson = json

Sourcery does not provide information like that through its public API, but you can try to use private property __parserData on a Method to access its structure in JSON form and (sourcekitten output) and then extract its body.


Add integration tests showing that bai-indexed traversal by intervals on cram files works

-Add tests with an input cram and an output sam, bam, or cram with various intervals
provided to the -L argument, and check that we get the expected read in the output
for each set of intervals.
-Generalize CRAMReferenceIntegrationTest to CRAMSupportIntegrationTest, and centralize
cram test data in the engine package.
Resolves #675

For @edwardkw to review, please -- this is your big opportunity to exact revenge for all of the long code reviews we've put you through this summer! :)

Other than the one tiny thing, well-crafted tests. LGTM


Added docker-cli package to kustomize_build fn

This is to make docker-in-docker possible for kustomize_build fn:
kustomize build command may work with kpt-function
based plugins, but in order to make it work
kustomize_build function must contain docker-cli
to be able to run docker in docker.
E2e test scenario makes sure this case works
Works locally and in your CI

FYI @Shell32-Natsu