KAFKA-10017: fix 2 issues in EosBetaUpgradeIntegrationTest

The PR follows #9688, to make the EosBetaUpgradeIntegrationTest more stable. Fixed some issues:

Test failed with the error message:

org.apache.kafka.streams.errors.InvalidStateStoreException: Cannot get state store store because the stream thread is PARTITIONS_ASSIGNED, not RUNNING

https://ci-builds.apache.org/job/Kafka/job/kafka-trunk-jdk8/274/testReport/org.apache.kafka.streams.integration/EosBetaUpgradeIntegrationTest/shouldUpgradeFromEosAlphaToEosBeta_true_/
After investigation, I found it's because we actually do rebalancing twice after new stream started: 1 for Adding new member, 1 for leader re-joining group during Stable. So, if we only wait for the state to be RUNNING, it might enter REBALANCING state later, and cause that we can't get store successfully

We setUncaughtExceptionHandler, but didn't handle it well. Before, we expected the uncaught exception only got 1, but actually, we'll get 4 here (2 injected exception, 2 injected commit exception). So, we saw many messages in stderr output, which is not good for debugging. After fix, we only output to stderr when the exception is not what we expected for debugging use.

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@mjsax @ableegoldman @guozhangwang , could you help review this PR? Thanks.

@mjsax , as mentioned in https://github.com/apache/kafka/pull/9690#issuecomment-747243284, I've updated the commit. What my change is:

Before my change, when we started a stream with the other one is running, we'll just waitForRunning for both streams. But we actually expect more than 1 rebalancing here (unstable + stable assignments), that would make us run the following tests under the wrong stream state. For example: When stream1 started, it might go through

[CREATED -> REBALANCING], [REBALANCING -> RUNNING](unstable), [RUNNING -> REBALANCING], [REBALANCING -> RUNNING](stable)

So, if we only waitForRunning, it might be just after the unstable rebalancing. Though we have waitForStableAssignment, it still doesn't guarantee it already completed the stable rebalacing. That is, we need to wait for the "specific number" of [REBALANCING -> RUNNING] state transition so that we can make sure it completes all necessary rebalancing. And the "specific number" can be counted by the onAssignmentComplete callback.
Note: I only waitForNumRebalancingToRunning for the new started stream because I found sometimes if the stream runs fast enough, the already running stream might not have the expected number of [REBALANCING -> RUNNING] state transition. The reason is this line:
[appDir2-StreamThread-1] State transition from PARTITIONS_ASSIGNED to PARTITIONS_ASSIGNED

Basically, The already running stream thread should have the state change: [RUNNING to PARTITIONS_REVOKED], [PARTITIONS_REVOKED to PARTITIONS_ASSIGNED](unstable), [PARTITIONS_ASSIGNED to RUNNING] + [RUNNING to PARTITIONS_ASSIGNED](stable), [PARTITIONS_ASSIGNED to RUNNING]. Because it needs one more PARTITIONS_REVOKED step, it might be under 2 PARTITIONS_ASSIGNED at the same time.

Fail the test when there are too many exception thrown or unexpected exception thrown by the hasUnexpectedError flag.

Thank you.

@mjsax , thanks for your comments. Let me answer your questions below.

You originally observed a test failure based on missing retries when trying to get the state store. This should be fixed already.

--> Right! The failure when trying to get state store is fixed now.

did you observer more test failures that indicate that we need the proposed changes?

--> Yes, I observe test failures on your PR to 2.6 (i.e. https://github.com/apache/kafka/pull/9690#issuecomment-747243284), the this test failure should also happen in trunk branch, which is caused by the stream is still under unstable assignment, not stable yet.

For this case, we know that the state must be in rebalancing (because Kafka Streams would transit to REBALACING before the StableAssignmentListener is called)

--> No, that's not what I observed. What I observed is that the StableAssignmentListener only completes the assignment, and the streams haven't handled the assignment yet. Please check the following logs:
2020-12-23T11:35:01.361+0800 [DEBUG] [TestEventLogger]     !!! onAssignmentComplete
...
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,703] INFO stream-thread [appDir2-StreamThread-1] Handle new assignment with:
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          New active tasks: [0_0, 0_2]
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          New standby tasks: []
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          Existing active tasks: []
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          Existing standby tasks: [0_0, 0_2] (org.apache.kafka.streams.processor.internals.TaskManager:255)
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,703] INFO stream-thread [appDir1-StreamThread-1] Handle new assignment with:
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          New active tasks: [0_1, 0_3]
2020-12-23T11:35:19.703+0800 [DEBUG] [TestEventLogger]          New standby tasks: []
2020-12-23T11:35:19.704+0800 [DEBUG] [TestEventLogger]          Existing active tasks: [0_1, 0_3]
2020-12-23T11:35:19.704+0800 [DEBUG] [TestEventLogger]          Existing standby tasks: [] (org.apache.kafka.streams.processor.internals.TaskManager:255)
...
2020-12-23T11:35:19.704+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,703] INFO stream-thread [appDir1-StreamThread-1] State transition from RUNNING to PARTITIONS_ASSIGNED (org.apache.kafka.streams.processor.internals.StreamThread:224)
2020-12-23T11:35:19.704+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,703] INFO stream-client [appDir1] State transition from RUNNING to REBALANCING (org.apache.kafka.streams.KafkaStreams:298)
...
2020-12-23T11:35:19.711+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,711] INFO stream-thread [appDir2-StreamThread-1] State transition from RUNNING to PARTITIONS_ASSIGNED (org.apache.kafka.streams.processor.internals.StreamThread:224)
2020-12-23T11:35:19.711+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,711] INFO stream-client [appDir2] State transition from RUNNING to REBALANCING (org.apache.kafka.streams.KafkaStreams:298)
...
2020-12-23T11:35:19.776+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,776] INFO stream-thread [appDir1-StreamThread-1] State transition from PARTITIONS_ASSIGNED to RUNNING (org.apache.kafka.streams.processor.internals.StreamThread:224)
2020-12-23T11:35:19.776+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:19,776] INFO stream-client [appDir1] State transition from REBALANCING to RUNNING (org.apache.kafka.streams.KafkaStreams:298)
...
2020-12-23T11:35:20.028+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:20,028] INFO stream-thread [appDir2-StreamThread-1] State transition from PARTITIONS_ASSIGNED to RUNNING (org.apache.kafka.streams.processor.internals.StreamThread:224)
2020-12-23T11:35:20.028+0800 [DEBUG] [TestEventLogger]     [2020-12-23 11:35:20,028] INFO stream-client [appDir2] State transition from REBALANCING to RUNNING (org.apache.kafka.streams.KafkaStreams:298)

The line !!! onAssignmentComplete is the callback we got on onAssignmentComplete. Then, the stream thread handle the new assignments, next, it'll do the state transition (change to REBALANCING) for each stream, and the last, will be in RUNNING state after rebalancing completes.
And, that's the reason why the PR to 2.6 #9690 keeps encountering test failures, because it's we're still under "unstable" assignment (that is, just complete the  onAssignmentComplete, not entering stable rebalancing stage yet). And in 2.6, the unstable assignment will sometimes be empty assignmet, that's why the test is flaky. Though in 2.7 and later, we don't have empty in unstable assignment, we still might still not be in stable RUNNING state, and the assignment might be changed after stable assignment. And that's why I think we should fix this issue, too.
Thank you. Happy Holidays~

Thanks for the input! The test behavior is slightly different in 2.6 compared to 2.7/trunk though and thus, I am not sure if we can apply the same reasoning (that is also the reason why there is a separate PR for 2.6). I did not have time to look into the 2.6 PR yet, as I wanted to resolve this PR first.

@showuon Sorry for late response. Pretty busy atm.
We found that the fix for the exception handler contained in this PR is also blocking https://github.com/apache/kafka/pull/9720 (\cc @wcarlson5) -- could you extract this fix into a separate PR that we can merge quickly to unblock 9720? Otherwise we might need to extract your fix into 9720 to be able to move forward with it.
Hope to cycle back to this PR soon..
Thanks.

@showuon Sorry for late response. Pretty busy atm.
We found that the fix for the exception handler contained in this PR is also blocking https://github.com/apache/kafka/pull/9720 (\cc @wcarlson5) -- could you extract this fix into a separate PR that we can merge quickly to unblock 9720? Otherwise we might need to extract your fix into 9720 to be able to move forward with it.
Hope to cycle back to this PR soon..
Thanks.

OK, working on it now.

OK, working on it now.

@mjsax , I've reverted my change for the state change. Now, there's only the exception handler improvement change.
And for the state change fix, after the holidays, I think, if the test is not flaky now, why should we change it, and maybe make it unreliable again. So, my thought is, we keep monitoring this test, and if tests failed again, we can discuss it again. What do you think?

@mjsax , I've reverted my change for the state change. Now, there's only the exception handler improvement change.
And for the state change fix, after the holidays, I think, if the test is not flaky now, why should we change it, and maybe make it unreliable again. So, my thought is, we keep monitoring this test, and if tests failed again, we can discuss it again. What do you think?

There's a jenkins timeout build error in jdk8. Made a minor change to trigger jenkins build again to make sure it's infra's issue, not my change

There's a jenkins timeout build error in jdk8. Made a minor change to trigger jenkins build again to make sure it's infra's issue, not my change

All tests passed.

All tests passed.

Thanks for updating the PR!

