Composer should fail if patches fail

The Problem/Issue/Bug:
It's a great thing to get information on failing patches immediately.
How this PR Solves The Problem:
Uses https://github.com/cweagans/composer-patches/blob/1.x/src/Patches.php#L285
Manual Testing Instructions:
Apply a broken patch on the codebase and see the exit code of ddev composer install
Automated Testing Overview:

Related Issue Link(s):
Release/Deployment notes:
As it might be a breaking change for some, we might need to wire it into the config and make it adjustable.

I'll be interested to see what the community says about this. Seems to me like it should be the default!

:+1: - @cweagans implied a long time ago that this should become the default in v2.0 of the composer-patches plugin, it's only disabled by default for backward compatibility with v1.0: https://github.com/cweagans/composer-patches/issues/40#issuecomment-209465274

I would also prefer the default to be for composer to fail when patches fail.

This is what 2.0 of the patches plug-in will do (someday when I get around to finishing it). +1 on making this the default.

This would mean we silently change the default behavior which could be very confusing for some. Instead you can easily add this environment variable to your config.yaml which will only influence you and not every DDEV instance. Regarding the package this would also mean it's a breaking change, we should not introduce breaking changes in minor or dot releases at all.

I'd agree, but the behavior doesn't actually work correctly right now. If you try to run a composer command that installs patches and the patches don't actually apply, it'll do the wrong thing silently.
If you want a more constrained version of this, you could set this behavior as the default for composer commands run before a ddev project is up and running.

I'd agree, but the behavior doesn't actually work correctly right now. If you try to run a composer command that installs patches and the patches don't actually apply, it'll do the wrong thing silently.
If you want a more constrained version of this, you could set this behavior as the default for composer commands run before a ddev project is up and running.

I guess you didn't change it for v1 for the same reason I came up here with. Hopefully you find the time soon for the v2 release so this issue is solved at the upstream properly.
As said, everyone who like a clean behavior already now can add the the two lines to the config.yaml and the variable is set and no existing project breaks :)
web_environment:
- COMPOSER_EXIT_ON_PATCH_FAILURE=1

And I also fully agree this would be the better default behavior but for sure not with the risk of breaking existing projects.

I'm not entirely sure that the existing behavior isn't what's broken, and it would be OK to fix it. I can't imagine anybody would ever want a silent patch application failure.

I'm not entirely sure that the existing behavior isn't what's broken, and it would be OK to fix it. I can't imagine anybody would ever want a silent patch application failure.

Yeah, it's broken. But chaning the behavior is a breaking change which could finally break existing setups. And it's not on DDEV to fix it but the upstream!

See also the second option to achieve that: extra.composer-exit-on-patch-failure: 1 in composer.json

As @gilbertsoft pointed out, anybody really concerned about this can ddev config global --web-environment-add= COMPOSER_EXIT_ON_PATCH_FAILURE=1 and fix it for all their projects. (--web-environment-add is coming in v1.19.2)
So it seems reasonable to just save this for when we're moving from v1.19 patch releases to v1.20 work.

Should fail per default! 🤗

Ok, to make my point more clear: Basically I think that is "workaround creep". Also it changes default behaviour and everybody that cares should have added it to their composer.json anyways.
It's not a biggy but not "Everybody seems fine with this" ;)

@jonaseberle
Well, according to our experience, when I consider the day-to-day-work, what it really means: many developers are not aware that patches fail silently, so sometimes regressions happen because of that, and it takes much more time/money to address the problem if that's discovered at a later point of the development flow. It's a breaking change what's easy to undo, so if someone would like to keep buggy patches in composer.json, after scanning the release notes, it will be trivial to do that.

@AronNovak If you rely on that behaviour (I do), then why don't you set it in composer.json? That way it is well defined in all environments.

@jonaseberle As we try to use DDEV to enforce best practices as much as possible, not at another level. If we get a foreign project, we can quickly put it in DDEV with our usual config and we are more or less comfortable to start the work. Your reasoning totally makes sense as well, it really depends on what do we expect from this tool.

Has somebody explored what happens if we set COMPOSER_PATCHES_EXIT_ON_PATCH_FAILURE=1 and there is extra.composer-exit-on-patch-failure: false in composer.json?

@jonaseberle
https://github.com/cweagans/composer-patches/blob/1.x/src/Patches.php#L285
getenv('COMPOSER_EXIT_ON_PATCH_FAILURE') || !empty($extra['composer-exit-on-patch-failure']);
That answers this question, it seems.

Thanks. So in order to reset it I could use COMPOSER_EXIT_ON_PATCH_FAILURE=0 (the value of extra.composer-exit-on-patch-failure is not evaluated).
I still think we should not change the behaviour implicitly in this certain environment. It is not helping really, just obfuscating a potential problem that you might encounter in your deployment systems or CI or other non-DDEV places.
When v2 of composer-patches is released this is obsolete anyways and then it is just dead legacy code.

When v2 of composer-patches is released this is obsolete anyways

Do you have a reference for this? In case, that's indeed a deal-breaker for this PR.

That's how I understood it from this comment by @longwave:

+1 - @cweagans implied a long time ago that this should become the default in v2.0 of the composer-patches plugin, it's only disabled by default for backward compatibility with v1.0: cweagans/composer-patches#40 (comment)

Can confirm, this will be the default in composer patches 2.0.0.
It may be a while before that comes out though.

Rebased.

My opinion is that people who are not aware that a patch has failed (composer shows a red error message that it failed) are also not aware that composer process explicitly fails and does not go on (and shows an additional more prominent red error message). Composer applies patches at the very end of composer install, actually a project still might work if composer exits on first failed patch vs. all patches were applied except of failed ones.
I would vote for "whatever is the default, let it be the default".

Rebased

Does everybody like this in the end? If so, please rebase and let's get it into v1.20.0

Just rebased then.


Add _json_encode method API for EventedModel serdes

