Cannot use OpenAI Key

Describe the bug
After following the installation instructions, OpenDevin launches, but it is unable to perform tasks because the OpenAI key is not recognized.
Setup and configuration
Current version:
Latest version
My operating system:
MacOS Sonoma
Docker Desktop 4.29.0 (145265)

My environment vars and other configuration (be sure to redact API keys):
export LLM_API_KEY="sk-..."
export WORKSPACE_DIR=/Users/ ...
My model and agent (you can see these settings in the UI):
Defaults
Commands I ran to install and run OpenDevin:
docker run
-e LLM_API_KEY
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_DIR
-v $WORKSPACE_DIR:/opt/workspace_base
-v /var/run/docker.sock:/var/run/docker.sock
-p 3000:3000
ghcr.io/opendevin/opendevin:main
Steps to Reproduce:

Follow installation instructions.

Logs, error messages, and screenshots:
Additional Context
docker run
-e LLM_API_KEY
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_DIR
-v $WORKSPACE_DIR:/opt/workspace_base
-v /var/run/docker.sock:/var/run/docker.sock
-p 3000:3000
ghcr.io/opendevin/opendevin:main
==============
STEP 0
14:03:45 - PLAN
hi
14:03:45 - opendevin:ERROR: agent_controller.py:107 - OpenAIException - Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 414, in completion
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 350, in completion
openai_client = openai(
^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/openai/_client.py", line 100, in init
raise openaiError(
openai.openaiError: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable
14:03:45 - opendevin:ERROR: agent_controller.py:76 - Error in loop
Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 414, in completion
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 350, in completion
openai_client = OpenAI(
^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/openai/_client.py", line 100, in init
raise OpenAIError(
openai.OpenAIError: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 1007, in completion
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 980, in completion
response = openai_chat_completions.completion(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 422, in completion
raise OpenAIError(status_code=500, message=traceback.format_exc())
litellm.llms.openai.OpenAIError: Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 414, in completion
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 350, in completion
openai_client = OpenAI(
^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/openai/_client.py", line 100, in init
raise OpenAIError(
openai.OpenAIError: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app/opendevin/controller/agent_controller.py", line 74, in start_loop
finished = await self.step(i)
^^^^^^^^^^^^^^^^^^
File "/app/opendevin/controller/agent_controller.py", line 101, in step
action = self.agent.step(self.state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/agenthub/monologue_agent/agent.py", line 217, in step
resp = self.llm.completion(messages=messages)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 289, in wrapped_f
return self(f, *args, **kw)
^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 379, in call
do = self.iter(retry_state=retry_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 314, in iter
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 382, in call
result = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/app/opendevin/llm/llm.py", line 48, in wrapper
resp = completion_unwrapped(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 2947, in wrapper
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 2845, in wrapper
result = original_function(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 2127, in completion
raise exception_type(
^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 8573, in exception_type
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 7361, in exception_type
raise AuthenticationError(
litellm.exceptions.AuthenticationError: OpenAIException - Traceback (most recent call last):
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 414, in completion
raise e
File "/app/.venv/lib/python3.12/site-packages/litellm/llms/openai.py", line 350, in completion
openai_client = openai(
^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/openai/_client.py", line 100, in init
raise openaiError(
openai.openaiError: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable

Can you please try:
...-e LLM_API_KEY=$LLM_API_KEY -e WORKSPACE_MOUNT_PATH=$WORKSPACE_DIR ...

Thanks enyst. I wanted to let you know that I'm closing this request as your solution worked for me.


Java generics cause errors in is conditions

The following statement
if (is JavaType<ParamType> value)

results in an error, whereas
assert (is JavaType<ParamType> value)

only results in a warning.
When one has to deal with Java code, this sometimes forces workarounds like (thanks @jvasileff )
if (is JavaType<out Anything> value) {
    assert (is JavaType<ParamType> value);
    ...
}

The workaround is not safer but it is harder to read, plus the inconsistency that allows for it isn't obvious.
I'd suggest changing the error into a warning.

This is behavior intentional, as discussed in #5738, and I still quite strongly believe it's the most correct thing.

The workaround is not safer but it is harder to read

However, it's still better, since it makes explicit the fact that something is being asserted, rather than tested.
You're welcome to make further comments on #5738, but I'm going to close this one.


Read BDD Tests : get one promotion

As a Developer
I need to describe the behavior of get one promotion
So that I can test the feature under DBB
Details & Assumptions:

Write the feature using Gherkin syntax that is understood by the behave tool

Acceptance Criteria:
When run tests using `behave`
Then I should see “Read a promotion” scenario pass

IBM Cloud toolchain: Delivery Pipeline deployed promotions to prod, including commits 58999f70a096e37b24e95f2fc07a43f0096de8d5, b5efe3810776eb463a02bca12d2a58a8f869a02b, 362b82b1c2d7b4377b8f2a769effd6349c03a36a


Top-level router hooks not working

I'm just working through the migration to v8.0.1 and I'm experiencing an issue where the top-level before and after hooks are not being called prior to the individual route lifecycle being invoked. Here is an example of my initialisation:
let router = new Navigo('/');

router.hooks({
            before: (done, match) => { debugger; /* never gets hit */ },
            after: (match) => { debugger; /* never gets hit */ }
        });

router.on({
            '/foo': {
                as: 'fooRoute',
                uses: (match) => { debugger; },
                hooks: {
                    before: (done, match) => { debugger; done(); },
                    after: (match) => { debugger; }
                }
            }
        });

router.resolve();

I'm unable to hit the top-level before or after router hooks either coming directly in on /foo or using .navigate('/foo')
Have I set this up incorrectly?

On inspection of the source, am I correct in thinking that if I supply hooks in my route definition, this will overwrite any generic hooks I've defined against the router?
routes.push(createRoute(p, handler, hooks || genericHooks, name));

On inspection of the source, am I correct in thinking that if I supply hooks in my route definition, this will overwrite any generic hooks I've defined against the router?
routes.push(createRoute(p, handler, hooks || genericHooks, name));

@rjgamble you are absolutely right. I assumed that this is the expected behavior. In a sense of the library offers generic hooks applied to all routes and specifically opens a door to set custom hooks for individual routes. What is your expectation and use case?

@rjgamble you are absolutely right. I assumed that this is the expected behavior. In a sense of the library offers generic hooks applied to all routes and specifically opens a door to set custom hooks for individual routes. What is your expectation and use case?

@krasimir I'd like to do both. I have a set of tasks I need to perform for every route that is resolved as well as specific tasks for individual routes.
You may recall our email discussion about this a few weeks ago. We use the generic before hook to determine a subsequent component router to handle the route lifecycle methods specific to the area of the application you're in. From our email exchange:

Named routes: We have many component areas within our application and we used named routes in the hooks and route handlers to call a factory that produces a component router that we can pass all of the route variables to, to process. This keeps our main router class simple and only responsible for detecting, registering and resolving routes. What happens with that route information is then up to the responsibility of the component router.
We make use of the global before hook to challenge the resolved route and work out which component handler we need.

Here is our implementation of the generic before hook in v7:
    _onRouteFound = (done, params) => {
        let resolvedRoute = this._router.lastRouteResolved();

        if (resolvedRoute && this._componentRouters.has(resolvedRoute.name)) {
            this._currentComponentRouter = this._componentRouters.get(resolvedRoute.name);
        } else {
            this._currentComponentRouter = this._componentRouters.get('base');
        }

        done();
    }

Please let me know your thoughts on this?

@krasimir I'd like to do both. I have a set of tasks I need to perform for every route that is resolved as well as specific tasks for individual routes.
You may recall our email discussion about this a few weeks ago. We use the generic before hook to determine a subsequent component router to handle the route lifecycle methods specific to the area of the application you're in. From our email exchange:

Named routes: We have many component areas within our application and we used named routes in the hooks and route handlers to call a factory that produces a component router that we can pass all of the route variables to, to process. This keeps our main router class simple and only responsible for detecting, registering and resolving routes. What happens with that route information is then up to the responsibility of the component router.
We make use of the global before hook to challenge the resolved route and work out which component handler we need.

Here is our implementation of the generic before hook in v7:
    _onRouteFound = (done, params) => {
        let resolvedRoute = this._router.lastRouteResolved();

        if (resolvedRoute && this._componentRouters.has(resolvedRoute.name)) {
            this._currentComponentRouter = this._componentRouters.get(resolvedRoute.name);
        } else {
            this._currentComponentRouter = this._componentRouters.get('base');
        }

        done();
    }

Please let me know your thoughts on this?

Yep. That makes sense. Actually if I fix this I'll open a door for another feature that I'm struggling with. I'll keep you posted.

Yep. That makes sense. Actually if I fix this I'll open a door for another feature that I'm struggling with. I'll keep you posted.

Hey @rjgamble,
There is a new 8.2.0 version that respects the existence of generic hooks and bundles them together with the route specific hooks. The order of execution is first the generic one then the one defined in the route. The unit test for this change is here:
const whatHappened = [];
const r: NavigoRouter = new Navigo("/");
const createHooks = (prefix) => ({
  before(done, match) {
    whatHappened.push(prefix + "before");
    done();
  },
  after() {
    whatHappened.push(prefix + "after");
  },
  already() {
    whatHappened.push(prefix + "already");
  },
  leave(done) {
    whatHappened.push(prefix + "leave");
    done();
  },
});

r.hooks(createHooks("generic_"));

r.on("/foo/bar", jest.fn(), createHooks("route_"));

r.navigate("/foo/bar");
r.navigate("/foo/bar");
r.navigate("/boo");

expect(whatHappened).toStrictEqual([
  "generic_before",
  "route_before",
  "generic_after",
  "route_after",
  "generic_already",
  "route_already",
  "generic_leave",
  "route_leave",
]);

So basically we have the following invocation:
"generic_before",
"route_before",
"generic_after",
"route_after",
"generic_already",
"route_already",
"generic_leave",
"route_leave",

Can you try on your side and let me know if it works as expected.

Hey @rjgamble,
There is a new 8.2.0 version that respects the existence of generic hooks and bundles them together with the route specific hooks. The order of execution is first the generic one then the one defined in the route. The unit test for this change is here:
const whatHappened = [];
const r: NavigoRouter = new Navigo("/");
const createHooks = (prefix) => ({
  before(done, match) {
    whatHappened.push(prefix + "before");
    done();
  },
  after() {
    whatHappened.push(prefix + "after");
  },
  already() {
    whatHappened.push(prefix + "already");
  },
  leave(done) {
    whatHappened.push(prefix + "leave");
    done();
  },
});

r.hooks(createHooks("generic_"));

r.on("/foo/bar", jest.fn(), createHooks("route_"));

r.navigate("/foo/bar");
r.navigate("/foo/bar");
r.navigate("/boo");

expect(whatHappened).toStrictEqual([
  "generic_before",
  "route_before",
  "generic_after",
  "route_after",
  "generic_already",
  "route_already",
  "generic_leave",
  "route_leave",
]);

So basically we have the following invocation:
"generic_before",
"route_before",
"generic_after",
"route_after",
"generic_already",
"route_already",
"generic_leave",
"route_leave",

Can you try on your side and let me know if it works as expected.

Hi @krasimir Thank you for taking a look at this and getting back to me. I've updated to 8.4.1 today and I can see that both generic and route specific hooks are executing and in the order you've specified above.
Can I ask, did you intend to change the order the after hooks are executed in?
In v7 it goes:

generic before -> route specific before -> route handler -> route specific after -> generic after

In v8 it goes:

generic before -> route specific before -> route handler -> generic after -> route specific after

Hi @krasimir Thank you for taking a look at this and getting back to me. I've updated to 8.4.1 today and I can see that both generic and route specific hooks are executing and in the order you've specified above.
Can I ask, did you intend to change the order the after hooks are executed in?
In v7 it goes:

generic before -> route specific before -> route handler -> route specific after -> generic after

In v8 it goes:

generic before -> route specific before -> route handler -> generic after -> route specific after

@rjgamble the hooks in the new implementation are array of functions. So the order of execution follows the fifo principle. Because the generic hooks are added first into the array they are executed first. Is this causing a lot of issues on your side.

@rjgamble the hooks in the new implementation are array of functions. So the order of execution follows the fifo principle. Because the generic hooks are added first into the array they are executed first. Is this causing a lot of issues on your side.

@krasimir understood.
It did cause an issue initially because I had some logic in the generic after hook to tidy up some temporary cache data that was stored for the duration of the route lifecycle however I have made changes to work around it.
If you intend to keep it the way it is is v8 i.e. FIFIO, please feel free to close this issue.

@krasimir understood.
It did cause an issue initially because I had some logic in the generic after hook to tidy up some temporary cache data that was stored for the duration of the route lifecycle however I have made changes to work around it.
If you intend to keep it the way it is is v8 i.e. FIFIO, please feel free to close this issue.

Yep. Sorry, that's an essential design decision that I did to support some features in navigo-react.

Yep. Sorry, that's an essential design decision that I did to support some features in navigo-react.


update MODEL_MAX_TOKENS for code-llama

MODEL_MAX_TOKENS for code-llama should be 2048
https://github.com/facebookresearch/llama/issues/148

I was just looking into this and respectfully disagree with the reference you mention. As this is a Code Llama (instruct) model, and not the original Llama model, the token sizes are mentioned in the white paper available here
Specifically, Section J - Model card mentions:

Code Llama and its variants are autoregressive language models using optimized
transformer architectures. Code Llama 7B and 13B additionally support infilling text
generation. All models were fine-tuned with up to 16K tokens, and support up to 100K
tokens at inference time.

I am running the 13B model successfully so far with a token size of 4096. See this issue.

Okay thanks for the update. Cos I was running open interpreter and had to manual switch this to 2048 to make it working. Thought that 2048 was the correct parameter. Thanks for the update.


Support Groovy configuration and functions

Hello, and thank you for building an awesome API testing tool!
My organization is primarily a Java shop, and we use Groovy extensively for testing, DevOps tools, and other automation. In using Karate, it would streamline our development if we could define configuration and reusable functions in Groovy, rather than JavaScript. In my opinion, these aspects of Groovy make it a great fit for Karate:

It is a JVM language
Java interop is seamless
Familiar Java-like syntax, but much more concise
Dynamic language (like JavaScript), but with optional static typing
Excellent functional programming features
String interpolation
Many other scripting-level features built into the Groovy language

It is worth noting that a number of popular enterprise-level technologies support Groovy configuration, including Gradle and Jenkins, which my company uses for build automation.
Here is an example usage, converted from the Karate README on "JavaScript Functions" to use a Groovy closure:
* def greeter = { name -> 'hello ' + name }
* assert greeter('Bob') == 'hello Bob'

Java interop is simpler (i.e., it just works):
* def dateStringToLong = { new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(it).time }
* assert dateStringToLong("2016-12-24T03:39:21.081+0000") ==<PHONE_NUMBER>081

Note that Groovy context can have automatic imports, in this case just adding import java.text.SimpleDateFormat to the default imports for the Groovy script runner.
Calling functions with JSON arguments, and using string interpolation:
* def greeter = { name -> "Hello $name.first $name.last!" }
* def greeting = call greeter { first: 'John', last: 'Smith' }

Here is karate-config.groovy, adapted from the karate-config.js example:
// an example using Groovy's shorthand ternary operator "?:"
// for custom 'intelligent' defaults
env = karate.env ?: 'dev'

// string interpolation
karate.log("karate.env system property was: $env")

// native Java Map and List syntax
config = [
    appId: 'my.app.id',
    appSecret: 'my.secret',
    someUrlBase: 'https://some-host.com/v1/auth/',
    anotherUrlBase: 'https://another-host.com/v1/',
    fallbackPorts: [9998, 9997]
]

// over-ride specific settings
if (env == 'stage') {
    config.someUrlBase = 'https://stage-host/v1/auth'
} else if (env == 'e2e') {
    config.someUrlBase = 'https://e2e-host/v1/auth'
}

// don't waste time waiting for a connection or if servers don't respond within 5 seconds
karate.configure('connectTimeout', 5000)
karate.configure('readTimeout', 5000)

return config

As you can see, although it looks Java-like, it has the dynamic power of JavaScript, but is more flexible. The script itself does not need to be wrapped in a function, there are no semi-colons, default imports can be added, any Java library can be easily added as a dependency and leveraged in the config script or reusable function, native Map and List syntax is easy and understandable, etc.
Is this a feature you would be willing to support? If so, I can volunteer to contribute it. Do let me know if you have any questions.
Thanks for the consideration!

@thecodesmith thanks ! and really thanks for thinking through this and the details.
I'll be honest, as of now I'm not keen to add this to core. I can see how this appeals to those who use Groovy a lot. The eval keyword solves for the function wrapping point. The Java.type() is a reasonable way to do an import and that too just-in-time / on-the-fly. I'll grant the point on semicolons for multi-line code. But my main push is that Karate tries to get you to "think in JSON" and arguably, the JSON forms are more understandable than the Groovy List / Map equivalents.
I also feel good about Karate's light-weight-ness in terms of dependencies, and from my past experience Groovy would add quite a bit of JAR size. Which would impact the stand-alone JAR, UI etc.
That said, I'm open to supporting this as an optional karate-groovy dependency, so if you want to submit a PR for that, we can discuss further.

@ptrthomas Thanks for the consideration, and the quick reply. I do think an optional dependency would be the way to go, for the reasons you mentioned. There would be no need to make it the default. I would like to implement it and submit a PR, if you give the green light. Do you have any additional thoughts or direction you would like to provide before I would start on it?

@thecodesmith sure. one of the nice things about Nashorn (the JS engine) is that it is built into the JVM. come to think of it, there is a fair amount of wrapping going on, to make it work with Karate - for example see this: https://github.com/intuit/karate/blob/master/karate-core/src/main/java/com/intuit/karate/ScriptBindings.java
So JS is the "default" script expected, supported not just as files but as in-line "expressions". take a look at this section in the doc: https://github.com/intuit/karate#karate-expressions
so injecting Groovy may be harder than you may have expected. unless we take a decision that we will support it only for files with the .groovy extension or something like that.
for "inline" Groovy, we could do it similar to the yaml keyword: https://github.com/intuit/karate#yaml
the challenge is to inject the karate object and a few other helpers (e.g. the read function) so do think through more !
this is what ends up as the karate object: https://github.com/intuit/karate/blob/master/karate-core/src/main/java/com/intuit/karate/ScriptBridge.java - it looks reasonably clean, and it doesn't hard-code an expectation of JS but you may need to extend this class to support a "GROOVY_MAP" type or something. If we need "GROOVY_LIST" and "GROOVY_FUNCTION" also, things may get a little more complex than your bargained for.

@ptrthomas Thanks for the overview, that helps provide a starting point. I will dig into it and see how it goes.

closing this due to inactivity

@thecodesmith thanks !


Inconsistent of reproduced results and paper's results.

Hi,
I tried to reproduce the results for VTAB given in paper, but I have the following results:

The results are pretty different to given ones.
And here is my cifar_100 result:

Here is my running environment:
Hardware: 3090*4
Python 3.10.0
CUDA&Pytorch:

cuda 11.6.1
pytorch 1.13.1
torchvision  0.14.1
timm 0.6.5

I use a newer version of toolkit because of some compatible problem happened between 3090 driver and cuda 10, cudnn 7

Hi, did you manage to implement the fine tune results with these codes, I found there is a huge gap between the paper and this codebase's.

Hi, did you manage to implement the fine tune results with these codes, I found there is a huge gap between the paper and this codebase's.

I only change the environment to newer version of Pytorch. I have this GAP problem too.

This code is completely different from the idea in the paper, for example, there is no freezing of parameter layers during training.
And the code did not implement reparameterization technology during the inference phase.
I am very confused.

I also try to reproduce the result, and the result of my reproduced result on cifar100 is also 93.81, instead of the reported 93.99.
looking forward to the authors' reply.

I will try it again. Thanks for your advice!

For VTAB-1K, since its setting is very close to few shot which is highly depend on the random seed, my personal suggestion is fixed the cuda,pytorch,torch.backends seed, this also may cause the difference. It seems the author code based on the timm repo  and timm only fix the pytorch seed but other random factors are not fixed.
I don't know the author. But I am actually quite surprised someone questioned the 0.18 acc difference...


Some EKS-Distro worker nodes are not able to join the cluster (no errors in terminal)

Please run microk8s inspect and attach the generated tarball to this issue.
inspection-report-worker.tar.gz
inspection-report-control.tar.gz

I used the instructions here https://snapcraft.io/eks
I additionally added the user permissions as in this link. There was no problem with joining two nodes. But the third node does not join (as seen by running sudo eks kubectl get nodes  (attached terminal screenshot). There is no error. I tried multiple times but the result is the same (even with restarting the node).

Hi @saurabhkumar

There was no problem with joining two nodes. But the third node does not join (as seen by running sudo eks kubectl get nodes (attached terminal screenshot).

I am not sure I understand the issue. I see in the attached output three "Ready" nodes.

@ktsakalozos
Hi,
When I did eks join  for the fourth node, there was no error message (the first part of screenshot). But the node cannot be seen with the eks kubectl get nodes  command (the second part of the screenshot).
Update today: I removed eks on all VMs and reinstalled it again today using exactly the same procedure and sequence. I repeated the eks join commands and now I see all the four nodes. So I am not sure where exactly the problem was.


How to generate signed apk in Android Studio (Upload to PlayStore)

Hi i am newbie into flutter, I am trying to generate signed apk which needs to be published to PlayStore. Please help me out in generating signed apk.
Any help would be appreciated.

please follow carefully this step:
https://flutter.dev/docs/deployment/android

Hi @mdzafar3194
This platform is not met for assistance on personal code.
Please follow the link provided by @mdzafar3194  (thank you)
you may also get some help if you post it on Stack Overflow.
Closing, as this isn't an issue with Flutter itself,
if you disagree please write in the comments and I will reopen it
Thank you

please follow carefully this step:
https://flutter.dev/docs/deployment/android

Thanks


fix: camera session is bound and idle on unmount [Android]

What

This PR fixes camera device and session resource cleanup when unmounted for Android devices. Additionally this build resolves a number of build issues relating to reading project configuration.
Changes

Adds camera provider unbinding in onDetachedFromWindow.
Fixes minSdkVersion in android/build.gradle to read from root project.
Fixes FOR_HERMES in android/build.gradle to read from root project.
Fixes abiFilters in android/build.gradle to read from gradle.properties.

Tested on

Samsung S10-S22, Samsung XCover Pro V3-6, Pixel 3a-6
Related issues

Resolves #1685

good point!

Hey, thanks for your PR - unfortunately the build failed.
> Cannot invoke method toInteger() on null object

Can you fix that? Otherwise we're good to go!

okay whatever I'll do it myself.


Update the content of the try-it.md

Update the content of the try-it.md to be aligned with the current state of the metal3 project.

/cc fmuyassarov

This PR was recreated as https://github.com/metal3-io/metal3-io.github.io/pull/218 .


[contrib esx] removed org.apache.sling.commons.json dependencies and lceaned up the demo" esx/

[contrib esx] removed org.apache.sling.commons.json dependencies and updated the demo

linked in jira ticket: https://issues.apache.org/jira/browse/SLING-6763


Queries are changed before being sent to spark/Spark hints are stripped from query

We're using superset on top of the Spark Thriftserver. We noticed that the queries we enter are being changed before they are sent to Spark. For example Spark hints that we included in the query in Superset don't make it to the Spark Thriftserver. Running the same query against the Spark thriftserver using beeline works as expected and the hints make it to/are shown in the Spark Thriftserver and are applied to the execution plan.
How to reproduce the bug

Run superset on top of Spark Thriftserver, config like so hive://hive@{hostname}:{port}/{database} as described in the docs https://superset.apache.org/docs/databases/spark-sql
Run a query like

SELECT /*+ BROADCAST(Table 2) */ COLUMN
FROM Table 1 join Table 2
on Table1.key= Table2.key

Check the query in the SQL tab of the Spark Thriftserver and notice the /*+ BROADCAST(Table 2) */ part is missing
Check the execution plan and notice the broadcast isn't there
Rinse and repeat but use beeline instead of superset and see it working

Expected results
Queries aren't changed before being sent to the underlying query engine.
Actual results
Query is changed before being sent to the underlying query engine and an important part of the query is lost.
I did a brief search trying to find why/where this is happening in the code but couldn't find it.
Environment

Superset 1.3.2
Spark 3.2.0

:gun: stale

Closing this as stale since it's been silent for so long, and we're trying to steer toward a more actionable Issues backlog. If people are still encountering this in current versions (currently 3.x) please re-open this issue, open a new Issue with updated context, or raise a PR to address the problem. Thanks!


[Bug] Inconsistent state for elasticstack_kibana_synthetics_monitor

Describe the bug
I was trying to provision a new monitor using the elasticstack_kibana_synthetics_monitor resource and get the following error
elasticstack_kibana_synthetics_monitor.monitors["test"]: Creating...
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to elasticstack_kibana_synthetics_monitor.monitors["test"], provider
│ "provider[\"registry.terraform.io/elastic/elasticstack\"]" produced an unexpected new value: .space_id: was null, but
│ now cty.StringVal("default").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to elasticstack_kibana_synthetics_monitor.monitors["test"], provider
│ "provider[\"registry.terraform.io/elastic/elasticstack\"]" produced an unexpected new value: .service_name: was null,
│ but now cty.StringVal("").
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵
Releasing state lock. This may take a few moments...

To Reproduce
Sample Code
resource "elasticstack_fleet_agent_policy" "synthetics_policy" {
  name            = "synthetics"
  description     = "Agent policy for kibana synthetics"
  namespace       = "default"
  monitor_logs    = true
  monitor_metrics = true
  skip_destroy    = false
}

resource "elasticstack_kibana_synthetics_private_location" "locations" {
  label           = "internal"
  agent_policy_id = elasticstack_fleet_agent_policy.synthetics_policy.policy_id
  tags            = ["us-east-1"]
}

resource "elasticstack_kibana_synthetics_monitor" "monitors" {
  name      = "network-test-monitor"
  schedule  = 1
  enabled   = false
  tags      = ["us-east-1"]
  private_locations = ["internal"]
  alert = {
    status = {
      enabled = false
    }
    tls = {
      enabled = false
    }
  }
  timeout      = 10
  icmp = {
    host = "<IP_ADDRESS>"
  }
}

Expected behavior
The monitor for icmp should be created without any errors
Versions (please complete the following information):

OS: Mac Sonoma 14.7
Terraform Version 1.5.2
Provider version v0.11.12
Elasticsearch Version 8.15.1

Hi @AnanthRavi , as I see the issue is: you didn't provide space_id and service_name, and the assigned value different from empty values.
Could you try as a workaround assign values to these fields? In your case I assume that should be
space_id = "default"
service_name = ""


Return type still optional after none coalescing

function main() {
   let x: String? = None
   let y = x ?? "a string"
}

The generated return type of y is Optional<String> but it should be String.

I believe this should be fixed by 5ae0387dc


MM-31564: backend support for inviting groups

Summary
Extend the data model and REST API to support automatically inviting LDAP groups. No frontend logic is exposed at this time.
To test this in development, you'll need to be running a server with https://github.com/mattermost/mattermost-server/pull/17232 merged. First enable sign-in and sync with ldap (MM_LDAPSETTINGS_ENABLE=true, MM_LDAPSETTINGS_ENABLESYNC=true). The default Makefile scripts create a set of groups and users for authenticating with LDAP; leverage this next by logging in (and then out) of at least two LDAP users (board.one and board.two, using password Password1).
In the System Console under /admin_console/user_management/groups, link the board group:

then Configure that group to enable Group Mentions:

While you're in here, make sure the group shows the two users previously logged in:

Now create a playbook and look up its id for the team in question (here agg39hruzjyrjpibo56ndsq93r). I prefer using https://httpie.io/, but use any HTTP client as necessary:
> http :8065/plugins/com.mattermost.plugin-incident-management/api/v0/playbooks team_id==agg39hruzjyrjpibo56ndsq93r
HTTP/1.1 200 OK
Content-Length: 540
Content-Type: text/plain; charset=utf-8
Date: Fri, 26 Mar 2021 15:21:47 GMT

{
    "has_more": false,
    "items": [
        {
            "broadcast_channel_id": "",
            "checklists": [],
            "create_at":<PHONE_NUMBER>659,
            "create_public_incident": false,
            "default_commander_enabled": false,
            "default_commander_id": "",
            "delete_at": 0,
            "description": "",
            "id": "4e67x71xr3rpix1wwos6sccszw",
            "invite_users_enabled": false,
            "invited_group_ids": [],
            "invited_user_ids": [],
            "member_ids": [],
            "num_stages": 1,
            "num_steps": 1,
            "reminder_message_template": "",
            "reminder_timer_default_seconds": 0,
            "team_id": "agg39hruzjyrjpibo56ndsq93r",
            "title": "Group Invite Updated"
        }
    ],
    "page_count": 1,
    "total_count": 1
}

Note that automation configuration does /not/ show up when querying playbooks in bulk, so fetch the specific playbook in detail before modifying any fields:
> http :8065/plugins/com.mattermost.plugin-incident-management/api/v0/playbooks/4e67x71xr3rpix1wwos6sccszw
HTTP/1.1 200 OK
Content-Length: 808
Content-Type: text/plain; charset=utf-8
Date: Fri, 26 Mar 2021 15:23:12 GMT

{
  "id": "4e67x71xr3rpix1wwos6sccszw",
  "title": "Group Invite Updated",
  "description": "",
  "team_id": "agg39hruzjyrjpibo56ndsq93r",
  "create_public_incident": false,
  "create_at":<PHONE_NUMBER>659,
  "delete_at": 0,
  "num_stages": 1,
  "num_steps": 1,
  "checklists": [
    {
      "id": "",
      "title": "New stage",
      "items": [
        {
          "id": "",
          "title": "Test 2",
          "state": "",
          "state_modified": 0,
          "state_modified_post_id": "",
          "assignee_id": "",
          "assignee_modified": 0,
          "assignee_modified_post_id": "",
          "command": "",
          "command_last_run": 0,
          "description": ""
        }
      ]
    }
  ],
  "member_ids": [
    "1y119zymp3fh8gkejbtazm5wmc"
  ],
  "broadcast_channel_id": "",
  "reminder_message_template": "",
  "reminder_timer_default_seconds": 0,
  "invited_user_ids": [
    "1y119zymp3fh8gkejbtazm5wmc"
  ],
  "invited_group_ids": [],
  "invite_users_enabled": true,
  "default_commander_id": "",
  "default_commander_enabled": false
}

Note that the playbook above has invite_users_enabled enabled and even a user id to invite, but an empty set of invited_group_ids. Looking up the right group is perhaps easiest via SQL:
mattermost_test=# select * from usergroups;
             id             | name  | displayname | description | source |               remoteid               |   createat    |   updateat    | deleteat | allowreference
----------------------------+-------+-------------+-------------+--------+--------------------------------------+---------------+---------------+----------+----------------
 rgjnp9pmuj8ajrxfp6y1fc6sfa | board | board       |             | ldap   | df14c416-2107-103b-88b5-35b46ae25e10 |<PHONE_NUMBER>558 |<PHONE_NUMBER>335 |        0 | t
(1 row)

Now issue a PUT command to update the playbook. This can be done as a one-liner:
http :8065/plugins/com.mattermost.plugin-incident-management/api/v0/playbooks/4e67x71xr3rpix1wwos6sccszw team_id==agg39hruzjyrjpibo56ndsq93r | jq ' .invited_group_ids = ["rgjnp9pmuj8ajrxfp6y1fc6sfa"] | http PUT :8065/plugins/com.mattermost.plugin-incident-management/api/v0/playbooks/4e67x71xr3rpix1wwos6sccszw

Now, go and start an incident using this playbook and confirm that board.one and board.two are added automatically to the channel:

Edge cases to verify, most of which are covered by unit tests:

It should not be possible to configure a group for which mentions are disabled, otherwise one could leak the contents of that group. (Enabling mentions for a group warns the sysadmin that the contents are effectively now public.)
While the frontend doesn't support changing the groups right now (it will later!), it shouldn't clobber the group setting when a playbook is saved.
It should be possible to create a playbook with a group automation via the API.
Multiple groups, only some of which support mentions.
Configuring a group should work even without https://github.com/mattermost/mattermost-server/pull/17232 merged, but an error will be logged if the plugin can't invoke the new Group APIs to enumerate the contents of the group. This should have no visible side effects, meaning we don't need to bump the minimum server version at this time.

Ticket Link
Relates-to: https://mattermost.atlassian.net/browse/MM-31564

Oops, should have kept reviewers consistent -- removing @cpoile and adding @agarciamontoro. (@cpoile, if you had feedback, I'm still all ears!)

Also, @agarciamontoro, on starting with the frontend changes, I realized that the enabled flag was meant to apply to each "line item" in the automation screen, so it might make sense to have a discrete invite_group_enabled or some such. I may push that here after the initial review.

Also, @agarciamontoro, on starting with the frontend changes, I realized that the enabled flag was meant to apply to each "line item" in the automation screen, so it might make sense to have a discrete invite_group_enabled or some such. I may push that here after the initial review.

@lieut-data, I think there is no need to add a new invite_group_enabled. The current toggle, invite_users_enabled, has the state of the invite users feature in general. Adding groups through the UI should occur on the same member selector we already have in the backstage, so we should rely on the state of invite_users_enabled.

@agarciamontoro, I'd love to be able to use the same member selector in the backstage, but I'm worried this going to be "hard". Besides the fact that the existing component is designed to consume profiles, not groups -- so we'd need to refactor to be more general -- it also has a usability problem of needing to search for and enumerate groups in addition to users all in a single scrolling interface.
I'm inclined to just fork the current selector and offer the ability to pick a set of groups discretely from a set of users. This goes directly to @crspeller's wish that groups were treated more like users directly by the system, so we wouldn't have to make the distinction at all.
Thoughts?

@agarciamontoro, I'd love to be able to use the same member selector in the backstage, but I'm worried this is going to be "hard". Besides the fact that the existing component is designed to consume profiles, not groups -- so we'd need to refactor to be more general -- it also has a usability problem of needing to search for and enumerate groups in addition to users all in a single scrolling interface.

That's true, although I think people usually search in the selectors by typing, not scrolling, so that does not concern me a lot from a UX perspective, as I believe a group mention should behave similar to a user mention in every possible aspect.  Maybe something for @alexsiclari to assess, but I think the first ideas we came up with at the beginning involved adding different "sections" in the selector, one for users and other for groups.

I'm inclined to just fork the current selector and offer the ability to pick a set of groups discretely from a set of users.

Whilw the effort for doing this would be a bit lower than the one needed to add this to the existing component, I don't think it will save you a lot of time.
But, honouring our new mindset, probably better to go with the easiest path here.

/update-branch


Code quality: Seal all non-inherited classes to improve performance

Resolved / Related Issues

[X] Were these changes approved in an issue or discussion with the project maintainers? In order to prevent extra work, feature requests and changes to the codebase must be approved before the pull request will be reviewed. This prevents extra work for the contributors and maintainers.
Closes #12304

Validation
How did you test these changes?

[X] Did you build the app and test your changes?

I think we should merge this regardless, but it would be interesting to see if there is a performance difference.


Check to see if AR Quicklook is supported

Reference Issue
Addresses an sub point in #18 in that you can't check if AR Quicklook is supported.
I'll add some tests when I've figured out how tests are run on this project. ¯_(ツ)_/¯

@googlebot I signed it!

Looked at how to setup tests. Since tests are run in browsers it might be pretty nasty to stub to mock relList.supports.

We currently only test and claim support for iOS 12. So, it would be sufficient (albeit lame) to only run the test on iOS for now, similar to how we gate other Quick Look-specific tests.
The best alternative I can think of would be to export the test as a re-invokable function, but the implementation is so trivial that I don't really think it is worth it to do that.

My thought was to just stub relList supports. But this is definitely easier in a test environment that's based on jsdom or something like that. I think the browser would just complain if I try to do that.

Yeah, don't bother with that. It's way more work than the test is worth.


How to make ongoing notification?

My use case is: notification always stay until Bluetooth connection is off. How to do it with this repo?

I would implement a banner style UI view because this sound like a warning/instruction message rather than a notification?

Like google maps notification when driving. It show dynamic text. The picture is below
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTigCQCO5BROVYp1LSAdV0Jbshv7SXyM4ujsLT6DLrsR00Szed9VMA9Cwus

Hello, any news about this?

for android, if you use the same ID for notification, it should update the existing one. However, i don't think FCM provides an ID property, so you should try local notification or custom_notification with id field

Okay thank you. Let me try to use custom_notification.
By the way, is there any property that has actions (which is not auto dismiss) like the picture I've upload above? Let's say it has 3 actions, when I click, it shouldn't dismiss notification, but trigger other action.

that is advanced feature, not available yet

@pewh have you figured out ongoing notif?

Unfortunately, no. I can't make it work, so I cancel to implement ongoing notif in my project.

@pewh This is not really how these features are implemented in Android.
Take a look at Foreground Services

I think it's possible by chaining .setOngoing(true) to notification builder (https://github.com/evollu/react-native-fcm/blob/master/android/src/main/java/com/evollu/react/fcm/FIRLocalMessagingHelper.java#L86). I see the answer on https://stackoverflow.com/a/14187092/1163092, it's possible by add modify function like public void sendNotification(Bundle bundle, bool ongoingMode), but unfortunately I'm still newbie on Java.

so how can i use ongoing ??
i don't find any thing about it in the docs

@dev-hamid ongoing: true

@dev-hamid ongoing: true

no its not working its still the same


Maya: Fix collector Maya 2019 support

Brief description
Maya 2019 support was broken in collectors. This was reported to me by Petr Kalis on Discord.
Explanation in comment here
Description
__iter__ is only implemented in Maya 2020+ for Maya Python 2.0 iterators.
Testing notes:

Use Maya 2019
Publish an instance

The hound is incorrectly marking this as a Python iterator but .next() is an actual implementation on the Maya MItxxx classes and this code works fine in Maya 2022 with Python 3.

@icyvapor Can you confirm that this commit you did to change iterator.next() into next(iterator) was just a code cosmetics choice? Or did you run into an actual bug with the old code?

Lets push it into release as it fixing issue in 2019 and not breaking (it seems) higher version. We could fix it if necessary.

Hey guys,
hmm afraid it's not cosmetics.. If I remember correctly, it popped up as error when I test the changes in Maya2020 locally.
Then we'll need to build in something for backward compatibility then  :\

@icyvapor any chance you could try this code in a Maya 2020 session? Would love to identify and solve it. It should be code that we had also used in Maya 2020 so I'm curious to learn what issues you faced.

Sure thing, will reply with findings

hmm..
The official 'develop' branch (v3.10.0) works fine in 2020. Having a hard time to revert back to when I saw the issue.. Probably it was something I missed.
Sorry for any inconvenience. Later I'll do sanity testing in both 19 and 20.


KAFKA-3378 Fix for instantly connecting SocketChannels.

Added OP_WRITE interestOp when channel connects instantly (socketChannel.connect(address) returns true... even in non-blocking mode). This allows the SocketChannel to be ready on the next call to select(). The poll method was modified to detect this case (OP_CONNECT && OP_WRITE while not key.isConnectable()) to complete the connection setup as if the channel had not connected instantly.

I tried your suggestion and was successful. I submitted a new pull request
https://github.com/apache/kafka/pull/1083
I managed to trash my original fork and destroyed it so this pull request is no longer valid.

@llowrey Would you mind closing this PR since we merged the change via a different one in the end?


dts: pwm : flag to enable a complementary output of a pwm channel pin

Depending on the mcus and the timer instance, several channels
can enable the complementary output for the PWM signal
This flag completes the PWM_POLARITY for a PWM channel.
Signed-off-by: Francois Ramu<EMAIL_ADDRESS>

As this is rather SoC specific (and not generically PWM related), have you considered if this could be configured using devicetree instead? Isn't this for routing of the generated PWM signal?

As this is rather SoC specific (and not generically PWM related), have you considered if this could be configured using devicetree instead? Isn't this for routing of the generated PWM signal?

For reference, there's another proposal I made that is vendor-specific: https://github.com/zephyrproject-rtos/zephyr/pull/42119#issuecomment-1021226073

API meeting:

@henrikbrixandersen proposes using a similar approach to the one suggested here

@FRASTM Do you plan on reworking this with an approach similar as to that for GPIO in https://github.com/zephyrproject-rtos/zephyr/pull/39767?

@FRASTM Do you plan on reworking this with an approach similar as to that for GPIO in #39767?

Yes, I guess this means : abandon this one and updating the https://github.com/zephyrproject-rtos/zephyr/pull/42119
with a PWM_STM32_COMPLEMENTARY flag in a  include/dt-bindings/pwm/stm32_pwm.h

reabse on 44fdeb1dd89dc6c0ba9cd0bb2cb936f166fb8560

closing after the merge of https://github.com/zephyrproject-rtos/zephyr/pull/42119/


start at appveyor setup for windows testing

This PR is a start at the appveyor setup. let's see what happens...
NOTES:

This warning: WARNING: The conda.compat module is deprecated and will be removed in a future release. is a known issue: it will be fixed in a new release of conda -- see
https://github.com/conda/conda/issues/8512
currently the instructions call activate matplotcheck-dev but i believe the new version of conda requires conda activate

appveyor is done!!


Documentation for keytool

On https://flutter.io/android-release/ we should add some documentation that explains what keytool does and especially say where it leaves the key.jks file. It wasn't in the current directory, nor in the app directory. I had to search and finally found it in my home directory (ick!).

Keytool leaves the keystore in your home directory because you told it to (the -keystore ~/key.jks part of the command line), and we point you to the directory in the next section, 'Reference the keystore from the app', but of course we can improve the text.
You don't want to keep the keystore with the app, since you'll want to use the same key for other apps as well. There's a ton of information on this in the Studio documentation that we could link to, like https://developer.android.com/studio/publish/app-signing.html.

@wmleler if you have concrete suggestions for edits, you are very much invited to send a PR!

I am getting this error:
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
for: CN=Ikkesh Pack, OU=Development, O=PackApps, L=Columbus, ST=OH, C=US
[Storing ~/key.jks]
keytool error: java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:299)
at java.base/java.io.FileOutputStream.(FileOutputStream.java:238)
at java.base/java.io.FileOutputStream.(FileOutputStream.java:127)
at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1308)
at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
at java.base/sun.security.tools.keytool.Main.main(Main.java:390)
could you advise?

@drexel-ue you have to replcae that ~ with any folder path in ur computer
First Create a Newfolder in D drive then paste this command
"keytool -genkey -v -keystore D:\Newfolder\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key"

Issue moved to flutter/website #2066 via ZenHub

I am getting this error:
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
        for: CN=Ikkesh Pack, OU=Development, O=PackApps, L=Columbus, ST=OH, C=US
[Storing ~/key.jks]
keytool error: java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
        at java.base/java.io.FileOutputStream.open0(Native Method)
        at java.base/java.io.FileOutputStream.open(FileOutputStream.java:299)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:238)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:127)
        at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1308)
        at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
        at java.base/sun.security.tools.keytool.Main.main(Main.java:390)

could you advise?

Just share another way, the command can run by Cmder on windows.

advise

replace ~\key.jks with a directory where you want to store it.

@marslord
Create a folder then supply path instead of using ~\key.jsk . The generated key would be stored in this created folder.
Say I create a folder key in my app directory, I would run the command below:
keytool -genkey -v -keystore C:\Users\USER\Downloads\Compressed\flutterApp\key\key.jks -keyalg RSA -keysize 2048 -validity 20000 -alias key

pleas helpp me
[Storing c:\Users\USER_NAME\key.jks]
keytool error: java.io.FileNotFoundException: c:\Users\USER_NAME\key.jks (Access is denied)
java.io.FileNotFoundException: c:\Users\USER_NAME\key.jks (Access is denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:101)
at sun.security.tools.keytool.Main.doCommands(Main.java:1196)
at sun.security.tools.keytool.Main.run(Main.java:368)
at sun.security.tools.keytool.Main.main(Main.java:361)

@ASHOK1815 it seems you are trying to create the key.jks in c:\Users\USER_NAME and you need administrative privilege or something. You should change the location of the key to somewhere else. It could even be in your flutter project directory, but ensure not to commit the key.jks file.
You might also want to check the previous response.

@ASHOK1815 it seems you are trying to create the key.jks in c:\Users\USER_NAME and you need administrative privilege or something. You should change the location of the key to somewhere else. It could even be in your flutter project directory, but ensure not to commit the key.jks file.
You might also want to check the previous response.

sir i try to another folder also it show that path is not found

i tried this also -genkey -v -keystore D:\keyfolder\key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key but doesnot work

it show [Storing D:\keyfolder\key.jks]
keytool error: java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:101)
at sun.security.tools.keytool.Main.doCommands(Main.java:1196)
at sun.security.tools.keytool.Main.run(Main.java:368)
at sun.security.tools.keytool.Main.main(Main.java:361)

it show [Storing D:\keyfolder\key.jks]
keytool error: java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:101)
at sun.security.tools.keytool.Main.doCommands(Main.java:1196)
at sun.security.tools.keytool.Main.run(Main.java:368)
at sun.security.tools.keytool.Main.main(Main.java:361)

Can you try using the folder housing your flutter project? Something like:
keytool -genkey -v -keystore C:\ProjectPath\key.jks -keyalg RSA -keysize 2048 -validity 20000 -alias key

thanks a lot sir its done....

now again i m getting this problem...
Note: C:\src\flutter.pub-cache\hosted\pub.dartlang.org\url_launcher-5.4.10\android\src\main\java\io\flutter\plugins\urllauncher\WebViewActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':app:validateSigningRelease'.

Keystore file not set for signing config release

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

@drexel-ue you have to replcae that ~ with any folder path in ur computer
Eg:My App name is Bing notes
First Create a Newfolder in D:\ drive then paste this command
keytool -genkey -v -keystore D:\Newfolder\bingnotes.jks -keyalg RSA -keysize 2048 -validity 10000 -alias bingnotes

worked for me thanks

it show [Storing D:\keyfolder\key.jks]
keytool error: java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
java.io.FileNotFoundException: D:\keyfolder\key.jks (The system cannot find the file specified)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:101)
at sun.security.tools.keytool.Main.doCommands(Main.java:1196)
at sun.security.tools.keytool.Main.run(Main.java:368)
at sun.security.tools.keytool.Main.main(Main.java:361)

Can you try using the folder housing your flutter project? Something like:
keytool -genkey -v -keystore C:\ProjectPath\key.jks -keyalg RSA -keysize 2048 -validity 20000 -alias key

Sir help me plse in my problem

same as me, are you still get error like that ? maybe you can help me

I am getting this error:
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
        for: CN=Ikkesh Pack, OU=Development, O=PackApps, L=Columbus, ST=OH, C=US
[Storing ~/key.jks]
keytool error: java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
        at java.base/java.io.FileOutputStream.open0(Native Method)
        at java.base/java.io.FileOutputStream.open(FileOutputStream.java:299)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:238)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:127)
        at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1308)
        at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
        at java.base/sun.security.tools.keytool.Main.main(Main.java:390)

could you advise?

hi bro do you know how to solve that issue?

I am getting this error:
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
        for: CN=Ikkesh Pack, OU=Development, O=PackApps, L=Columbus, ST=OH, C=US
[Storing ~/key.jks]
keytool error: java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
java.io.FileNotFoundException: ~\key.jks (The system cannot find the path specified)
        at java.base/java.io.FileOutputStream.open0(Native Method)
        at java.base/java.io.FileOutputStream.open(FileOutputStream.java:299)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:238)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:127)
        at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1308)
        at java.base/sun.security.tools.keytool.Main.run(Main.java:397)
        at java.base/sun.security.tools.keytool.Main.main(Main.java:390)

could you advise?

hi bro do you know how to solve that issue?

You can generate with android studio

You can generate with android studio

keytool -genkey -v -keystore C:\Users\ASUS\classwork\test18\key.jks -keyalg RSA -keysize 2048 -validity 20000 -alias key
try to run in this way ... it will help you
apart from this is you are using   new version dart version so change to  in puspec file the dependencies to
flutter_svg: ^0.18.0


Publish v8.0.33. [release]

respinning because the last PR didn't publish

As mentioned in https://github.com/CircleCI-Public/cimg-mysql/issues/20#issuecomment-1676378315, it looks like there have been no updates to the cimg:mysql 8 series since 8.0.28. Is that something we can expect in the near future?


Auto-fix segment consumption if idealstate update fails during LLC segment completion

When a segment completes, we update zk with two changes:

Update proprtystore with a new LLC segment
Update idealstate to mark old segment in ONLINE and add a new segment in CONSUMING
These two updates cannot be done in a transaction. It is possible that the controller
fails after step 1 but before step 2. In that case, we had called the code to fix
things on a controller getting leadership.

It is also possible that the idealstate update fails due to concurrent updates to
the idealstate znode (e.g. retention manager, deletes by operator, etc.). In these
cases, we have a retry, but no guarantees.
With this change, we call the same logic that we call on leadership change.
Also changed the logic that detects and fixes the condition to use priority
queues to make the code more readable.
Existing unit tests cover this case already

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@870a16e). Click here to learn what that means.

@@            Coverage Diff            @@
##             master    #1049   +/-   ##
=========================================
  Coverage          ?   56.84%
=========================================
  Files             ?      860
  Lines             ?    42129
  Branches          ?     5375
=========================================
  Hits              ?    23949
  Misses            ?    16595
  Partials          ?     1585

Impacted Files
Coverage Δ

...pinot/controller/validation/ValidationManager.java
74.53% <ø> (ø)

.../core/realtime/PinotLLCRealtimeSegmentManager.java
79.82% <94.59%> (ø)

Continue to review full report at Codecov.

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


commend work

Description
In this update, I add  show replied comments in src/components/common/MemosTable/AddReply/showReply.js
Video Link
https://loom.com/share/73a2c22f09064c7b9ed7c05c24b8c5aa
Trello Link
https://trello.com/c/eOPWgjvA/323-as-a-user-i-would-like-to-be-able-to-add-a-reply-functionality-in-the-memo-in-order-for-the-user-to-respond-or-add-any-additiona
(Example below):
Fix: Refactor sidebar to have icons representing each element in the sidebar
Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have removed unnecessary comments/console logs from my code
[x] My changes generate no new warnings
[x] I have checked my code and corrected any misspellings
[x] No duplicate code left within changed files
[x] Size of pull request kept to a minimum
[x] Pull request description clearly describes changes made & motivations for said changes

I think you have a merge issue because you didn't pull the latest version. You need to run git pull origin main before pushing any new changes.

Description
In this update, I changed the style of replying to comments using ant design.
I modified :src/components/common/MemosTable/AddReply/showReply.js
Video Link:
https://www.loom.com/share/8b105397214640e2a8a7e53f728ba2fe


Remove unused setting from c code language

Removes a dead setting from the c code language.

I'm ok with removing this, but I guess I should note that I actually have the functionality related to that setting in my branch, so if there is interest I could send a PR to include the missing bits instead.
https://github.com/fidgetingbits/fidgetingbits-talon/blob/master/lang/c/c.py

@fidgetingbits Would seem useful to put the functionality in. Would you rather we merge this in the meantime?

@fidgetingbits Would seem useful to put the functionality in. Would you rather we merge this in the meantime?

ya that makes sense, won't get to it right away


Fix tooltip, inline code

With release 1.0.0 and gitea version v1.22.3 inline codes (this) don't have a background and popups'/tooltip's background is transparent.
Here is a comparison with Catppuccin Frappé theme applied
Before:

After:

Fixes #44

Hey :wave:,
Thanks for the PR! Could you please include before/after screenshots, happy to merge after that!

Hey 👋, Thanks for the PR! Could you please include before/after screenshots, happy to merge after that!

Done.

Thanks for the screenshots, I made a change to the tooltip so that it's more readable when the background is also base:


Failed to update .bib file in background

ID: BQPSMP5A-euc (there was a previous ID which I lost while trying to get here due to not being able to cut and paste from the Zotero info... sorry)
I cannot unfortunately tell you exactly all the details. A box popped up begging me to file a report, unfortunately it vanished as well before I was able to get everything sorted out. My apologies.
Essentially, I was making changes to a Zotero entry (adding an author to an artwork) and when I reran my TeX compilation (in TeXShop) nothing changed, no matter what I did. Somewhere along the line (I believe after closing and reopening Zotero to force the plugin etc. to read the new information) I got a message to the effect that background update of the .bib file had failed after 5 attempts.
That's all I can tell you, I'm afraid, and as a former programmer I appreciate that's not terribly helpful; however I figure it at leasts brings awareness of the issue if nothing else, i.e., it happened....
FWIW

Can you try build 2297?

Happy to, but this is the first issue I've encountered in years, so unlikely the problem will reoccur....

You're using Firefox. Zotero and Firefox share their plugin architecture, so Firefox thinks the xpi is intended for itself, concludes it can't actually install it, and unhelpfully reports it as corrupt. If you right click and save you can install it in Zotero.

Downloaded it using Chrome no problem, installed.
Unfortunately, yesterday was my last real TeX/Zotero development day (end of academic term) but I'll try to poke around with it and see whether anything comes up. I'll report back if I find anything I expect to be of value to you.


Ambassador 0.50.0-ea5 upstream certs are offered to client

Describe the bug
When using MTLS the certs that should be used for upstream are offered to the client.
Example config with Istio:
      apiVersion: ambassador/v0
      kind: Module
      name: tls
      config:
        server:
          enabled: true
          redirect_cleartext_from: 8080
          secret: ambassador-certs
        client:
          enabled: false
        upstream:
          cert_chain_file: /etc/istiocerts/cert-chain.pem
          private_key_file: /etc/istiocerts/key.pem

This is also somehow related to https://github.com/datawire/ambassador/issues/981 , eg., if I remove redirect_cleartext_from: 8080 it works again. Doesn't matter if the http or https endpoint is hit.
To Reproduce
Add upstream certs, hit any TLS enabled endpoint
Expected behavior
server.secret should be used to match correct cert
Versions (please complete the following information):

Ambassador: 0.50.0-ea5
Bare metal Kubernetes 1.12.0

Additional context
Add any other context about the problem here.

@n1koo this should have been fixed in #1037 #1042, can you confirm?

Closing fixed in -rc1; @n1koo please reopen if you have trouble!


Fixed cterm dupes

The light version needed some fixes, mainly duplicates of cterm.
You should try /gui=.*gui= on flattened_light.vim to spot remaining mistakes.
I don't know colorschemes "good practices" but I think every option should be set. For example, SpellBad had a white text on a pale red background (except for the current line, with my configuration) until I explicitly added ctermbg=NONE.
With this in mind defining all the properties in the same order would make it easier to maintain and to find missing bits. No idea how to do that quickly other than by hand, but I found a way to align an entire paragraph:
:Plug 'godlygeek/tabular' " Using vim-plug :PlugInstall
:Tabularize / \+\zs/l0l2 " The last digit is the number of spaces

I set the SignColumn background to NONE as the grey one was not playing nicely with the actual signs. By the way I may add the Neomake highlight groups.
Finally, is there a reason the WarningMsg is red? I changed the terminal colors from 1 to 9 which is more orangé :)

Thanks.

Finally, is there a reason the WarningMsg is red? I changed the terminal colors from 1 to 9 which is more orangé :)

No particular reason… it was probably an error in the conversion process or, why not?, in solarized itself.

It is not a conversion error, the official solarized repo is using red as well (as it is using grey for SignColumn).
It just always bugged me; unless WarningMsg is used in place of Error by Vim, I see no reason to not differentiate them.
I just changed Error, ErrorMsg and WarningMsg (with orange text in the GUI version too #dc322f -> #cb4b16).
Also, sometimes I had some hard time reading error messages with the dark theme and a low luminosity, so I am trying white text instead of ctermbg=NONE (with cterm=reverse).


Argument parsing confuses commands if User-named parameters share words from other commands

When running a command that requires a user-generated name (such as naming new profiles or containers), if the provided name is the same as a word in another command, the command parser will execute the wrong command. Naming a container "profile", or naming a profile "container", will confuse the system.
For example, it is impossible to create a container named "profile", as that executes the profile-add command. This is because the arg parsing simply checks if arguments are present, not which order they are passed in. Since profile commands are handled before container commands, the profile commands will see the word "profile" and assume that it is a profile command.
Though it is not recommended that users implement such a confusing naming scheme, the system should be robust enough to understand what is going on.

This scope of this issue has decreased significantly thanks to the new command-submodules from  #291, though I am not convinced that there are still a few edge cases. We will need to investigate further.

I can't see any specific case where this is a problem. Without a repro, I'm going to close this bug tomorrow.


Reproducer for request failures present in 2.2.25 and 2.3.7.

I attempted a simpler reproducer without servlets and jersey, however I was unable to reproduce the issue. Similarly, when I read the response without parsing JSON, I failed to reproduce the issue. Parsing response JSON may be adding some backpressure necessary to trigger the failure.
I've shared this reproducer as a draft PR into the undertow repo for ease of use in debugging, I don't expect it to be merged.

@carterkozak  - is there a ticket for those failures?

@baranowb I don't think I filed one -- I chatted with @fl4via on the Wildfly Zulipchat, though.

After a big void dealing with CVEs and releases, we are finally back to this one. I'll be away during next week, but then I'll pick up from here in early July.

I'm closing this as the issue is solved by PR #1648


Migrate build system to Gradle

This is revival of https://github.com/apache/jmeter/pull/448
Note: below tricks might help to hide file movements:
A) GitHub UI: scroll the diff ("files changed") to the very end, and type the following to the browser console: $$('div.empty').forEach(function(e) { e.parentElement.parentElement.style.display='none'; })
B) You can watch individual commits (e.g. open Commits ) and review individual ones
C) You can use git log -M30% -l0 --stat -p -G. on the command line to show non-trivial diffs only (hide movements)
Note GitHub has a limit on the number of renamed files, so sometimes it shows a file as "deleted and inserted" even if that was a simple rename.
-l0 can be used to set "unlimited" number of "renamed files" in git diff / git log.
Then the diff shows 1959 files changed, 4901 insertions(+), 10246 deletions(-).
Note: license verification, IDE configuration, and release plugin is moved to https://github.com/vlsi/vlsi-release-plugins.
It reduces JMeter build scripts by ~1500 lines, and it improves build time (pre-built plugins are reused instead of building it from source).

