Evaluating a custom-command in a template

Is it possible to evaluate a custom command in the template?
I'm trying to use the create template to fill in the value customfield_100 which should be the latest sprint (outlined here https://github.com/Netflix-Skunkworks/go-jira/issues/135).
The Contents of ~/.jira.d/templates/create:
fields:
  summary: "new ticket in current sprint"
  description: "this should create a ticket in the current sprint"
  customfield_100:  99  # this should be evaluated to be the current sprint_id

I solved this by using {{ .overrides.sprint_id }} in the template, and running this in a custom command:
- name: screate
   help: creates a task in the current sprint
   script: |-
     board_id=$({{jira}} req "/rest/agile/1.0/board?projectKeyOrId=$JIRA_PROJECT" --gjq values.2.id)
     sprint_id=$({{jira}} req "/rest/agile/1.0/board/$board_id/sprint?state=active" --gjq values.0.id)
     {{jira}} create -t screate -o sprint=$sprint_id

(I had to experiment a bit to find the correct board id, yours might not be 2)

How can I pass the arguments from the caller through so the last line you have
{{jira}} create -t screate -o sprint=$sprint_id
will do {{jira}} create -t screate -o sprint=$sprint_id -o summary="testing new ticket in the sprint"?
I tried this, but I'm getting an error
ex:
$ jira screate "testing new ticket in the sprint"

# which calls the screate command:
board_id=$({{jira}} req "/rest/agile/1.0/board?projectKeyOrId=$JIRA_PROJECT" --gjq values.2.id)
sprint_id=$({{jira}} req "/rest/agile/1.0/board/$board_id/sprint?state=active" --gjq values.0.id)
{{jira}} create -t screate -o sprint=$sprint_id -o "$@"

but I'm getting a ERROR Invalid Usage: unknown short flag '-o'

I think you're getting an error since you're using the -o flag twice. Check out the readme for more info on custom commands and shortcuts.

(Ah, I fixed the previous error, i had the wrong index to pickout the board_id)
the readme says to do

STRINGMAP is a string => string map with the format of KEY=VALUE.  So --override foo=bar --override bin=baz will allow for {{options.override.foo}} to be bar and {{options.override.bin}} to be baz.
https://github.com/Netflix-Skunkworks/go-jira/blame/master/README.md#L303

Question, the -o "$@" doesnt' seem to work, how do you pass $@ to the last command?
I'm getting
$ jira screate "testing new ticket in the sprint"
usage: jira screate

creates a task in the current sprint

Global flags:
      --help                   Show context-sensitive help (also try --help-long and --help-man).
  -v, --verbose ...            Increase verbosity for debugging
  -e, --endpoint=ENDPOINT      Base URI to use for Jira
  -k, --insecure               Disable TLS certificate verification
  -Q, --quiet                  Suppress output to console
      --unixproxy=UNIXPROXY    Path for a unix-socket proxy
      --socksproxy=SOCKSPROXY  Address for a socks proxy
  -u, --user=USER              user name used within the Jira service
      --login=LOGIN            login name that corresponds to the user used for authentication

ERROR Invalid Usage: unexpected testing new ticket in the sprint

I think you need to add args to your custom command.
args:
      - name: ISSUE_NAME
        required: true

And then in your script:
{{jira}} create -t screate -o sprint=$sprint_id summary="{{args.ISSUE_NAME}}"


Fix istioctl describe service being unable to display the HBONE protocol

Please provide a description of this PR:
➜  ~ istioctl x describe service waypoint
Service: waypoint
   Port: status-port 15021/TCP targets pod port 15021
   Port: mesh 15008/UnsupportedProtocol targets pod port 15008
15021:
15008:
Skipping Gateway information (no ingress gateway pods)

@kebe7jun: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
7b34b69b56ca808f34e56660e090b4563391d2ce
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@kebe7jun: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
7b34b69b56ca808f34e56660e090b4563391d2ce
link
true
/test unit-tests-arm64

unit-tests_istio
7b34b69b56ca808f34e56660e090b4563391d2ce
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@kebe7jun: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-security_istio
de5fe0988e00579dbca123225124f59fc8a5ce79
link
true
/test integ-security

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/test integ-security


[extra760] Fix AccessDenied issue

Context
Missing permission was exposing AccessDenied error message.
Also missing check was generating false positive.
Description
Add check to validate access denied when get function from Lambda.
Issue #1014
License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Please check additional questions on #1014

$ ./prowler -p default -f sa-east-1 -c extra760
                          _
  _ __  _ __ _____      _| | ___ _ __
 | '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|
 | |_) | | | (_) \ V  V /| |  __/ |
 | .__/|_|  \___/ \_/\_/ |_|\___|_|v2.7.0-24January2022
 |_| the handy cloud security tool

 Date: Wed Feb  2 22:59:37 -03 2022

 Color code for results:
 -  INFO (Information)
 -  PASS (Recommended value)
 -  WARNING (Ignored by whitelist)
 -  FAIL (Fix required)

 This report is being generated using credentials below:

 AWS-CLI Profile: [default] AWS API Region: [sa-east-1] AWS Filter Region: [sa-east-1]
 AWS Account: [xxxx5262] UserId: [AROAxxxx:xxxxx]
 Caller Identity ARN: [arn:aws:sts::xxxx5262:assumed-role/xxxx/xxxxxx]

7.60 [extra760] Find secrets in Lambda functions code  - lambda [Critical]
       PASS! sa-east-1: No secrets found in Lambda function dump-request code
       PASS! sa-east-1: No secrets found in Lambda function test code

$ ./prowler -p default -f sa-east-1 -c extra760
                          _
  _ __  _ __ _____      _| | ___ _ __
 | '_ \| '__/ _ \ \ /\ / / |/ _ \ '__|
 | |_) | | | (_) \ V  V /| |  __/ |
 | .__/|_|  \___/ \_/\_/ |_|\___|_|v2.7.0-24January2022
 |_| the handy cloud security tool

 Date: Wed Feb  2 23:06:08 -03 2022

 Color code for results:
 -  INFO (Information)
 -  PASS (Recommended value)
 -  WARNING (Ignored by whitelist)
 -  FAIL (Fix required)

 This report is being generated using credentials below:

 AWS-CLI Profile: [default] AWS API Region: [sa-east-1] AWS Filter Region: [sa-east-1]
 AWS Account: [xxxx5262] UserId: [AROAxxxx:xxxxx]
 Caller Identity ARN: [arn:aws:sts::xxxx5262:assumed-role/xxxx/xxxxxx]

7.60 [extra760] Find secrets in Lambda functions code  - lambda [Critical]
       INFO! sa-east-1: Access Denied trying to get Lambda functions
       INFO! sa-east-1: Access Denied trying to get Lambda functions


[Suggestion]: Drop support for node <16.20

I noticed this library still supports node v4, I'd suggest dropping support for anything <16.20 moving forward as this will allow removal of some polyfill libraries including:

Thanks for the suggestion.


test_flake8_setup failed with flake8 3.0

When installing the umbrella as described in the docs I get flake8 version 3.0.3.
With this version test_flake8_setup failes with the error message:
    def test_flake8_setup(subproject):
>       from flake8.main import check_file
E       ImportError: cannot import name check_file

The reason is, that flak8 3 doesn't support flake8.main.check_file anymore.
A fix would be to change the dependency in requirements.txt to
# Umbrella dependencies
flake8 < 3.0

Thanks, fixed that in 39462cad0d35ce9a7588dc76919a69b9ee0fd50e.


Fix link in docs

The link for the description of an Effect handler in the first line of the docs links to some old broken link. I updated it to link to somewhere fairly relevant.

Thanks!


Passing previously selected assets to AssetsSelector

If you have already selected assets and then open AssetsSelector again  there is no way to pass which assets you have selected previously, which means you have to completely reselect all assets you want. I think this is a common situation (e.g. user selects 1 asset, afterwards decides they want to add 1 more) so it would be nice to have.

I second this, I needed this exact functionality today

I second this, I needed this exact functionality today

I ended up adapting part of his code to implement this. Maybe this is useful for you:
// AssetsSelector.tsx
const AssetsSelector = ({initialAssets, onCancel, onConfirm}: AssetsSelectorProps): JSX.Element => {
  const [selectedItems, setSelectedItems] = useState<string[]>(initialAssets.map(asset => asset.id));
  const [assets, setAssets] = useAssets();

  ...

  return (
    <Screen>
      <AssetsSelectorHeading onCancel={onCancel} onConfirm={handleConfirm} />
      <SelectableAssetsList
        assets={assets}
        loadMoreAssets={setAssets}
        onClick={onAssetSelect}
        selectedItems={selectedItems}
        size={width / NUM_COLUMNS}
      />
    </Screen>
  );
};

// useAssets.tsx
import {Asset, AssetsOptions, getAssetsAsync, PagedInfo} from 'expo-media-library';
import * as Permissions from 'expo-permissions';
import {useCallback, useEffect, useState} from 'react';
import showToast from '../utils/showToast';