Description
Thinking about serialization and deserialization of EventedModel objects, I wanted to avoid having to manage a bunch of different JSON_ENCODERS dicts (like, from Array, and perhaps from the colormanager stuff in #2204, and probably for serialization of the new Selection object in #2293).  This PR introduces an internal API for adding serdes support for custom fields:
here's a "well behaved" object:
class MyObj:
    def __init__(self, a: int, b: str) -> None:
        self.a = a
        self.b = b

    def __eq__(self, other):
		# alway nice to provide your equality operator
        return self.__dict__ == other.__dict__

    def _json_encode(self):
		# this method should return an object that works
		# as input to `json.dumps` _not_ the output of json.dumps itself
        return self.__dict__

	# pydantic stuff

    @classmethod
    def __get_validators__(cls):
        yield cls.validate_type

    @classmethod
    def validate_type(cls, val):
        # validator should be able to whatever the output of
		# _json_code is, in this case, it's a dict.
        if isinstance(val, dict):
            a = val.get('a')
            b = val.get('b')
        elif isinstance(val, MyObj):
            return val
        # perform additional validation here
        return cls(a, b)

In EventedMetaclass.__new__, any discovered _json_encode methods will be added to the json_encoders for that particular model.
Finally, at the top of evented_model, _BASE_JSON_ENCODERS is a dict of encoders for types outside of napari (such as np.ndarray).
cc @sofroniewn
Type of change

[ ] Bug-fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

References

How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works

Great idea, @tlambert03 ! This will indeed be useful for #2204.

I just looked at https://github.com/napari/napari/pull/2293/files#r581257788 a little more, definitely helps see how the new syntax will be nicer. We should be able to merge this tomorrow!!

I guess the alternative syntax would have been to subclass the config, grab the existing json encoder and manually add to it? Maybe that seems simpler in my head than it actually would be in code, but aside from that is there any advantage?

Yeah, this kinda goes back to my comment about remembering the distinction between "models vs fields" here.  It's the model that has the config with the list of json_encoders (a mapping of type to encoder callable), but it's the field (i.e. the type itself) that knows how to encode itself.  So the alternative syntax here is either to add the encoder to every model that uses a particular field:
class MyObj:
    ...

MyObjEncoder = {MyObj: lambda x: x.__dict__}

class ModelA(ParentModel):
    o: MyObj

    class Config(ParentModel.Config):
		json_encoders = {**ParentModel.Config, **MyObjEncoder}

class ModelB(ParentModel):
    o: MyObj

    class Config(ParentModel.Config):
		json_encoders = {**ParentModel.Config, **MyObjEncoder}

or to add the encoder to every model (via the base EventedModel) "just in case" it runs into that field...
from somewhere import SOME_ENCODER

class ParentModel:
	class Config:
		json_encoders = SOME_ENCODER

this is what we're currently doing, but at the moment, we only have a single JSON_ENCODERS dict that we import from the custom Array.  Once we start adding more custom field types (not models), then we need to somehow combine all of those encoder dicts in evented_model.py, which means importing and merging encoder dicts from every other file that may be used in any other model that inherits from ParentModel:
from somewhere import SOME_ENCODER
from somewhere_else import SOME_ENCODER as ANOTHER_ENCODER
from yet_another import SOME_ENCODER as YET_ANOTHER

ENCODERS = {**SOME_ENCODER, **ANOTHER_ENCODER, **YET_ANOTHER}

class ParentModel:
	class Config:
		json_encoders = ENCODERS

So, the point of this PR is to say: during class creation (i.e. in the metaclass __new__ method), if a model uses a field that provides an encoder via the _json_encode method, go ahead and add it to the model Config.
Anyway, I just want to re-emphasize the difference between fields and models.  It's great to have this excellent EventedModel base class hammer, but not every custom type is an appropriate nail :)  Some things (particularly small/focused classes that come with their own carefully crafted event system like the evented containers) are better off as fields, and I think we should definitely make sure that we're building components that behave nicely as pydantic fields, like the MyObj example in the first post.

Anyway, I just want to re-emphasize the difference between fields and models.

Ok, I'm back with the plot again. Love this! It was actually something that when I wrote the Array field I was thinking - the serialization information (and eq information) should live on that field itself.
I'll merge this now, and as we use it more I'm sure we'll be even more grateful. Thanks for the long explanation too, it definitely helped.


safeURL function doesn't escape + character in a template

In template safeURL function doesn't escape + character. Example:
Consider the following settings under config.toml:
# config.toml
[params]
  fontFamilyURL = "https://fonts.googleapis.com/css?family=Space+Mono:400,700"

I am then trying to use this in an HTML template as:
<!-- baseOf.html -->
{{ .Site.Params.fontFamilyURL | safeURL }}

The above code generates -> https://fonts.googleapis.com/css?family=Space+Mono:400,700 instead of https://fonts.googleapis.com/css?family=Space+Mono:400,700. You can see that + is replaced by +, but when I use safeHTML, I have no such problem.
The issue is something similar to #5236.
I am using Hugo Static Site Generator v0.49/extended windows/amd64 BuildDate: unknown

It's not clear to me what you're asking.  The title of this issue doesn't match the content you provided.  We need more context and clarity to help.

@moorereason I updated it, is it clear now?

The title essentially says the same thing.  What's confusing me is that you say that it doesn't escape + in a template, but then you say that it generates +.  I consider that to be escaped.
In any case, I don't think this is a bug.  I suspect that you are not using the safeURL function properly.  Please search the discussion forums for how to use safeURL properly.  If you don't find the answer you need, open a new thread in the forums.


rocksdb build flag caused the performance to degrade

Bug Report
Our business will introduce version 2.4 to replace 2.0，we  found  the 2.4 performance to be lower than 2.0.
For my work, I found the cause of the problem -- build type for one of thirdparty named rocksdb.
We lost flag "CMAKE_BUILD_TYPE=Release" on once Reconstruction.
rocksdb build type deleted by this commit: https://github.com/XiaoMi/rdsn/commit/aef76b192ea3aac21b062767f0098ccba9a74aa4#diff-74b3e476c2f3ca1dd3782cb2ef32bbf6b53adc54d8d961d829fdfd1523c433b8

Performance is 25% higher than before on the same machine.


[Feature Request]: To check the format for gmail while registering

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
Avoid user the register with misspelling in gmail & even check the format of gmail
Use Case
Better user experience
Benefits
No response
Add ScreenShots

Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[ ] I'm a VSOC'24 contributor
[X] I have starred the repository

@apu52 please assign me this under GSSOC-EXT, HACKTOBERFEST & LEVEL-1,2,3

Could you please assign me this under GSSOC 2024 ? I am confident that I can provide a strong solution and would appreciate the opportunity to work on this issue.


Fix detection of gevent threading.local monkey-patch

The _ in _threading seems like a mistake and always returns False.
Removing it leads to the detection working properly:
Python 3.7.4 (default, Jul 16 2019, 07:12:58)
[GCC 9.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gevent.monkey
>>> gevent.monkey.is_object_patched('_threading', 'local')
False
>>> gevent.monkey.is_object_patched('threading', 'local')
False
>>> gevent.monkey.patch_all()
True
>>> gevent.monkey.is_object_patched('_threading', 'local')
False
>>> gevent.monkey.is_object_patched('threading', 'local')
True

We are using gevent and are seeing some data "leaking" between events. I hope this will fix the problem, but I did not verify it.

Thanks!


Remove empty top-level node and shift indentation

This fix would "fix" the offline book issue - this TOC is not read in by the current version of the offline book tool, resulting in missing content.
Summary
Remove the top line of the TOC and indent everything else.

outdated - opened new one


Replace ETCD with Bolt in ipam plugin

Instead of using ETCD as k/v store in ipam plugin, use newly introduced
Bolt.
Signed-off-by: Tomas Slusny<EMAIL_ADDRESS>

53 passed, 12 skipped in 723.57 seconds

:tada:

Bump version of cn-infra in vpp-agent branch https://github.com/ligato/vpp-agent/tree/contiv-1807 in order to include bolt lib and use the latest commit from the branch in your PR commit Gopkg files as well

Updated


Object level perms check

https://github.com/sprymak/django-fsm/commit/6968bb8af9f8683422491d47244abdc84a25f212

+1


Regent: parallelizer misreports location of error

For this program:
import "regent"
fspace MeshFields {
  Xi   : double[5]
}
__demand(__cuda)
task InitMesh( Mesh : region(ispace(int3d),MeshFields) )
where
  reads writes(Mesh.Xi)
do
  __demand(__openmp)
  for c in Mesh do
    Mesh[c].Xi = array( 0.0, 0.0, 0.0, 0.0, 0.0 )
    regentlib.assert(Mesh[c].Xi[0]<1e-3, "")
  end
end

The reported error is:
...lis/sw/legion/language/src/regent/check_parallelizable.t:873: Errors reported during typechecking.
PseudoSolver.rg:12: CUDA code generation failed: found a region access outside parallelizable loops
    Mesh[c].Xi = array( 0.0, 0.0, 0.0, 0.0, 0.0 )
        ^

The reported error should be that you can't use regentlib.assert inside a CUDA loop.

Well that's not how the parallelizability checker works. It is perfectly fine to call regentlib.assert in a CUDA task as long as it doesn't appear within a parallelizable for loop (which makes it run on the host side). Inversely, any for loop that calls a host-only function is considered non-parallelizable. The real problem in your code is that the CUDA task tries to access a region outside parallelizable loops, because only parallelizable loops will run on GPUs and thus have access to instances. So, the reported error is not a bug, but is intended behavior.


Unicode issues with non-ascii chars in home path

I had to install aws-cli on a Turkish pc running windows 7 with the user's home folder called İK and I get this output
C:\Users\İK>aws
Traceback (most recent call last):
  File "aws", line 27, in <module>
  File "aws", line 23, in main
  File "awscli\clidriver.pyc", line 53, in main
  File "awscli\clidriver.pyc", line 61, in create_clidriver
  File "botocore\session.pyc", line 375, in full_config
  File "botocore\configloader.pyc", line 105, in load_config
  File "botocore\configloader.pyc", line 145, in raw_config_parse
  File "botocore\exceptions.pyc", line 27, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdd in position 9: ordinal not in range(128)

could it be something related to the user's folder name?
I've tried also with --debug but I've the same issue

Sorry wrong repo 😊


Create extension interface for Helm

Adds an extends interface for Helm. This uses a Helm chart's templates and rendering facilities for a default deploy plan, with a single phase and step rendering all of the templates.

is this related to https://github.com/kudobuilder/kudo/issues/334 ? and how should this be prioritized

I noticed that this is still open but was set for an older milestone at what point. What is the current status of this? Was any work started or is it still a start from scratch situation?

Given some other things going on, I really don't see a use for this and I talked with @michelleN and I she had an idea I really like, and I want to champion. I want to explore actually embedding KUDO plans into Helm charts in the future, so that we can have a really strong story around progressively enhancing Helm charts.
In retrospect, I think trying to tangle together both Helm and KUDO's templating engines in the same codebase is a mistake. Yes, we have a branch for it - but we add a web of dependency there that's at the wrong level, by choosing to go for a code-level dependency rather than strive for data and building an interoperable ecosystem on that.
I get everyone wants to import a Helm chart, but let's please try to use KUDO's templating engine for KUDO-y things and make that also as good as possible.

thanks for the update :+1:

Let's reopen if we decide to do helm in the future


[OPENJDK-111] Adjust JVM parameters when JAVA_DIAGNOSTICS is set

This is for the situation where JAVA_DIAGNOSTICS=true
https://issues.redhat.com/browse/OPENJDK-111

OK. Do we mention somewhere in our docs that setting JAVA_DIAGNOSTICS might set -XX:+UnlockDiagnosticVMOptions?

No I don't think so, but I'll double-check. this is pretty much all we write about it, I don't think it's separately covered in anything.
The inclusion of UnlockDiagnosticVMOptions is to allow PrintNMTStatistics which was suggested in this issue back in 2017.  Although nobody else has expressed an interest in it since. If there are drawbacks to setting UnlockDiagnosticVMOptions we could omit both.

My concern is that users might think they've never turned that option on, forgetting about non-standard JAVA_DIAGNOSTICS, but confusingly (to them) tooling would report it's on. Hence my suggestion to mention it in docs. Perhaps add:
Note: This option, if set to true, will set  -XX:+UnlockDiagnosticVMOptions


More advanced middlewares

Hi guys,
Hope you are all well !
Here are the

Transform Request/Response
Managing templates for frontends body transformation
Concurrent sub-requests to nest json responses in a middleware

Cheers,

So i just tried putting traefik in front of Jenkins ... no joy, it needs some response rewriting ( in Location header for example )
Great project, makes stuff cleaner than any apache/haproxy/nginx frankensteins monsters, but needs a bit more feature oomph exposed

@seeder could you give me a concrete exemple? I already have some implementation ideas, but I'm still not completely satisfied by those ones ^^

@EmileVauge https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+says+my+reverse+proxy+setup+is+broken

For my part, it would be great to have a rewrite module like on Vulcand (https://vulcand.io/proxy.html#rewrites-and-redirects).
My use case is to embbed Traefik inside a docker container in order to map several services:
Current use (with a file generated during the build of the container):
/service_1 going to loadbalanced ports or different front-ends
/service_2 going to one specific front-end
Wished use of Traefik:
/api/v1/service1/function1
/api/v1/service1/function2
/api/v1/service2/

+1 would be very nice !

@emilevauge Yop, may be can we discuss about many middlewares like auth, logs, etc ... for example I want to use the next feature of Coreos/Dex ( groups ) for make an oauth2 login on some admin applications on my k8s cluster. the real question is "How we can pass the options to the middleware"

Transforming request/response would be great! Ability to adjust headers (add/remove/edit) would probably go a long way.

Hello,
Not sure if this is the right place to mention this, but I recently had to fork/modify Traefik to support SSL cert forwarding to our backends, setting client certs for the backends (e.g. the backend HTTP client uses a client cert), and authorization capabilities so the users can be authenticated at the proxy.  The last part was done to support a custom authorization system that's in-house, but I did create a Basic Auth version using the same interface.  We're still testing it, but so far it appears to be working well.  As soon as we've had things running for a while and things look good, I plan on creating some pull requests.  As of right now I don't have an ETA as we want to be sure everything is working well before we release the changes.

Hey is there any solution for this nowadays?
I want to replace haproxy with traefik in our docker swarm infrastructure but in order to do that, I have to replace a Lua script, rerouting incoming traffic to certain docker service depending on user auth (request against a rest API) and header/URL information.
also asked on StackOverflow:
https://stackoverflow.com/questions/46980439/user-authentication-and-dynamic-routing-in-traefik


changing andorid aws-sdk from 2.6.16 to 2.6.30 supporting andorid 9.0

PR Checklist

[ ] The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/CONTRIBUTING.md#commit-messages.
[ ] There is an issue for the bug/feature this PR is for. To avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it.
[ ] All existing tests are passing
[ ] Tests for the changes are included

What is the current behavior?

What is the new behavior?

Fixes/Implements/Closes #[Issue Number].

I stumble an error while using this project java.lang.NoClassDefFoundError using android pie, This is only for fixing this small issue


Don't normalize User.RoleNames as before (#13104)

@MikeAlhayek
So that we can merge OC main in your branch


[FEATURE]  Java Rest High Level Client KNN queries builder like wildcard query builder

Is your feature request related to a problem?
There is no high level KNN Query builder like we have for wildcard and other queries. Which makes it harder to use KNN with other features of Elastic Search/open search
What solution would you like?
high level KNN Query builder like we have for wildcard a
What alternatives have you considered?
Still trying to find alternate options
Do you have any additional context?
No

@HimaChitalia Moving this to OpenSearch, the high level client is part of that


'Copy as cURL' special character (@) in headers

Describe the bug
When I click 'copy as cURL' for a working query and paste it into terminal it won't work without fixing it manually.
The reason is that a header that contains an email address as a value isn't copied as is. For some reason the '@' sign will be converted to 'q'. So it will look like this
-H 'X-AUTH-EMAIL: someqmail.tld'

To Reproduce
Steps to reproduce the behavior:

Add a new query
Add a header with an email address as value
click 'copy as cURL'
See error

Expected behavior
I expect<EMAIL_ADDRESS>to be<EMAIL_ADDRESS>and not someqmail.tld
Desktop (please complete the following information):

OS: Win10

To add to that
https://github.com/altair-graphql/altair/blob/c20fc140cfc1bb7ccbc5803d118b72d290cbfdf8/packages/altair-app/src/app/modules/altair/effects/query.effect.ts#L795-L798
https://github.com/altair-graphql/altair/blob/18ab7297aabdb2872b35c58413843a42765c76c8/packages/altair-app/src/app/modules/altair/services/environment/environment.service.ts#L65-L70
Maybe the issue is somewhere in the hydrate function while escaping and replacing the strings.

Thanks for reporting this! I'd look into it as soon as I can.

So I tried doing the same thing and the email is copied as-is. Are you sure there isn't something else causing that?

So I tried doing the same thing and the email is copied as-is. Are you sure there isn't something else causing that?

True I checked again. It seems something else happened. When I checked the headers again the value containing the email had changed the @ to q but I don't know why yet.
Anyway I will close the issue for now. It's a bit odd anyway.


Update  the image field of the Operator values.yaml in release/3.0.4

The values.yaml in the directory
https://github.com/oracle/weblogic-kubernetes-operator/tree/release/3.0.4/kubernetes/charts/weblogic-operator
image: "oracle/weblogic-kubernetes-operator:3.0.4"  --> image: "ghcr.io/oracle/weblogic-kubernetes-operator:3.0.4"

That chart is now updated.


rack_server example problem

I had to switch away from testing Tipi for a while, but started to look at the rack_server examples in more detail this weekend.
The basic example using hello.ru as the config file works without issue (Invoked via bundle exec ruby ./rack_server ./hello.ru)
The Cuba example, again running rack_server.rb but with cuba.ru as the config file runs, but routing doesn't seem work. I didn't check the hanami_api.ru example, as I'd already tried some quick tests to see if other simple rack apps (sinatra, roda) had the same issue, which they did.
Could you take a quick look? Not at all sure what the cause is.

Thanks for reporting this. Please note that the most of the Rack adapter code (i.e. dealing with the Rack env) has been moved to https://github.com/digital-fabric/qeweney. See also #4.

No problem. I'll hopefully be able to test it out in the next few days. The performance of the tipi server looks awesome!

The performance of the tipi server looks awesome!

I've started work on a custom HTTP/1 parser (and eventually also one for HTTP/2) for Tipi that will improve performance even more!


Vue: allow reserved component names

We want to allow reserved component names, because we are lazy. They are defined with a Capital letter anyways. (discussed with @thomasowow, fight with him about it if you want)

We want to allow reserved component names, because we are lazy.
Breaking these conventions requires more discipline from the team to prevent confusion and implementation mistakes.

They are defined with a Capital letter anyways.
In Vue, you can use both kebab-case and PascalCase when referencing components in templates. There is some nuance here but defo not fool proof.


CXF-8746: Support force GET on redirections

CXF-8746: Support force GET on 301 & 302 redirections for historical reasons as explained in https://www.rfc-editor.org/rfc/rfc7231.html section 6.4.2 & 6.4.3.

@ypiel-talend my apologies, I have difficulties to understand this change, the sections you are referring to note that:

Note: For historical reasons, a user agent MAY change the request
method from POST to GET for the subsequent request.  If this
behavior is undesired, the 307 (Temporary Redirect) status code
can be used instead.

This is the behavior driven by user agent (client) and not the server, I am not sure why CXF needs change here. Also, seems like this is really outdated behavior (from notes on spec), why do we need to support it? What is the use case?
Thank you.


Parameters for direct message on twitter

Hello There,
Error is occurring at line number 362 in tmhOAuth/tmhOAuth.php file. When we are sending the params as per the twitter new endpoints not able to use because an error occurred in the below code in prepare_params() function.

if (is_array($v))
$v = implode(',', $v);

Is there any way to set a multidimensional array or setting header type JSON in curl.

Oh hey :)
I think i'll just fork this project in the short term, but were moving away from it in the next version anyway.

Fork with PR merged here:
https://github.com/atymic/tmhOAuth

thanks! i’ll merge and take a look at updating this library after the thanksgiving break.
as you likely guessed i’m not at Twitter anymore or doing active development with it’s APIs but i will see what i can do to address some issues like this.
appreciate you sharing the pull request.
@themattharris

On Nov 30, 2019, at 19:46, atymic<EMAIL_ADDRESS>wrote:

Fork with PR merged here:
https://github.com/atymic/tmhOAuth
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Oh, my bad, I assumed this wasn't maintained anymore, sorry (by the unmerged PRs).
I'll nuke the fork if this is merged into master.
We're actually in the process of creating a modern twitter API client that is framework agnostic (similar to this library) so this PR is/was just a stopgap.
https://github.com/atymic/twitter/tree/3.x


Improve API version documentation for @azure/cognitiveservices-luis-runtime

Is your feature request related to a problem? Please describe.
I was trying to figure out which version of @azure/cognitiveservices-luis-runtime was appropriate to target the LUIS v2 APIs, as we are working from an account that has not yet enabled the v3-preview APIs. There is no documentation or compatibility matrix for the @azure/cognitiveservices-luis-runtime package. It is pretty trivial to assume that<EMAIL_ADDRESS>is the correct version, except that the package also has a version 4.0.0 and 4.0.1, which makes the developer suspect that there may not be a 1-to-1 mapping between LUIS API versions and NPM package major version.
Describe the solution you'd like

I'd like to see top-level documentation in the @azure/cognitiveservices-luis-runtime README that describes which versions of the NPM package target which LUIS API versions.
I'd also like to see each release of @azure/cognitiveservices-luis-runtime tagged on GitHub (and marked for release), so that, even if I don't find the compatibility matrix, I can quickly reference a snapshot of the repo at the point the code was published to NPM and figure this out on my own.
Lastly, I'm curious whether it makes sense for the @latest version of @azure/cognitiveservices-luis-runtime package to only target the v3-preview APIs, given that all customers may not have this API version enabled.

Describe alternatives you've considered

I looked at the releases on GitHub to see if I could open the commit hash at each point @azure/cognitiveservices-luis-runtime was published to NPM, but there are no releases or tags created for this package.
I looked at the git history in the @azure/cognitiveservices-luis-runtime to see if I could figure out the point at which each version was updated, but the commit messages were not super useful. For example, this commit https://github.com/Azure/azure-sdk-for-js/commit/c1809f00862eca10f191cef4d3f07bcc6c948d18 introduced v3, but the commit message does not give me that information. Ideally, the title of that commit would have clearly stated that it upgraded the package to target the LUIS v3 API.

Additional context
Another thing to note is that the folder structure has been changed since the package was originally created, so a lot of the history of the package is not easily accessible. It makes it much more difficult to track back when changes were introduced. When combined with non-descriptive git commit messages, it makes things very difficult for potential OSS contributors.

Hey @rozele,
Thanks for reporting and our apologies for taking a while to respond.

I'd like to see top-level documentation in the @azure/cognitiveservices-luis-runtime README that describes which versions of the NPM package target which LUIS API versions.

This is a very valid point. I agree that this should be done and we can get on it.

I'd also like to see each release of @azure/cognitiveservices-luis-runtime tagged on GitHub (and marked for release), so that, even if I don't find the compatibility matrix, I can quickly reference a snapshot of the repo at the point the code was published to NPM and figure this out on my own.

This would need an update to the publishing pipeline. I'll try and get the ball rolling here.

Lastly, I'm curious whether it makes sense for the @latest version of @azure/cognitiveservices-luis-runtime package to only target the v3-preview APIs, given that all customers may not have this API version enabled.

@kayousef Can you answer the above question?

Hello @rozele
I'm not sure what do you mean by "enabling" the API version. Runtime API v2.0 and v3.0 are both enabled by default for all users. V2.0 is deprecated now, so we stopped supporting it in new SDK versions.

Hey all,
The readme on the luis packages now have a table that maps package version to the service api version being used.
#10095 has been logged to track the feature request to have git tags for each release.
There is no further action item here, so closing the issue.


FileNotFoundError :  while running tutorial 7 for LuSTscenario

hi, I really appreciate your work.  I followed the steps and was ready to run tutorial 07. I want to create a custom network for  training but before that, I wanted to go through the tutorial 07 in detail  but I am getting the following error
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/flow/debug/cfg/template_20220518-1127441652866064.7351873.net.xml'
actually, I went through all solutions provided on the some thread

Installed sumo precompiled binaries  and tested ==> same error
installed sumo from source code and tested  ==> same error
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/flow/debug/cfg/template_20220518-1147401652867260.597722.net.xml'

can someone please help me with this problem?

Hi, I have met the same problem and I have solved it. The reason to have this problem is that it recognizes the wrong path ('/tmp/flow/debug/cfg/'). The way to solve it is to set the path in LuST_dir = "/path/to/LuSTScenario" from the root directory.


bg query workaround causes unwanted output

Describe the bug
The bg query added as workaround in https://github.com/charmbracelet/bubbletea/pull/1107 causes unwanted output when no tea application is started and output is redirected to /dev/stdout.
Setup

OS [e.g. Ubuntu, macOS]
linux
Shell [e.g. zsh, fish]
bash
Terminal Emulator [e.g. kitty, iterm]
foot
Terminal Multiplexer [e.g. tmux]
none

To Reproduce
go run . >/dev/stdout

Source Code
package main

import (
	_ "github.com/charmbracelet/bubbletea"
)

func main() {}

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
bsh ❯ go run . >/dev/stdout
Documents/development/moep via 🐹 v1.23.0
bsh ❯ 11;rgb:0000/0000/0000R

Additional context

Oof, thanks for the report, @rsteube. We’ll prioritize this one.


document Store and KVStore

Trying to add notes about how and why to use State.

/assign @lionelvillard
/approve


Improved compatibility with Enhanced Inventory

I've been using this PR and have not seen any issues.
@factubsio worth merging?


⚠ Spryr has degraded performance

In 0c04299, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 3700 ms

Resolved: Spryr performance has improved in c1b6e8c after 1 minute.


wavesurfer.js with Ionic/Cordova

Hello there,
can someone point me to some sample with a successfully implemented wavesurfer.js inside of an Ionic/Cordova project?
I can't get it to work. The Wave control does not show up. I can hook up a play button and play the audio, though. But I seem to be missing something.
Any help is greatly appreciated!
Thanks in advance,
Jens

We are experiencing the same issue. Rending the waveform is nearly impossible. And yes, the audio does play, but doesn't really look pretty without the waveform, though.

@JensWinter is it ionic 1 or 2 and do any errors come up in console?

@entonbiba It's Ionic 1.

@JensWinter do you have the code that you are using? I'm using the latest versions for ionic 1, angular and wavesurfer. Just tested the following below and it renders correctly.
in www/index.html add within :

      <button class="btn btn-primary" ng-click="play()">

        Play
      </button>

in www/js/app.js add:
  angular.module('ionicApp', ['ionic']).controller('MyCtrl', function ($scope) {
      var wavesurfer = WaveSurfer.create({
          container: '#waveform',
          waveColor: 'red',
          progressColor: 'purple'
      });
      wavesurfer.load('https://ia902606.us.archive.org/35/items/shortpoetry_047_librivox/song_cjrg_teasdale_64kb.mp3');
      $scope.play = function () {
          wavesurfer.play();
      };
  });

I'm guessing it's Cordova and not ionic or angular. We are using it with React/Cordova app and it doesn't work in react either neither on iOS nor on Android. Only the audio. But no waveform. In a browser, yes. It does work. But as soon as you use it in a mobile project (like with cordova) it doesn't.

Any luck getting this to work with Ionic 3?

Anyone have any luck? I have it working in the browser but no mobile

@lukewduncan I was able to use Wavesurfer successfully with Cordova 7.0.1.
`

`
In Controller,
`var wavesurfer = WaveSurfer.create({
container: '#waveform',
waveColor: 'white',
progressColor: '#5600ed',
cursorColor: 'transparent',
barWidth : 2.5,
height 	 : 100
});
wavesurfer.load(file);
wavesurfer.on('ready', function () {
wavesurfer.play();
});
`

@Graghav have you done anything special to the div your attaching Wavesurfer too? (maybe specific css or using something other than a div).
It's so weird that I can see it on the browser (chrome) but when I run the application on a device, no show. But thanks for providing the example, I'll just copy the exact Wavesurfer class you have and load everything that way.

@lukewduncan I have made the waveform element as absolute with the parent card being relative and gave a z-index of 100 to the waveform element,
.waveform {
       height: 50%;
       width: 100%;
       padding-left: 15px;
       padding-right: 15px;
       position: absolute;
       z-index: 100;
}

@Graghav have you tried on android, or only on iOS?

@lukewduncan I am using it on iOS. Let me try on Android and update you.

@lukewduncan Tried on Android and it works fine

Thanks to @Graghav for show us that is possible and he has reason. I had error: 'Container element not found' beacuse I had a 'global variable' but it was fixed it when i wrote my code inside a method. If sombody can explain me why or which is the difference I will appreciate it :) :+1:
Correct:

Doesn't work:

@lukewduncan have you try to add permissons? if you are trying with the example you need to add 'whitelist plugin' because you are accessing to mp3 file from a http request. If your are loading file from local storage you need to add other plugins also, like 'cordova-plugin-file'. I'm not tesiting my app yet so i hope my answer be helpful.
https://github.com/apache/cordova-plugin-whitelist
https://github.com/apache/cordova-plugin-file/blob/master/doc/es/index.md

hey @Graghav  its not working in ionic 4 it still show the white screen

@Graghav how are you? Fine? I hope so.
Well i'm trying to use your example in my application to but i have the same issue as @shaktis110. In ionic 5 show the white screen when a start my app.
Ionic version: 5.4.13
Cordova version 9.0.1
My HomePage.TS

My HomePage.html

My HomePage.scss

My App (white screen)

Well, if any could help! Thanks :D

Have you guys made it working on ionic 5? I also having a problem - the audio and play/pause button is working but the waveform is not showing up.
I'm using ionic-react + capacitor

@kenjoegolo any errors in console?

@kenjoegolo any errors in console?

can you try this sample code with your ionic app and use the latest version 4.4.0 please.
https://www.entonbiba.com/lab/ios2.html

can you try this sample code with your ionic app and use the latest version 4.4.0 please.
https://www.entonbiba.com/lab/ios2.html


[Feature] Implement Hot-Warm-Cold Data Management Architecture

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
As BanyanDB grows and deals with bigger datasets, it's important to manage data efficiently and optimize storage to keep costs down. Right now, BanyanDB doesn't differentiate between "hot" data that gets accessed frequently and "cold" data that's barely touched.
After discussing with @HHoflittlefish777,  we propose the implementation of a hot-warm-cold data management architecture within BanyanDB. This architecture would categorize data based on access patterns and move them between different storage tiers:

Hot: Data that is frequently accessed and requires fast read/write speeds. This should be stored on the fastest storage media available.
Warm: Data that is accessed less frequently but may still need to be readily available. This could be stored on lower-cost, lower-speed media. It applies a force merge to optimize the data files.
Cold: Rarely accessed data that can be archived, preventing any changes from being made to it. This should be stored on the cheapest storage media, such as cold HDDs or even offsite/cloud storage.

Contributor: @HHoflittlefish777
Next Steps

[ ] Discuss the viability and scope of the proposed feature
[ ] Draft a detailed design document
[ ] Review and approve the design document
[ ] Implement the feature
[ ] Perform thorough testing, including performance and resilience tests
[ ] Update documentation to reflect the new architecture
[ ] Create tutorials or guides for users to understand how to work with the new data tiers

Use case
No response
Related issues
No response
Are you willing to submit a pull request to implement this on your own?

[ ] Yes I am willing to submit a pull request on my own!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

please assign to me :)