Dependency with "manual" license configuration: https://github.com/dnsjava/dnsjava/issues/63

Dependency with "manual" license configuration: https://github.com/oblac/jodd/issues/717

Dependency with "manual" license configuration: https://github.com/bulenkov/Darcula/issues/53

Dependency with "manual" license configuration: https://github.com/json-path/JsonPath/issues/550

Dependency with "manual" license configuration: https://github.com/bobbylight/RSyntaxTextArea/issues/299

Dependency with "manual" license configuration: https://github.com/x-stream/xstream/issues/151

Dependency with "manual" license configuration: https://github.com/google/brotli/issues/758

Dependency with "manual" license configuration: https://github.com/ben-manes/caffeine/issues/325

Anyway, maybe it would help a bit to create or update doc with something like:

@pmouawad , have you seen https://github.com/apache/jmeter/blob/1a70d90e71b00d813ad0735ee9063c4f9e1f0808/gradle.md ?
I think it covers all of the use cases.
If you think something is missing, feel free to comment.
However, I do not think we really need a dictionary that maps "old Ant feature" to "Gradle feature".
99% of the times one would be fine with just trying gw tasks (./gradlew tasks) to see the possible tasks, and 100% of the times, the output is placed into build/ folder. So one can just open build/ folder and find the content there as required.