export const useAssets = (): [Asset[], () => Promise<void> | undefined] => {
  const [assets, setAssets] = useState<Asset[]>([]);

  const [permissions, setPermissions] = useState({
    hasCameraPermission: false,
    hasCameraRollPermission: false,
  });

  const [options, setOptions] = useState<Partial<AssetsOptions> & Partial<PagedInfo<Asset>>>({
    first: 500,
    after: '',
    totalCount: 0,
    endCursor: '',
    hasNextPage: true,
  });

  const loadAssets = useCallback(
    async (assetsOptions: AssetsOptions) => {
      try {
        const {endCursor, assets: newAssets, hasNextPage} = await getAssetsAsync(assetsOptions);

        if (options.after === endCursor) return;

        setOptions({
          ...options,
          after: endCursor,
          hasNextPage: hasNextPage,
        });

        return setAssets([...assets, ...newAssets]);
      } catch (error) {
        showToast({text: error, type: 'danger'});
      }
    },
    [assets, permissions.hasCameraPermission]
  );

  const getCameraPermissions = useCallback(async () => {
    const {status: CAMERA} = await Permissions.askAsync(Permissions.CAMERA);

    const {status: MEDIA_LIBRARY} = await Permissions.askAsync(Permissions.MEDIA_LIBRARY);

    setPermissions({
      hasCameraPermission: CAMERA === 'granted',
      hasCameraRollPermission: MEDIA_LIBRARY === 'granted',
    });
  }, []);

  const getAssets = () => {
    try {
      if (options.hasNextPage) {
        const assetsOptions: AssetsOptions = {
          first: 200,
          mediaType: ['photo', 'video'],
          sortBy: ['creationTime'],
        };

        if (options.after) {
          assetsOptions.after = options.after;
        }

        if (!options.hasNextPage) return;

        return permissions.hasCameraRollPermission ? loadAssets(assetsOptions) : getCameraPermissions();
      }
    } catch (error) {
      showToast({text: error, type: 'danger'});
    }
  };

  useEffect(() => {
    getAssets();
  }, [permissions.hasCameraPermission, permissions.hasCameraRollPermission]);

  return [assets, getAssets];
};


Fix pipeline

:white_check_mark: Build bitcointrade-sdk-dotnet 1.0.193 completed (commit https://github.com/guibranco/bitcointrade-sdk-dotnet/commit/60ae7ca4b0 by @guistracini-outsurance-ie)


Enable e2e Test to capture dump queue proxy logs (off by default)

Expected Behavior
e2e test have an on demand (env variable, flag) ability to capture / dump logs from pods in namespaces other than knative-serving.  This is particularly useful for debugging troubleshooting networking problems (namespace serving-tests to get queue-proxy logs, and potentially capture kingress logs as well)
Actual Behavior
running tests produces logs from all knative-serving pods as well as user container ()
Steps to Reproduce the Problem

run e2e tests (go test -v -tags=e2e  ./test/e2e/...  )
ensure queue proxy produces logs
kubectl logs g-r-p-c-streaming-ping-bqasnqxe-bbsmx-deployment-968b67dfb5kq9b  -c queue-proxy  -n serving-tests
observe the log entries produced by kubectl not present in the e2e log results

Additional Info
proposal is to  change :
knative.dev/pkg/test/logstream/kubelogs.go  to enable it to collect logs from multiple namespaces without filtering (like it does for "chaosduck")

/assign igorbelianski

@dprotaso @vagababov @markusthoemmes
before writing this code and extendingpkg/test/logstream/v2/  to support pods across multiple namespaces and more liberal ability to disable tag filtering on some of them , i would like to get your opinion

Sounds good to me - I would only want to have the extra collection off by default since certain tests would produce a ton of extra logs. ie. auto scaling tests

Sounds good!


[fix](tablet clone) fix tablet sched ctx toString cause null exeption

Proposed changes
When adding a new balance task, its tabletStatus is still null.  It will cause TabletSchedCtx.toString null exception. Fix this.
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

(From new machine)TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 50.43 seconds
stream load tsv:          533 seconds loaded<PHONE_NUMBER>9 Bytes, about 133 MB/s
stream load json:         21 seconds loaded<PHONE_NUMBER> Bytes, about 107 MB/s
stream load orc:          64 seconds loaded<PHONE_NUMBER> Bytes, about 16 MB/s
stream load parquet:          31 seconds loaded 861443392 Bytes, about 26 MB/s
insert into select:          28.9 seconds inserted 10000000 Rows, about 346K ops/s
storage size:<PHONE_NUMBER>1 Bytes


"Connection Refused" Issue while running ollama in container with LLM Chat bot app in another docker Container

I have created a local chatbot in python 3.12 that allows user to chat with pdf uploaded by creating embeddings in qdrant vector database and further getting inference from ollama (Model LLama3.2:3B).
In my source code, I am using the following dependencies:
streamlit  langchain langchain_community langchain_core python-dotenv langchain-huggingface langchain-qdrant langchain-ollama unstructured[pdf] onnx==1.16.1 qdrant-client torch torchvision torchaudio
Since I want to deploy the code on a server (where there is no dependencies installed), I will be using docker to run the containers for qdrant, chatbotapp and ollama. I have successfully pulled ollama latest image and qdrant using docker.
docker run -d -v D:\myollamamodels:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run llama3.2:3b
Both Ollama and docker container are running and accessible from within. Checked using Docker desktop aswell. I have also bridged the chatbot app, ollama and qdrant container onto single network using:
docker network connect my_network ollama
docker network connect my_network qdrant
Now when i run the app, it does open and allowing me to upload the pdf, create the embedding and my embeddings are also successfully store din vector DB( I have included relevant print statements which are reflected in app GUI). Now the issue comes when i want to chat with the document, so when i enter the question, it waits and instead of responding with the inference output , it provides me the error: "⚠ An error occurred while processing your request: [Errno 111] Connection refused".
I have the docker compose file as below:
version: '3.8'
services:
qdrant:
image: qdrant/qdrant:v1.12.1
container_name: qdrant
ports:
- "6333:6333"  # Expose Qdrant on the default port
volumes:
- qdrant_data:/qdrant/storage
networks:
- my_network  # Connect qdrant to my_network
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"  # Expose Ollama on the default port
environment:
- OLLAMA_MODEL=llama3.2:3b
volumes:
- /d/myollamamodels:/models
networks:
- my_network
app:
build: .
container_name: app_new
ports:
- "8501:8501"  # Streamlit default port
environment:
QDRANT_URL: http://qdrant:6333  # Use Qdrant service name from Docker Compose
OLLAMA_URL: http://ollama:11434
#OLLAMA_MODEL: http://host.docker.internal:11434/llama3.2:3b  # Point to Ollama on host
depends_on:
- qdrant
- ollama
volumes:
- ./models:/models  # Mount the model directory for access
networks:
- my_network  # Connect app to my_network
volumes:
qdrant_data:
networks:
my_network:
driver: bridge`
The python program and class which I have been using for AI chatbot is as follows:
Streamlit app code and vector embeddings code are in different.py files.
class ChatbotManager:
def __init__(
self,
model_name: str = "BAAI/bge-small-en",
device: str = "cpu",
encode_kwargs: dict = {"normalize_embeddings": True},
llm_model: str = "llama3.2:3b",
#llm_model: str = None,  # Set to None to use environment variable
llm_temperature: float = 0.7,
qdrant_url: str = "http://qdrant:6333",
ollama_url: str = "http://ollama:11434",  # URL for Ollama inside Docker network
collection_name: str = "vector_db",
):
 """
 Initializes the ChatbotManager with embedding models, LLM, and vector store.
    Args:
        model_name (str): The HuggingFace model name for embeddings.
        device (str): The device to run the model on ('cpu' or 'cuda').
        encode_kwargs (dict): Additional keyword arguments for encoding.
        llm_model (str): The local LLM model name for ChatOllama.
        llm_temperature (float): Temperature setting for the LLM.
        qdrant_url (str): The URL for the Qdrant instance.
        collection_name (str): The name of the Qdrant collection.
    """
    self.model_name = model_name
    self.device = device
    self.encode_kwargs = encode_kwargs
    #self.llm_model = llm_model
    # Get the LLM model name from the environment variable
    self.llm_model = os.getenv("OLLAMA_MODEL", llm_model)
    self.llm_temperature = llm_temperature
    self.qdrant_url = qdrant_url
    self.collection_name = collection_name
    self.ollama_url = ollama_url  # Initialize ollama_url

    # Initialize Embeddings
    self.embeddings = HuggingFaceBgeEmbeddings(
        model_name=self.model_name,
        model_kwargs={"device": self.device},
        encode_kwargs=self.encode_kwargs,
    )

    # Initialize Local LLM
    self.llm = ChatOllama(
        model=self.llm_model,
        temperature=self.llm_temperature,
        server_url=self.ollama_url
        # Add other parameters if needed
    )`

    # Define the prompt template
    self.prompt_template = """Use the following pieces of information to answer the user's question.

If you don't know the answer, just say that you don't know, don't try to make up an answer.
Context: {context}
Question: {question}
Only return the helpful answer. Answer must be detailed and well explained.
Helpful answer:
"""
    # Initialize Qdrant client
    self.client = QdrantClient(
        url=self.qdrant_url, prefer_grpc=False
    )

    # Initialize the Qdrant vector store
    self.db = Qdrant(
        client=self.client,
        embeddings=self.embeddings,
        collection_name=self.collection_name
    )

    # Initialize the prompt
    self.prompt = PromptTemplate(
        template=self.prompt_template,
        input_variables=['context', 'question']
    )

    # Initialize the retriever
    self.retriever = self.db.as_retriever(search_kwargs={"k": 1})

    # Define chain type kwargs
    self.chain_type_kwargs = {"prompt": self.prompt}

    # Initialize the RetrievalQA chain with return_source_documents=False
    self.qa = RetrievalQA.from_chain_type(
        llm=self.llm,
        chain_type="stuff",
        retriever=self.retriever,
        return_source_documents=False,  # Set to False to return only 'result'
        chain_type_kwargs=self.chain_type_kwargs,
        verbose=False
    )

def get_response(self, query: str) -> str:
    """
    Processes the user's query and returns the chatbot's response.

    Args:
        query (str): The user's input question.

    Returns:
        str: The chatbot's response.
    """
    try:
        response = self.qa.run(query)
        return response  # 'response' is now a string containing only the 'result'
    except Exception as e:
        st.error(f"An error occurred while processing your request: {e}")
        return "Sorry, I couldn't process your request at the moment."`

Logs of app container:

2024-10-30` 16:47:13 2024-10-30 11:17:13.140 Examining the path of torch.classes raised: Tried to instantiate class 'path.path', but it does not exist! Ensure that it is registered via torch::class

2024-10-30` 16:49:55 2024-10-30 11:19:55.974 Examining the path of torch.classes raised: Tried to instantiate class 'path.path', but it does not exist! Ensure that it is registered via torch::class

2024-10-30 16:50:44 /app/chatbot.py:119: LangChainDeprecationWarning: The method Chain.run was deprecated in langchain 0.1.0 and will be removed in 1.0. Use :meth:~invoke instead.

2024-10-30 16:50:44   response = self.qa.run(query)

I have looked into it many times and modified it based on ollama_url and other factors such as checking ollama service availability, ollama container status, modification of yml file, but none seem to work and I am struck at this error. The entire code is working well though within the development environment without docker (and with ollama as service on host) but I need to deploy it at the earliest on a server to make it available on network.
I have checked ollama container service is working on port 11434 (did checked it via url and also via docker command) and qdrant is also working since the embedding are created and are shown via successful message in the APP UI but somehow the connection to ollama is being refused I guess.
Could someone please explain the issue and solution for this problem.
Thanks.

--- 7444.py.orig	2024-10-31 11:56:22.897375168 +0100
+++ 7444.py	2024-10-31 11:56:15.330871235 +0100
@@ -45,7 +45,7 @@
     self.llm = ChatOllama(
         model=self.llm_model,
         temperature=self.llm_temperature,
-        server_url=self.ollama_url
+        base_url=self.ollama_url
         # Add other parameters if needed
     )

Hi, tried implementing the suggested change in the code but it didn't worked and the error is same "Connection refused" when question is asked for chatting with pdf.

What's the result of
docker exec -it app_new curl ollama:11434

Result after the command is executed: Ollama is running

What base image do you use for app_new?

After running the tcpflow, the container logs are:

2024-10-3117:03:36 /app/chatbot.py:120: LangChainDeprecationWarning: The methodChain.run was deprecated in langchain 0.1.0 and will be removed in 1.0. Use :meth:~invoke` instead.

2024-10-31` 17:03:36   response = self.qa.run(query)

2024-10-31`` 17:31:21 2024-10-31 12:01:21.796 Examining the path of torch.classes raised: Tried to instantiate class 'path.path', but it does not exist! Ensure that it is registered via torch::class

& the Streamlit UI still shows error:
⚠ An error occurred while processing your request: [Errno 111] Connection refused
⚠ Sorry, I couldn't process your request at the moment.

I need to know if the ollama service is running in container and the app in another container then ollama_url shall be localhost:11434 or ollama:11434 ??

What was the output of tcpflow?
If ollama is running in a container, the client will need to connect to http://$container_name:11434.

reportfilename: ./report.xml
tcpflow: listening on any
Nothing is appearing after this in the terminal when query is executed in streamlit UI.

The app is not trying to connect to ollama at all, or at least not on port 11434.  If you add print(f"ollama_url is {self.ollama_url}") before the call to ChatOllama, what's the result?

Included the above statement, Getting the same logs from container console:
2024-10-31 18:01:16   self.db = Qdrant(
2024-10-31 18:01:17 2024-10-31 12:31:17.078 Examining the path of torch.classes raised: Tried to instantiate class 'path.path', but it does not exist! Ensure that it is registered via torch::class
2024-10-31 18:01:37 /app/chatbot.py:123: LangChainDeprecationWarning: The method Chain.run was deprecated in langchain 0.1.0 and will be removed in 1.0. Use :meth:~invoke instead.
2024-10-31 18:01:37   response = self.qa.run(query)
After creating the db in qdrant it shall invoke chatbot.py. Below is the snippet from APP UI CODE:
`# User input
if user_input := st.chat_input("Type your message here..."):
# Display user message
st.chat_message("user").markdown(user_input)
st.session_state['messages'].append({"role": "user", "content": user_input})
            with st.spinner("🤖 Responding..."):
                try:
                    # Get the chatbot response using the ChatbotManager
                    answer = st.session_state['chatbot_manager'].get_response(user_input)
                    time.sleep(1)  # Simulate processing time
                except Exception as e:
                    answer = f"⚠ An error occurred while processing your request: {e}"`

I don't see ollama_url is ... in the log.
Can I ask that you wrap code and log snippets in a markdown code block, three backticks (```) on a line at the start and again at the end.  It makes it much easier to read the code if it's properly formatted.