@hanahmily I reassigned this back to you, as the previous request has no update for over half of a year.

This feat relies on #12876


luci-proto-amneziawg: add new package

[x] This PR is not from my main or master branch :poop:, but a separate branch :white_check_mark:
[x] Each commit has a valid :black_nib: Signed-off-by<EMAIL_ADDRESS>row (via git commit --signoff)
[x] Each commit and PR title has a valid :memo: <package name>: title first line subject for packages
[x] Incremented :up: any PKG_VERSION in the Makefile
[x] Tested on: armv8/22.03.5/Safari :white_check_mark:
[x] ( Preferred ) Screenshot or mp4 of changes:
[x] ( Optional ) Depends on: e.g. openwrt/packages#23633
[x] Description: AmneziaWG VPN kernel module makes it resource efficient to connect to Amnezia VPN services. It is the hardened version of WireGuard protocol that allows to change key WG header values and add junk to handshake. This is the LUCI protocol package to manage AmneziaWG settings with GUI.

Hi @leninisdead - thanks for this PR. I think most of this can be reduced by re-using the existing wireguard stuff. By checking whether wireguard or amnezia is installed, one can display the one extra tab for amnezia settings.
Everything else is basically the same, right?

@systemcrash I don't agree with that. I don't know how exactly amneziawg is working and what configuration parameters it needs . But regardless of that, a few remarks why it es better to but this in a separate packages (luci-app-amneziawg):