Codecov Report

Merging #469 into master will decrease coverage by 0.09%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             master     #469     +/-   ##
===========================================
- Coverage     53.63%   53.53%   -0.1%
- Complexity     9377     9389     +12
===========================================
  Files          1000     1008      +8
  Lines         61467    61671    +204
  Branches       6921     6913      -8
===========================================
+ Hits          32965    33013     +48
- Misses        26093    26260    +167
+ Partials       2409     2398     -11

Impacted Files
Coverage Δ
Complexity Δ

...ache/jmeter/modifiers/BSFPreProcessorBeanInfo.java
100% <ø> (ø)
1 <0> (?)

.../apache/jmeter/modifiers/gui/CounterConfigGui.java
73.01% <ø> (ø)
7 <0> (?)

...va/org/apache/jmeter/visualizers/utils/Colors.java
50% <ø> (ø)
3 <0> (?)

...ava/org/apache/jmeter/assertions/XMLAssertion.java
59.25% <ø> (ø)
3 <0> (?)

...ava/org/apache/jmeter/extractor/HtmlExtractor.java
86.23% <ø> (ø)
41 <0> (?)

...jmeter/timers/ConstantThroughputTimerBeanInfo.java
100% <ø> (ø)
1 <0> (?)

.../jmeter/visualizers/XMLDefaultMutableTreeNode.java
6.66% <ø> (ø)
2 <0> (?)