Sure here's the code :
# chatbot.py

import os
from langchain_community.embeddings import HuggingFaceBgeEmbeddings
from langchain_community.vectorstores import Qdrant
from langchain_ollama import ChatOllama
from qdrant_client import QdrantClient
from langchain import PromptTemplate
from langchain.chains import RetrievalQA
import streamlit as st

class ChatbotManager:
   def __init__(
       self,
       model_name: str = "BAAI/bge-small-en",
       device: str = "cpu",
       encode_kwargs: dict = {"normalize_embeddings": True},
       llm_model: str = "llama3.2:3b",
       #llm_model: str = None,  # Set to None to use environment variable
       llm_temperature: float = 0.7,
       qdrant_url: str = "http://qdrant:6333",
       ollama_url: str = "http://ollama:11434",  # URL for Ollama inside Docker network
       collection_name: str = "vector_db",
   ):
       """
       Initializes the ChatbotManager with embedding models, LLM, and vector store.

       Args:
           model_name (str): The HuggingFace model name for embeddings.
           device (str): The device to run the model on ('cpu' or 'cuda').
           encode_kwargs (dict): Additional keyword arguments for encoding.
           llm_model (str): The local LLM model name for ChatOllama.
           llm_temperature (float): Temperature setting for the LLM.
           qdrant_url (str): The URL for the Qdrant instance.
           collection_name (str): The name of the Qdrant collection.
       """
       self.model_name = model_name
       self.device = device
       self.encode_kwargs = encode_kwargs
       #self.llm_model = llm_model
       # Get the LLM model name from the environment variable
       self.llm_model = os.getenv("OLLAMA_MODEL", llm_model)
       self.llm_temperature = llm_temperature
       self.qdrant_url = qdrant_url
       self.collection_name = collection_name
       self.ollama_url = ollama_url  # Initialize ollama_url

       # Initialize Embeddings
       self.embeddings = HuggingFaceBgeEmbeddings(
           model_name=self.model_name,
           model_kwargs={"device": self.device},
           encode_kwargs=self.encode_kwargs,
       )

       # Print the ollama_url for debugging purposes
       print(f"ollama_url is {self.ollama_url}")

       # Initialize Local LLM
       self.llm = ChatOllama(
           model=self.llm_model,
           temperature=self.llm_temperature,
           #server_url=self.ollama_url
           base_url=self.ollama_url
           # Add other parameters if needed
       )

       # Define the prompt template
       self.prompt_template = """Use the following pieces of information to answer the user's question.
If you don't know the answer, just say that you don't know, don't try to make up an answer.

Context: {context}
Question: {question}

Only return the helpful answer. Answer must be detailed and well explained.
Helpful answer:
"""

       # Initialize Qdrant client
       self.client = QdrantClient(
           url=self.qdrant_url, prefer_grpc=False
       )

       # Initialize the Qdrant vector store
       self.db = Qdrant(
           client=self.client,
           embeddings=self.embeddings,
           collection_name=self.collection_name
       )

       # Initialize the prompt
       self.prompt = PromptTemplate(
           template=self.prompt_template,
           input_variables=['context', 'question']
       )

       # Initialize the retriever
       self.retriever = self.db.as_retriever(search_kwargs={"k": 1})

       # Define chain type kwargs
       self.chain_type_kwargs = {"prompt": self.prompt}

       # Initialize the RetrievalQA chain with return_source_documents=False
       self.qa = RetrievalQA.from_chain_type(
           llm=self.llm,
           chain_type="stuff",
           retriever=self.retriever,
           return_source_documents=False,  # Set to False to return only 'result'
           chain_type_kwargs=self.chain_type_kwargs,
           verbose=False
       )

   def get_response(self, query: str) -> str:
       """
       Processes the user's query and returns the chatbot's response.

       Args:
           query (str): The user's input question.

       Returns:
           str: The chatbot's response.
       """
       try:
           response = self.qa.run(query)
           return response  # 'response' is now a string containing only the 'result'
       except Exception as e:
           st.error(f"⚠ An error occurred while processing your request: {e}")
           return "⚠ Sorry, I couldn't process your request at the moment."