Simplifies the dependency handling. I do not have to install amneziawg if I only need wireguard.
Code components should only do what they are intended for. Keeps it simple.
What if one of the two is no longer needed? Then the code must be searched to see what can be removed and what can remain

I am in favor of putting it in a separate luci-proto-amneziawg package.
If there are similarities, then we could move this in a library packages.

@systemcrash in addition to @feckert arguments, the amneziawg has a few additional amnezia-specific options (as far as I understand to better mask traffic), it may become too complex to maintain those additional options within a single package.

I agree with @stangri , (see also this discussion: https://github.com/openwrt/packages/pull/23633) better make it a separate package so that it can be maintained separately

These were just coding style remarks. I have not tested this yet.

I think you'll find that most of these remarks apply equally to the original wireguard files, since this is basically a copy paste of that. In such a case I think where they're identical, they can be left to be as is. Especially the i18n strings so as not to create new translation work. (I haven't double checked yet but I think this is the case)

I'm not really keen of adding that much duplicated code. The existing wg implementation alone had myriads of bugs and took years to mature. Copy-pasting that now into a 90% identical package does not seem ideal. I fully expect this to diverge and bit rot over time...

@jow- this is not a superset, but a fork of wireguard and is designed to work independently from wireguard (wireguard proper does not need to be installed for amneziawg to work). If this package depends on (resources from) luci-proto-wireguard, would it also not bring the wireguard/other dependencies then? Can you please elaborate on how resources from luci-proto-wireguard can be reused without unnecessary package dependencies?

I reviewed the source, and while it's a fork, it does seem to be a superset. It wraps wireguard up in an extra something something, where basically none of the original wireguard source is modified, I think.
But you raise valid points.
Is there some Makefile-ese way of saying ignore deps if being called from a specific package Makefile?

I wouldn’t mind hearing from Jason @zx2c4. If the layer that amnezia adds really doesn't modify the wg proto, and formal verification is thus unaffected, why not just try adding the new bits to wg itself? I have no notion of whether that has happened. Sure it'd be a long road but @zx2c4 could elaborate as to why or why not adding it might be a good idea.
There's the possibility that you can replace wg with amnesia and existing configs break. But you can replace amnesia with wg and the amnesia config continues to work....?
Do we also get stuck at that hurdle that config changes are not yet handled by netif/procd? Can someone please do something about that...

In the meantime, you can provide your own "repo" where you serve up all of the packages you make. Be sure to include instructions on your website to add a new repo.
Or in the meantime you could use @stangri's repo. https://source.openwrt.melmac.net/

Since this "amneziawg" protocol appears to be a superset of plain wireguard, you can likely simply depend on luci-proto-wireguard from it and utilize resources from that package without having to introduce a 3rd common shared code package for both protos.

@jow- If this package were to depend on (resources from) luci-proto-wireguard, would it also not bring the wireguard/other dependencies then? Can you please elaborate on how resources from luci-proto-wireguard can be reused without unnecessary package dependencies?

Shares libraries. Which wg doesn't have or is not.

Can you please elaborate on how resources from luci-proto-wireguard can be reused without unnecessary package dependencies?

By moving shared code into a luci-lib-wireguard or similar, then make both luci-proto-* packages depend on that.

By moving shared code into a luci-lib-wireguard or similar, then make both luci-proto-* packages depend on that.

I'd still support this being merged as is and hoping that a js guru (@stokito or @systemcrash) want to take a shot at making a shared library later.
@jow- could you please also have a look at https://github.com/openwrt/packages/pull/23632 -- what needs to be added to the Makefile to make sure the wireguard sources are downloaded prior to build? The PKG_BUILD_DEPENDS:=package/linux/kernel doesn't seem to help.
PS. There's a decent amount of interest in the amneziawg packages for OpenWrt, exhibited by the fact that there are forks of the original project set up just to use github workflows to build binaries for them.

I see this as a complex problem on different levels.
The PR is difficult to review because the code was copied from luci-proto-wireguard but it's not clear what exactly was changed.
@leninalive could you please split it into two commits: the first if just a folder creation with the wireguard code as is and the second commit is a diff of what was changed.
In your code you have a different code formatting like using double quote " instead of single '. This makes diff too big.
Another big source of difference is translation keys where the only change is that the WireGuard was changed to Amnezia.
I think this can be partially solved by just preserving keys as is and leaving the WireGuard in keys. That's should be fine for users. You may add a note above that the AmneziaWG is a fork for the WireGuard and these term are interchangeable here.
As an alternative we may change keys in the WireGuard itself to be more generic e.g. replace the WireGuard keep alive interval to VPN server keep alive interval.
Ideally would be if the Amnezia store own options just in the same config file as the WG but just in own section. Similarly the Amnezia might be some transport plugin for the WG but not a fork.
But today we have what we have. And users needs for a working solution today, even if it's not ideal.
I don't believe it's possible to make some shared library because basically a fork can change any aspect that can't be now shared. For example the WG may deprecate some option but the Amnezia won't follow. Also shared libraries are mainly needed if it's expected to use both packages simultaneously which is not really expected here. So having just a copy paste should be fine and not so difficult to maintain. I believe that core options won't be changed in near time and even is some version is stalled that won't be a problem for most users.
The more general problem is that such advanced VPNs are by their nature continuously forked, created and improving every day. This makes this difficult to maintain but also core developers may simply not use them and can't really test. Also each tool may be targeted for a specific region. This is slippery slope to maintain highly volatile packages in the mainstream source code and packages feed. This is simply too big burden for core developers.
So I think it should be placed in a separate packages feed. The Amnezia can create own feed on their website: it's really just ipk file and Packages.gz. This is also not ideal for several reasons: build for all platforms, trust for binaries signed by someone who don't really trustworthy, complicated for users to add an alternative feed.
All the problems can be at least partially solved, for example build with github actions so we can trust to the resulted binary, alternative feeds can be pre-configured in a stock firmware etc.
This is more complicated way but it should be more productive.
For example today it's exists the ImmortalWrt which is intended mainly for China users. And this is a successful community and some of their packages were backported to the OpenWrt e.g. luci-app-cloudflared.
Maybe you can also offer the Amnezia to them. Anyway, it would be good to have some alt feed with some apps that definitely won't be added to main stream like the luci-theme-kucat that was rejected as inappropriate to be included into official repo.


When a Task contains a Point as well as a Linestring, make sure the Point lies within the viewport

Consider task http://maproulette.org/mr3/challenge/367/task/367271
Upon initial load, depending on zoom level, the marker for the Point may lie outside the viewport, since the Linestring is long.
The Point likely indicates the location that needs attention.
So we should make sure the Point is always visible in the viewport as the task is loaded.

Clicking the "crosshairs" icon on the right side to fit the map to the task features does include the point on that task, as expected.
So I think the problem here is our preservation of the zoom level moving from task to task within a challenge: we should only preserve the zoom if all the features of the new task will be displayed on the map at that zoom level, otherwise we should automatically fit the map to the task features.


Fixed issue #169

Congratulations on making a pull request!
Please make sure you check all the items.

[x] The numbering of the company that you added starts with 1.
[x] You have increased the Total Companies Added count.

Fixed issue #169 - Career page of HBO, Dukaan and Amway .

Hey @Kaustubh-Natuskar , Checkout this and if everything is fine
kindly merge it

Hey @Kaustubh-Natuskar , I will explore more and will add more companies to this Awesome REPO.
I am Happy to contribute in this Repo .

Hey @Kaustubh-Natuskar , I will explore more and will add more companies to this Awesome REPO.
I am Happy to contribute in this Repo .

We want to categories. I and @iyoushe1703 we are not getting time for that. Hope you contribute to that. Thank you


License?

A license for an open-source repository is essential to establish clear terms for use and distribution, protect the creator's rights and interests, and build a community of collaborators and contributors.
I would rather avoid getting in trouble if I accidentally left it in an open-source project of mine, so please specify a license. D:

just added, it's MIT :)


2.0 much worse serialization performance compared to 1.x

Sorry guys about that, but I may be reporting more stuff, because I'm evaluating upgrade to 2.0.
May help you with some stuff if I have time.
If you feel that's 2.0 branch is not in a state to report issues related to it just let me know and I'll stop =]
Testing with bulk index request (IndexMany).
2000 objects in a bulk (30 short fields on average per object).
Used to take less than a second with ES being the bottleneck but now it takes about 20-25 seconds where almost all the time the code is executing is on the client server serializing the request.
Comparing 2.0 (ES & Nest) vs 1.7 (ES & Nest)
Made some performance analysis with VS and it seems CPU hot paths mostly include
Newtonsoft.Json and ElasticContractResolver.
Tried with release build but no improvements.

@michaelbudnik, much much love for this please don't apologize for opening tickets against our 2.0 branch, that's awesome. We still have to do profiling deep dives and this particular one was already on our horizon :+1:
I have some comments on the implementation but I'll switch those over to the PR :)


add cloning instructions in the README.md file

It should be added in the README.md file that the project should be cloned with
git clone --recursive https://github.com/CaNS-World/CaNS

for the submodules to be downloaded along with the repo, or with the following command
git submodule update --init --recursive

in case the repository has already been cloned without submodules.

Fixed by e3451f4aceb2a2064ada8c0cbcfadef555ea6587.


Timeout when getting workflow status

Describe the Bug
When running agc workflow status, I am unable to get a list of workflows/statuses due to repeated timeouts. I am also unable to submit new workflows.
Steps to Reproduce
This started happening on December 1, 2021 after successfully submitting ~7500 workflows via agc (using WDL and Cromwell) between November 24 and December 1. Since then, I have not been able to retrieve workflow statuses or submit new workflows via agc.
These are the counts and statuses of my workflows as of December 1:
   6734 COMPLETE
    444 EXECUTOR_ERROR
     77 RUNNING
    327 INITIALIZING

Relevant Logs
Output of agc workflow status -v:
2021-12-15T14:10:27-05:00 ↓  Checking AGC version...
2021-12-15T14:10:27-05:00 𝒊  Showing workflow run(s). Max Runs: 20
2021-12-15T14:10:28-05:00 ↓  EstablishWesConnection(https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1)
2021-12-15T14:10:28-05:00 ↓  Ping WES endpoint until we get an answer:
2021-12-15T14:10:28-05:00 ↓  Attempt 1 of 3
2021-12-15T14:10:57-05:00 ⚠  Call to WES endpoint 'https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1' failed: 504 Gateway Timeout
2021-12-15T14:11:00-05:00 ↓  Attempt 2 of 3
2021-12-15T14:11:29-05:00 ⚠  Call to WES endpoint 'https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1' failed: 504 Gateway Timeout
2021-12-15T14:11:32-05:00 ↓  Attempt 3 of 3
2021-12-15T14:12:01-05:00 ⚠  Call to WES endpoint 'https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1' failed: 504 Gateway Timeout
2021-12-15T14:12:04-05:00 ✘   error="attempts to establish a connection to WES service endpoint https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1 timed out"
Error: an error occurred invoking 'workflow status'
with variables: {MaxInstances:20 InstanceId: WorkflowName: ContextName:}
caused by: attempts to establish a connection to WES service endpoint https://is4k954kk8.execute-api.us-west-2.amazonaws.com/prod/ga4gh/wes/v1 timed out

I'm still able to connect to the engine, here is the tail of agc logs engine --context default (this particular error is repeated many times):
Wed, 15 Dec 2021 13:50:03 -0500	2021-12-15 18:50:03,844  INFO  - Running with database db.url =
Wed, 15 Dec 2021 13:50:03 -0500	    jdbc:hsqldb:file:cromwell-executions/cromwell-db/cromwell-db;
Wed, 15 Dec 2021 13:50:03 -0500	    shutdown=false;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.default_table_type=cached;hsqldb.tx=mvcc;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.result_max_memory_rows=10000;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.large_data=true;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.applog=1;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.lob_compressed=true;
Wed, 15 Dec 2021 13:50:03 -0500	    hsqldb.script_format=3
Wed, 15 Dec 2021 13:50:03 -0500
Wed, 15 Dec 2021 13:50:04 -0500	2021-12-15 18:50:04,367  INFO  - dataFileCache open start
Wed, 15 Dec 2021 13:50:04 -0500	2021-12-15 18:50:04,372  INFO  - data file was not modified but inc backup exists
Wed, 15 Dec 2021 13:50:04 -0500	2021-12-15 18:50:04,388  INFO  - dataFileCache open end
Wed, 15 Dec 2021 13:51:57 -0500	2021-12-15 18:51:57,672  INFO  - checkpointClose start
Wed, 15 Dec 2021 13:51:57 -0500	2021-12-15 18:51:57,672  INFO  - checkpointClose synched
Wed, 15 Dec 2021 13:52:04 -0500	2021-12-15 18:52:04,140  ERROR - Failed to instantiate Cromwell System. Shutting down Cromwell.
Wed, 15 Dec 2021 13:52:04 -0500	java.sql.SQLTransientConnectionException: db - Connection is not available, request timed out after 120005ms.
Wed, 15 Dec 2021 13:52:04 -0500		at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
Wed, 15 Dec 2021 13:52:04 -0500		at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
Wed, 15 Dec 2021 13:52:04 -0500		at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
Wed, 15 Dec 2021 13:52:04 -0500		at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:494)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:250)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:249)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37)
Wed, 15 Dec 2021 13:52:04 -0500		at slick.basic.BasicBackend$DatabaseDef$$anon$3.run(BasicBackend.scala:275)
Wed, 15 Dec 2021 13:52:04 -0500		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
Wed, 15 Dec 2021 13:52:04 -0500		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Wed, 15 Dec 2021 13:52:04 -0500		at java.base/java.lang.Thread.run(Thread.java:829)
Wed, 15 Dec 2021 13:52:08 -0500	2021-12-15 18:52:08,366  INFO  - checkpointClose script done
Wed, 15 Dec 2021 13:52:08 -0500	2021-12-15 18:52:08,367  INFO  - dataFileCache commit start
qwWed, 15 Dec 2021 14:15:16 -0500	2021-12-15 19:15:16,940  ERROR - Failed to instantiate Cromwell System. Shutting down Cromwell.
Wed, 15 Dec 2021 14:15:16 -0500	java.sql.SQLTransientConnectionException: db - Connection is not available, request timed out after 120002ms.
Wed, 15 Dec 2021 14:15:16 -0500		at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
Wed, 15 Dec 2021 14:15:16 -0500		at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
Wed, 15 Dec 2021 14:15:16 -0500		at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
Wed, 15 Dec 2021 14:15:16 -0500		at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:494)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:250)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:249)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37)
Wed, 15 Dec 2021 14:15:16 -0500		at slick.basic.BasicBackend$DatabaseDef$$anon$3.run(BasicBackend.scala:275)
Wed, 15 Dec 2021 14:15:16 -0500		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
Wed, 15 Dec 2021 14:15:16 -0500		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Wed, 15 Dec 2021 14:15:16 -0500		at java.base/java.lang.Thread.run(Thread.java:829)