...ache/jmeter/timers/gui/AbstractRandomTimerGui.java
87.23% <ø> (ø)
5 <0> (?)

...n/java/org/apache/jmeter/visualizers/BarGraph.java
50% <ø> (ø)
3 <0> (?)

...rg/apache/jmeter/visualizers/TreeNodeRenderer.java
66.66% <ø> (ø)
3 <0> (?)

... and 1799 more

Continue to review full report at Codecov.

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

Hi, I only get the follwing tasks shown after checking out your repo:
`
$ - gw tasks
Build Setup tasks
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.
`
gw runGui doesn't show up nor work.
How to build the project?

@frschwab , you have to be using gradle branch.
For instance:
git clone -b gradle https://github.com/vlsi/jmeter.git jmeter_vlsi
cd jmeter_vlsi
gw tasks

@frschwab , you have to be using gradle branch.
For instance:
git clone -b gradle https://github.com/vlsi/jmeter.git jmeter_vlsi
cd jmeter_vlsi
gw tasks

I checked it out. I ran gw init and gw wrapper and gw eclipse.
I imported gradle project into eclipse 2019.6.
I also merged from apache master branch.
This is the errors i get in eclipse:

I also merged from apache master branch.

Why?

I also merged from apache master branch.

Why?

I thought I could get rid of the error messages. But I get the exact same messages if I do not merge apache master branch into vlsi gradle - I just tried it out again.