And for the state change fix, after the holidays, I think, if the test is not flaky now, why should we change it, and maybe make it unreliable again. So, my thought is, we keep monitoring this test, and if tests failed again, we can discuss it again. What do you think?

Agree. We can always do a follow up if needed.

Thanks for updating the PR!

And for the state change fix, after the holidays, I think, if the test is not flaky now, why should we change it, and maybe make it unreliable again. So, my thought is, we keep monitoring this test, and if tests failed again, we can discuss it again. What do you think?

Agree. We can always do a follow up if needed.


Refactoring and Code Reduction

Reduces code by 203 lines
Uses switch statements rather than major if chains
Re-organized to allow for better readability
Fewer vars
Usage of ternaries
Usage of Chalk Template Literals
Singular Error Handler
Combination of both FS packages

@teddybrine if you wanna review this, that should optimise some of the code

Approved.


Modal submit not working

Hi,
First, thank you so much for this nice package,
Please I follow your procedure to install it but submit button on modal not working :/ also errors don't appear on modal ..
Could you help me please ,,, Thanks

@AEK-BKF Thanks for kind words. Errors appear in my modals though. I'd have to see more info on versioning, and/or code samples, to help you pinpoint the issue.

@AEK-BKF I changed the first line from:
$('form.bootstrap-modal-form').on('submit', function(submission) {
to:
$(document).on('submit', 'form.bootstrap-modal-form', function(submission){
I don't know anything about jquery/ajax/php (I just tinker) but this seemed to work for me. Might help?

Hi, thanks for creating this script it works very well once it is correctly setup. Initially the submit was not being prevented by the script and no validation occured but after much googling I found the answer.
The form open and close statements must be the first and last things in your modal, if you have any divs before or after form open/close statements it will not work. Hope this helps someone.

Hi,
I am closing this as there has been no action for a while on this ticket. If this is still an issue please raise another ticket with a code sample so I can test the code for myself.


Update task container generated name check

TL;DR
Use k8s apimachinery IsDNS1123Label check to validate generated task container names rather than incorrect regex.
Type

[x] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[x] Code completed
[x] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Complete description
thanks @kanterov for the bug report
Tracking Issue
https://github.com/flyteorg/flyte/issues/793
Follow-up issue
NA

can we please create a tracker bug? this will help in knowing when the fix went in

@kumare3 added https://github.com/flyteorg/flyte/issues/793


Nuggets in correct orientation

About the PR

Puts the nuggies in the correct orientation.
Why / Balance

no.
Technical details

Media

[ ] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Yell at me if i forget.
Breaking changes

Changelog

no cl no fun

in future you can make all of your changes one pr
it's just a lot easier to deal with

in future you can make all of your changes one pr it's just a lot easier to deal with

I was told to atomize


Support cjs and umd in packages

Currently the published NPM modules only expose esm modules. To increase compatibility with other developer environments we could also build valid cjs and umd bundles.
Should we? 🤔

Should we? 🤔

It's now 2023, many popular packages now only offer ESM modules. The reason for this is ESM now has wide adoption and by providing other module fallbacks we're providing an unnecessary crutch on older ways.
We will take an opinionated stance of only offering ESM modules. Consumers can always transpile themselves as necessary.


Error in parsing keysync when firing a weapon

[8-2-2021 23:46:51] [error]    Handling packet (PACKET_ID_PLAYER_KEYSYNC) failed. Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') Actual value was 216.

Seems to no longer happen after bullet sync config was changed. Might want to double check.
(Could have been accidentally fixed in the meantime since keysync has been changed a bit)

Maybe related to #241

Maybe related to #241

Probably not, this bug has been there for a while before the packet pooling was implemented.

Unable to reproduce


feat: add port selection for api server service

What type of PR is this?
/kind feature

What does this PR do?

add port selection for api server service
Which issue(s) does this PR fix?

Fixes #
Special notes for your reviewer:

Does this PR introduce a user-facing change?

/lgtm

/approve


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

AWS CodeBuild CI Report

CodeBuild project: DDKIntegrationTestsD8472609-5SCHWjldmWcf
Commit ID: df40c9e52444e4e04fb054c7a5312810bdd0ec1e
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


OCPI - get Charging Station by ChargeBoxSerialNumber

EMSP Implementation:
location_id and evse_uid are received from Gireve and stored as chargeBoxSerialNumber = (location_id + ‘-‘ + evse_uids)
Fixed getChargingStation: option to filter by chargeBoxSerialNumber

Problem:
Hi Jakob,
As discussed, we have an issue in the current eMSP implementation.
The token will never be allowed by the eMSP tenant because we can’t retrieve the charging station.
We receive the following body when Gireve asks us to authorize a token
{
"location_id": "37534",
"evse_uids": [
"121225"
]
}
Thanks to this data, we are able to build a unique id for the charge point (location_id + ‘-‘ + evse_uids).
This identifier is mapped to the chargeBoxSerialNumber, not to the charging station id.
So, you have to update the code to retrieve a charging station by chargeBoxSerialNumber, not by id.
https://github.com/Charge-Angels/ev-server/blob/6bb38b43d9192b057a7ecf541fb05d42c096eaff/src/server/ocpi/ocpi-services-impl/ocpi-2.1.1/EMSPTokensEndpoint.ts#L122
Be careful, the buildChargingStationId method is used several times. You may have to update this code also.
Hope this helps,
Sébastien

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


containers/create endpoint allows container creation without an image

In API v1.18 the container/create endpoint will allow a container to be created without an Image.  Using the docker-api Ruby gem which is a wrapper around the API:
[69] pry(main)> c = Docker::Container.create()
Docker::Error::ServerError: No command specified
from /var/lib/gems/2.1.0/gems/docker-api-1.21.4/lib/docker/connection.rb:50:in `rescue in request'

[70] pry(main)> c = Docker::Container.create(Cmd: 'foo')
=> #<Docker::Container:0x0000000251cf78
 @connection=#<Docker::Connection:0x0000000243d0f8 @options={:socket=>"/var/run/docker.sock"}, @url="unix:///">,
 @id="fe22f2cf547203936038681c966d376dc8a56ff5619bd83ca5c463e055e31c7e",
 @info={"Warnings"=>nil, "id"=>"fe22f2cf547203936038681c966d376dc8a56ff5619bd83ca5c463e055e31c7e"}>

[71] pry(main)> c.json['Image']
=> ""

Note that there is error checking on Cmd, but apparently not on Image.  This broken container shows in docker ps -a as ':latest':
$ docker ps -a
CONTAINER ID        IMAGE                          COMMAND                CREATED             STATUS              PORTS               NAMES
fe22f2cf5472        :latest                        "foo"                  3 minutes ago                                               hungry_lovelace

This also triggers the image removal bug fixed in 71a499022904e1da074ded3e1ed874c1b75ccf23 as long as the broken container is present:
$ docker rmi debian:wheezy
Error response from daemon: could not find image: Prefix can't be empty
FATA[0000] Error: failed to remove one or more images

To the best of my knowledge the Image argument is mandatory for the container/create endpoint and should be enforced by the server.

Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

Requested BUG REPORT INFORMATION:
$ docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.3.3
Git commit (client): 7c8fca2
OS/Arch (client): linux/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.3.3
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64
$ docker info
Containers: 3
Images: 269
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 281
 Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 3.16.0-2-amd64
Operating System: Debian GNU/Linux 8 (jessie)
CPUs: 4
Total Memory: 7.729 GiB
Name: st-b4ec4504-f5d5-11e3-8256-db3b01ecff15.cpstick.rshscp.local
ID: N76A:JP5U:ZZYG:IWA7:AFKN:MBYR:SONO:P7Y4:UHTL:G245:ABYC:YIUZ
WARNING: No memory limit support
WARNING: No swap limit support
$ uname -a
Linux (hostname removed) 3.16-2-amd64 #1 SMP Debian 3.16.3-2 (2014-09-20) x86_64 GNU/Linux

Environment: Physical
Steps to reproduce:

Send a POST request to /containers/create without Image but otherwise properly formed:

$ ncat -U /var/run/docker.sock
POST /containers/create HTTP/1.1
Content-Type: application/json
Content-Length: 16

{ "Cmd": "foo" }
HTTP/1.1 201 Created
Content-Type: application/json
Date: Thu, 02 Jul 2015 03:51:31 GMT
Content-Length: 90

{"Id":"16d6e50747a4295213ceca5f4a9c31debe1b3ca5679ef76b54d589fea8ad7c07","Warnings":null}

A container without a image will be created:

$ docker inspect 16d6e50747a4295213ceca5f4a9c31debe1b3ca5679ef76b54d589fea8ad7c07
[{
    "AppArmorProfile": "",
    "Args": [],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "foo"
        ],
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": null,
        "ExposedPorts": null,
        "Hostname": "16d6e50747a4",
        "Image": "",
        "Labels": null,
        "MacAddress": "",
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkDisabled": false,
        "OnBuild": null,
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": null,
        "WorkingDir": ""
    },
    "Created": "2015-07-02T03:51:31.17262407Z",
    "Driver": "aufs",
    "ExecDriver": "native-0.2",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": null,
        "CapAdd": null,
        "CapDrop": null,
        "CgroupParent": "",
        "ContainerIDFile": "",
        "CpuShares": 0,
        "CpusetCpus": "",
        "Devices": null,
        "Dns": null,
        "DnsSearch": null,
        "ExtraHosts": null,
        "IpcMode": "",
        "Links": null,
        "LogConfig": {
            "Config": null,
            "Type": "json-file"
        },
        "LxcConf": null,
        "Memory": 0,
        "MemorySwap": 0,
        "NetworkMode": "",
        "PidMode": "",
        "PortBindings": null,
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": ""
        },
        "SecurityOpt": null,
        "Ulimits": null,
        "VolumesFrom": null
    },
    "HostnamePath": "",
    "HostsPath": "",
    "Id": "16d6e50747a4295213ceca5f4a9c31debe1b3ca5679ef76b54d589fea8ad7c07",
    "Image": "",
    "LogPath": "",
    "MountLabel": "",
    "Name": "/furious_darwin",
    "NetworkSettings": {
        "Bridge": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "MacAddress": "",
        "PortMapping": null,
        "Ports": null
    },
    "Path": "foo",
    "ProcessLabel": "",
    "ResolvConfPath": "",
    "RestartCount": 0,
    "State": {
        "Dead": false,
        "Error": "",
        "ExitCode": 0,
        "FinishedAt": "0001-01-01T00:00:00Z",
        "OOMKilled": false,
        "Paused": false,
        "Pid": 0,
        "Restarting": false,
        "Running": false,
        "StartedAt": "0001-01-01T00:00:00Z"
    },
    "Volumes": {},
    "VolumesRW": {}
}
]

  $ docker ps -a
CONTAINER ID        IMAGE                          COMMAND                CREATED             STATUS              PORTS                                              NAMES
16d6e50747a4        :latest                        "foo"                  2 minutes ago                                                                              furious_darwin

On releases without 71a499022904e1da074ded3e1ed874c1b75ccf23 docker rmi will now be broken as long as the image exists:
$ docker rmi centos:centos6
Error response from daemon: could not find image: Prefix can't be empty
FATA[0000] Error: failed to remove one or more images
$ docker rm 16d6e50747a4295213ceca5f4a9c31debe1b3ca5679ef76b54d589fea8ad7c07
16d6e50747a4295213ceca5f4a9c31debe1b3ca5679ef76b54d589fea8ad7c07
$ docker rmi centos:centos6
Untagged: centos:centos6
Deleted: f6808a3e4d9e80a655ec625e38b869ed8a614611e4d0073aeff23be841c9fcff

Expected behavior: The POST to /containers/create should return a 400 Bad Request and not create a broken container.

@TJNII Yup, you're right, thanks for report.
I think this was introduced by @jlhawn in "scratch as special word" PR.

Yes, this is expected behavior (since I think Docker 1.5?). It allows you to create an image FROM scratch which means that the container should have an empty rootfs directory (aside from the host config layer that Docker sets up).

As for the docker ps output and docker rmi issues you reported, those are things that should be fixed.

can you please change the title to more appropriately describe the problems with ps amd rmi


Vue thinks local IP address is global, causing several issues

Version
3.0.0-rc.2
Reproduction link
https://github.com/kissge/vue-cli-bug
Steps to reproduce

Using vue create to start a project, on a remote machine (say, AWS EC2 instance)
Run npm run serve

What is expected?

Global IP address is shown in console
HMR works
App is accessible from the internet via http://mydomain.example.com/:8080

What is actually happening?

Local IP address is shown in console
HMR fails because sockjs tries to connect to local IP address
App cannot be accessed from outside the network, so I have to use tricks like ssh port forwarding

I also tried tweaking webpack config from vue.config.js, with no luck.

The devserver is meant for local development and is not accessible from outside by default.
However, you can adjust this behaviour in vue.config.js with the devServer option.
https://cli.vuejs.org/config/#devserver
Options to look into:
https://webpack.js.org/configuration/dev-server/#devserver-disablehostcheck
https://webpack.js.org/configuration/dev-server/#devserver-host

the devServer options have their own options property in vue.config.js because we process them interlly before handing them to the devserver:
module.exports = {

module.exports = {
  configureWebpack: {
    // other webpack options to merge in ...
  },
  // devServer Options don't belong into `configureWebpack`
  devServer: {
    host: '<IP_ADDRESS>',
    hot: true,
    disableHostCheck: true,
  },
};

Oops, my fault... thanks for pointing out.
But still, two other problems persist.
I think address.ip() used here is something meant to get local IP address, unlike other things like this and this?

Local IP address is shown in console
HMR fails because sockjs tries to connect to local IP address
~App cannot be accessed from outside the network, so I have to use tricks like ssh port forwarding~

The code you mention should not be running if I set the host option (to your external IP)

So you mean the right configuration is not host: '<IP_ADDRESS>', but host: 'ggg.ggg.ggg.ggg', where ggg.ggg.ggg.ggg is my global IP address, right?
It also didn't work (of course no other process is listening to 8080, just to make it clear):
$ npm run serve

><EMAIL_ADDRESS>serve /***/***/***/***
> vue-cli-service serve

 INFO  Starting development server...
Starting type checking service...
Using 1 worker with 2048MB memory limit
 10% building modules 1/1 modules 0 activeevents.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRNOTAVAIL ggg.ggg.ggg.ggg:8080
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at Server.setupListenHandle [as _listen2] (net.js:1338:19)
    at listenInCluster (net.js:1396:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1505:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:97:10)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>serve: `vue-cli-service serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!
Side question: why do you want to run the development server on a remote machine?

So first, a small update. the devServer.public setting should allow you to set the public host to <IP_ADDRESS>:8080
 devServer: {
    // setting host should not be necessary
    // host: '<IP_ADDRESS>:8080'
    public: '<IP_ADDRESS>:8080'
    disableHostCheck: true,
  },

Out of curiosity, when you develop on localhost, then I wonder why HMR wants to connect to the server via local network address, not localhost.

It doesn't do that for me. An that's a different scenario that yours, where you do access from an external host, right?

I found this same problem with DockerNAT and network <IP_ADDRESS> on Windows. I tracked the issue and found that in<EMAIL_ADDRESS>is this line:
      // This can only return an IPv4 address
      lanUrlForConfig = address.ip()

and it's returning <IP_ADDRESS> wich is the address for DockerNAT
Run this simple code to see what happens:
const os = require('os');
const interfaces = os.networkInterfaces();
console.log('interfaces =>', interfaces);

throws
interfaces => { 'vEthernet (DockerNAT)':
   [ { address: '<IP_ADDRESS>',
       netmask: '<IP_ADDRESS>',
       family: 'IPv4',
       mac: '00:15:5d:24:52:1a',
       internal: false,
       cidr: '<IP_ADDRESS>/24' } ],
  Ethernet:
   [ { address: '<IP_ADDRESS>',
       netmask: '<IP_ADDRESS>',
       family: 'IPv4',
       mac: '50:9a:4c:27:de:09',
       internal: false,
       cidr: '<IP_ADDRESS>/26' } ],
  'Loopback Pseudo-Interface 1':
   [ { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 0,
       internal: true,
       cidr: '::1/128' },
     { address: '<IP_ADDRESS>',
       netmask: '<IP_ADDRESS>',
       family: 'IPv4',
       mac: '00:00:00:00:00:00',
       internal: true,
       cidr: '<IP_ADDRESS>/8' } ],
  'vEthernet (Modificador pre)':
   [ { address: '<IP_ADDRESS>',
       netmask: '<IP_ADDRESS>',
       family: 'IPv4',
       mac: '86:15:5f:6e:21:9f',
       internal: false,
       cidr: '<IP_ADDRESS>/28' } ] }

What I need is the address for Ethernet.
So, try this test:
const address = require('address');
console.log('address.ip() =>', address.ip());
console.log('address.ip("Ethernet") =>', address.ip('Ethernet'));

Wich outputs
address.ip() => <IP_ADDRESS>
address.ip("Ethernet") => <IP_ADDRESS>

After this changed a few lines in this files:
serve.js
<EMAIL_ADDRESS>line ~18
    options: {
      '--open': `open browser on server start`,
      '--copy': `copy url to clipboard on server start`,
      '--mode': `specify env mode (default: development)`,
      '--host': `specify host (default: ${defaults.host})`,
      '--port': `specify port (default: ${defaults.port})`,
      '--interface': `specify network interface`,			// <== Added this option
      '--https': `use https (default: ${defaults.https})`
    }

line ~72
// Add this line under the other inicializations
const networkInterface = args.interface || process.env.INTERFACE || projectDevServerOptions.interface

line ~74:
	const urls = prepareURLs(
		  protocol,
		  host,
		  port,
		  options.baseUrl,
		  networkInterface		// <== added this parameter
    )

prepareURLs.js
<EMAIL_ADDRESS>line ~13:
// added parameter networkInterface
module.exports = function prepareUrls (protocol, host, port, pathname = '/', networkInterface) {

line ~35:
// here finally we can especify wich network attatch to
lanUrlForConfig = address.ip(networkInterface)

optionsSchema.json
node_modules\webpack-dev-server\lib\optionsSchema.json
Add this somewhere
    "interface": {
      "description": "The interface the server attatch to.",
      "type": "string"
    },

Added this because if we put interface in devServer at vue.config.js webpack complains this:
 ERROR  WebpackDevServerOptionsValidationError: Invalid configuration object. webpack-dev-server has been initialised using a configuration object that does not match the API schema.
 - configuration has an unknown property 'interface'. These properties are valid:

After that, I can tell webpack from wich interface needs to obtain it's address to initialize the server
vue.config.js
module.exports = {
  runtimeCompiler: true,
  baseUrl: undefined,
  outputDir: undefined,
  assetsDir: 'assets',
  productionSourceMap: undefined,
  parallel: undefined,
  css: undefined,
  devServer: {
      host: '<IP_ADDRESS>',
      port: 8082,
      // useLocalIp: true,
      interface: 'Ethernet'
  }
}

command line/package.json
  "scripts": {
    "serve": "vue-cli-service serve --progress --interface Ethernet",
    "build": "vue-cli-service build"
  },

Hope this helps.
Wonder if this can be candidate for a PR. I mean, this solves my problem, but don´t know if it is worth to add an extra parameter to the project, don´t know if it will be useful outside this scenario.
Best regards,

@ryanjaeb You can use my patch/workarround to solve this issue, look here #1905

So, the inference for public network API has its limitations, but you can always explicitly specify the public URL to use with devServer.public in vue.config.js.
In ccc90c98 I've also added:

allow specifying devServer public url via vue-cli-service serve --public your/url:port
made the console message prioritize this value.

@lux-lth yeah, that was my confusion here too. It took quite a bit of research over GH issues and webpack questions to find out that one can just create a vue.config.js in the root of the project, with the contents that Linus suggested above. Thanks!

I've found this issue looking for a solution where a device connected through Chrome's port forwarding were trying to connect to the hot reloading module in my local IP address (<IP_ADDRESS>) instead of localhost (Chrome port forwarding only works on localhost), causing the hot reloading module not to work on mobile.
Based on what is written in this issue, my vue.config.js:
const fs = require("fs");
const path = require("path");
const port = 18001; // Easy to change the port here

function resolvePath(dir)
{
    return path.join(__dirname, "certificates", dir); // c:\project\certificates contains my self-signed HTTPs certificates
}

module.exports =
    {
        lintOnSave: false,
        baseUrl: `https://localhost:${port}/`,
        devServer:
        {
            https: // Only needed if you want https (I need them for location and web notifications)
            {
                key: fs.readFileSync(resolvePath("server.key")),
                cert: fs.readFileSync(resolvePath("server.crt")),
                ca: fs.readFileSync(resolvePath("server.pem.key"))
            },

            headers:
            {
                "Access-Control-Allow-Origin": "*"
            },

            overlay: true,
            port, // This will take care of desktop machine
            public: `<IP_ADDRESS>:${port}`, // This will take care of mobile device
            disableHostCheck: true,
        }
    };

And it works (there is a huge warning on Android because of not trusted certificate, but that's another issue).
 DONE  Compiled successfully in 302ms                                                                                16:30:24
                                                                                Type checking in progress...

  App running at:
  - Local:   https://localhost:18001/
  - Network: https://<IP_ADDRESS>:18001/

No type errors found
Version: typescript 3.1.6
Time: 609ms

I think this is a bug, because it occurs when creating the default template with all defaults settings too:
So I've run vue create hello-world --default :
vue create hello-world --default

Vue CLI v3.2.1
✨  Creating project in /Users/piotrblazejewicz/git/pwa-builder-test/hello-world.
🗃  Initializing git repository...
⚙  Installing CLI plugins. This might take a while...

><EMAIL_ADDRESS>install /Users/piotrblazejewicz/git/pwa-builder-test/hello-world/node_modules/fsevents
> node install

[fsevents] Success: "/Users/piotrblazejewicz/git/pwa-builder-test/hello-world/node_modules/fsevents/lib/binding/Release/node-v59-darwin-x64/fse.node" is installed via remote

><EMAIL_ADDRESS>install /Users/piotrblazejewicz/git/pwa-builder-test/hello-world/node_modules/yorkie
> node bin/install.js

setting up Git hooks
done

added 1177 packages from 761 contributors and audited 14846 packages in 41.504s
found 0 vulnerabilities

🚀  Invoking generators...
📦  Installing additional dependencies...

added 26 packages from 23 contributors, updated 2 packages, moved 5 packages and audited 15136 packages in 13.117s
found 0 vulnerabilities

⚓  Running completion hooks...

📄  Generating README.md...

🎉  Successfully created project hello-world.
👉  Get started with the following commands:

 $ cd hello-world
 $ npm run serve

and I've ended using Google to learn that I have to add vue.config.js with just single property to just remove those errors.
Thanks!

Not sure why yet, but after upgrade to @vue/cli-service to 3.5.3 start getting

GET http://localhost:8080/sockjs-node/info?t=1554912129403 net::ERR_CONNECTION_REFUSED

on 3.5.0 was working fine without touching vue.config.js

Same issue with<EMAIL_ADDRESS>

Same issue here with an app inside VirtualBox

Cases like this happen if you are running another app (e.g. Laravel via the artisan CLI) concurrently on your network that uses the same port as your Vuejs app. So basically it is listening to both your local and network IP when running the app in your dev environment.
if you are working on Vue CLI, may not be able to configure webpack dev server directly.
instead, locate your vue.config.js file and use the sample below.
module.exports = {
  publicPath: '/',
  devServer: {
    host: 'localhost',
    port: 3000
  }
}

I think setting devServer.public to <IP_ADDRESS> is a misconfiguration. The linked docs say:

When using inline mode and you're proxying dev-server, the inline client script does not always know where to connect to. It will try to guess the URL of the server based on window.location, but if that fails you'll need to use this.

Based on my testing, the address given for devServer.public is what the (browser) client will use when attempting to open a websocket connection for HMR. So if you set it to <IP_ADDRESS> it won't be able to open the websocket because that's not a routable IP.
Something that can be confusing is the auto-detection can end up using an IP from a purely local network adapter. For example, the yarn serve defaults give me:
App running at:
  - Local:   http://localhost:8080/
  - Network: http://<IP_ADDRESS>:8080/

That <IP_ADDRESS> IP is for DockerNAT. It's only accessible from my machine. I've always thought you can bind to localhost and <IP_ADDRESS> reliably and beyond that you need user specific config. Where does the <IP_ADDRESS> get detected?
The Network IP (<IP_ADDRESS>) is the same IP that is used (by default) for the HMR websocket for me. Where is that default getting set? If vue-cli-service serve is setting it, I don't think it should. The window.location strategy described in the Webpack docs seems like the most reliable way to do it. If that doesn't work, I can't think of a way you'd be able to figure it out (reliably) without having the user specify it. Is there another way?
What exactly is the Network address being reported? When I set devServer.public to an alternate IP, the HMR websocket connection uses the newly set IP (as expected), but yarn serve still reports Network: http://<IP_ADDRESS>:8080/.
It also seems like the server binds to <IP_ADDRESS> even though the above App running at message gives the impression it bound to 2 specific interfaces. By default, I can access the server from another PC on my LAN. If I set devServer.host to <IP_ADDRESS>, there's no change:
// vue.config.js
module.exports = {
    devServer: {
        host: '<IP_ADDRESS>',
    },
}

gives:
App running at:
  - Local:   http://localhost:8080/
  - Network: http://<IP_ADDRESS>:8080/

The app is still accessible from my LAN. If I set devServer.host to localhost something doesn't like it:
App running at:
  - Local:   http://localhost:8080/
  - Network: undefined

However, the app is only accessible at localhost which makes sense since I set host to localhost.
Is the goal to avoid giving the user http://<IP_ADDRESS>:8080 as an address? If so, maybe you could do something like this (ignoring https options):
Server listening at:
- Host: devServer.host
- Port: devServer.port

Then, if devServer.host is <IP_ADDRESS> (this always includes localhost):
App available at:
- Local:  http://localhost:devServer.port
- Public: devServer.public or 'None'
See: https://webpack.js.org/configuration/dev-server/#devserver-public

Otherwise:
App available at:
- Local:  http://devServer.host:devServer.port
- Public: devServer.public or 'None'
See: https://webpack.js.org/configuration/dev-server/#devserver-public

The --public option described in the Webpack Docs doesn't seem to pass through on the CLI. Is it supposed to? Ideally the OPs case would be solved by (note: this does not work currently):
yarn serve --host "<IP_ADDRESS>" --port "8080" --public "mydomain.example.com:8080"

with the output:
Server listening at:
- Host: <IP_ADDRESS>
- Port: 8080

App available at:
- Local:  http://localhost:8080
- Public: http://mydomain.example.com:8080
See: https://webpack.js.org/configuration/dev-server/#devserver-public

@kissge Try this vue.config.js:
// vue.config.js
module.exports = {
    devServer: {
        host: '<IP_ADDRESS>',
        port: '8080',
        public: 'mydomain.example.com:8080',
    },
}

Note that you must be able to connect to mydomain.example.com on port 8080.
@LinusBorg A decent use case for wanting to do this is to have a site / app running on an alternate device during development. For example, at the moment I'm playing around with an app on a Raspberry Pi. The screen is fairly low resolution (800x480), the color reproduction isn't comparable to the monitor I use for development, and I want to test the touch input. It's useful to have it plugged in beside me auto-reloading as I make changes.

Worked like magic for me :-)

Wanted to leave a comment here for folks arriving from Google looking to get this working with an ngrok tunnel.    Ngrok configuration is standard http tunnel.   The final working dev server config for us ended up being
devServer: {
  public: 'your-subdomain.ngrok.io',
  disableHostCheck: true,
  headers: {
    'Access-Control-Allow-Origin': '*',
  },
},

This ought to allow you to access via tunnel (including https) with hot reloading working and no CORS issues.


suggestion: select default theme to run

if I quickly want to check consumption it doesn't seem fun to have to type out -t ... each time, so either select a default theme globally, or set a way for a user to define their choice them for subsequent runs would be great so can just initialize with ptop

yeah, agreed !

Support added !


Fix MySQL inference of multi-field indexes covering a single-field FK

Closes issue https://github.com/prisma/lift/issues/148
This does not resolve all ambiguities. A more general solution would involve including the index name in the introspected Index struct.
Note: the first commit was cherry-picked from https://github.com/prisma/prisma-engine/pull/54

The tests aren't passing here, I'll re-work this one.


PY-KMS doesn't like IPv6 GRUB modification

Hi!
Just for information: As I'm using Debian Bookworm (12.x), py-kms won't start if IPv6 is disabled through GRUB modification like this:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

So it returns an error saying that the service is deactivated when launching a systemctl status
And if you run the command manually, you will see these errors:
dualstack_ipv6 not supported on this platform. Creating not dualstack sockets...

[Errno 97] Address family not supported by protocol. Exiting...

(maybe a bit similar to this post?)
So, If you really need to disable IPv6, the fix is to go in this folder /etc/sysctl.d and create the file 70-disable-ipv6.conf then insert these 3 lines:
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Then launch sysctl -p -f /etc/sysctl.d/70-disable-ipv6.conf or reboot and, magic! py-kms works.
Do you think to do an update? As there will be soon Windows Server 2025, Office 2025, Windows 12, etc.
Thanks a lot :)
Regards,
V.

I suggest a title change for more clarity, since you suggested an alternative solution to grub modification.


[BUG] json serialize fails for date fields

Describe the bug
When orjson isn't installed and ujson is used, data with dates in it, fails to serialize
To Reproduce
Steps to reproduce the behaviour:

Uninstall orjson
run `mabel.data.formats.json.serialize({"date": datetime.datetime.now()})

Expected behaviour
no errors
Screenshots or Logs
If applicable, add screenshots or logs to help explain your problem.
!! Be aware not to publish any sensitive information in what you upload.
Environment (please complete the following information):

Version 0.4.47

Additional context
Add any other context about the problem here.

cannot replicate on system where orjson has been uninstalled.


How to Load Scripts with HTML Attributes

I am using the loadScript function to run a script whose script start tag has attributes.
For example, if I run a script that would normally be run like so:
<script src="https://example.com/example.js"></script>

Using  loadScript I would use:
cc.loadScript("https://example.com/example.js");

But, how would I use loadScript with something like this:
<script src="https://example.com/example.js" id="someId" class="someClass" data-code="someData"></script>

Is it possible to pass those script start tag attributes to loadScript?

Hi, you can easily achieve this by passing an array of objects as a third parameter to the loadScript(<path>, <callback function>, <optional params>) like so:
cc.loadScript('https://example.com/example.js', function(){
   // ... do something if needed
}, [
   {name: 'id', value: 'myid'},
   {name: 'class', value: 'myclass'},
   {name: 'data-code', value: 'somedata'},
]);

I'll update the readme.md with this "hidden feature"

Thank you @orestbida  for the very prompt response. It works! But one other quick question. If I have a script start tag like so:
<script src="https://example.com/example.js" async id="someId"></script>

How would I pass async to loadScript? Would it be:
...
{ name: "async", value: true }
...

...perhaps?

I'm not sure value: true would work,  if it doesn't work then try with a blank value like so:
{name: 'async', value: ''}

Well, I've tried my suggestion. I've also tried a value of a blank string and a value of null and the script loads fine in all cases, but I can't be sure that they load say async as in my example. And I don't have any other scripts where I have attributes without a value that I can try.
Thank you @orestbida , nevertheless, for this library...it works very well and serves all my purposes :-) Good job!

From my testing i can tell you this:
if you've loaded the cookieconsent.js file with the defer attribute:
<script src="<path_to_cookieconsent.js>" defer></script>

then adding async or defer to the dynamically loaded scripts with the .loadScript() method will (most likely) not make any difference at all (since the page has alredy been fully loaded).
There might however be some edge cases where the website is exceptionally slow or the cookieconsent.js is loaded without defer or async. In these cases it might be useful to also add async/defer.
Also, thank you ;), closing this issue!


test: Added tests for etherscan.getFromResultHash

test: Added tests for etherscan.getFromResultHash
fixes #408

Thanks @catacioba this is great :)


Minor cleanups, simplifications and consistency improvements

CI seems to be failing. Also I wonder what is this never saw this before, looks like a merge conflict but different 😆


Merge branch release/1.1 to main

This merges all changes in the recently shipped 1.1.0 release to the main development branch of this package.
Checklist

[X] I've read the Contribution Guidelines
[X] My contributions are licensed under the Swift license.
[X] I've followed the coding style of the rest of the project.
[ ] I've added tests covering all new code paths my change adds to the project (if appropriate).
[ ] I've added benchmarks covering new functionality (if appropriate).
[ ] I've verified that my change does not break any existing tests or introduce unexplained benchmark regressions.
[ ] I've updated the documentation if necessary.

@swift-ci test


Documentation on Security Coordination, Pakiti and Pakiti client

Documentation on Pakiti and Pakiti client.
Replacing https://wiki.egi.eu/wiki/EGI_CSIRT:Pakiti_client.

the description of Pakiti and security monitoring looks good, thanks


severity: "CRITICAL,HIGH" configuration not respected in Trivy Action (v0.29.0), scanning includes all severities

When running the Trivy Action (version 0.29.0) in a GitHub Actions workflow with severity: "CRITICAL,HIGH" specified, the action does not limit the scan results to the specified severities. Instead, it processes vulnerabilities of all severities (UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL), as shown in the debug logs.
Workflow:
- name: Run Trivy scan (Table)
  uses<EMAIL_ADDRESS>  with:
    scan-type: "fs"
    format: "table"
    severity: "CRITICAL,HIGH"
    exit-code: 1
    hide-progress: false
    ignore-unfixed: true
  env:
    TRIVY_DEBUG: "true"

Github Action Debug Logs
Running Trivy with options: trivy fs .
2024-11-22T17:09:37Z	DEBUG	No plugins loaded
2024-11-22T17:09:37Z	DEBUG	Default config file "file_path=trivy.yaml" not found, using built in values
2024-11-22T17:09:37Z	DEBUG	Cache dir	dir="/home/runner/work/xxxxx/xxxx/.cache/trivy"
2024-11-22T17:09:37Z	DEBUG	Cache dir	dir="/home/runner/work/xxxx/xxxx/.cache/trivy"

**2024-11-22T17:09:37Z	DEBUG	Parsed severities	severities=[UNKNOWN LOW MEDIUM HIGH CRITICAL]**

2024-11-22T17:09:37Z	DEBUG	Ignore statuses	statuses=[0 1 2 4 5 6 7]
2024-11-22T17:09:37Z	DEBUG	DB update was skipped because the local DB is the latest
2024-11-22T17:09:37Z	DEBUG	DB info	schema=2 updated_at=2024-11-21T18:16:43.86[357](https://github.com/xxxx/xxxx/actions/runs/11976974486/job/33393842565#step:5:378)7371Z next_update=2024-11-22T18:16:43.86357697Z downloaded_at=2024-11-22T00:07:56.61736953Z
2024-11-22T17:09:37Z	DEBUG	[pkg] Package types	types=[os library]
2024-11-22T17:09:37Z	DEBUG	[pkg] Package relationships	relationships=[unknown root direct indirect]
2024-11-22T17:09:37Z	INFO	[vuln] Vulnerability scanning is enabled
2024-11-22T17:09:37Z	INFO	[secret] Secret scanning is enabled
2024-11-22T17:09:37Z	INFO	[secret] If your scanning is slow, please try '--scanners vuln' to disable secret scanning
2024-11-22T17:09:37Z	INFO	[secret] Please see also https://aquasecurity.github.io/trivy/v0.57/docs/scanner/secret#recommendation for faster secret detection
2024-11-22T17:09:37Z	DEBUG	Enabling misconfiguration scanners	scanners=[azure-arm cloudformation dockerfile helm kubernetes terraform terraformplan-json terraformplan-snapshot]
2024-11-22T17:09:37Z	DEBUG	Initializing scan cache...	type="memory"
2024-11-22T17:09:37Z	DEBUG	[secret] No secret config detected	config_path="trivy-secret.yaml"
2024-11-22T17:09:37Z	DEBUG	Skipping path	path=".git"
2024-11-22T17:09:48Z	INFO	[npm] To collect the license information of packages, "npm install" needs to be performed beforehand	dir="node_modules"
2024-11-22T17:09:48Z	DEBUG	OS is not detected.
2024-11-22T17:09:48Z	INFO	Suppressing dependencies for development and testing. To display them, try the '--include-dev-deps' flag.
2024-11-22T17:09:48Z	DEBUG	Detected OS: unknown
2024-11-22T17:09:48Z	INFO	Number of language-specific files	num=1
2024-11-22T17:09:48Z	INFO	[npm] Detecting vulnerabilities...
2024-11-22T17:09:48Z	DEBUG	[npm] Scanning packages for vulnerabilities	file_path="package-lock.json"
2024-11-22T17:09:48Z	DEBUG	[vex] VEX filtering is disabled
Error: Process completed with exit code 1.

The same behavior is not observed when running the equivalent Trivy (v0.57.1) CLI command locally, where the --severity parameter works as expected and filters results correctly
Running (trivy fs --debug --exit-code 1 --ignore-unfixed --severity "HIGH,CRITICAL" .) returns exit code 0 when checked with echo $?
CLI command logs
DEBUG	No plugins loaded
2024-11-22T12:49:11-05:00	DEBUG	Default config file "file_path=trivy.yaml" not found, using built in values
2024-11-22T12:49:11-05:00	DEBUG	Cache dir	dir="/Users/emed/Library/Caches/trivy"
2024-11-22T12:49:11-05:00	DEBUG	Cache dir	dir="/Users/emed/Library/Caches/trivy"
**2024-11-22T12:49:11-05:00	DEBUG	Parsed severities	severities=[HIGH CRITICAL]**
2024-11-22T12:49:11-05:00	DEBUG	Ignore statuses	statuses=[0 1 2 4 5 6 7]
2024-11-22T12:49:11-05:00	DEBUG	DB update was skipped because the local DB is the latest

If you are trying to invoke it multiple times, it may keep the values from a previous run due to how inputs are handled internally, see https://github.com/aquasecurity/trivy-action/issues/422


Update ETL Daily Operation

Coverage decreased (-0.05%) to 72.043% when pulling 534c2c64034263d4ba367ec96606203e1888fadb on jackyrusly:dev into e40a8586e29c8c2a089f2e4666a07d372f4b5b42 on danliris:dev.

Coverage increased (+0.6%) to 72.656% when pulling 7643efe9b0f461a405f077858f899775d670207d on jackyrusly:dev into e40a8586e29c8c2a089f2e4666a07d372f4b5b42 on danliris:dev.


Reuse of secure channel for multiple commands?

Hi,
Thanks for putting this library together.
Have noticed that the SigmaExchange appears to take 1.5 seconds for the device I'm using - mainly spent waiting on UDP response.
Is it possible to re-use the secure channel so that the overhead of the SigmaExchange can be paid once?
Calling Send on it multiple times doesn't appear to work at the moment.
Thanks.

hm, it is hard to tell what is wrong. I just tried against chip-lighting-app software device demo and multiple requests over one channel seems to work just fine.
I modified "on" demo command to send on then off. Device receives both commands and I receive both answers.
like this:
to_send := gomat.EncodeIMInvokeRequest(1, symbols.CLUSTER_ID_OnOff, symbols.COMMAND_ID_OnOff_On, []byte{}, false, uint16(rand.Intn(0xffff)))
channel.Send(to_send)

resp, err := channel.Receive()
if err != nil {
  panic(err)
}
status, err := resp.Tlv.GetIntRec([]int{1, 0, 1, 1, 0})
if err != nil {
  panic(err)
}
fmt.Printf("result status: %d\n", status)

to_send = gomat.EncodeIMInvokeRequest(1, symbols.CLUSTER_ID_OnOff, symbols.COMMAND_ID_OnOff_Off, []byte{}, false, uint16(rand.Intn(0xffff)))
channel.Send(to_send)

resp, err = channel.Receive()
if err != nil {
  panic(err)
}
status, err = resp.Tlv.GetIntRec([]int{1, 0, 1, 1, 0})
if err != nil {
  panic(err)
}
fmt.Printf("result status: %d\n", status)

Thanks for your quick response. Knowing that it works for you helped me figure out what's going on.
I was doing the switching in a function and passing it gomat.SecureChannel. But the act of Sending mutates the struct (I think the counter?). So the second call had the original copy of gomat.SecureChannel rather than the mutated copy.
Easily fixed by passing a reference instead:
if err := switchLights(&secureChannel, symbols.COMMAND_ID_OnOff_On); err != nil {
return err
}
if err := switchLights(&secureChannel, symbols.COMMAND_ID_OnOff_Off); err != nil {
return err
}
Thanks again.
Do you know if the secure channel once created can stay forever given it's UDP or is there a timeout? And also if there is a way to periodically check the channel and refresh it if dead. My idea is to have it ready for use as needed and avoid the latency of creating the secure channel on the hot path.

I am not aware of any explicit timeout on channel/session, but it is probably good idea to be able to verify its state and re-establish if needed.
If you want to verify state of channel/session you can periodically invoke some read request - like to get device uptime - I am not aware of any other method.
Specification says: "Sessions SHALL be discarded and re-established before any Secure Session Message Counter over flow or repetition occurs." so your health check requests may actually trigger session discard. (gomat library will currently not do this automatically)

Thanks a lot. Much appreciated for the prompt responses.


Update tutorial-sql-server-to-managed-instance.md

Updated the firewall rules to outbound

Microsoft authors of articles need to make updates through the private repository so the updates can be staged and validated by the current validation rules. After you review staging and fix all validation issues, you can add the sign-off comment to let the PR reviewers know the updates are ready to be merged.It's easy to access the private repo version of your articles in GitHub. Just add -pr to the URL, as follows:
Public repo URL: https://github.com/MicrosoftDocs/azure-docs
Private repo URL: https://github.com/MicrosoftDocs/azure-docs-pr
We have closed this pull request. Please resubmit the updates through the private repo. For more information, [see the contributor guide].(https://docs.microsoft.com/en-us/contribute/)


Add top-level "migration-controller-generated" annotation

To support a future general-purpose velero plugin image, this
adds a "migration-controller-generated" annotation to backup and
restore CRs so that the plugin can conditionally exclude migration-
specific content within the plugin without having to guess based
on the presence of more specific annotations (stage, final, etc.).

Added 2 months ago as part of the finalizer work.  It's used by the MigCluster.DeleteResources().  I'm not particularly concerned about another app named creating velero resources with the same label but perhaps changing the value to openshift-migration would be more appropriate and possibly reduce the chance of collisions.  If we do change it, we should cherry-pick to release-1.0 so that an upgraded installation will not leak resources.

OK, so it sounds like using that label is probably a better plan than adding a new annotation. I think that was also done before we decided to call things "openshift-migration" -- I think changing the label value to that would make more sense than just "migration".

Closing this PR since we'll use the part-of annotation instead.


Add  different tags to different data entries in a Treant

I want to collect observables from several hundred observations into one Treant object. In the simulations different variables change. It would be nice if I could tag the data in a Treant instead of just adding tags to the Treant. I could use the tags to query for all simulations that fulfill a certain condition (eq integration time step, protein, ...)
I'm aware that I could achieve the same thing already with groups. But I only want to use one Treant object because I would like to have just one folder that I need to copy from the remote cluster to my laptop. If I understand groups correctly right now they just link to the Treant objects contained in them, which means I would still need to copy a lot of folders and have complicated rsync-rules to only copy the data I want.
So another solution for me would be that I can move Treant objects into the same location on disk as the Group is.

Hey @kain88-de , thanks for the interesting use case. If I understand it correctly, the tagging mechanism at the level of a Treant isn't granular enough, because you want to tag specific datasets that might be stored in it?
If so, as you pointed out, you could make many Treants and add them to a Group, and to make them easy to move you could place them all inside the Group's directory tree. That should work just fine, and makes complete sense here.
Another solution that needs an implementation yet is a metadata mechanism (see #15) for stored datasets. Perhaps that provides the granularity you're looking for?

and to make them easy to move you could place them all inside the Group's directory tree.

How would that be done in python with datreant?

Another solution that needs an implementation yet is a metadata mechanism (see #15) for stored datasets. Perhaps that provides the granularity you're looking for?

yeah that looks close, even more general, then what I want.

How would that be done in python with datreant?

You can move a Treant around by setting its location property. This isn't well-documented at the moment because file locks aren't used to make the move, and any other instances of that Treant in other active python sessions will not find the moved file (#5), but that's probably not a concern for you here.
Something to note: a Treant's full path to its statefile goes like:
 /<location>/<name>/Treant.<uuid>.h5

where its basedir is Treant.location + Treant.name

I'll close this as I found out in the last year that I used the library wrong. I should create one treant per simulation. Which is what I'm doing now and I get pretty good milage out of datreant


Black screen when playing m3u8 playlist in IE 11

Browser: IE 11 (Version 11.0.9600.18893CO)
OS: Windows 7
Clappr Version: 0.2.80
Description:
IN IE 11 I want to load an m3u8 playlist from my streaming provider.
When I click on the play button the audio occurs but the screen remains black.
I have the latest Adobe Flash plugin also installed and I tried with deactivated/activated
hardware acceleration (set up in the Flash plugin settings) but nothing helped.
Can someone confirm this issue or give advice what I can additionally do to see the video?
Thank you for your answer in advance.
Christian

Hi kslimani,
thank you for your quick reply. I tried now my m3u8 playlist on your Clappr demo page and there I got also the black screen. I have to say that the URL to the playlist uses "https". Maybe it has to do with that?

You are correct, If your manifest url protocol is https, the player will not be able to download it on an http page if the resolved playback is hls.js.
Since current master uses hls.js version 0.9.1, you may want to try your manifest on hls.js 0.9.1 demo page

Thank you for your answer kslimani.
I tried my url on the hls.js 0.9.1 demo page (which is served via https lile my manifest url).
There I got the following message:

your Browser does not support MediaSourceExtension / MP 4 mediasource

So now we got the proof that my browser cannot play hls video. But in that case clappr should fall back to the flash player plugin, right?
And that does not work at the moment (even when the manifest url protocol matches with the page's url protocol and the files from the dist folder of the current clappr master branch (version 0.2.96)).
Maybe this console output helps which occurs after I clicked the play button in the middle of the black screen:

INFO:FlasHLS Clappr (version: 0.4.16 - flashls: <IP_ADDRESS>, id: o39)
INFO:HLSNetStream:close
INFO:HLSNetStream:play(-1)
INFO:HLSNetStream:seek(-1)
INFO:Setting audio track to 0

Cheers
Christian

The provided output console indicate that it is the FlasHLS playback which is used by Clappr. (using Flash plugin). So it indicate also that Clappr has properly fallback to flash playback.
Now the question seems to be why FlasHLS version <IP_ADDRESS> display a black screen.
Can you try again with this page ? if it work, then it may be an issue with your video format.

Hi kslimani,
when I try the default video url in the demo page it works in IE 11.
When I try it with the stream url for my video it does not work.
So it is an issue with my video format...
Do you have an idea what could be the reason for this wrong video format?
Thank you again for your time.
Cheers
Christian

A good start could be to try Clappr common steps to verify issues. (especially the media info tools). May be your source includes non-supported feature.
Also @leandromoreira may be able to help you on this issue (if he's not too buzy :grin:)

Hi kslimani!
Thank you again for your hints. :) I will try to work through your link common steps to verify issues without asking@leandromoreira for help ;)

=) feel free to post it here maybe we can help you

Thank you @leandromoreira  :)
We tested some videos on http://www.flashls.org/latest/examples/chromeless/ and there we found that some are working on IE 11 in combination with Windows 7 and others not.
Our video streaming provider was then informed about that and told us that he tries to do an "easier"
encodation of the videos.
I will keep you informed about the outcome! :)

@chrisprog20 on Flashls chromeless examples page, you can modify the debug log verbose level, by clicking on the "Advanced control" button. This may give you more hints on why stream is not working.
(if you have not noticed already this feature)

@leandromoreira: Thank you for your hint. I have not discovered that yet.
I will check this page with the more detailed verbose level again if I have a free time slot for it. :)

So, I was able to play the videos on IE 11 and Win 7 with the following settings on
http://www.flashls.org/latest/examples/chromeless/ under button "quality control":

current level: 1 (480p / 4885kb)
next level: 1 (480p / 4885kb)
load level:  1 (480p / 4885kb)
cap level: none

I will try the clappr level selctor plugin. Maybe it helps.

Ok, the level selector plugin seemed not to work. Hence we decided to show a flash player in IE <= 11 and the clappr plugin in Edge and all other browsers. Now word is beautiful again :)


Bower install please :)

Do I really have to manually download it to use it, end of 2014? >)
Thanks!

Why has this issue been closed with done? I can't see a bower.json.


Allow SSL parameters to be passed directly

Right now certain SSL parameters like sslcert, sslidentity etc require you to pass a file path. This is not ideal in many places you can read these parameters from the environment.
So we need to allow people to pass them directly to the connection string.

How do the other libraries solve this? The files can be binary and quite large.

I am really not sure but main use case here is on some serverless services, you can't really can't have the p12 file and you will need to read it from secret: https://github.com/vercel/vercel/issues/749#issuecomment-533873759. Issue on our repository about it: https://github.com/prisma/prisma/issues/1673
In most libraries you can read from the environment and pass it. So for example in this Rust crate: https://docs.rs/postgres-native-tls/0.3.0/postgres_native_tls/ which I believe we use in quaint you can just call std::env and pass the certificate.
So we need a way to pass the certificate as string.

Any updates on this? Still can't deploy Prisma with SSL on a serverless platform...

I just ran into this.
I have have my server-ca.pem and client-identity.p12 file (the latter generated according to Prisma docs) committed in my repo in the prisma dir, inside a Next app. This works fine locally. When I push to Vercel, it has no trouble making database connections for pre-rendering static pages during build. But then when it's deployed, my API functions fail with this error.
Googled and found a few old GitHub issues including this one, even though this problem has apparently existed for years. What's going on? Is Prisma dying?

@callumlocke I solved this in the past by adding the below to db.js (file where export default prisma is located). Hope it helps.
import { tmpdir } from 'os'
import fs from 'fs'

const CERTIFICATES = `...`

fs.writeFileSync(
  `${tmpdir()}/ca-certificates.crt`,
  CERTIFICATES,
  err => {
    if (err) return console.log(err)
  }
)

@danaugrs thank you for the quick reply! Unfortunately this approach doesn't work with Vercel, as the filesystem isn't writable at runtime. And there doesn't seem to be a reliable way to hint to Vercel that it should include the cert files when bundling each lambda.


[FLINK-36913][pipeline-connector][kafka] Add sink.table.mapping option to allow user to define a custom map for upstream TableId to downstream topic name.

Add sink.table.mapping option to allow user to define a custom map for upstream TableId to downstream topic name.
Example to use:
source:
  type: mysql
  name: MySQL Source
  hostname: <IP_ADDRESS>
  port: 3306
  username: admin
  password: pass
  tables: adb.\.*, bdb.user_table_[0-9]+, [app|web].order_\.*
  server-id: 5401-5404

sink:
  type: kafka
  name: Kafka Sink
  properties.bootstrap.servers: PLAINTEXT://localhost:62510
  sink.table.mapping: mydb.mytable1:topic1;mydb.mytable2:topic2

pipeline:
  name: MySQL to Kafka Pipeline
  parallelism: 2

All changelogs of mydb.mytable1 will be send to topic  topic1 with database/table name information remained.

Hi @ruanhang1993 @yuxiqian, can you help to review this?

Hi @leonardBang  @ruanhang1993, can you help to trigger CI？


Skip a task if previous task succeeded using when expressions

I want to skip Task 2 if Task 1 was successful. If Task 1 fails, then I want Task 2 to execute. I read the documentation about when expressions, but I am not able to find a way to read the result (success or failed) of the previous task.
Basically, something like the below when expression. Execute Task when the previous failed. Check the previous Task's status (success or failed).
  when:
    - input: take_previous_tasks_result_status_as_input
      operator: in
      values: failed

Pipeline:
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  generation: 10
  managedFields:
    - apiVersion: tekton.dev/v1beta1
      fieldsType: FieldsV1
      fieldsV1:
        'f:spec':
          .: {}
          'f:params': {}
          'f:resources': {}
          'f:tasks': {}
          'f:workspaces': {}
  name: new-pipeline
  namespace: pipelines-test
spec:
  params:
    - description: the vmname from the POST data
      name: json-extract
      type: string
    - description: url of the git repo for the code of deployment
      name: git-url
      type: string
    - description: revision to be used from repo of the code for deployment
      name: git-revision
      type: string
  tasks:
    - name: fetch-repository
      params:
        - name: url
          value: $(params.git-url)
        - name: deleteExisting
          value: 'true'
        - name: revision
          value: $(params.git-revision)
        - name: sslVerify
          value: 'false'
      taskRef:
        kind: ClusterTask
        name: git-clone
      workspaces:
        - name: output
          workspace: shared-workspace
    - name: execute-script
      params:
        - name: vmname
          value: $(params.json-extract)
      runAfter:
        - fetch-repository
      taskRef:
        kind: Task
        name: execute-script
      workspaces:
        - name: source
          workspace: shared-workspace
    - name: execute-when-previous-fails
      when:
        - input: take_previous_tasks_result_as_input
          operator: in
          values: failed
      params:
        - name: vmname
          value: $(params.json-extract)
      taskRef:
        kind: Task
        name: execute-script
      workspaces:
        - name: source
          workspace: shared-workspace
  workspaces:
    - name: shared-workspace

Please help in pointing me to the right documentation?

/kind feature
/cc @bobcatfish @jerop

Hi @vdemeester et all,
To give a more detailed example. Let's say I have:
2 tasks - task_one and task_two.
1 pipeline - pipeline_one
1 pipelinerun - pipelinerun_one
When the pipeline executes, I want to check if task_one was successful. If yes,task_two should be skipped. If task_one was not successful, then I want to execute task_two.

@bharathvenkatrajan to clarify, WhenExpressions uses Results which are string results emitted by tasks, as explained here: https://github.com/tektoncd/pipeline/blob/master/docs/tasks.md#emitting-results -- they're not the status (succeeded or failed) of the previous task -- so task_one will have to produce some string result that task_two would operate on
in the when expressions docs, we have this snippet on using previous task's results:
when:
- input: "$(tasks.check-file.results.status)"
  operator: in
  values: ["exists"]

you can view the extended version of this in the when expressions examples
passing results between tasks happens via variable substitution using this variable structure $(tasks.<task-name>.results.<result-name>), as described in here
just opened a pr to add more details on using results in when expressions: https://github.com/tektoncd/pipeline/pull/3194

hey @bharathvenkatrajan ! cloudevents is one way to do it, the other would be to have a finally task that does this - the caveat is that your finally task currently has no good way to check if other tasks in the pipeline have failed, which is one of the features we really need for finally ( #1020  + @pritidesai ) so at the moment you'd have to do something a bit hacky like use kubectl to check (with variable substitution you can get the name of the pipelinerun at least https://github.com/tektoncd/pipeline/blob/master/docs/variables.md#variables-available-in-a-pipeline)

Its been getting delayed but its time now, will start working on a TEP for it next week.


Rename Kubernetes Ingress Controller to Kong Ingress Controller

Description
Another attempt at the KIC rename.
Testing instructions
Netlify link: https://deploy-preview-5653--kongdocs.netlify.app/kong-ingress-controller/latest/
Checklist

[x] Review label added
[x] PR pointed to correct branch (main for immediate publishing, or a release branch: e.g. release/gateway-3.2, release/deck-1.17)

@fabianrbz could you take a look at the failing test? I'm not really sure what I missed. It doesn't really pinpoint what failed, it makes it look like everything is broken 😭

@lena-larionova I don't think /kong-ingress-controller/ is the right URL here. I think we should either keep /kubernetes-ingress-controller/ as it's descriptive (I don't think it runs afoul of the CNCF in a URL) or switch to just /ingress-controller/ as the URL.
We should refer to Kong Ingress Controller everywhere in text

@mheap Do you have a preference on which? If we don't change the URLs then it's probably better for SEO, yeah?

Yep, SEO is the main reason to not change for me. I'd opt to keep /kubernetes-ingress-controller/ unless someone explicitly asks us to remove it


How to Delete All Images After Switching Driver from GD to Imagick

I have seen this on deleting single files from cache:
https://glide.thephpleague.com/1.0/config/source-and-cache/#deleting-cached-images
However, I have thousands of images in place. I switched from GD to Imagick because of weird artifacts in png files. I'm trying to determine my best course of action to get those regenerated.
Is there a directory I can delete? A command I can run?
I'm using Laravel and I have this...
$server = ServerFactory::create([
    'response' => new LaravelResponseFactory(app('request')),
    'source' => $filesystem->getDriver(),
    'cache' => $filesystem->getDriver(),
    'cache_path_prefix' => '.cache',
    'driver' => 'imagick',
    'base_url' => 'img',
    'max_image_size' => 2000*2000,
]);

My initial instinct would be to remove all the files of the filesystem, but I guess that's not feasible as you use the same Flysystem instance for cache and sources?

My initial instinct would be to remove all the files of the filesystem, but I guess that's not feasible as you use the same Flysystem instance for cache and sources?

Yeah I copied that configuration initially from the website. I might need to revisit that. This is my first time with a Laravel site. So I'm not sure I understand how the source and the cache are the same. I wouldn't know where to begin to manually delete the cache. But that's just my ignorance.

Yeah I copied that configuration initially from the website. I might need to revisit that. This is my first time with a Laravel site. So I'm not sure I understand how the source and the cache are the same. I wouldn't know where to begin to manually delete the cache. But that's just my ignorance.

The idea of source and cache filesystems is to implement a caching mechanism to avoid computing images again. Image computation is CPU intensive, if we can avoid it we should.
The way it works is thus that when Glide receives a request, 1/ first it tries to find a cached image in the cache filesystem for the request, and serve it if it exists, or 2/ generates the image, stores it in cache and serves it if it didn't exist in cache.
This means the source and cache filesystems can be two completely different filesystems. I would actually recommend you to have two different instances to avoid mixing source files with cache files. Doing so would have helped in your situation, for instance. To have two Filesystem instances, you can instanciate two instances on different directories for instance (not sure how it works in Laravel).
In your case, I'm not sure how to proceed. The easiest way to move forward would be to configure a new instance of the cache filesystem with a new directory, as that would basically clear the cache (Glide wouldn't find any cached file). But then, you may have files mixed up in the source filesystem. That's not related to Glide though, it's dependant on your situation.

The idea of source and cache filesystems is to implement a caching mechanism to avoid computing images again. Image computation is CPU intensive, if we can avoid it we should.
The way it works is thus that when Glide receives a request, 1/ first it tries to find a cached image in the cache filesystem for the request, and serve it if it exists, or 2/ generates the image, stores it in cache and serves it if it didn't exist in cache.
This means the source and cache filesystems can be two completely different filesystems. I would actually recommend you to have two different instances to avoid mixing source files with cache files. Doing so would have helped in your situation, for instance. To have two Filesystem instances, you can instanciate two instances on different directories for instance (not sure how it works in Laravel).
In your case, I'm not sure how to proceed. The easiest way to move forward would be to configure a new instance of the cache filesystem with a new directory, as that would basically clear the cache (Glide wouldn't find any cached file). But then, you may have files mixed up in the source filesystem. That's not related to Glide though, it's dependant on your situation.

Thank you for the thorough explanation. I was able to get my images re-generated.

Thank you for the thorough explanation. I was able to get my images re-generated.


Launcher crashes.

Please check if your issue is not a duplicate by searching existing issues
Describe the bug
The launcher crashes or gets stuck at the first instance of verifying the hashes.
To Reproduce
I open it up and it doesn't load.
Expected behavior
I open it up and it loads.
Screenshots
N/A
Environment (please complete the following information):

Ubuntu 18.04
RuneLite version: <IP_ADDRESS> (I believe)
Launcher version: 1.6.0 (I believe)

Additional context
The launcher log on how it behaves...
2018-08-22 09:27:42 [main] INFO  net.runelite.launcher.Launcher - Setting hardware acceleration to OFF

That's all the log shows.

The launcher log on how it should behave...
2018-08-21 16:46:53 [main] INFO  net.runelite.launcher.Launcher - Setting hardware acceleration to OFF
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of client-<IP_ADDRESS>.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of slf4j-api-1.7.25.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of logback-classic-1.2.3.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of logback-core-1.2.3.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of jopt-simple-5.0.1.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of guava-23.2-jre.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of jsr305-1.3.9.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of error_prone_annotations-2.0.18.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of j2objc-annotations-1.1.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of animal-sniffer-annotations-1.14.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of guice-4.1.0-no_aop.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of javax.inject-1.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of aopalliance-1.0.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of gson-2.8.5.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of substance-8.0.02.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of trident-1.5.00.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of commons-text-1.2.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of commons-lang3-3.7.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of runelite-api-<IP_ADDRESS>.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of runescape-api-<IP_ADDRESS>.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of injected-client-<IP_ADDRESS>.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of http-api-<IP_ADDRESS>.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of okhttp-3.7.0.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of okio-1.12.0.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of discord-1.0.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.Launcher - Verified hash of jna-4.5.1.jar
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.JvmLauncher - Using Java version 9+
2018-08-21 16:46:55 [main] INFO  net.runelite.launcher.JvmLauncher - Running [/usr/lib/jvm/java-11-openjdk-amd64/bin/java, .......

I tried setting hardware acceleration off, nothing changes really.
2018-08-22 09:28:00 [main] INFO  net.runelite.launcher.Launcher - Setting hardware acceleration to OPENGL

https://github.com/runelite/runelite/wiki/Troubleshooting-problems-with-the-client check if anything from here helps

Yeah, that worked. My bad. I looked only in the open issues and then searched launcher under all of the issues and couldn't find anything. It was the last thing.


We are always getting Retry-After value as 17 Second for Azure Storage

Hello Team,
In this document, we have below statement which talks about Retry-After header value.  We are using azure storage blob service and we are always getting Retry-After value as 17 Second.
As per Product Group, this is expected behavior.  RETRY-AFTER is a suggestion rather than an exact time for mitigation. Also from the HTTP/1.1 Specification https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.3
Retry-After just indicates “the minimum time that the user agent is asked to wait before issuing the redirected request”.
Could you please review the documentation.
Thank you in advance.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 3fb31632-581a-56fc-6ee8-5877388bb0b2
Version Independent ID: 09bc0fef-0e2b-a4dc-c74d-9883c8815be3
Content: Request limits and throttling - Azure Resource Manager
Content Source: articles/azure-resource-manager/management/request-limits-and-throttling.md
Service: azure-resource-manager
Sub-service: management
GitHub Login: @tfitzmac
Microsoft Alias: tomfitz

@v-manish Thanks for your comment. We will review the issue and get back to you shortly.

@v-manish - thanks for this feedback. I am not seeing which part of the documentation you think should be changed. It includes the following statement which seems to match your description:
"The response includes a Retry-After value, which specifies the number of seconds your application should wait (or sleep) before sending the next request."
Are you saying you get the Retry-After value even when you haven't reached the request threshold?

@v-manish Have you got chance to look into the comment made by content author ? Kindly revert with requested information.

Currently, I am not aware of a change that is needed for the article.
#please-close


start centralizing intg test setup

we duplicate a lot of boilerplate code in integration tests involving the creation of an api client and the aggregation of external IDs.  In some packages we've begun
to add quality-of-life structs to aggregate these setup details. This change begins moving those structs to a singular package so that we can clear out the common setup boilerplate found elsewhere in the code.

Does this PR need a docs update or release note?

[x] :no_entry: No

Type of change

[x] :robot: Supportability/Tests
[x] :broom: Tech Debt/Cleanup

@ryanfkeepers noticed that this is in draft state. Should I go ahead and review it?

closing for now.  Can revisit as needed


Line endings and attributes

I've forked the GraphX repository, then cloned my fork from GitHub Desktop windows application, but I noticed that if I open repository settings there for that repo I see:
Line endings and attributes
The .gitattribures file controls line ending normalization and helps Git decide which files are binary and which are text. Learn more about .gitattributres (points here: https://help.github.com/articles/dealing-with-line-endings/) on github.com

Add the recommended .gitattributes file

[WarnIcon] This repository's line endings aren't normalized.
The best solution is to add the recommended file and make a one-time commit to fix line endings. If you don't want to use line ending normalization you can [turn this feature off]
a) the turn off action adds .gitattributes file with:
# Disable LF normalization for all files
* -text

b) the add action adds .gitattributes file (see link above for more info) with:
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain

at automatic graph layout repo I see they have (mostly commented-out, but explanations are useful from there):
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

Done!