Expected Behavior
No timeout.
Actual Behavior
I am no longer able to use agc to submit workflows, get workflow statuses, etc. - I get a timeout every time.
Additional Context
Operating System: Debian GNU/Linux 10 (buster)
AGC Version: 1.1.2
Was AGC setup with a custom bucket: No
Was AGC setup with a custom VPC: Yes

Hi  hkeward, these error coincide roughly with 1.1.2 release. Were you ever able to get the 1.1.2 version working here? Also, which version did you upgrade from?
There's a chance some of the underlying configuration Cromwell uses has changed since the release, causing this issue. Could you try reactivating your account (agc account activate --vpc <your-vpc-id>) and redploying the context (agc context deploy <your-context-name>) to ensure that AGC is using the latest Cromwell image and AWS infrastructure?

This error indicates that Cromwell is not able to connect to it's metadata DB:
Wed, 15 Dec 2021 14:15:16 -0500	2021-12-15 19:15:16,940  ERROR - Failed to instantiate Cromwell System. Shutting down Cromwell.
Wed, 15 Dec 2021 14:15:16 -0500	java.sql.SQLTransientConnectionException: db - Connection is not available, request timed out after 120002ms.

Not sure if that is causal or a by product of a larger problem? Either way if the engine doesn't start no work will be performed or submitted.
The DB is file based and located at jdbc:hsqldb:file:cromwell-executions/cromwell-db/cromwell-db. It's possible this is no longer reachable or perhaps the disk is full?
A context redeploy might help remedy both of these issues although doesn't pin point the cause.