I have rebased the branch, moved engine.report... to to the appropriate folder, and made jmeterversion genration task is invoked by Eclipse on project import.
Please retry.
I don't use Eclipse, however I tried to import the project, and it works for me.

Nice! down to this now...

however on the command line gw runGui works fine...

Nice! down to this now...

however on the command line gw runGui works fine...

Seems like an Eclipse issue:
https://github.com/groovy/groovy-eclipse/issues/893

I uninstalled Groovy Compiler 2.5:

Now the error messages got away, but I got new ones:

It is all about jfxrt.jar.

I uninstalled Groovy Compiler 2.5:

Now the error messages got away, but I got new ones:

It is all about jfxrt.jar.

This solution finally did the trick and I have no errors any more:
https://stackoverflow.com/a/32062263
Maybe you can also add such a rule to the eclipse project setup gradle task if that is not too much work.

I uninstalled Groovy Compiler 2.5:

Note: there's a configuration option to use Groovy Compiler 2.4 in Eclipse. At least, my Eclipse installation has a preference to pick 2.4 vs 2.5

I uninstalled Groovy Compiler 2.5:

Note: there's a configuration option to use Groovy Compiler 2.4 in Eclipse. At least, my Eclipse installation has a preference to pick 2.4 vs 2.5

I tried that first, but that crashed all my windows and panes in Eclipse - that is a known bug.
So I tried uninstalling 2.5 and that helped a lot better.