Streamlit app code:
# app.py

import streamlit as st
from streamlit import session_state
import time
import base64
import os
from vectors import EmbeddingsManager  # Import the EmbeddingsManager class
from chatbot import ChatbotManager     # Import the ChatbotManager class

# Function to display the PDF of a given file
def displayPDF(file):
    # Reading the uploaded file
    base64_pdf = base64.b64encode(file.read()).decode('utf-8')

    # Embedding PDF in HTML
    pdf_display = f'<iframe src="data:application/pdf;base64,{base64_pdf}" width="100%" height="600" type="application/pdf"></iframe>'

    # Displaying the PDF
    st.markdown(pdf_display, unsafe_allow_html=True)

# Initialize session_state variables if not already present
if 'temp_pdf_path' not in st.session_state:
    st.session_state['temp_pdf_path'] = None

if 'chatbot_manager' not in st.session_state:
    st.session_state['chatbot_manager'] = None

if 'messages' not in st.session_state:
    st.session_state['messages'] = []

# Set the page configuration to wide layout and add a title
st.set_page_config(
    page_title="DocBot AI App",
    layout="wide",
    initial_sidebar_state="expanded",
)
#st.markdown("<h1 style='color: #1c5384;'>DocBot AI App</h1>", unsafe_allow_html=True)

# Sidebar
with st.sidebar:

    st.markdown("### 📚 Your Personal Document Assistant")
    st.markdown ("#### Powered by AI 🚀🚀")
    st.markdown("---")

    # Navigation Menu
    menu = ["🏠 Home", "🤖 Chatbot"]
    choice = st.selectbox("Navigate", menu)

# Home Page
if choice == "🏠 Home":
    #st.title("📄 DocBot AI App")
    st.markdown("<h1 style='color: #1c5384;'> 📄 DocBot AI App</h1>", unsafe_allow_html=True)
    st.markdown("""
    Welcome to **DocBot AI App**!
    """)

# Chatbot Page
elif choice == "🤖 Chatbot":
    #st.title("🤖 AI Chatbot Interface")
    st.markdown("<h1 style='color: #1c5384;'> 🤖 AI Chatbot Interface</h1>", unsafe_allow_html=True)
    st.markdown("---")

    # Create three columns
    col1, col2, col3 = st.columns(3)

    # Column 1: File Uploader and Preview
    with col1:
        st.header("📂 Upload Document")
        #st.markdown("<h1 style='color: #1c5384;'> 📂 Upload Document</h1>", unsafe_allow_html=True)
        uploaded_file = st.file_uploader("Upload a PDF", type=["pdf"])
        if uploaded_file is not None:
            st.success("📄 File Uploaded Successfully!")
            # Display file name and size
            st.markdown(f"**Filename:** {uploaded_file.name}")
            st.markdown(f"**File Size:** {uploaded_file.size} bytes")

            # Display PDF preview using displayPDF function
            st.markdown("### 📖 PDF Preview")
            displayPDF(uploaded_file)

            # Save the uploaded file to a temporary location
            temp_pdf_path = "temp.pdf"
            with open(temp_pdf_path, "wb") as f:
                f.write(uploaded_file.getbuffer())

            # Store the temp_pdf_path in session_state
            st.session_state['temp_pdf_path'] = temp_pdf_path

    # Column 2: Create Embeddings
    with col2:
        st.header("🧠 Process the PDF ")
        create_embeddings = st.checkbox("✅ Create Embeddings")
        if create_embeddings:
            if st.session_state['temp_pdf_path'] is None:
                st.warning("⚠ Please upload a PDF first.")
            else:
                try:
                    # Initialize the EmbeddingsManager
                    embeddings_manager = EmbeddingsManager(
                        model_name="BAAI/bge-small-en",
                        device="cpu",
                        encode_kwargs={"normalize_embeddings": True},
                        qdrant_url="http://qdrant:6333",
                        collection_name="vector_db"
                    )

                    with st.spinner("🔄 Embeddings are in process..."):
                        # Create embeddings
                        result = embeddings_manager.create_embeddings(st.session_state['temp_pdf_path'])
                        time.sleep(1)  # Optional: To show spinner for a bit longer
                    st.success(result)

                    # Initialize the ChatbotManager after embeddings are created
                    if st.session_state['chatbot_manager'] is None:
                        st.session_state['chatbot_manager'] = ChatbotManager(
                            model_name="BAAI/bge-small-en",
                            device="cpu",
                            encode_kwargs={"normalize_embeddings": True},
                            llm_model="llama3.2:3b",
                            llm_temperature=0.7,
                            qdrant_url="http://qdrant:6333",
                            collection_name="vector_db",
                            ollama_url = "http://ollama:11434"
                        )

                except FileNotFoundError as fnf_error:
                    st.error(fnf_error)
                except ValueError as val_error:
                    st.error(val_error)
                except ConnectionError as conn_error:
                    st.error(conn_error)
                except Exception as e:
                    st.error(f"An unexpected error occurred: {e}")

    # Column 3: Chatbot Interface
    with col3:
        st.header("💬 Chat with Document")

        if st.session_state['chatbot_manager'] is None:
            st.info("🤖 Please upload a PDF and create embeddings to start chatting.")
        else:
            # Display existing messages
            for msg in st.session_state['messages']:
                st.chat_message(msg['role']).markdown(msg['content'])

            # User input
            if user_input := st.chat_input("Type your message here..."):
                # Display user message
                st.chat_message("user").markdown(user_input)
                st.session_state['messages'].append({"role": "user", "content": user_input})

                with st.spinner("🤖 Responding..."):
                    try:
                        # Get the chatbot response using the ChatbotManager
                        answer = st.session_state['chatbot_manager'].get_response(user_input)
                        time.sleep(1)  # Simulate processing time
                    except Exception as e:
                        answer = f"⚠ An error occurred while processing your request: {e}"

                # Display chatbot message
                st.chat_message("assistant").markdown(answer)
                st.session_state['messages'].append({"role": "assistant", "content": answer})