Thanks @tneely - I'm not sure what version I was working with before 1.1.2 - probably 1.0.1, based on when I installed it ~mid October. I believe I upgraded to 1.1.2 on November 30th, though unfortunately I can't recall if I did manage to run any workflows using that version or not.
I ran both of the steps you suggested successfully, but I am still getting the timeout error.

Closing as we discussed with the user offline and problem has been resolved.


Should Tilt allow deploys to non-local kubecontexts by default?

@thrawny in Kubernetes Slack had production downtime caused by inadvertently allowing Tilt to deploy dev configs to a production Kubernetes cluster. This is something we'd very much like to avoid happening to others.
A use case we want to support is for people to run Tiltfiles with a large number of services against a Kubernetes cluster that exists in the cloud, so that their laptop doesn’t melt. For this use case the kubecontext could be anything. However, it's my believe that comparatively few people are using Tilt in this way.
I think we should disable deploying to non-local (minikube, docker-for-mac, possibly others) kubecontexts by default. If Tilt is started with such a non-local kubecontext we could display a message like this:
It looks like you're running Tilt against a remote Kubernetes cluster (KUBECONTEXT_NAME_HERE). Tilt supports this, but we want to make sure you're not inadvertently deploying to prod! To enable remote Kubernetes deploys simply add `enable_remote_deploy()` to your Tiltfile.

Perhaps if you are using a remote kubecontext and you haven't set enable_remote_deploy() we still perform other local operations (docker builds, locals)?
I would love other's thoughts! @thrawny let me know if I got any details wrong.