I tried that first, but that crashed all my windows and panes in Eclipse - that is a known bug.
So I tried uninstalling 2.5 and that helped a lot better.

Thanks, I'll add that to CONTRIBUTING.md

This solution finally did the trick and I have no errors any more: https://stackoverflow.com/a/32062263

I'm not sure. We should probably completely remove javafx-related stuff for now, and use it when JavaFX11 becomes available on Maven Central.

This solution finally did the trick and I have no errors any more: https://stackoverflow.com/a/32062263

I'm not sure. We should probably completely remove javafx-related stuff for now, and use it when JavaFX11 becomes available on Maven Central.

Even better idea!
Anyway, I just looked it up, so just to share my finding - the setting is in the following file jmeter/src/components/.classpath:
<accessrule kind="accessible" pattern="javafx/**"/>
See full file classpath.txt

Maybe adding this to CONTRIBUTING.md might be useful, too - as long as javafx dependency is not removed.

Seems like with your latest fix, the access rule is not even required any more in eclipse! 😎

Found something else now: I am not able to get the launch configuration for Eclipse running following this guide:
https://github.com/vlsi/jmeter/blob/gradle/eclipse.md

Just in case: there's a way to set <accessrule kind="accessible" pattern="javafx/**"/> via Gradle script, however JavaFX is NOT available in OpenJDK.
I'm inclined to just exclude JavaFX-related class until we figure out OpenJDK-compatible solution.