# Footer
st.markdown("---")```

I modified the docker compose config from the first post:
--- docker-compose.yaml.orig	2024-10-31 22:17:26.736521468 +0100
+++ docker-compose.yaml	2024-10-31 22:09:19.128216925 +0100
@@ -19,7 +19,7 @@
     environment:
       - OLLAMA_MODEL=llama3.2:3b
     volumes:
-      - /d/myollamamodels:/models
+      - ./myollamamodels:/root/.ollama
     networks:
       - my_network

and added a new function to app.py to make it easier to test the connection to ollama:
--- app.py.orig	2024-10-31 17:45:52.477968011 +0100
+++ app.py	2024-10-31 21:28:32.309133808 +0100
@@ -29,6 +29,9 @@
 if 'messages' not in st.session_state:
     st.session_state['messages'] = []

+ollama_url = os.getenv("OLLAMA_URL", "http://ollama:11434")
+qdrant_url = os.getenv("QDRANT_URL", "http://qdrant:6333")
+
 # Set the page configuration to wide layout and add a title
 st.set_page_config(
     page_title="DocBot AI App",
@@ -45,7 +48,7 @@
     st.markdown("---")

     # Navigation Menu
-    menu = ["🏠 Home", "🤖 Chatbot"]
+    menu = ["🏠 Home", "🤖 Chatbot", "Ollama chat"]
     choice = st.selectbox("Navigate", menu)

 # Home Page
@@ -102,7 +105,7 @@
                         model_name="BAAI/bge-small-en",
                         device="cpu",
                         encode_kwargs={"normalize_embeddings": True},
-                        qdrant_url="http://qdrant:6333",
+                        qdrant_url=qdrant_url,
                         collection_name="vector_db"
                     )

@@ -120,9 +123,9 @@
                             encode_kwargs={"normalize_embeddings": True},
                             llm_model="llama3.2:3b",
                             llm_temperature=0.7,
-                            qdrant_url="http://qdrant:6333",
+                            qdrant_url=qdrant_url,
                             collection_name="vector_db",
-                            ollama_url = "http://ollama:11434"
+                            ollama_url = ollama_url
                         )

                 except FileNotFoundError as fnf_error:
@@ -163,6 +166,46 @@
                 st.chat_message("assistant").markdown(answer)
                 st.session_state['messages'].append({"role": "assistant", "content": answer})

+elif choice == "Ollama chat":
+    st.markdown("
 🤖 Ollama Chat Interface
", unsafe_allow_html=True)
+    st.markdown("---")
+
+    if st.session_state['chatbot_manager'] is None:
+        st.session_state['chatbot_manager'] = ChatbotManager(
+            model_name="BAAI/bge-small-en",
+            device="cpu",
+            encode_kwargs={"normalize_embeddings": True},
+            llm_model="llama3.2:3b",
+            llm_temperature=0.7,
+            qdrant_url=qdrant_url,
+            collection_name="vector_db",
+            ollama_url = ollama_url
+        )
+
+    st.header("💬 Chat with ollama")
+    history = st.container(height=400)
+
+    # Display existing messages
+    for msg in st.session_state['messages']:
+        history.chat_message(msg['role']).markdown(msg['content'])
+
+    # User input
+    if user_input := st.chat_input("Type your message here..."):
+        # Display user message
+        history.chat_message("user").markdown(user_input)
+        st.session_state['messages'].append({"role": "user", "content": user_input})
+
+        with st.spinner("🤖 Responding..."):
+            try:
+                # Get the chatbot response using the ChatbotManager
+                answer = st.session_state['chatbot_manager'].llm.invoke(st.session_state['messages']).content
+                time.sleep(1)  # Simulate processing time
+            except Exception as e:
+                answer = f"⚠ An error occurred while processing your request: {e}"
+
+        # Display chatbot message
+        history.chat_message("assistant").markdown(answer)
+        st.session_state['messages'].append({"role": "assistant", "content": answer})

 # Footer

This works as expected.

Hi, Thanks, I tried the above changes except for test function. It kind of throws an error when container is launched : ModuleNotFoundError: No module named 'langchain_ollama'. This issue was not there prior to changes.
Below is the Code for Embeddings as Well. Can you check after qdrant DB step being successfull , why ollama is not getting connected for Chat.
# vectors.py

import os
import base64
from langchain_community.document_loaders import UnstructuredPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import HuggingFaceBgeEmbeddings
from langchain_community.vectorstores import Qdrant

class EmbeddingsManager:
    def __init__(
        self,
        model_name: str = "BAAI/bge-small-en",
        device: str = "cpu",
        encode_kwargs: dict = {"normalize_embeddings": True},
        qdrant_url: str = "http://qdrant:6333",
        collection_name: str = "vector_db",
    ):
        """
        Initializes the EmbeddingsManager with the specified model and Qdrant settings.

        Args:
            model_name (str): The HuggingFace model name for embeddings.
            device (str): The device to run the model on ('cpu' or 'cuda').
            encode_kwargs (dict): Additional keyword arguments for encoding.
            qdrant_url (str): The URL for the Qdrant instance.
            collection_name (str): The name of the Qdrant collection.
        """
        self.model_name = model_name
        self.device = device
        self.encode_kwargs = encode_kwargs
        self.qdrant_url = qdrant_url
        self.collection_name = collection_name

        self.embeddings = HuggingFaceBgeEmbeddings(
            model_name=self.model_name,
            model_kwargs={"device": self.device},
            encode_kwargs=self.encode_kwargs,
        )

    def create_embeddings(self, pdf_path: str):
        """
        Processes the PDF, creates embeddings, and stores them in Qdrant.

        Args:
            pdf_path (str): The file path to the PDF document.

        Returns:
            str: Success message upon completion.
        """
        if not os.path.exists(pdf_path):
            raise FileNotFoundError(f"The file {pdf_path} does not exist.")

        # Load and preprocess the document
        loader = UnstructuredPDFLoader(pdf_path)
        docs = loader.load()
        if not docs:
            raise ValueError("No documents were loaded from the PDF.")

        text_splitter = RecursiveCharacterTextSplitter(
            chunk_size=1000, chunk_overlap=250
        )
        splits = text_splitter.split_documents(docs)
        if not splits:
            raise ValueError("No text chunks were created from the documents.")

        # Create and store embeddings in Qdrant
        try:
            qdrant = Qdrant.from_documents(
                splits,
                self.embeddings,
                url=self.qdrant_url,
                prefer_grpc=False,
                collection_name=self.collection_name,
            )
        except Exception as e:
            raise ConnectionError(f"Failed to connect to Qdrant: {e}")

        return "✅ Vector DB Successfully Created and Stored in Qdrant!"

I am still getting the same error of connection refused when containers are executed. Also did you tried the execution from docker with individual containers of ollama, webapp or through python terminal since from python directly it was working fine.

I added vector.py and rebuilt the docker image.  Works as expected.

Also did you tried the execution from docker with individual containers of ollama, webapp or through python terminal since from python directly, it was working fine earlier as well.

I used the docker compose config you posted in the first message.

I tried the above changes except for test function. It kind of throws an error when container is launched : ModuleNotFoundError: No module named 'langchain_ollama'. This issue was not there prior to changes.

The changes I made make no reference to langchain_ollama.  If chatbot.py (which my change doesn't touch) can't find it, it would seem to be an issue the the container/environment.

Ok. I want to know where you have pulled the ML model from ollama, i have done it in separate D Drive and rest of the softwares are there in  C Drive. So in my case would - /d/myollamamodels:/models work or this - ./myollamamodels:/root/.ollama.
I have pulled the image of ollama from docker and then for models have created separate folder in Ddrive called "myollammodels" in which llama 3.2 3b is stored.
would appreciate little help on this from your side.

Inside the container, ollama stores the models in /root/.ollama.  If you want to map that onto the /d/myollamamodels directory in the host system, use /d/myollamamodels:/root/.ollama.

Here's the logs of app container i am getting:
2024-11-01 18:21:36 2024-11-01 12:51:36,607 - INFO - Received query: summarize the document
2024-11-01 18:21:36 2024-11-01 12:51:36,846 - DEBUG - connect_tcp.started host='qdrant' port=6333 local_address=None timeout=5.0 socket_options=None
2024-11-01 18:21:36 2024-11-01 12:51:36,849 - DEBUG - connect_tcp.complete return_value=<httpcore._backends.sync.SyncStream object at 0x7f9d938a6b40>
2024-11-01 18:21:36 2024-11-01 12:51:36,850 - DEBUG - send_request_headers.started request=<Request [b'POST']>
2024-11-01 18:21:36 2024-11-01 12:51:36,850 - DEBUG - send_request_headers.complete
2024-11-01 18:21:36 2024-11-01 12:51:36,850 - DEBUG - send_request_body.started request=<Request [b'POST']>
2024-11-01 18:21:36 2024-11-01 12:51:36,851 - DEBUG - send_request_body.complete
2024-11-01 18:21:36 2024-11-01 12:51:36,851 - DEBUG - receive_response_headers.started request=<Request [b'POST']>
2024-11-01 18:21:36 2024-11-01 12:51:36,885 - DEBUG - receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'transfer-encoding', b'chunked'), (b'vary', b'accept-encoding, Origin, Access-Control-Request-Method, Access-Control-Request-Headers'), (b'content-type', b'application/json'), (b'content-encoding', b'gzip'), (b'date', b'Fri, 01 Nov 2024 12:51:36 GMT')])
2024-11-01 18:21:36 2024-11-01 12:51:36,886 - INFO - HTTP Request: POST http://qdrant:6333/collections/vector_db/points/search "HTTP/1.1 200 OK"
2024-11-01 18:21:36 2024-11-01 12:51:36,886 - DEBUG - receive_response_body.started request=<Request [b'POST']>
2024-11-01 18:21:36 2024-11-01 12:51:36,887 - DEBUG - receive_response_body.complete
2024-11-01 18:21:36 2024-11-01 12:51:36,888 - DEBUG - response_closed.started
2024-11-01 18:21:36 2024-11-01 12:51:36,888 - DEBUG - response_closed.complete
2024-11-01 18:21:36 2024-11-01 12:51:36,889 - DEBUG - connect_tcp.started host='<IP_ADDRESS>' port=11434 local_address=None timeout=None socket_options=None
2024-11-01 18:21:36 2024-11-01 12:51:36,890 - DEBUG - connect_tcp.failed exception=ConnectError(ConnectionRefusedError(111, 'Connection refused'))

Inside the container, ollama stores the models in /root/.ollama. If you want to map that onto the /d/myollamamodels directory in the host system, use /d/myollamamodels:/root/.ollama.

I have downloaded the model previously and stored in D Drive. do i need to pull and run the model again while running container or ollama will pull it for me.

2024-11-01 18:21:36 2024-11-01 12:51:36,889 - DEBUG - connect_tcp.started host='<IP_ADDRESS>' port=11434 local_address=None timeout=None socket_options=None

This is not connecting to the ollama container, it is connecting to the default address of 127.0.01:11434.  You need to set base_url in ChatOllama to the address to connect to.

I have downloaded the model previously and stored in D Drive. do i need to pull and run the model again while running container or ollama will pull it for me.

If you have already downloaded the model and have mapped it into the container at /root/.ollama, ollama will use it without trying to pull it again.

Thanks a lot man for your patience and support. The solution worked and the app is now generating responses.


[CARBONDATA-2465] Improve the carbondata file reliability in data load when direct hdfs write is enabled

Problem:     At present if we enable direct write on HDFS, data is written with replication of 1 which can cause data loss.
Solution: Write with cluster replication. With this change No need to invoke CompleteHdfsBackendThread/completeRemainingHdfsReplicas for direct hdfs write case.
Be sure to do all of the following checklist to help us incorporate
your contribution quickly and easily:

[x] Any interfaces changed?

No

[x] Any backward compatibility impacted?

No

[x] Document update required?

Yes, once approach is reviewed and fine, new configuration to be added n document

[ ] Testing done
Please provide details on
- Whether new unit test cases have been added or why no new tests are required?
- How it is tested? Please attach test report.
- Is it a performance related change? Please attach the performance test report.
- Any additional information to help reviewers in testing this change.

[x] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
NA

Build Failed with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/4276/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/5439/

There is no need to add a property for the default replicator. We can read it from HDFS system property.

SDV Build Fail , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/4584/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/5759/

SDV Build Success , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/4819/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/4601/

SDV Build Success , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/4882/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/4678/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/5834/

LGTM

The changes are OK, better to correct the title of commit

LGTM

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/5939/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/4784/


The demo doesn't seem to work

I used this link from the readme: https://rawgit.com/iVis-at-Bilkent/cytoscape.js-edge-bend-editing/master/demo.html

I don't see anything after I click an edge.  I tried on Chrome and Safari

@maxkfranz Please read the readme:

in order to add a bend point, first you need to select that edge, then right click where you want to add the bend point and click Add Bend Point on the context menu
Alternatively, you can click anywhere on the selected edge to introduce and relocate a bend point by dragging

See the GIF below (created in Safari):

You're right.  I missed that.  I must have been thinking of a previous version of the demo or a different demo that presented things differently.
It might be good to simplify the demo with a pre-existing bend point shown -- if possible.


[Enhancement] Allow "default" Preload script / Only compile once

Preflight Checklist

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Problem Description

Right now, every preload script is being compiled separately, taking considerable time to finish. I have quite a lot of renderers, but only a single, central preload script. It would be great if we could decrease the time necessary to compile by compiling the preload script only once.
Proposed Solution

Cache the paths of preload scripts and, if a path already compiled is encountered, simply copy the compiled version to the new target.
Alternatives Considered

Another possible solution would be to define a "global" preload in a variable, e.g., named preloadForAllRenderers that can be set instead of all the default ones. Depending on how easy it is to access the config, this might be easier to implement, and I can guess that there are a few apps out there that only have a single preload script for all renderers.
Additional Information

While it is absolutely great to have the ability to set separate preload files, I think most apps only need a single preload file for all windows to keep maintainability and the codebase smaller. By allowing either caching or a single global one would increase compile speed for those apps who only need one.
I guess, looking at the code it might be easier to use a default variable which is being used (if set) for all renderers where no specific preload has been defined.

Deduping preload script compilation should be possible via object identity checks when we parse configs.  Use a weakmap of preload config -> webpack compiler


Use Spring Boot autoconfigure-processor to optimize auto-configurations

As explained in the its reference documentation, Spring Boot provides a spring-boot-autoconfigure-processor.
This should be added as an optional dependency to the module that contains the AutoConfiguration classes (and contains the spring.factories file declaring them).
Once configured, this annotation processor will generate metadata at compile time and will help Spring Boot process those auto-configurations without loading the actual classes in some cases.
In this project, the spring-cloud-gcp-autoconfigure module declares auto-configurations but doesn't use this annotation processor. Could you add it to the build file of this module?
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-autoconfigure-processor</artifactId>
	<optional>true</optional>
</dependency>

Once added, this should generate a spring-autoconfigure-metadata.properties file in the target/classes/META-INF folder.

It seems to be there. What am I missing? Thanks!

The artifact IDs looked the same to my eyes! :rofl:
Thanks for pointing it out!


Documents new placement environment variables

Description
Documents the new placement env variables added in this pr.
Please don't merge until the corresponding PR is merged

Closing because we moved away from env variables for this. The values are documented as helm values in the dapr/dapr repo instead.


Constraint Error

I would like to ask a question. I used the new version and adding the constraint has no effect, it still fetches the points that are not accepted, why is that? Also, the new version of logger will prompt me: TypeError: Object of type bool_ is not JSON serializable.
Thank you for your answer!

Hey, could you please add a minimum example that reproduces these errors so we can debug?

The current constrained optimization is designed for constraint functions that are expensive to evaluate (meaning it is not easy to say whether a point fulfills the constraint without explicitly evaluating the constraint function which is computationally costly). In practice, this means that you will sample a lot of points during modelling that do not fulfill the constraints (even by design), because we simply don't know whether a point fulfills the constrain before sampling. On the other hand, we want to make use of the information gained by every evaluation of the constraint function, since this is such a costly operation.
Nonetheless, calling .max on the optimizer should give you the point maximizing the function that also fulfills the constraints.
I hope this clears up the first question to some degree. If you want to read more about the method we are using to model constraints, please read Gardner et al, 2014 or feel free to ask a question here.
That being said, if your constraint function is not hard to evaluate, there may be better ways of incorporating your constraints into the optimization. For this, please provide a minimum example.

To reproduce the logging bug:
import numpy as np
from bayes_opt import BayesianOptimization
from scipy.optimize import NonlinearConstraint
from bayes_opt.logger import JSONLogger
from bayes_opt.event import Events

logger = JSONLogger(path="./logs.json")

def target_function(x, y):
    # Gardner is looking for the minimum, but this packages looks for maxima, thus the sign switch
    return np.cos(2*x)*np.cos(y) + np.sin(x)

def constraint_function(x, y):
    return np.cos(x) * np.cos(y) - np.sin(x) * np.sin(y)

constraint_limit = 0.5

constraint = NonlinearConstraint(constraint_function, -np.inf, constraint_limit)

# Bounded region of parameter space
pbounds = {'x': (0, 6), 'y': (0, 6)}

optimizer = BayesianOptimization(
    f=target_function,
    constraint=constraint,
    pbounds=pbounds
    random_state=1,
)
optimizer.subscribe(Events.OPTIMIZATION_STEP, logger)
optimizer.maximize(
    init_points=2,
    n_iter=10,
)

I'll look into this.
@qup20 thank you very much for reporting this bug. Quick sidenote, it's generally better to keep issues focused on a single topic, so please open separate issues for different bugs in the future.

The current constrained optimization is designed for constraint functions that are expensive to evaluate (meaning it is not easy to say whether a point fulfills the constraint without explicitly evaluating the constraint function, and evaluating is computationally expensive). In practice, this means that you will sample a lot of points during modelling that do not fulfill the constraints (even by design), because we simply don't know whether a point fulfills the constrain before sampling. On the other hand, we want to make use of the information gained by every evaluation of the constraint function, since this is such a costly operation and we want to perform as few of these as possible. I hope this clears up the first question to some degree. If you want to read more about the method we are using to model constraints, please read Gardner et al, 2014 or feel free to ask a question here. Nonetheless, calling .max on the optimizer should give you the point maximizing the function out of all points that fulfill the constraints.
That being said, if your constraint function is not hard to evaluate, there may be better ways of incorporating your constraints into the optimization. For this, please provide a minimum example.

Thank you for your answer! I think I understand what you mean. My task is to optimize the arrangement of some rectangulars, so I should constain theses rectangles do not overlap. At first I constrained the 9 rectangles not to overlap, I guess this constraint should be too strong to sample the points that meet the condition. Now I lower the constraint to 3 rectangles without overlap, and it is able to get more points that are within the constraint. But I am very sad, I encountered a new problem, when my program samples several times, it will report an error that the input is empty. My procedure is basically the same as the minimal example you gave, with only two differences:
import numpy as np
from bayes_opt import BayesianOptimization
from scipy.optimize import NonlinearConstraint

def target_function(x, y):
    # My target_function is not easy to say, I need to call ANSYS for finite element calculation to get the result(float).
    return new_function(x,y)

def constraint_function(x, y):
    #Here my constraint is to determine whether the 3 rectangles overlap by the shape center coordinates and side lengths, I omitted it.
    if overlap:
        return 1
    return -1

# If I set constraint_limit=0 it will prompt an error, so I set it to [0]
constraint_limit = [0]
constraint = NonlinearConstraint(constraint_function, -np.inf, constraint_limit)

pbounds = {'x': (0, 6), 'y': (0, 6)}

optimizer = BayesianOptimization(
    f=target_function,
    constraint=constraint,
    pbounds=pbounds
    random_state=1,
)

optimizer.maximize(
    init_points=2,
    n_iter=10,
)

When my program samples several times, it will report this error

Can you help me solve this issue?
Thank you very much!

To reproduce the logging bug:
import numpy as np
from bayes_opt import BayesianOptimization
from scipy.optimize import NonlinearConstraint
from bayes_opt.logger import JSONLogger
from bayes_opt.event import Events

logger = JSONLogger(path="./logs.json")

def target_function(x, y):
    # Gardner is looking for the minimum, but this packages looks for maxima, thus the sign switch
    return np.cos(2*x)*np.cos(y) + np.sin(x)

def constraint_function(x, y):
    return np.cos(x) * np.cos(y) - np.sin(x) * np.sin(y)

constraint_limit = 0.5

constraint = NonlinearConstraint(constraint_function, -np.inf, constraint_limit)

# Bounded region of parameter space
pbounds = {'x': (0, 6), 'y': (0, 6)}

optimizer = BayesianOptimization(
    f=target_function,
    constraint=constraint,
    pbounds=pbounds
    random_state=1,
)
optimizer.subscribe(Events.OPTIMIZATION_STEP, logger)
optimizer.maximize(
    init_points=2,
    n_iter=10,
)

I'll look into this.
@qup20 thank you very much for reporting this bug. Quick sidenote, it's generally better to keep issues focused on a single topic, so please open separate issues for different bugs in the future.

Thank you for your answer!I am writing my program according to this code format you provided, but he still prompts an error.
This error is prompted when the first sample point are calculated to return the function value, but in the old version it was correct , I didn't add constraints and I didn't change my targrt_function.

I've just joined GitHub,  I'll take note of your reminder in the future, thank you very   @till-m

Hi @qup20,
first of all, I hope my reminder didn't come off as harsh, it wasn't inteded to be. People like you reporting bugs are invaluable to open source software projects, so I very much appreciate that you opened an issue!
Regarding the logging, I've identified the problem and will try to provide a fix, potentially later today. For now, if that's possible for you, just use the default logger instead of the JSONLogger.
Now, regarding your constraints:
First of all, these types of constraints are not something that the internal model is designed for, since your constraint is discrete, in a sense: Either there is an overlap, or there isn't. The type of constraints the Gardner-model is designed for are continuous functions $c$, the value of which should fall between certain bounds, i.e. $$\lambda_{\text{lower}} \leq c(x,y) \leq \lambda_{\text{upper}}.$$
Additionally, these functions $c$ are hard to evaluate (i.e., on the order of the target function), meaning that we cannot afford to discard information from sampled points.
The good news is, that, at least intuitively, this doesn't sound like a particularly computationally expensive constraint. In your case, I would thus use @bwheelz36's approach of dealing with constraints, which involves a surrogate target function that returns a low value for infeasible regions. Consider something like this:
import numpy as np
from bayes_opt import BayesianOptimization

def target_function(x, y):
    return -x ** 2 - (y - 1) ** 2 + 1

def surrogate_target_function(x, y):
    if x**2 + y**2 < 3:
        return target_function(x, y)
    else:
        # this should be a value that is small enough to make the region unattractive for the optimizer
        # in particular it should be smaller than the lowest sensible value your target function could return.
        return -20

pbounds = {'x': (0, 6), 'y': (0, 6)}

optimizer = BayesianOptimization(
    f=surrogate_target_function,
    pbounds=pbounds,
    random_state=1,
)

optimizer.maximize(
    init_points=2,
    n_iter=50,
)

Regarding the recent bug, please make sure your minimal, reproducible examples are complete to so that all the relevant information is there and that the code is executable. See here for more info on how to do this. Right now, the target function is not particularly relevant, so it was good that you didn't include it, but the exact way that the constraint function is calculated is important, so it should be included. Please make sure that your example is actually runnable. Since I can't run your code, it is very hard for me to figure out why you're encountering an error.

If I set constraint_limit=0 it will prompt an error, so I set it to [0]

This is strange and shouldn't happen. Not sure what the problem is here. If you can provide a minimal example for this (or even just the stacktrace) I'd be very grateful.
I hope this is helpful to some degree.

The logging bug should be fixed in the linked PR. @qup20 to use this before the PR is merged, you can uninstall this package and reinstall the specific commit:
pip uninstall bayesian-optimization; pip install git+https://github.com/till-m/BayesianOptimization.git@67a7a497bc645a5bd9d69313f7d91d5707e51ebe

You are great! @till-m I am so grateful to you！The logger error has been solved following your hint. For your suggestion to set the proxy function to return a smaller value, I have tried it before but the optimization did not work well. But you reminded me that Garden-Model handles continuous functions and I modified my constraint to calculate the overlapping area of the rectangle and this result is somehow continuous. Anyway, with your help, all my problems are now solved, thanks again! Now I can happily tweak my parameters to get a desired optimization result, and I wish you all the best!


HHH-15463 Adjust JdbcType based on DDL capacity for varchar/varbinary like types

https://hibernate.atlassian.net/browse/HHH-15463

Will be merged as part of https://github.com/hibernate/hibernate-orm/pull/5239


Warnings on bucket analysis in integration tests

Currently, running integration tests show 95 warnings on "bucket analysis". Below is a sample output in cli_test.CLITest:
test_codegen_custom (integration_tests.cli_test.CLITest) ... WARNING:explainaboard:bucket analysis: feature src_num_oov not found, skipping
WARNING:explainaboard:bucket analysis: feature src_fre_rank not found, skipping
WARNING:explainaboard:bucket analysis: feature ref_num_oov not found, skipping
WARNING:explainaboard:bucket analysis: feature ref_fre_rank not found, skipping
WARNING:explainaboard:bucket analysis: feature tok_train_freq not found, skipping

If these warnings are not actionable nor critical, these warnings need to be turned off completely. In general, warnings needs to be actionable for users to indicate required actions to be taken. Otherwise, users would ignore them at all. In addition, leaving non-critical and non-actionable warnings makes logs in CI jobs longer and messy, which could increase a developer's cognitive load required to identify more relevant information from the logs.

Thanks! This is because these are training-set dependent features, but no training set is available.
I don't think this warning should be disabled entirely (because it can also be indicative of a bug or misconfiguration), but we can have a check specifically regarding training set dependent features and disable the warning in this case.

Oh, I'm suggesting disabling warnings in tests, not at the module level. If these warnings can be fixed, I'd love to fix them.

I think this behavior should be treated as an error, and the code have an explicit flag to control whether to rely on training-only feature or not. In most cases warnings are never useful since it behaves as just postponing exposure of potential bugs.
These features should have require_training_set flag that can be used to check the behavior.
https://github.com/neulab/ExplainaBoard/blob/84168a12d5886642089f0fc85c7a8f3a92a21b4c/explainaboard/analysis/feature.py#L58

Recently I met a runtime error around this: the test raise errors when I fixed a typing issues (skipped analysis returns None, but None was not treated appropriately by the caller). I think raising an error instead of a warning also makes the code flow simpler because we guarantee that the analysis always returns results.

Created #418 to provide a better control, but it still intentionally produces warnings.


Please add mr contribution

title: Mahakaleshwar Jyotirlinga
description: Issue no: #4

@harshvardhansb I resolved the conflicts but it wasn't working so I have made another pull request. Please consider this.


Many to Many Models

I love how you structured this. Would it be possible to add an example of many to many models? I'm having a difficult time getting them to work with your structure. The issue here is if you had a many to many model with heroes (going off the example from the SQL Model docs) you'd need to make a link table in the public/hero/models.py file. But what would the HeroCreate model look like? And what additional routes would you add in the routes.py file? Thank you so much!

Hey,
Thanks for the feedback. I'll check it and get back to you asap.
Thanks

No rush! Thanks so much for looking into it

Hi,
Just added the many to many relationship: https://github.com/anthonycepeda/fastapi-sqlmodel/pull/9
{
    "name": "Z-Force",
    "headquarters": "Sister Margaret’s Bar",
    "id": 1,
    "heroes": [
      {
        "secret_name": "Dive Wilson",
        "age": 24,
        "name": "Deadpond",
        "id": 1
      },
      {
        "secret_name": "John Goodman",
        "age": 30,
        "name": "Super-Good-Boy",
        "id": 2
      }
    ]
  }

Thanks


Fix: Remove data type protocol version checks

Checking whether a protocol version supports a particular type is not correct. Cassandra itself supports UDT, tuple, date, time, etc. while using protocol V3.

@adutra I think you originally added these protocol version checks, what are your thoughts on this? Personally I'm +1 on this change

What's the use case here? Are we trying e.g. to send a CQL duration value using protocol V3 to a Cassandra 4+ cluster?
I think I initially added those checks because protocol V3 specs don't know about CQL durations, so there is no "canonical" way to serialize those values in V3. By removing the checks, we are implicitly using whatever serialization was defined in a later spec (V5 in my example). It happens to work, but it kind of feels a bit hacky to me. If you need durations, why not switch to V5?
But anyways, I don't have strong feelings, so go ahead.

I'm something of an interloper here but for my $0.02 my initial reaction was basically the same as @adutra.  At least on a surface analysis this feels... kinda weird.  The duration case is a great example: we're allowing delivery of a type over v3 that... isn't supported by v3.  That seems wrong.  If a server happens to support it it might work... but a server could just as easily not do it?
Again, my opinion is least important here.  Maybe @mpenick can provide some more context here?

Cassandra itself doesn't do this validation and allows for any data type to be used with any protocol. These checks caused a failure (for a internal project) where a user was using the date type with V3, and it worked when used directly against DSE/C*/Astra.

Example:
Server doesn't  enforce this, and the java-driver isn't consistent, duration works with v3, but date/time don't. gocql doesn't not enforce datatypes per protocol either.
ccm create test -v 4.1.5 -n 1 -s
ccm node1 cqlsh
> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}
> USE test
> CREATE TYPE stuff (a text, b int);
> CREATE table unsupported (k text primary key, v1 stuff, v2 duration, v3 date, v4 time);

    public static void testNonSupportedTypePerVersion() {
        try (CqlSession session = CqlSession.builder()
                .withLocalDatacenter("datacenter1")
                .withConfigLoader(DriverConfigLoader
                        .programmaticBuilder()
                        .withString(DefaultDriverOption.PROTOCOL_VERSION, "V3")
                        .build())
                .build()) {
            Optional<UserDefinedType> udt = session.getMetadata().getKeyspace("test").get().getUserDefinedType("stuff");

            UdtValue u = udt.get().newValue().setString("a", "abc").setInt("b", 123);
            CqlDuration d = CqlDuration.newInstance(1, 1, 1);
            LocalDate dt = LocalDate.now();
            LocalTime t = LocalTime.now();

            // Insert works for all types
            session.execute("INSERT INTO test.unsupported (k, v1, v2, v3, v4) VALUES (?, ?, ?, ?, ?)", "key", u, d, dt, t);

            ResultSet rs = session.execute("SELECT * FROM test.unsupported");
            Row row = rs.one();
            System.out.println(row.getUdtValue("v1").getString("a"));
            System.out.println(row.getCqlDuration("v2")); // Success with duration??? :)
            System.out.println(row.getLocalTime("v3")); // Fails
            System.out.println(row.getLocalTime("v4")); // Fails
        }
    }

I thought UDTs were after V3, sorry for the confusion there.

What's the use case here? Are we trying e.g. to send a CQL duration value using protocol V3 to a Cassandra 4+ cluster?
I think I initially added those checks because protocol V3 specs don't know about CQL durations, so there is no "canonical" way to serialize those values in V3. By removing the checks, we are implicitly using whatever serialization was defined in a later spec (V5 in my example). It happens to work, but it kind of feels a bit hacky to me. If you need durations, why not switch to V5?
But anyways, I don't have strong feelings, so go ahead.

The problem is if the canonical transport server (C*) supports this, even if it is incorrect, then some user's applications, will inevitably and did, rely on the behavior. These checks make those applications incompatible for software that uses  go-cassandra-native-protocol to route traffic.


How to handle long pending pods in a TF-job?

In the production environment, we would run into some kinds of pod scheduling problems.
For example, one pod fails to get the volume, one pod fails to get the image, or the pod fails to schedule because the related node is broken. In these cases, these pods run into the pending stage. As a result, we have to ask users to delete the current TFjob, and restart a new Job.
However, this would waste resources. For example, we have a TFjob with 100 workers.  99 work come to start, and only one pod is pending. After a period of time, besides the pending pod, other pods already spent resources to train. it is not a good idea to restart this job.
Therefore, we hope the TF operator can retry these long-pending pods if these pending pods meet a certain rule.  Hope to learn advice from you. what do you think?  Thanks in advance

Eventually, pod should get into running state? why does it remain in pending?

Thanks for your reply, the pod would run into the pending stage  (a.k.a hang ) forever. we have to run a monitor script to find these poods and clean it, as a result, the tfjob would fail as a result. thus, we hope tf operator can find these pods and restart it.

Interesting. Does Tensorflow support restarting one or more workers?

I think the problem is how to find these bad pods. We cannot tell if the pod is actually pending or hanging.

can we have a white list to record the cases where these pods are hanging there forever? then, tf operator can find pod to restart based on the white list

@merlintang  Can you elaborate more on your proposal?

For these pending pod , we can find the related container state.
For example, one pod for its container (init container or job container) is running into the "ImagePullBackOff" / "CreateContainerConfigError"/ "CreateContainerError", and the restart_count > upper_bound, we would say this pod can not resume to work.  In this case, we need to restart this pod, then the scheduler would allocate this pod to a new node.
By this way, we can avoid one pending jobs forever.


JPA persister does not update state for lazily initialized entities

Apparently, JPAPersister tries to access @Id field directly -- but when the entity in question is a Hibernate proxy (enchanced by CGLIB or Javassist), the fields are always null and, actually, they are never used.
EDIT: Upgraded to 2.1, this behaviour is still reproducible.

Can you provide a test case to reproduce this?
I think the right way to address this is to allow annotation of a setter method - but I first want to reproduce the problem as in my hibernate testing - I always used Pojo instead of proxies.

Sure, I have some tests in my fork. I'll post a PR in a few minutes.

I've submitted 3.0 to Maven Central.  This includes support for accessing the State property via getter and setter methods.  As a result, it will invoke the proxy which load the Entity into memory.  Your tests are now passing

That seems to work. Thanks!


Upgrate to bitcoind 0.18.0

You may need to update the alpine version to get 0.18.
Also, we are using branch builds for this repository on dockerhub. If you didn't already, make sure the 0.18.0 tag of the docker image is mapped to this branch and don't delete it after merging :)

You may need to update the alpine version to get 0.18.
Also, we are using branch builds for this repository on dockerhub. If you didn't already, make sure the 0.18.0 tag of the docker image is mapped to this branch and don't delete it after merging :)

Thanks. No tag needed as we do branch build.

Only available on the edge branch
https://pkgs.alpinelinux.org/packages?name=bitcoin&branch=v3.10
https://pkgs.alpinelinux.org/packages?name=bitcoin&branch=edge


⚠ Bofrost.de has degraded performance

In f1af047, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 6481 ms

Resolved: Bofrost.de performance has improved in d3f298e after 6 minutes.


Helper for tests that require asynchronous setup in the controlled page

In the course of writing https://github.com/GoogleChrome/sw-helpers/pull/1 I've found a few situations where I need to run a test that executes code on the controlled page via WebDriverexecuteScriptAsync(), but that script needs to wait until something has happened on the controlled page before it's executed.
To give a concrete example, at https://github.com/GoogleChrome/sw-helpers/pull/1/files#diff-a18887f4e658273661a3d4f9f0f4f364R155, I'm testing whether a master entry for a page with an App Cache manifest is present in the Cache Storage API, but I need to wait until after App Cache manifest helper code on the page has run before performing that test.
I've been working around this by delaying the WebDriverexecuteScriptAsync() call via setTimeout(), but that's obviously ugly and error prone. I could imagine a runtime library provided by sw-testing-helpers creating a global readyToTest promise that the code being tested would resolve when setup was complete. That might also require the code being tested to detect when it's being run via WebDriver if we wanted to avoid that promise leaking out into production code.

The way I've been handling this is to use
driver.wait(function() {
return driver.executeScript(function() {
return (true or false depending on state);
});
});
This will loop until you return true. In your case you might want to loop checking for some flag set by your code to say it's finished or to keep looking for a particular value in the cache. This is how the running of mocha tests in a page is managed.
It does feel like a common pattern, but I'm concerned that it'll add a dependency on the test (i.e. code will be added to projects to check if the testing framework is there or not), which is a bad signal to this approach.

Yeah, I'm concerned about test code leaking into production code, too. There's a discussion at http://stackoverflow.com/a/26689086/385997 about detecting when your code is being run by Selenium.
I guess what I'm proposing is a way of standardizing that "true or false depending on state" check to avoid each project having to implement their own specific "I'm ready" flag. If it were promise-based that could make it even easier.


Language-independent

Should this just be a repository for build and storing binaries with node-protodefc retrieving them, or should this repository build the binaries and provide a Node module exposing the API. I believe that having this repo just be for CI would make sense, and we can move all the JavaScript logic and release downloading into node-protodefc

Just realized now that I misspelt this. lol


bpf: do not error out in init if jit was not compiled in

The init script uses set -e, so if echo 1 > /proc/sys/net/core/bpf_jit_enable
fails, we bail out and cannot start Cilium. Make this non-fatal,
and just continue running in interpreter mode. Reported through
Cilium Slack channel.
Reported-by<EMAIL_ADDRESS>Signed-off-by: Daniel Borkmann<EMAIL_ADDRESS>
Fix for allowing Cilium to run with BPF interpreter instead of JIT when JIT is compiled out.

Updated bpf.sha


[Snyk] Upgrade next from 13.3.0 to 13.5.6

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade next from 13.3.0 to 13.5.6.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 290 versions ahead of your current version.
The recommended version was released 2 months ago, on 2023-10-18.

The recommended version fixes:

Severity
Issue
PriorityScore (*)
Exploit Maturity

Resource Exhaustion SNYK-JS-NEXT-6032387
586/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 5.3
Proof of Concept

Improper Input Validation SNYK-JS-POSTCSS-5926692
586/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 5.3
No Known Exploit

(*) Note that the real score may have changed since the PR was raised.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Closing this one because unfortunately, it's not a version compatible with the NX version we use and the build for the react/nextjs example fails.