Idea:
allow_kube_context(['docker-for-desktop', 'minikube'])
block_kube_context('gke-useast-prod')
Not sure if we should default to blocking, or default to anything goes, but it's easy to add to your Tiltfile.

@dbentley Yeah I like that syntax. The default behavior is an interesting question.

+1 on this, I cannot count the number of times I've switched kube contexts.
UX-wise I think I'd find the most useful function to be allow_kube_context rather than block_kube_context, defaulting to not blocking anything if allow_kube_context wasn't called.

I think the default should allow all + allow_kube_context it makes sense for it to be opt-in but also opt-in blocking is an end-less trying to find which contexts to block.
Whitelists also follow saner defaults in general.

Why not set_kube_context("docker-for-desktop")? That's the only context I want tilt to apply into. If I wanted to test out a remote context it's easy enough to change the file.

This would be nice to I also set namespace too

Given #1314, would it be more direct to solve this problem without environment names, via something like a Tiltfile directive allow_remote_k8s()?

Maybe more directly matches user intent (IIUC, "I don't want to accidentally touch remote docker / k8s")
Avoids the risk of unintentionally pushing images when Tilt fails to recognize that a cluster is local (as in #1314)

@landism yeah that makes sense to me

I took a pass at implementing this purely in Starlark. I'm curious if other people think this would help them out
https://gist.github.com/jazzdan/d30ef73482920beb3ac9fa2fcb2c3146
It makes use of the newly added JSON support.

i had an idea over the weekend: what if we checked to see if the existing resources in the cluster had a tilt-deploy-id label on them, and if they don't, we require some sort of intervention to patch over them?

aha! I like that.

reopening because #1995 was reverted because it fails to recognize the latest docker-for-desktop as local


Added docker-compose and entrypoint for docker

docker-compose gives a stable entrypoint to run this.
for build you can do
docker-compose build
and for run after build
docker-compose up

Please update Readme.


with_on_link_find_callback doesn't exist

As of 323d03f:
spider$ rg -F with_on_link_find_callback
spider/README.md
78:    .with_on_link_find_callback(Some(|link, html| {

Looks like it did exist at 9bc8888 in at https://github.com/spider-rs/spider/blob/9bc8888/spider/src/website.rs#L1136-L1148:
    /// Perform a callback to run on each link find.
    pub fn with_on_link_find_callback(
        &mut self,
        on_link_find_callback: Option<
            fn(CaseInsensitiveString, Option<String>) -> (CaseInsensitiveString, Option<String>),
        >,
    ) -> &mut Self {
        match on_link_find_callback {
            Some(callback) => self.on_link_find_callback = Some(callback.into()),
            _ => self.on_link_find_callback = None,
        };
        self
    }

Am I—and thus the README—missing an import; was this mistakenly removed; renamed; hidden behind a feature flag; or should it be removed from the README?

thanks for the issue, @SamuelMarks yes this needs to be removed fixed on main.

That was fast! - Great.


Roll Flutter Engine from f862a620cee4 to 687b0d037c6c (1 revision)

https://github.com/flutter/engine/compare/f862a620cee4...687b0d037c6c
2024-07-25<EMAIL_ADDRESS>Roll Skia from 75994403a8a4 to 529569ce068a (1 revision) (flutter/engine#54111)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC jonahwilliams@google.com,rmistry<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


Fix account registration bugs and remove duplicate client-side validation

Summary & Motivation
Fix a bug in account registration where form state is lost. Also, fix a bug where validation errors were not shown to users.
Remove client-side validation logic that duplicates server-side validation. This ensures there is no need to keep the frontend and backend in sync. Moving validation logic to the server ensures that frontend logic does not hide potential missing validation on the server, preventing potential security issues.
Checklist

[x] I have added a Label to the pull-request
[x] I have added tests, and done manual regression tests
[x] I have updated the documentation, if necessary

Let's not merge this for now - it's not solving the underlying issue of why things working suddenly stopped working.

I've have never seen errors in the UI. And losing form data has been a problem since we upgraded to React 19 Canary :)


Better sorting for package search results

The API returns results in alphabetical order. Using match-sorter, if a user searches for 'pandas', we'll give 'pandas' as the first result instead of 'airflow-with-pandas'
Fixes #217

I just tested this, and it looks great. match-sorter also seems to be a safe library, LGTM!


repoID is used inconsistently in the api, breaking the router

I made a mistake in not more carefully reviewing the new repoID system. Turbosrc api and switches between repoID and owner, repo as arguments in many places. Every request that relies on a repo name should only take the argument repoID, with very limited exceptions. This completely breaks any layer relying on a consistent model for repo identification, such as the router.
This should be discussed as it will likely be a substantial overhaul.
These are the strictly the two exceptions that come to mind when using owner, repo is appropriate in the api:

getNameSpaceRepo(owner, repo...)
createRepo(owner, repo...)

Rather than mixing conventions in various api calls, every api call that needs to identify a repo should use the repoID without exception. The extension should just query getNameSpaceRepo when it needs to find a repoID. All other api calls, except for createRepo, should just use repoID strictly.
In some instances, the convention is mixed, like here chrome-extension/src/requests.js.
async function getRepoStatus(repo_id) {
  const repoName = repo_id;
  const turboSrcID = await getTurboSrcIDFromRepoName(repoName);
  const res = await superagent
    .post(`${url}`)
    .send({
      query: `{ getRepoStatus(turboSrcID: "${turboSrcID}", repo_id: "${repo_id}" ) { status, exists } }`
    })
    .set('accept', 'json');
  //.end((err, res) => {
  // Calling the end function will send the request
  //});
  const json = JSON.parse(res.text);
  return json.data.getRepoStatus;
}

Possibly an alternative easy way to do this without altering the api (before repoIDs were introduced) would be to always keep owner an empty string and just put the repo ID in the repo arg. That way effectively, only the repoID is recorded. There then would be two endpoints to convert repoID -> repo name and repo name -> repoID,  repectively. Later when time permits, the entire api args could be overhauled, as it would take a long time to fix all the functions signatures and arguments. But maybe it's better to just get it over with.

Addendum. Functions and api calls in the turbosrc instance that need an actual repo name, such as  fetching GH pull request data or merging on GH, can get the repo name by querying getRepoNameSpace(repoID)

The real problem is that the router had no concept of repoIDs and repo names as aliases. The above wasn't the core issue, but the api needs to made more consistent. Relatedly, pull request incoming to resolve.


PVC resource not cleanup properly on Sandbox

/kind bug

What versions of software are you using?

I tried to run https://github.com/quarkusio/quarkus-super-heroes with odo. So if you run odo dev on res-fights, rest-heroes and res-villains.
But because of the Red Hat Developer sandbox limitations, the third run fails and once all run have been cancelled, I can still see one PVC.
oc get pvc will give:
odo-projects-rest-villains-app   Pending                                      gp2            31m
Actual behavior
PCVs not fully cleaned
Expected behavior
All PVCs should be cleaned
Any logs, error output, etc?

I was able to replicate this.
It looks like this happens when the first PVC is created, and then when odo is creating the second one it hits the Sandbox limit of 5 PVC, and PVC creation fails.
In this situation, odo should cleanup resources that have already been created before exiting.
▶ odo dev -v 4
I0223 17:14:49.302829    8321 implem.go:109] The path for preference file is /Users/tkral/.odo/preference.yaml
I0223 17:14:49.302898    8321 util.go:776] HTTPGetRequest: https://raw.githubusercontent.com/redhat-developer/odo/main/build/VERSION
I0223 17:14:49.302978    8321 segment.go:264] Checking telemetry enable status
I0223 17:14:49.302983    8321 segment.go:294] Sending telemetry disabled by preference
I0223 17:14:49.303120    8321 util.go:797] Response will be cached in /var/folders/5c/67drc33d0018j6qgtzqpcsbw0000gn/T/odohttpcache for 1h0m0s
I0223 17:14:49.303273    8321 util.go:810] Cached response used.
I0223 17:14:49.305521    8321 version.go:28] executing [podman version --format json]
I0223 17:14:49.578706    8321 implem.go:109] The path for preference file is /Users/tkral/.odo/preference.yaml
I0223 17:14:49.579116    8321 context.go:159] absolute devfile path: '/Users/tkral/Code/odo-examples/quarkus-super-heroes/rest-villains/devfile.yaml'
I0223 17:14:49.579126    8321 context.go:110] absolute devfile path: '/Users/tkral/Code/odo-examples/quarkus-super-heroes/rest-villains/devfile.yaml'
I0223 17:14:49.579394    8321 content.go:48] converted devfile YAML to JSON
I0223 17:14:49.579442    8321 apiVersion.go:60] devfile schemaVersion: '2.1.0'
I0223 17:14:49.579454    8321 helper.go:56] devfile apiVersion '2.1.0' is supported
I0223 17:14:49.580704    8321 schema.go:61] validated devfile schema
I0223 17:14:49.581538    8321 validate.go:45] Successfully validated devfile sections
I0223 17:14:49.581544    8321 validate.go:45] Successfully validated devfile sections
I0223 17:14:49.581569    8321 component.go:88] name of component is "rest-villains", and sanitized name is "rest-villains"
I0223 17:14:49.581581    8321 kclient.go:214] Checking if "projects" resource is supported
  __
 /  \__     Developing using the "rest-villains" Devfile
 \__/  \    Namespace: tkral-dev
 /  \__/    odo version: v3.7.0
 \__/

↪ Running on the cluster in Dev mode
I0223 17:14:50.115543    8321 kubedev.go:80] Creating new adapter
I0223 17:14:50.115556    8321 kubedev.go:109] Creating inner-loop resources for the component
 •  Waiting for Kubernetes resources  ...