Found something else now: I am not able to get the launch configuration for Eclipse running following this guide:
https://github.com/vlsi/jmeter/blob/gradle/eclipse.md

Technically speaking run configurations can be created automatically by Gradle script, however I would postpone that feature after Gradle is merged.
In the mean time, I've updated the guide. The key difference is you need to use dist for the project of the run configuration and ${workspace_loc:jmeter/bin} for working directory

Dependency with "manual" license configuration: https://github.com/eXparity/hamcrest-date/issues/26

Dependency with "manual" license configuration: https://github.com/hamcrest/JavaHamcrest/issues/264

One final thing from my side:
I don't know if that is possible or best practice in Gradle, but I think it would be user friendly if gw tasks showed only the main tasks that are used most of the time, and something like gw tasks --all showed them all (like currently) or gw tasks --testing for example showed only all tasks in the testing topic.
Otherwise, you really have to scroll up a lot on the console ;-)
Thanks for your work, also on how-to integrate into eclipse!

I don't know if that is possible or best practice in Gradle, but I think it would be user friendly if gw tasks showed only the main tasks

It is funny I was thinking behind exactly those lines, and I have already hidden a couple of tasks:
https://github.com/vlsi/vlsi-release-plugins/commit/bd916371331bc0294ee026b59a8c0d61ab89d085
It is kind of hard to tell what are those "main" tasks.
It would be nice if you could go through the list of tasks and classify them.
Frankly speaking, I don't like Gradle's verbosity on generateMetadataFileForCorePublication / generatePomFileForCorePublication / publishCorePublicationToMavenLocal / publishCorePublicationToNexusRepository
It looks like those tasks are the most offenders.
I would try to hide those, and replace with something like "generatePom".
For instance, currently we have "test - Runs the unit tests" task which is printed just once even though the task exists in logs of subprojects.

gw tasks --testing

Do you refer to batch test tasks?
Hiding those under --testing flag indeed makes sense.
Thanks. That is nice.

It would be nice if you could go through the list of tasks and classify them.
I can try to find some time in the next days.

Frankly speaking, I don't like Gradle's verbosity on generateMetadataFileForCorePublication / generatePomFileForCorePublication / publishCorePublicationToMavenLocal / publishCorePublicationToNexusRepository
It looks like those tasks are the most offenders.
I just found out that e.g. gw runG also works and it executes runGui task? Though it doesn't do autocomplete on the command line itself ;-)

gw tasks --testing

Do you refer to batch test tasks?
Hiding those under --testing flag indeed makes sense.
Thanks. That is nice.
That was just an example pseudo code, a more precise name would make more sense, not to be confused with gw test

Also seems like these sections are getting ordered alphabetically, which is maybe not the same order in which someone would call these tasks.

I've created https://github.com/gradle/gradle/issues/10133

Dependency with "manual" license configuration: https://github.com/weisJ/darklaf/issues/22


Grafana dashboard

Hi! Is there a ready dashboard for Grafana to display metrics regarding SolidQueue?

Hey @vitobotta, no, not for Solid Queue, but there's this one for Active Job.

Thanks @rosa! Tried it, but didn't work out since I'm using Prometheus Exporter rather than Yabeda. Guess I'll need to find another solution.
One option is to use Postgres directly as a source for Grafana and just run queries on the SolidQueue tables. However, there's no column that shows job duration. How can I figure out job durations then?
I really want to track job durations over time and spot the slowest jobs. Any ideas?
Thanks!

Ahhhh, not really. You can check finished_at and compare it with scheduled_at, but that would include the time waiting in the queue. Active Job instrumentation events are much better but they're not tracked in the DB, you'd need to subscribe to them somewhere, publish the metrics and create a custom collector to collect them 🤔

Got it, thanks for sharing your thoughts. I will definitely check out the instrumentation options.
By the way, are there any future plans to expose additional details or metrics with SolidQueue?

No specific plans besides the instrumentation that already exists but I'm definitely open to ideas there!

Hi!

No specific plans besides the instrumentation that already exists but I'm definitely open to ideas there!

Do you think if we can implement some controllers in the library so it can fetch the metrics from the database and then we would be able to make a UI on top of that? I think that would be the first step.

@amirali-ashraf, could that perhaps live in https://github.com/rails/mission_control-jobs? Since that has controllers and specific code to query Active Job's queues and jobs 🤔

@rosa let me have a look and get back to you!