I0223 17:14:50.373061    8321 kubernetes.go:60] Creating a PVC with name odo-projects-rest-villains-app and labels map[app:app app.kubernetes.io/instance:rest-villains app.kubernetes.io/managed-by:odo app.kubernetes.io/managed-by-version:v3.7.0 app.kubernetes.io/part-of:app app.kubernetes.io/storage-name:odo-projects app.openshift.io/runtime:quarkus component:rest-villains odo-source-pvc:odo-projects odo.dev/mode:Dev storage-name:odo-projects]
I0223 17:14:50.635248    8321 kubernetes.go:60] Creating a PVC with name m2-rest-villains-app and labels map[app:app app.kubernetes.io/instance:rest-villains app.kubernetes.io/managed-by:odo app.kubernetes.io/managed-by-version:v3.7.0 app.kubernetes.io/part-of:app app.kubernetes.io/storage-name:m2 app.openshift.io/runtime:quarkus component:rest-villains odo.dev/mode:Dev storage-name:m2]
Cleaning resources, please wait
 ✗  unable to create or update component: unable to create PVC: unable to create PVC: persistentvolumeclaims "m2-rest-villains-app" is forbidden: exceeded quota: storage, requested: count/persistentvolumeclaims=1, used: count/persistentvolumeclaims=5, limited: count/persistentvolumeclaims=5

odo-examples/quarkus-super-heroes/rest-villains  main ✗                                                                                2d18h ⚑ ◒  ⍉
▶ k get pvc
NAME                             STATUS        VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
m2-rest-fights-app               Bound         pvc-f85baa5d-833a-46d7-b664-9f08276bec5d   3Gi        RWO            gp2            5m16s
m2-rest-heroes-app               Terminating   pvc-6d795f89-9e54-4ea6-b96c-818a66721cc8   3Gi        RWO            gp2            34s
odo-projects-rest-fights-app     Bound         pvc-746ce438-f123-4ca9-a481-d97eb1eb3eb0   2Gi        RWO            gp2            5m16s
odo-projects-rest-heroes-app     Terminating   pvc-a00204b1-a32f-4efe-a570-302e4ad92f52   2Gi        RWO            gp2            35s
odo-projects-rest-villains-app   Pending                                                                            gp2            5s

Still relevant.
I tried to reproduce this again. Currently, odo does not exit upon errors (as those errors might be fixed with the subsequent push):
[...]
 •  Waiting for Kubernetes resources  ...
I0829 10:02:09.684291 1071750 components.go:260] We are deploying these annotations: map[alpha.image.policy.openshift.io/resolve-names:* odo.dev/project-type:Quarkus]
I0829 10:02:10.310222 1071750 kubernetes.go:60] Creating a PVC with name m2-rest-villains-app and labels map[app:app app.kubernetes.io/instance:rest-villains app.kubernetes.io/managed-by:odo app.kubernetes.io/managed-by-version:v3.14.0 app.kubernetes.io/part-of:app app.kubernetes.io/storage-name:m2 app.openshift.io/runtime:quarkus component:rest-villains odo.dev/mode:Dev storage-name:m2]
I0829 10:02:10.515644 1071750 watch.go:437] Error from Push: watch command was unable to push component: unable to create or update component: unable to create PVC: unable to create PVC: persistentvolumeclaims "m2-rest-villains-app" is forbidden: exceeded quota: storage, requested: count/persistentvolumeclaims=1, used: count/persistentvolumeclaims=5, limited: count/persistentvolumeclaims=5
Error connecting to the cluster. Please log in again

Still, when stopping odo, the PVC it has requested (and which remained Pending) does not get removed:
^C
I0829 10:09:58.129453 1071750 starterserver.go:147] Shutting down the API server: context canceled
I0829 10:09:58.129464 1071750 watcher.go:20] context done, reason: context canceled
I0829 10:09:58.129500 1071750 starterserver.go:150] Error while shutting down the API server: context canceled
I0829 10:09:58.129505 1071750 watch.go:333] Dev mode interrupted by user
I0829 10:09:58.132948 1071750 implem.go:114] The path for preference file is /home/asoro/.config/odo/preferences.yaml
I0829 10:09:58.133025 1071750 segment.go:268] Checking telemetry enable status
I0829 10:09:58.133032 1071750 segment.go:298] Sending telemetry disabled by preference
Cleaning resources, please wait
I0829 10:09:58.267092 1071750 odo.go:101] Could not get the latest release information in time.


I have some questions about netsniff.js

In file： https://github.com/ariya/phantomjs/blob/master/examples/netsniff.js ，like this：
entries.push({
startedDateTime: request.time.toISOString(),
time: endReply.time - request.time,
request: {
method: request.method,
url: request.url,
httpVersion: "HTTP/1.1",
cookies: [],
headers: request.headers,
queryString: [],
headersSize: -1,
bodySize: -1
},
response: {
status: endReply.status,
statusText: endReply.statusText,
httpVersion: "HTTP/1.1",
cookies: [],
headers: endReply.headers,
redirectURL: "",
headersSize: -1,
bodySize: startReply.bodySize,
content: {
size: startReply.bodySize,
mimeType: endReply.contentType
}
},
cache: {},
timings: {
blocked: 0,
dns: -1,
connect: -1,
send: 0,
wait: startReply.time - request.time,
receive: endReply.time - startReply.time,
ssl: -1
},
pageref: address
});
});
First question，in request's headersSize= -1， I don't know Why request's headersSize is not true size but -1？And don't kow why request's bodySize = -1、 response's headersSize = -1?
Second question，in timings dns = -1, I don't know Why timings's dns is not true time？And don't know why blocked = 0、connect = -1、send = 0?

Thank you for submitting this ticket!
This issue tracker primarily serves as the tool to report and track bugs, defects, and development tasks.
For general question, code review request, build problem, or other related discussion, please post it to either:

the official PhantomJS users mailing-list
Stack Overflow (with phantomjs tag)

If you have not read it yet, please check also a few tips on Effective Q&A.


File names are inconsistant between mos_files/LIVE_VQC_metadata.csv and LIVE VQC dataset.

I observe that the File column in mos_files/LIVE_VQC_metadata.csv contains file names like "XXXNEW.mp4". However, there are no such "XXXNEW.mp4" files in the LIVE VQC dataset (only "XXX.mp4" can be found). Does the additional "NEW" straing makes a difference?

Hi, it doesn't make a difference. Just use whichever video named "XXX.mp4" or "XXXNEW.mp4," and you should be good to go. LIVE-VQC has some problems, so we might have pre-processed some videos. However, if you have 1 or 2 videos different from our copy, it doesn't matter that much and shouldn't affect your evaluation results.


Proposal to remove waterway=dredged_area from the main and loops map

Its an almost never used tag, but from looking at the wiki it seems to be accepted. Also according to the wiki, it should only be drawn as a closed way, making them all show up as a loop on both the loops map and the main map.
Example: https://www.openstreetmap.org/way/380264760/history
Wiki: https://wiki.openstreetmap.org/wiki/Tag:waterway=dredged%20area?uselang=en

whoops, just now realized I misread and that its only a proposed feature, but I still don't think it should show up.

My mistake, there's an in use alternative of seamark:type=dredged_area https://wiki.openstreetmap.org/wiki/Tag:seamark:type%3Ddredged_area, I will just retag any waterway=dredged_area to that when i come across it. Sorry for the trouble.


Fix Raspiblitz integration (auth header)

Due to the basic auth setup required in Umbrel, we changed the auth header sent by the UI containing the JoinMarket bearer token to x-jm-authorization. See https://github.com/joinmarket-webui/joinmarket-webui/pull/102. That means any webserver hosting the web UI needs to rewrite this header back to Authorization before proxying requests to JoinMarket's jmwalletd daemon.
The Raspiblitz NGINX config doesn't know about this and therefore doesn't rewrite the authorization header. That means all requests to jmwalletd will fail on the RaspiBlitz because jmwalletd, of course, expects the token in the Authorization header, not in x-jm-authorization.
Not sure how/if we can patch this properly. Ideally we fix this on the UI end. Then we don't need to wait for a Raspiblitz version bump to fix the integration script.
What would work (not super clean but it would probably work) is to revert the x-jm-authorization header change and go back to sending the bearer token in the standard Authorization header. Umbrel would not be affected since that is pinned to the v0.0.3 version. However, Raspiblitz users can update to a newer version by running config.scripts/bonus.joinmarket-webui.sh update command.
That of course assumes that we implement #120 before we do the next Umbrel release.
Thoughts on how to best resolve this?

Ok knowing that there is https://github.com/rootzoll/raspiblitz/pull/2987, we can probably also fix this directly in the Raspiblitz NGINX config. See https://github.com/joinmarket-webui/joinmarket-webui-docker/pull/12/files for reference.

@dennisreimann Do you think it would make sense to add the fix for this to your existing https://github.com/rootzoll/raspiblitz/pull/2987 Raspiblitz PR to minimize confusion for them, or better have it be two separate PRs?

I don't have the time to do so right now – feel free to do so if you can!

Yep already on it! Just checking how we should handle it logistically. If you think it makes sense to do it in one go I can send you patches, otherwise I'd open a new PR for Raspiblitz.

Pushed a minimal fix here: https://github.com/rootzoll/raspiblitz/pull/2988
Doesn't enable Basic Auth for Raspiblitz, just makes sure the token gets sent along to jmwalletd in the correct header.


fire Employee Method

How to Demo:
As a manager I want be able to fire an employee
remove employee from employee list with employeeID
check employee list is updated without employee


Add github link to texts

We could add a link to our repository to the inference and simulation apps

Done