@rosa so, you are completely right! I have missed this library for a long time 🤷♂ https://github.com/rails/mission_control-jobs
With this API and tools like https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/latest/ @vitobotta probably can we get the info we want to be added to grafana?


On Premise Upgradation failed at TASK [reference-visualization : Building Angular client-side code]

Task Completed


Plugin template loading js instead of cms_js_tags

cms/templatetags/js.py was renamed to cms_js_tags.py but the template for the video plugin  (at least) still references it by its old name:
{% load i18n sekizai_tags js %}

thanks a lot for reporting this issue. Fixed.


Azure Federated Credential Subject Identifier

When GitHub generates the subject identifier for a federated credential on an Azure managed identity, it automatically converts the environment field to be lower case. As of August 2024 Azure requires case-matching in all fields of the subject identifier to be identical. This causes deployments to fail if a GitHub environment has a capital letter in it. For example:
The federated credential subject identifier created in Azure is:
repo:[Org_Name]/[Repo_Name]:environment:[Environment_Name]
But the subject identifier generated/used in GitHub is:
repo:[Org_Name]/[Repo_Name]:environment:[environment_name]
Due to Azure's new policy of requiring cases to match this breaks ALL deployments unless the user manually changes the subject identifier (or environment name) in Azure to be lowercase (even when the ACTUAL environment name contains uppercase letters)
Reproduce this issue:

Create a managed identity on Microsoft Azure and give it a federated credential to deploy resources from GitHub Actions from an environment

Make sure the environment given to the federated credential contains a capital letter

Try to deploy to Azure from a GitHub Actions workflow

You will receive an error saying the credential's subject identifier matches non-case sensitive wise, but does NOT match case sensitive wise

Hi @Ismeasures , I can't reproduce this issue.
I use "Test" as the environment name, configure it in Azure Portal and use it in my test GitHub Actions.
I can see the the log of my GitHub Actions:
Federated token details:
 issuer - https://token.actions.githubusercontent.com/
 subject claim - repo:YanaXu/login-test:environment:Test

Could you double check it again?

Interesting, I am seeing this issue across multiple teams and it seems very clear what is going on so I'm surprised it isn't reproducible (and have verified the issue persists today). I will include screenshots so hopefully we can figure out what is going wrong.
Here is how the federated credential is setup in Azure:

Here are the available environments on the target repository (note we are targeting "Development":

When trying to deploy to Azure using that federated credential we receive this error:
AADSTS7002138: No matching federated identity record found for presented assertion subject 'repo:MedpaceSoftwareDevelopment/Finance.Shared:environment:development'. The subject matches with case-insensitive comparison, but not with case-sensitive comparison. Check your federated identity credential Subject, Audience and Issuer against the presented assertion. https://learn.microsoft.com/entra/workload-id/workload-identity-federation Trace ID: 9cf75a6e-fdee-4fb1-9c2d-c09b26c21c00 Correlation ID: 50e5dc0b-f634-4586-b42a-94ba9d0ee991 Timestamp: 2024-10-25 12:29:45Z

Hi @Ismeasures, could you also share your test workflow file? Including the "environment" and Login Aciton part.

Hello @YanaXu, I believe in the process of getting the workflow file I see what the issue is. Here is the file:
jobs:
  dev-deploy:
    runs-on: ubuntu-latest
    environment: development
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Azure Login
        uses: azure/login@v2
        with:
          client-id: ${{ vars.AZURE_IAC_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_[ORG_NAME]_TENANT_ID }}
          subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
      - name: Deploy IaC
        run: |
          az config set bicep.use_binary_from_path=False
          az deployment group create --name '${{ env.GH_RUN_ID }}-Finance-Logging' \
          --template-file './AzureInfrastructure/logs/main.bicep' \
          --parameters './AzureInfrastructure/logs/main.parameters.dev.json' \
          --resource-group '${{ vars.RESOURCE_GROUP_NAME }}' \
          --subscription '${{ vars.AZURE_SUBSCRIPTION_ID }}'

I think the issue is it being listed as "development" for the environment in the workflow file (as that is the only place we have it listed as lowercase). I understand that in general GitHub is not case sensitive, so I think it is working as intended -- I believe when the Action generates the subject identifier however it is using the value from the workflow file, is there a way to correct this so that it references the actual environment to pull the correct capitalization with the name?

Hi @Ismeasures , the only way is to update the workflow file and replace "environment: development" with "environment: Development".
A signle action can't determine the OIDC token generated by GitHub. Azure Login Action only sends the request to GitHub server and GitHub will generate the OIDC token for Azure. Azure Login Action only uses it in the right way to access Azure.
If Azure Login Action can ignore the "environment" settings in a workflow and generate a token with some customized subject identifier, it's a security issue.

Ah, okay I see how the flow goes now. Thank you for your help in figuring this out!


toggling the eraser should switch back to the previous tool instead of the select tool

Toggling the eraser should switch back to the previous tool (i.e. the one before clicking eraser) instead of switching to the select tool. You can configure the stylus button to toggle the eraser. If toggling would switch to the original tool (e.g. freedraw) instead of the select tool, that would remove friction from the workflow.

Good idea.
Our recent refactor of appState.elementType → appState.activeTool (https://github.com/excalidraw/excalidraw/pull/4968) will come in handy as we can put all these state in there.

@dwelle so your suggestion is to extend activeTool something like this:
activeTool: {
  type: typeof SHAPES[number]["value"] | "eraser",
  previousTool?: typeof SHAPES[number]["value"] | "eraser"
};

Right now I can only think of the eraser toggle use case. Should this be eraser specific? Then instead of previousTool something like eraserToggleWithType might be a better name.

IMO it doesn't matter much, but yes, we can be more clear. eraserPreviousTool/eraserPreviousType?


[#212] Fixed links when run on subpath

Resolves #212 .
I also updated bunch of outdated dependencies.

I need to merge this so that we can test it on the dev instance. The actual fix is just a one line of code so hopefully it's not a big deal.


fix(*): Emit ready event within NgZone

Codecov Report

Merging #107 (045929a) into master (5de3ebf) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #107   +/-   ##
=======================================
  Coverage   99.47%   99.47%
=======================================
  Files          13       13
  Lines         574      574
  Branches       83       83
=======================================
  Hits          571      571
  Misses          3        3

Impacted Files
Coverage Δ

.../components/ya-clusterer/ya-clusterer.component.ts
97.53% <100.00%> (ø)

.../lib/components/ya-control/ya-control.directive.ts
100.00% <100.00%> (ø)

.../components/ya-geoobject/ya-geoobject.directive.ts
100.00% <100.00%> (ø)

...maps/src/lib/components/ya-map/ya-map.component.ts
100.00% <100.00%> (ø)

...omponents/ya-multiroute/ya-multiroute.directive.ts
100.00% <100.00%> (ø)

.../components/ya-placemark/ya-placemark.directive.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Only show external links

Hello,
is it possible to only see external links to another URL? For example, I crawl the URL "https://test.com" so I don't want to see the first and the second entry but the last both.
---Output---

https://test.com
https://test.com/test/
https://new.com
https://new.com/new

Thanks and best wishes
Lucas

lychee supports multiple inputs, so "external" would be ambiguous in the following case:
lychee https://example.com https://example.org

For the first input, everything except https://example.com would be external. For the second, everything except https://example.org would be external.
If you only have a single input, you can exclude test.com from being checked:
lychee --exclude https://test.com --verbose https://test.com

Does that work for you?

Thank you very much, it works very well.

Is there a way to write the result in an external document?
Is there a way to show the successful hits (external links) into the result?

Thanks!
Lucas

You can use the output option to write the result to an external file if you mean that:
-o, --output <output>                      Output file of status report

The number of excluded links is in the final output.
So if you take total - excludes that's the number of successful hits (external links).
If you exclude multiple patterns then it gets a little more complicated.
In this case you can try a workaround:
# First get the total number of links
lychee --dump https://test.com | wc -l

# Then get the number of non-excluded links
lychee --exclude https://test.com --dump https://test.com | wc -l

The difference between those two calls is the number of successful (external) links.
I think you don't exclude multiple patterns, though, so the first solution (total - excluded) should be enough?

Perfect. It works. Thank you very much.


Update readme

Add info about installing in Arch Linux from the AUR
Add section headers for each OS in the Usage section

Thank you for your help 🙏


Dodano system losowania egzaminu i ikonkę strony

This pull request includes several updates to the index.html, script.js, and style.css files to enhance the user interface and functionality of the exam selection page. The most important changes include adding a random exam selection feature, updating the page styling, and adding a favicon.
Functionality Enhancements:

Added a random exam selection feature with a new button and output section in index.html and corresponding JavaScript functions in script.js. (index.html [1] script.js [2]

Styling Updates:

Introduced CSS variables for colors and updated the styling of various elements to use these variables, improving maintainability and consistency. (style.css style.cssR1-R30)
Added new styles for the button element, including hover effects, to match the overall theme of the page. (style.css style.cssL31-R54)

Miscellaneous:

Added a favicon link to index.html to enhance the page's appearance in browser tabs. (index.html index.htmlR8-R18)
Included a script reference at the end of index.html to link the new JavaScript file. (index.html index.htmlR152)

pozdro od github copilot :P

W sumie to już bazowa funkcjonalność jest taka, jaka być powinna

to nie ma być aplikacja, pozdrawiam

Dude...
Uncool :(


Cluster commands respecting keyslots from command input

Currently, the cluster command "GETKEYSINSLOT" passes in a keyslot as a parameter. This parameter needs to be recognized as the slot to use when executing the command. Currently, it ignores it and picks a random node. This PR fixes this issue.

Could you instead change https://github.com/go-redis/redis/blob/dba9cb31f566f15c82162dbde38ed8939d8b8e5a/cluster.go#L777-L780 like this:
func (c *ClusterClient) cmdSlot(cmd Cmder) int {
        args := cmd.Args()
	if args[0] == "cluster" && args[1] == "getkeysinslot" {
		return args[2].(int)
	}

	cmdInfo := c.cmdInfo(cmd.Name())
	return cmdSlot(cmd, cmdFirstKeyPos(cmd, cmdInfo))
}

Yea sure no prob man

Thanks