WIP: implement v1beta1 authz policy conversion

Please provide a description for what this PR is for.

for a given workload, use v1beta1 policy if there is any, otherwise fallback to v1alpha1
update the internal model to support v1beta1 policy

And to help us figure out who should review this PR, please
put an X in all the areas that this PR affects.
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[X] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

@yangminzhu: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test lint_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test lint_istio

integ-pilot-local-tests_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test integ-pilot-local-tests_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test lint_istio

integ-pilot-local-tests_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test integ-pilot-local-tests_istio

unit-tests_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test unit-tests_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

lint_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test lint_istio

integ-pilot-local-tests_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test integ-pilot-local-tests_istio

unit-tests_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test unit-tests_istio

pilot-multicluster-e2e_istio
5d10b0189c91fb99b4f13b95a1d803b2da7dc7b3
link
/test pilot-multicluster-e2e_istio

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

@yangminzhu: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-new-install-k8s-tests_istio
41c505f83eeb2fa62f4bb0ad8139e7c2942dc24e
link
/test integ-new-install-k8s-tests_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-new-install-k8s-tests_istio
41c505f83eeb2fa62f4bb0ad8139e7c2942dc24e
link
/test integ-new-install-k8s-tests_istio

e2e-dashboard_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test e2e-dashboard_istio

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

/test e2e-dashboard_istio

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

e2e-dashboard_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test e2e-dashboard_istio

integ-new-install-k8s-tests_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test integ-new-install-k8s-tests_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-new-install-k8s-tests_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test integ-new-install-k8s-tests_istio

integ-mixer-k8s-tests_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test integ-mixer-k8s-tests_istio

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

@yangminzhu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-new-install-k8s-tests_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test integ-new-install-k8s-tests_istio

integ-mixer-k8s-tests_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test integ-mixer-k8s-tests_istio

pilot-multicluster-e2e_istio
8d9a4f71621a0b09daa61210de5b0a4968f6704b
link
/test pilot-multicluster-e2e_istio

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

@howardjohn @rshriram @hzxuzhonghu Could you take a look from the networking side? Thanks.

/lgtm
@howardjohn


page.goto waitUntil option is not respected

Steps to reproduce
Tell us about your environment:

Puppeteer version: 0.13.0
Platform / OS version: Windows 10, nodejs 8.9.1
URLs (if applicable):
code:

const puppeteer = require('puppeteer');
async function run(url){
var browser = await puppeteer.launch({
headless: false,
});
var page = await browser.newPage();
var test = await page.goto('https://au.yahoo.com', {waitUntil: 'load', timeout: 0});
console.log ('right after url:'+page.url());
console.log ('right after returned promise'+test);
await page.waitFor(5000);
console.log ('after 5 secs url:'+page.url());
console.log ('after 5 secs returned promise'+test);
}
run();

output:

right after url:about:blank
right after returned promise null
after 5 secs url:https://au.yahoo.com/
after 5 secs returned promise null

What is the expected result and what happened instead?
Expected with the option, it will return promise after the page is load, in which case async/await is used, the codes will only resume after the page is load (at least after DOM is ready), and therefore the first logged url should be the the url it reached and loaded, instead of about:blank.
and shouldn't the promise resolve and return the response object? why is it still null even after 5 seconds.
P.S. first time using headless browser, if it is purely my misunderstanding on what waitUntil option meant to do, or the definition of 'load' is wrong please let me know.

I cannot reproduce with puppeteer v1.0.0-rc on Windows 7 x64:
right after url:https://au.yahoo.com/
right after returned promise[object Object]
after 5 secs url:https://au.yahoo.com/
after 5 secs returned promise[object Object]

I never know there is release v1.0.0-rc, will try to update my package.json and try again

@playgamemy You can upgrade to the tip of tree by the npm i https://github.com/GoogleChrome/puppeteer/

There was a bug in using timeout:0 -- should be fixed in next release.  See #1417 .


sinkv2(cdc): add a memory table based sort engine for tests

Signed-off-by: qupeng<EMAIL_ADDRESS>What problem does this PR solve?
Issue Number: ref #5928
What is changed and how it works?
Add a memory table based sort engine for tests
Check List
Tests

Unit test

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/merge

/run-all-tests


CB-9455 Fixed requirements check failure

https://issues.apache.org/jira/browse/CB-9455

:+1: lgtm

LGTM.

lgtm, merging!


Lwjgl3 various graphics fixes

This PR aims to fix #4141, #4142 and #4143.
I also added support to enable OpenGL debug message callbacks. Made debugging a lot easier.
Note: these changes do not fix fullscreen transitions on OS X (with Retina displays) - see https://github.com/glfw/glfw/issues/748 and https://github.com/glfw/glfw/issues/682.

sweet!


[Multikueue] Fail e2e-test due to expected empty strings on Creating a multikueue admission check Should run a job on worker if admitted

What happened:
In addition to #3600, it was found this issue while running Creating a multikueue admission check Should run a job on worker if admitted test. This error is returned every time the tests is ran:
MultiKueue when Creating a multikueue admission check [It] Should run a job on worker if admitted
/Users/Irving_Mondragon/Documents/git/kueue/test/e2e/multikueue/e2e_test.go:190

  [FAILED] Expected
      <[]v1.JobCondition | len:3, cap:4>: [
          {
              Type: "Suspended",
              Status: "False",
              LastProbeTime: {
                  Time: 2024-11-27T10:12:44+01:00,
              },
              LastTransitionTime: {
                  Time: 2024-11-27T10:12:44+01:00,
              },
              Reason: "JobResumed",
              Message: "Job resumed",
          },
          {
              Type: "SuccessCriteriaMet",
              Status: "True",
              LastProbeTime: {
                  Time: 2024-11-27T10:12:53+01:00,
              },
              LastTransitionTime: {
                  Time: 2024-11-27T10:12:53+01:00,
              },
              Reason: "CompletionsReached",
              Message: "Reached expected number of succeeded pods",
          },
          {
              Type: "Complete",
              Status: "True",
              LastProbeTime: {
                  Time: 2024-11-27T10:12:53+01:00,
              },
              LastTransitionTime: {
                  Time: 2024-11-27T10:12:53+01:00,
              },
              Reason: "CompletionsReached",
              Message: "Reached expected number of succeeded pods",
          },
      ]
  to contain element matching
      <*matchers.BeComparableToMatcher | 0x14000a920f0>: {
          Expected: <v1.JobCondition>{
              Type: "Complete",
              Status: "True",
              LastProbeTime: {
                  Time: 0001-01-01T00:00:00Z,
              },
              LastTransitionTime: {
                  Time: 0001-01-01T00:00:00Z,
              },
              Reason: "",
              Message: "",
          },
          Options: [
              <*cmp.pathFilter | 0x14000a90048>{
                  core: {},
                  fnc: 0x1009c58c0,
                  opt: <cmp.ignore>{core: {}},
              },
          ],
      }
  In [It] at: /Users/Irving_Mondragon/Documents/git/kueue/test/e2e/multikueue/e2e_test.go:267 @ 11/27/24 10:12:53.521

What you expected to happen:
Not to happen
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

Kubernetes version (use kubectl version):
Kueue version (use git describe --tags --dirty --always):
Cloud provider or hardware configuration:
OS (e.g: cat /etc/os-release): macOS
Kernel (e.g. uname -a):
Install tools:
Others:

cc @tenzen-y as the reason is changed after the SuccessPolicy graduated to Beta in 1.31. I think it is safe to ignore the reason from asserts.

You say the test fails every time, but the board is green recently: https://testgrid.k8s.io/sig-scheduling#periodic-kueue-test-multikueue-e2e-main. Ah, I see, the SuccessCriteriaMet condition is added by k8s 1.31+, while we run the periodic tests on 1.30. I think we could update the test to only check the presence of the Complete condition.
EDIT: ah we already use ContainElement to check only the Complete condition, the issue is that the "Reason" is changed between the versions.

Yes, I'm also planning to open a PR in kubernetes/test-infra to use 1.31 on tests.

/kind flake


Only a node's latest ATX can be retrieved, preventing block eligibility check

When calculating block eligibility for an epoch we need the ATX from the previous epoch. Under normal conditions, since eligibility is calculated at the start of the first layer, the latest ATX will be from the previous epoch, allowing the node to calculate its block eligibility.
If, for some reason, an ATX is published before eligibility is successfully calculated, the miner will never be able to get the relevant ATX in order to calculate block eligibility, since the newer ATX will be its latest.
Since the eligibility cache isn't persistent, this can happen if the node publishes an ATX and then restarts in the same epoch. It will not be able to determine eligibility for blocks in the remainder of the epoch.

https://github.com/spacemeshos/go-spacemesh/issues/1083 may be related


Container crashes due to using up all available memory allocated to Docker

I have a fairly large S3 state that needs to be handled and the container keeps using more and more memory without releasing it.
I have not noticed this with the stock community version of Localstack.
eg.:
On the stock community image when syncing 3.7GB worth of assets to S3 the container happily handles this.
With your save solution the container crashes after some time in the middle of the process. I guess it is due to the save handling kicking in after each file is synced to the container? Running the sync multiple times eventually syncs all files and persists correctly.
It also happens over time while just getting assets out of S3 and using the container without saving anything after the initial sync.
What information would you need to investigate this?

Thanks for the report - what version of localstack-persist are you using? latest?

Yes, latest.

Could you try again after running docker pull gresau/localstack-persist? The current latest now includes https://github.com/GREsau/localstack-persist/commit/bad38aa0ef3d8aa1b774c150aa2269dac7fc26ad which should dramatically improve performance for many/large objects in S3. Previously, all S3 objects were persisted within a single JSON file which doesn't scale well when there are GB of objects - but with the latest change, objects are instead stored as individual files in the mounted volume.

Oh, nice. I'll give that a go and report back.

@GREsau Reading and writing files seem to work, but it breaks when "creating" directories. I'm using the AWS PHP SDK with the StreamWrapper that enables using regular filesystem operations (create a file, create a directory etc.). I don't know the details of the operation, but I found that when using mkdir it breaks (this worked in the previous version).
My guess is that the AWS SDK emulates this operation by using PutObject with an empty payload (i.e. only the path is used). Given the error message below, it would seem the code doesn't handle empty payloads.
2023-11-21T12:28:02.839  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.PutObject => 500 (InternalError)
2023-11-21T12:28:02.952 ERROR --- [   asgi_gw_0] l.aws.handlers.logging     : exception during call chain: 'NoneType' object has no attribute 'read'

Thanks @barasimumatik, that's extremely useful!
And now I understand why localstack does this check despite the fact that the function parameter type annotations specify that stream is not None - inaccurate type annotations will be the death of me 😩
Fortunately it's an easy fix, I'll get it sorted later today

@GREsau Wonderful! I'll try it when it's fixed :)

@barasimumatik latest is now updated with the fix

@GREsau That did the trick! The tests go through just as it did with 3.0.0 (I believe it was).
I can create another issue for this if you wish, but I'll just mention it here again:
The first time I ran the tests they failed with a 504 Gateway Timeout like before (though the next two runs I did just now worked).  It looks like it has to do with whatever state is persisted for S3 from time to time (are the files written to disk in a batch?).
Note the timestamps in the log output:
localstack-localstack-1  | 2023-11-21T16:31:16.644  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.DeleteObjects => 200
localstack-localstack-1  | 2023-11-21T16:31:24.050  INFO --- [ead-4 (_run)] localstack_persist.state   : Persisting state of service s3...
localstack-localstack-1  | 2023-11-21T16:32:21.855  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.ListObjects => 200
It looks like it takes about a minute for the persist function to finish (the tests hang for a while and immediately resume making requests). After about a minute of waiting for a response, the nginx server in front of the PHP-based API gives up and sends a 504 to the test client. This seems to happen because the API is stuck waiting for a response from localstack. Do you think there is anything that can be done about that on your side?

@barasimumatik I'm sure there are optimisations that could be made to the persistence mechanism - could you open a new issue for your problem please? Then if you're able to attach the full container log, it would be very helpful 🙂

Fix release in localstack-persist 3.0.1


Allow overriding Widget.canUpdate behavior

Use case
There are cases where you may want to override the behavior of Widget.canUpdate.
I encountered this scenario while developing an API where I had two widgets, let's call them A and B, both of which shared the same state. My objective was to ensure that when replacing one widget with the other within the widget tree, the state would persist and trigger the didUpdateWidget method. This already happens when the widget has the same runtimeType, but as A and B had different runtimeTypes didUpdateWidget wouldn't trigger.
The easiest way to do this would be overriding the Widget.canUpdate behavior, but it is a static method, so there's no way to do it.
So, instead, I made a workaround with the == operator on Type that allowed be to introduce this behavior:
@immutable
final class _SharedType implements Type {
  const _SharedType(this.baseType, this.otherType);

  final Type baseType;
  final Type otherType;

  @override
  bool operator ==(Object other) {
    if (other == baseType || other == otherType) {
      return true;
    } else if (other is _SharedType) {
      return baseType == other.baseType || //
          otherType == other.baseType ||
          baseType == other.otherType ||
          otherType == other.otherType;
    } else {
      return false;
    }
  }

  @override
  int get hashCode => Object.hash(baseType, otherType);
}

final class A extends StatefulWidget {
  // ...

  @override
  Type get runtimeType => const _SharedType(A, B);
}

final class B extends StatefulWidget {
  // ...

  @override
  Type get runtimeType => const _SharedType(B, A);
}

As you can see, this is a hacky solution and inherently unsafe, but served well for my use-case.
Proposal
We should have a way to override the Widget.canUpdate behavior.
For instance, it could be a dynamic method on Widget that would default to:
bool canBeUpdatedWith(Widget newWidget) {
  return runtimeType == newWidget.runtimeType
      && key == newWidget.key;
}

Then, for backward compatibility, we redefine Widget.canUpdate:
static bool canUpdate(Widget oldWidget, Widget newWidget) {
  return oldWidget.canBeUpdatedWith(newWidget);
}

With this approach, I would be able to redefine my implementation in a non-hacky (or less hacky) way:
// class _SharedType is not necessary anymore

final class A extends StatefulWidget {
  // ...

  @override
  bool canBeUpdatedWith(Widget newWidget) {
    return (newWidget is B || runtimeType == newWidget.runtimeType)
        && key == newWidget.key;
  }
}

final class B extends StatefulWidget {
  // ...

  @override
  bool canBeUpdatedWith(Widget newWidget) {
    return (newWidget is A || runtimeType == newWidget.runtimeType)
        && key == newWidget.key;
  }
}

My objective was to ensure that when replacing one widget with the other within the widget tree, the state would persist and trigger the didUpdateWidget method.

Can you describe what use case this would enable? Or what problem you were solving that lead you to this solution?

Can you describe what use case this would enable? Or what problem you were solving that lead you to this solution?

It's nothing more than an API choice.
For instance, let's consider a stateful box widget that may be open or closed.
We can do it this way:
final class Box extends StatefulWidget {
  const Box(this.open);

  final bool open;

  @override
  State<Box> createState => _BoxState();
}

final class _BoxState extends State<Box> {
  @override
  void didUpdateWidget() {
    super.didUpdateWidget();
    // Handle changes in open parameter
  }

  // ...
}

This way, if I ever change the open parameter, the state will handle it and do something.
Now, I may want to remove this parameter in favor of a more semantic API. I can do this easily with named constructors:
final class Box extends StatefulWidget {
  const Box.open() : open = true;

  const Box.close() : open = false;

  final bool open;

  @override
  State<Box> createState => _BoxState();
}

final class _BoxState extends State<Box> {
  @override
  void didUpdateWidget() {
    super.didUpdateWidget();
    // Handle changes in open parameter
  }

  // ...
}

This way, I may, instead of changing a parameter explicitly, change the constructor entirely in the widget tree, and the behavior will be exactly the same.
However, in my case, my client explicitly required that instead of using named parameter like the example above, we used different class names, like OpenBox and ClosedBox. The behavior is exactly the same and the API is very similar, but as we have to use this naming scheme, I had to create two different widgets sharing the same state.
So, like I said, it's purely "aesthetics", the only reason we had to do this way was because our client required the API to be this way.

I am going to close this as we are unlikly to implement this. As you already said, there are many other ways to achieve the behavior you want and allowing this doesn't add anything new while making the system more complex to reason about. This is also against some other design choices that Flutter has made (i.e. a State class is tied to a single widget class)

As you already said, there are many other ways to achieve the behavior you want […]

Sure, but in my case I didn't even have the choice to do the "Flutter way", as it was a requirement given by my client.
In this case, we can either have a "more proper" way of doing it or resort to hack the runtimeType of objects, which, in my opinion, is way worse.

[…] allowing this doesn't add anything new while making the system more complex to reason about.

Could you elaborate on how doing this would make the system more complex to reason about? The behavior will be, by default, exactly the same, and 99% of people using Flutter won't ever need to deal with this edge-case, so they won't ever need to reason about this.
But for the 1% that may have to deal with this edge-cases, we will provide them with a tool to avoid having hacky and way unsafer solutions.

This is also against some other design choices that Flutter has made (i.e. a State class is tied to a single widget class)

Well, I can't argue about it, as it is an arbitrary decision.


Fixing the 'Sign In' card overflow

Hey there, @c4coderandcreator!
I'd like to fix the 'Sign In' card overflow for better alignment and look.
Attached screenshots shows the changes to be implemented:

                                 Before:-

                                 After:-

Kindly assign me this issue under appropriate tags.
Thank You!

Good Find @avg77  !! Assigned to you !!

Please keep in mind :

Pull the code before creating the PR (just to safeguard your efforts)
Create PR with UI-Improvement branch not the main branch
SS/ Demo of changes are heartily welcomed in PR


TextField maxLength not working properly when when writing quickly

Flutter version: 1.17.0
Channel: beta
when typing fast in textfield that has maxlength of 10 the last char i type is not ignored
so i got a string of 11  char
this what i did
TextField(
          maxLength: 10,
          onChanged: (v){
            print(v);
          },
        ),

Expected results: ignore last char
here is the output

Hi @mo-ah-dawood
with what device are you testing?
I tried with beta 1.17.0 (with dev v1.18.0-dev.5.0 and v1.12.13+hotfix.9 as well) but can't reproduce it with Android 10 (API 29) (emulator) and iOS 13.4 device

Hi @mo-ah-dawood
with what device are you testing?
I tried with beta 1.17.0 (with dev v1.18.0-dev.5.0 and v1.12.13+hotfix.9 as well) but can't reproduce it with Android 10 (API 29) (emulator) and iOS 13.4 device

Galaxy a7 (2018)
Android 9

This is log from simple app

  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Material(
        child: Center(
          child: TextField(
            maxLength: 10,
            onChanged: (v) {
              print("\u001b[31m$v");
            },
          ),
        ),
      ),
    );
  }

@mo-ah-dawood
I managed to reproduce it with Redmi Note 7 (Android 9) when typing very fast. Not sure is it android issue or not, but I tried to type the same fast, but couldn't reproduce it with iPhone 7 (iOS 13.4).
Even if I can see the event of typing the 11th symbol, It isn't shown in the TextField.
Also I couldn't reproduce it with current dev channel 1.18.0-dev.5.0. Can you?

yes the 11th symbol not visible but the value it self changed to 11 symbol
this cause some problems  as i see an input  and posting another one to http
this problem also appeared with me in project created with older version of flutter
so i will try to find more info a bout that and reply here if the issue persists with me

I can't reproduce it with current dev 1.19.0-1.0.pre.
Seems to be fixed.
@mo-ah-dawood comment please if this is not so and I'll reopen

Yes i think it fixed thanks

Another bug:
when i set maxlength = 3,
input something like "12345"
i get "123" but when click delete on keyboard I have to press 5 times
                    TextField(                       maxLength: 3,                       onChanged: (value) {                         print(value);                       },                     )
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.1, on Microsoft Windows [Version 10.0.18363.1139], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Android Studio (version 4.0)
[√] Connected device (1 available)
• No issues found!

when i set maxlength = 3,
input something like "12345"
i get "123" but when click delete on keyboard I have to press 5 times
 TextField( maxLength: 3, onChanged: (value) { print(value); }, )
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.1, on Microsoft Windows [Version 10.0.18363.1139], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[√] Android Studio (version 4.0)
[√] Connected device (1 available)
• No issues found!

Got the exact same issue here indeed i'm on flutter 1.22.2


typo: Double word "the"

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

Thanks! I'd just seen that one recently, so I'm glad you for it corrected.

#sign-off


nanopolish variants --consensus needs fai index for input contigs

I have been trying nanopolish variants --consensus and it has a strange behavior: the first run it failed, but the second run was fine. I was executing it by using the make_range.py and the parallel pipe, as denoted in the documentation:
python3 nanopolish_makerange.py draft.fa | parallel --results nanopolish.results -P 8 \
    nanopolish variants --consensus -o polished.{1}.vcf -w {1} -r reads.fa -b reads.sorted.bam -g draft.fa -t 4 --min-candidate-frequency 0.1

After some research, I suspect that nanopolish variants needs draft.fa to be indexed, so it needs a file draft.fa.fai in the same folder than draft.fa. I think nanopolish is creating internally this index in case that it is not found; however, when using multiple threads by parallel, I think there is some race condition in which one thread starts to create de index while the other ones try to obtain information from that index, which is not already built. This derives in error messages indicating that faidx could not get contig length (maybe this is related to  #869) for each thread that tries to access the index while it is been built. Once every thread is finished, the command showed above return an error code because some threads did not finish properly.
For this reason, when I executed the command for the second time, it worked perfectly because the fai index was already created.
To avoid this kind of errors, I would set the fai index as mandatory before the execution (so, delegate the construction of the fai index to the user).
Do you think this would be a good idea?
Thanks in advance.

Hi,
This is a good point, I have encountered this problem myself. I agree the fai index should be mandatory.
Jared


Create factorial.py

What type of PR is this? (check all applicable)
Created factorial.py

[ ] 🚀 Added Name
[x] ✨ Feature
[x] 🌟 stared the repo
[ ] 🐛 Grammatical Error
[ ] 📝 Documentation Update
[ ] 🚩 Other

Description
Please approve new to hacktoberfest
Add Link of GitHub Profil
https://github.com/coolpersongit

you can reduce the time complexity by running the FOR loop x//2+1 times only.


Update README.md

Delete Laundry Card content since it doesn't work with HA 2022.11 and later. Add hint to Timer Bar Card that supports this integration now

@KTibow, hope that's ok for you ;-)

@4homeassistant,
this could be probably review based on @mhu1987 comment on #425.
Personally I don't use that card, but if it works it could be maintained id readme.

@4homeassistant,
any news about updating this PR?

@4homeassistant,
any news about updating this PR?

Hi @ollo69, just checked the update laundry card yesterday and it works fine. Also made screenshots but to be honest: I don't know how to update this PR to update it to your last release and merge my changes. Sorry - I am just learning how to Github.

What's the most common way? Delete this PR, fork and update the current release and make a new PR?

Yes, you can close this PR, update your fork master branch (Merge into current branch...) and create a new branch and PR. As alternative you can rebase this branch, but of course you need to solve conflict. May be in this case do not make sense.

Replaced with PR #470


How to properly wrap Router inside other component?

Version
Tell us which versions you are using:

react-native-router-flux v3.37.0
react-native v0.37.0

Expected behaviour
<Router> nicely integrates with other libraries.
    <MenuContext>
      <Router>
        <Scene key="root">
          <Scene key="select" component={SelectSong} title="Select song"/>
          <Scene key="song" component={Song}
            title={(props) => props.song.name}
            renderRightButton={NavigatorButton}
            />
        </Scene>
      </Router>
    </MenuContext>

Custom NavigatorButton requires to be rendered somewhere inside MenuContext which might cause re-renders.
Actual behaviour
In logs I see lot of Key select is already defined! etc.
For now I am not sure if it has any impact on functionality.
Question is how to properly wrap Router inside other component? Or where to "include" components that must be around everything that Router renders?

The solution seems to be create scenes externally via Actions.create and then use it
      <MenuContext>
         <Router scenes={scenes} />
       </MenuContext>

For more details see https://github.com/instea/react-native-popup-menu/commit/652a29642da4345ea65ca38573f34818dc56509d


Wraith consistently hangs on final URL

Wraith seems like a super useful tool that would be awesome to use for our pattern library, unfortunately, we can't get it to run reliably.
We have an app with 34 pages (and we're using the 5 default screen sizes). Running Wraith against it seems to fail ~9 out of 10 times, and always in the same way.
It goes through all of the pages, outputting all the urls and doing the "Resizing" and "Snapping" stuff, but then -- almost every time -- it hangs forever after it says it's "Snapping" the highest resolution on the final page (in our case: Snapping http://localhost:8000/summary-table.html at: 1280x1500).  Lowering the number of pages (to 2 or 3, for example) seems to increase the likelihood of Wraith successfully finishing, but even then it will still frequently hang.
Our issue is very similar to one that was closed without a resolution: "Wraith intermittently hangs"
Additionally, a coworker of mine ran it on his machine and encountered exactly the same issue.

OS version
ruby -v
phantomjs -v
wraith -v

Paul
OS X El Capitan Version 10.11.6
ruby 2.0.0p648
2.1.1
4.0.1

Tom
OS X El Capitan Version 10.11.6
ruby 2.0.0p247
1.9.8
4.0.1

I've tried passing in a few different options to phantomjs (adjusting the timeout setting, clearing the cache) and it seems to make no difference at all. Can you help us? I'm not sure what else I should try.
Since our project is public, it should be fairly easy for you to reproduce the issue:

Clone our repo from https://github.com/alphagov/digitalmarketplace-frontend-toolkit
sudo easy_install virtualenv (installs virtualenv)
git checkout pc-really-run-wraith (checkout the branch with wraith)
make serve_pages (compile pages and serve them locally)
Open a new terminal session
bundle install wraith (install Wraith)
wraith history wraith/config.yml (try to run Wraith)

Issue checklist:

[x] I have validated my config file against YAML Validator to make sure it is valid YAML.

[x] I have run the wraith info command and pasted the output below:

DEBUG: #################################################
DEBUG:   Command run:        info
DEBUG:   Wraith version:     4.0.1
DEBUG:   Ruby version:       ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
DEBUG:   ImageMagick:        Version: ImageMagick 7.0.4-6 Q16 x86_64 2017-01-28 http://www.imagemagick.org
DEBUG:   PhantomJS version:  2.1.1
DEBUG:   CasperJS version:   CasperJS not installed
DEBUG: #################################################

[x] I have run wraith history wraith/config.yml in verbose mode (by adding verbose: true to my config) and pasted the output below:

DEBUG: #################################################
DEBUG:   Command run:        history wraith/config.yml
DEBUG:   Wraith version:     4.0.1
DEBUG:   Ruby version:       ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
DEBUG:   ImageMagick:        Version: ImageMagick 7.0.4-6 Q16 x86_64 2017-01-28 http://www.imagemagick.org
DEBUG:   PhantomJS version:  2.1.1
DEBUG:   CasperJS version:   CasperJS not installed
DEBUG: #################################################
Config validated. No serious issues found.
Creating Folders
SAVING IMAGES
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/' '320,600,768,1024,1280' 'wraith/shots/home/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/button.html' '320,600,768,1024,1280' 'wraith/shots/__button.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/breadcrumb.html' '320,600,768,1024,1280' 'wraith/shots/__breadcrumb.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/contact-details.html' '320,600,768,1024,1280' 'wraith/shots/__contact-details.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/browse-list.html' '320,600,768,1024,1280' 'wraith/shots/__browse-list.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/documents.html' '320,600,768,1024,1280' 'wraith/shots/__documents.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/external-link.html' '320,600,768,1024,1280' 'wraith/shots/__external-link.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/keyword-search.html' '320,600,768,1024,1280' 'wraith/shots/__forms__keyword-search.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Loading http://localhost:8000/button.html at dimensions: 320x1500

Loading http://localhost:8000/documents.html at dimensions: 320x1500

Loading http://localhost:8000/breadcrumb.html at dimensions: 320x1500

Loading http://localhost:8000/ at dimensions: 320x1500

Loading http://localhost:8000/contact-details.html at dimensions: 320x1500

Loading http://localhost:8000/browse-list.html at dimensions: 320x1500

Loading http://localhost:8000/forms/keyword-search.html at dimensions: 320x1500

Loading http://localhost:8000/external-link.html at dimensions: 320x1500

Snapping http://localhost:8000/ at: 320x1500

Snapping http://localhost:8000/documents.html at: 320x1500

Snapping http://localhost:8000/breadcrumb.html at: 320x1500

Snapping http://localhost:8000/button.html at: 320x1500

Snapping http://localhost:8000/browse-list.html at: 320x1500

Snapping http://localhost:8000/forms/keyword-search.html at: 320x1500

Snapping http://localhost:8000/external-link.html at: 320x1500

Resizing http://localhost:8000/ to: 600x1500

Resizing http://localhost:8000/breadcrumb.html to: 600x1500

Resizing http://localhost:8000/external-link.html to: 600x1500

Resizing http://localhost:8000/documents.html to: 600x1500

Resizing http://localhost:8000/forms/keyword-search.html to: 600x1500

Resizing http://localhost:8000/button.html to: 600x1500

Resizing http://localhost:8000/browse-list.html to: 600x1500

Snapping http://localhost:8000/ at: 600x1500

Snapping http://localhost:8000/breadcrumb.html at: 600x1500

Snapping http://localhost:8000/external-link.html at: 600x1500

Snapping http://localhost:8000/documents.html at: 600x1500

Snapping http://localhost:8000/forms/keyword-search.html at: 600x1500

Snapping http://localhost:8000/button.html at: 600x1500

Snapping http://localhost:8000/browse-list.html at: 600x1500

Resizing http://localhost:8000/ to: 768x1500

Resizing http://localhost:8000/breadcrumb.html to: 768x1500

Resizing http://localhost:8000/forms/keyword-search.html to: 768x1500

Resizing http://localhost:8000/documents.html to: 768x1500

Resizing http://localhost:8000/external-link.html to: 768x1500

Resizing http://localhost:8000/button.html to: 768x1500

Resizing http://localhost:8000/browse-list.html to: 768x1500

Snapping http://localhost:8000/documents.html at: 768x1500

Snapping http://localhost:8000/ at: 768x1500

Snapping http://localhost:8000/button.html at: 768x1500

Snapping http://localhost:8000/browse-list.html at: 768x1500

Snapping http://localhost:8000/external-link.html at: 768x1500

Snapping http://localhost:8000/breadcrumb.html at: 768x1500

Snapping http://localhost:8000/forms/keyword-search.html at: 768x1500

Resizing http://localhost:8000/ to: 1024x1500

Resizing http://localhost:8000/forms/keyword-search.html to: 1024x1500

Resizing http://localhost:8000/breadcrumb.html to: 1024x1500

Resizing http://localhost:8000/external-link.html to: 1024x1500

Resizing http://localhost:8000/documents.html to: 1024x1500

Resizing http://localhost:8000/button.html to: 1024x1500

Resizing http://localhost:8000/browse-list.html to: 1024x1500

Snapping http://localhost:8000/ at: 1024x1500

Snapping http://localhost:8000/forms/keyword-search.html at: 1024x1500

Snapping http://localhost:8000/breadcrumb.html at: 1024x1500

Snapping http://localhost:8000/external-link.html at: 1024x1500

Snapping http://localhost:8000/documents.html at: 1024x1500

Snapping http://localhost:8000/browse-list.html at: 1024x1500

Snapping http://localhost:8000/button.html at: 1024x1500

Resizing http://localhost:8000/ to: 1280x1500

Resizing http://localhost:8000/forms/keyword-search.html to: 1280x1500

Resizing http://localhost:8000/breadcrumb.html to: 1280x1500

Resizing http://localhost:8000/external-link.html to: 1280x1500

Resizing http://localhost:8000/button.html to: 1280x1500

Resizing http://localhost:8000/documents.html to: 1280x1500

Resizing http://localhost:8000/browse-list.html to: 1280x1500

Snapping http://localhost:8000/ at: 1280x1500

Snapping http://localhost:8000/forms/keyword-search.html at: 1280x1500

Snapping http://localhost:8000/button.html at: 1280x1500

Snapping http://localhost:8000/breadcrumb.html at: 1280x1500

Snapping http://localhost:8000/browse-list.html at: 1280x1500

Snapping http://localhost:8000/documents.html at: 1280x1500

Snapping http://localhost:8000/external-link.html at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/upload.html' '320,600,768,1024,1280' 'wraith/shots/__forms__upload.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/list-entry.html' '320,600,768,1024,1280' 'wraith/shots/__forms__list-entry.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/option-select.html' '320,600,768,1024,1280' 'wraith/shots/__forms__option-select.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/pricing.html' '320,600,768,1024,1280' 'wraith/shots/__forms__pricing.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/selection-buttons.html' '320,600,768,1024,1280' 'wraith/shots/__forms__selection-buttons.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/textbox.html' '320,600,768,1024,1280' 'wraith/shots/__forms__textbox.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/single-question-page.html' '320,600,768,1024,1280' 'wraith/shots/__forms__single-question-page.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Loading http://localhost:8000/forms/list-entry.html at dimensions: 320x1500

Loading http://localhost:8000/forms/upload.html at dimensions: 320x1500

Loading http://localhost:8000/forms/option-select.html at dimensions: 320x1500

Loading http://localhost:8000/forms/selection-buttons.html at dimensions: 320x1500

Loading http://localhost:8000/forms/pricing.html at dimensions: 320x1500

Loading http://localhost:8000/forms/single-question-page.html at dimensions: 320x1500

Loading http://localhost:8000/forms/textbox.html at dimensions: 320x1500

Snapping http://localhost:8000/forms/list-entry.html at: 320x1500

Snapping http://localhost:8000/forms/upload.html at: 320x1500

Snapping http://localhost:8000/forms/option-select.html at: 320x1500

Resizing http://localhost:8000/forms/list-entry.html to: 600x1500

Resizing http://localhost:8000/forms/upload.html to: 600x1500

Resizing http://localhost:8000/forms/option-select.html to: 600x1500

Snapping http://localhost:8000/forms/single-question-page.html at: 320x1500

Snapping http://localhost:8000/forms/selection-buttons.html at: 320x1500

Snapping http://localhost:8000/forms/pricing.html at: 320x1500

Resizing http://localhost:8000/forms/pricing.html to: 600x1500

Resizing http://localhost:8000/forms/selection-buttons.html to: 600x1500

Resizing http://localhost:8000/forms/single-question-page.html to: 600x1500

Snapping http://localhost:8000/forms/textbox.html at: 320x1500

Resizing http://localhost:8000/forms/textbox.html to: 600x1500

Snapping http://localhost:8000/forms/list-entry.html at: 600x1500

Snapping http://localhost:8000/forms/upload.html at: 600x1500

Resizing http://localhost:8000/forms/list-entry.html to: 768x1500

Resizing http://localhost:8000/forms/upload.html to: 768x1500

Snapping http://localhost:8000/forms/option-select.html at: 600x1500

Resizing http://localhost:8000/forms/option-select.html to: 768x1500

Snapping http://localhost:8000/forms/pricing.html at: 600x1500

Snapping http://localhost:8000/forms/single-question-page.html at: 600x1500

Snapping http://localhost:8000/forms/selection-buttons.html at: 600x1500

Resizing http://localhost:8000/forms/pricing.html to: 768x1500

Resizing http://localhost:8000/forms/single-question-page.html to: 768x1500

Resizing http://localhost:8000/forms/selection-buttons.html to: 768x1500

Snapping http://localhost:8000/forms/textbox.html at: 600x1500

Resizing http://localhost:8000/forms/textbox.html to: 768x1500

Snapping http://localhost:8000/forms/upload.html at: 768x1500

Snapping http://localhost:8000/forms/list-entry.html at: 768x1500

Snapping http://localhost:8000/forms/option-select.html at: 768x1500

Resizing http://localhost:8000/forms/upload.html to: 1024x1500

Resizing http://localhost:8000/forms/list-entry.html to: 1024x1500

Resizing http://localhost:8000/forms/option-select.html to: 1024x1500

Snapping http://localhost:8000/forms/pricing.html at: 768x1500

Snapping http://localhost:8000/forms/single-question-page.html at: 768x1500

Snapping http://localhost:8000/forms/selection-buttons.html at: 768x1500

Resizing http://localhost:8000/forms/pricing.html to: 1024x1500

Resizing http://localhost:8000/forms/single-question-page.html to: 1024x1500

Resizing http://localhost:8000/forms/selection-buttons.html to: 1024x1500

Snapping http://localhost:8000/forms/textbox.html at: 768x1500

Resizing http://localhost:8000/forms/textbox.html to: 1024x1500

Snapping http://localhost:8000/forms/upload.html at: 1024x1500

Snapping http://localhost:8000/forms/list-entry.html at: 1024x1500

Resizing http://localhost:8000/forms/upload.html to: 1280x1500

Resizing http://localhost:8000/forms/list-entry.html to: 1280x1500

Snapping http://localhost:8000/forms/option-select.html at: 1024x1500

Resizing http://localhost:8000/forms/option-select.html to: 1280x1500

Snapping http://localhost:8000/forms/pricing.html at: 1024x1500

Snapping http://localhost:8000/forms/single-question-page.html at: 1024x1500

Snapping http://localhost:8000/forms/selection-buttons.html at: 1024x1500

Resizing http://localhost:8000/forms/pricing.html to: 1280x1500

Resizing http://localhost:8000/forms/selection-buttons.html to: 1280x1500

Resizing http://localhost:8000/forms/single-question-page.html to: 1280x1500

Snapping http://localhost:8000/forms/textbox.html at: 1024x1500

Resizing http://localhost:8000/forms/textbox.html to: 1280x1500

Snapping http://localhost:8000/forms/list-entry.html at: 1280x1500

Snapping http://localhost:8000/forms/upload.html at: 1280x1500

Snapping http://localhost:8000/forms/option-select.html at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/validation.html' '320,600,768,1024,1280' 'wraith/shots/__forms__validation.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/forms/pricing.html at: 1280x1500

Snapping http://localhost:8000/forms/single-question-page.html at: 1280x1500

Snapping http://localhost:8000/forms/selection-buttons.html at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/forms/combinations.html' '320,600,768,1024,1280' 'wraith/shots/__forms__combinations.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/grids.html' '320,600,768,1024,1280' 'wraith/shots/__grids.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/forms/textbox.html at: 1280x1500

Loading http://localhost:8000/forms/validation.html at dimensions: 320x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/instruction-list.html' '320,600,768,1024,1280' 'wraith/shots/__instruction-list.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/link-button.html' '320,600,768,1024,1280' 'wraith/shots/__link-button.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/page-heading.html' '320,600,768,1024,1280' 'wraith/shots/__page-heading.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Loading http://localhost:8000/grids.html at dimensions: 320x1500

Loading http://localhost:8000/forms/combinations.html at dimensions: 320x1500

Loading http://localhost:8000/instruction-list.html at dimensions: 320x1500

Loading http://localhost:8000/link-button.html at dimensions: 320x1500

Loading http://localhost:8000/page-heading.html at dimensions: 320x1500

Snapping http://localhost:8000/forms/validation.html at: 320x1500

Resizing http://localhost:8000/forms/validation.html to: 600x1500

Snapping http://localhost:8000/grids.html at: 320x1500

Resizing http://localhost:8000/grids.html to: 600x1500

Snapping http://localhost:8000/instruction-list.html at: 320x1500

Snapping http://localhost:8000/link-button.html at: 320x1500

Snapping http://localhost:8000/page-heading.html at: 320x1500

Resizing http://localhost:8000/link-button.html to: 600x1500

Resizing http://localhost:8000/page-heading.html to: 600x1500

Resizing http://localhost:8000/instruction-list.html to: 600x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/notification-banner.html' '320,600,768,1024,1280' 'wraith/shots/__notification-banner.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Loading http://localhost:8000/notification-banner.html at dimensions: 320x1500

Snapping http://localhost:8000/forms/validation.html at: 600x1500

Resizing http://localhost:8000/forms/validation.html to: 768x1500

Snapping http://localhost:8000/notification-banner.html at: 320x1500

Resizing http://localhost:8000/notification-banner.html to: 600x1500

Snapping http://localhost:8000/grids.html at: 600x1500

Resizing http://localhost:8000/grids.html to: 768x1500

Snapping http://localhost:8000/link-button.html at: 600x1500

Snapping http://localhost:8000/page-heading.html at: 600x1500

Snapping http://localhost:8000/instruction-list.html at: 600x1500

Resizing http://localhost:8000/link-button.html to: 768x1500

Resizing http://localhost:8000/page-heading.html to: 768x1500

Resizing http://localhost:8000/instruction-list.html to: 768x1500

Snapping http://localhost:8000/forms/validation.html at: 768x1500

Resizing http://localhost:8000/forms/validation.html to: 1024x1500

Snapping http://localhost:8000/notification-banner.html at: 600x1500

Resizing http://localhost:8000/notification-banner.html to: 768x1500

Snapping http://localhost:8000/grids.html at: 768x1500

Resizing http://localhost:8000/grids.html to: 1024x1500

Snapping http://localhost:8000/link-button.html at: 768x1500

Snapping http://localhost:8000/page-heading.html at: 768x1500

Snapping http://localhost:8000/instruction-list.html at: 768x1500

Resizing http://localhost:8000/link-button.html to: 1024x1500

Resizing http://localhost:8000/page-heading.html to: 1024x1500

Resizing http://localhost:8000/instruction-list.html to: 1024x1500

Snapping http://localhost:8000/forms/validation.html at: 1024x1500

Resizing http://localhost:8000/forms/validation.html to: 1280x1500

Snapping http://localhost:8000/notification-banner.html at: 768x1500

Resizing http://localhost:8000/notification-banner.html to: 1024x1500

Snapping http://localhost:8000/grids.html at: 1024x1500

Resizing http://localhost:8000/grids.html to: 1280x1500

Snapping http://localhost:8000/link-button.html at: 1024x1500

Snapping http://localhost:8000/page-heading.html at: 1024x1500

Snapping http://localhost:8000/instruction-list.html at: 1024x1500

Resizing http://localhost:8000/link-button.html to: 1280x1500

Resizing http://localhost:8000/page-heading.html to: 1280x1500

Resizing http://localhost:8000/instruction-list.html to: 1280x1500

Snapping http://localhost:8000/forms/validation.html at: 1280x1500

Snapping http://localhost:8000/notification-banner.html at: 1024x1500

Resizing http://localhost:8000/notification-banner.html to: 1280x1500

Snapping http://localhost:8000/grids.html at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/phase-banner.html' '320,600,768,1024,1280' 'wraith/shots/__phase-banner.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/link-button.html at: 1280x1500

Snapping http://localhost:8000/page-heading.html at: 1280x1500

Snapping http://localhost:8000/instruction-list.html at: 1280x1500

Loading http://localhost:8000/phase-banner.html at dimensions: 320x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/previous-next-navigation.html' '320,600,768,1024,1280' 'wraith/shots/__previous-next-navigation.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/secondary-action-link.html' '320,600,768,1024,1280' 'wraith/shots/__secondary-action-link.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/search-summary.html' '320,600,768,1024,1280' 'wraith/shots/__search-summary.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/shared_scss/' '320,600,768,1024,1280' 'wraith/shots/__shared_scss/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/phase-banner.html at: 320x1500

Resizing http://localhost:8000/phase-banner.html to: 600x1500

Snapping http://localhost:8000/notification-banner.html at: 1280x1500

Loading http://localhost:8000/previous-next-navigation.html at dimensions: 320x1500

Loading http://localhost:8000/secondary-action-link.html at dimensions: 320x1500

Loading http://localhost:8000/search-summary.html at dimensions: 320x1500

Loading http://localhost:8000/shared_scss/ at dimensions: 320x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/service-id.html' '320,600,768,1024,1280' 'wraith/shots/__service-id.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Loading http://localhost:8000/service-id.html at dimensions: 320x1500

Snapping http://localhost:8000/secondary-action-link.html at: 320x1500

Snapping http://localhost:8000/previous-next-navigation.html at: 320x1500

Snapping http://localhost:8000/shared_scss/ at: 320x1500

Resizing http://localhost:8000/secondary-action-link.html to: 600x1500

Resizing http://localhost:8000/previous-next-navigation.html to: 600x1500

Resizing http://localhost:8000/shared_scss/ to: 600x1500

Snapping http://localhost:8000/phase-banner.html at: 600x1500

Resizing http://localhost:8000/phase-banner.html to: 768x1500

Snapping http://localhost:8000/service-id.html at: 320x1500

Resizing http://localhost:8000/service-id.html to: 600x1500

Snapping http://localhost:8000/secondary-action-link.html at: 600x1500

Snapping http://localhost:8000/previous-next-navigation.html at: 600x1500

Snapping http://localhost:8000/shared_scss/ at: 600x1500

Resizing http://localhost:8000/secondary-action-link.html to: 768x1500

Resizing http://localhost:8000/previous-next-navigation.html to: 768x1500

Resizing http://localhost:8000/shared_scss/ to: 768x1500

Snapping http://localhost:8000/phase-banner.html at: 768x1500

Resizing http://localhost:8000/phase-banner.html to: 1024x1500

Snapping http://localhost:8000/service-id.html at: 600x1500

Resizing http://localhost:8000/service-id.html to: 768x1500

Snapping http://localhost:8000/secondary-action-link.html at: 768x1500

Snapping http://localhost:8000/previous-next-navigation.html at: 768x1500

Snapping http://localhost:8000/shared_scss/ at: 768x1500

Resizing http://localhost:8000/secondary-action-link.html to: 1024x1500

Resizing http://localhost:8000/previous-next-navigation.html to: 1024x1500

Resizing http://localhost:8000/shared_scss/ to: 1024x1500

Snapping http://localhost:8000/phase-banner.html at: 1024x1500

Resizing http://localhost:8000/phase-banner.html to: 1280x1500

Snapping http://localhost:8000/service-id.html at: 768x1500

Resizing http://localhost:8000/service-id.html to: 1024x1500

Snapping http://localhost:8000/secondary-action-link.html at: 1024x1500

Snapping http://localhost:8000/previous-next-navigation.html at: 1024x1500

Snapping http://localhost:8000/shared_scss/ at: 1024x1500

Resizing http://localhost:8000/secondary-action-link.html to: 1280x1500

Resizing http://localhost:8000/previous-next-navigation.html to: 1280x1500

Resizing http://localhost:8000/shared_scss/ to: 1280x1500

Snapping http://localhost:8000/phase-banner.html at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/shared_scss/lists.html' '320,600,768,1024,1280' 'wraith/shots/__shared_scss__lists.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/service-id.html at: 1024x1500

Loading http://localhost:8000/shared_scss/lists.html at dimensions: 320x1500

Resizing http://localhost:8000/service-id.html to: 1280x1500

Snapping http://localhost:8000/shared_scss/lists.html at: 320x1500

Snapping http://localhost:8000/secondary-action-link.html at: 1280x1500

Snapping http://localhost:8000/previous-next-navigation.html at: 1280x1500

Resizing http://localhost:8000/shared_scss/lists.html to: 600x1500

Snapping http://localhost:8000/shared_scss/ at: 1280x1500

DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/shared_scss/dmspeak.html' '320,600,768,1024,1280' 'wraith/shots/__shared_scss__dmspeak.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/temporary-message.html' '320,600,768,1024,1280' 'wraith/shots/__temporary-message.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
DEBUG: phantomjs  '/Library/Ruby/Gems/2.0.0/gems/wraith-4.0.1/lib/wraith/javascript/phantom.js' 'http://localhost:8000/summary-table.html' '320,600,768,1024,1280' 'wraith/shots/__summary-table.html/MULTI_phantomjs_dev.png' 'body' '/Users/paulcraig/Desktop/new-toolkit/digitalmarketplace-frontend-toolkit/wraith/javascripts/wait--phantom.js' 'false'
Snapping http://localhost:8000/service-id.html at: 1280x1500

Loading http://localhost:8000/shared_scss/dmspeak.html at dimensions: 320x1500

Loading http://localhost:8000/summary-table.html at dimensions: 320x1500

Loading http://localhost:8000/temporary-message.html at dimensions: 320x1500

Snapping http://localhost:8000/shared_scss/lists.html at: 600x1500

Resizing http://localhost:8000/shared_scss/lists.html to: 768x1500

Snapping http://localhost:8000/shared_scss/dmspeak.html at: 320x1500

Snapping http://localhost:8000/temporary-message.html at: 320x1500

Snapping http://localhost:8000/summary-table.html at: 320x1500

Resizing http://localhost:8000/shared_scss/dmspeak.html to: 600x1500

Resizing http://localhost:8000/temporary-message.html to: 600x1500

Resizing http://localhost:8000/summary-table.html to: 600x1500

Snapping http://localhost:8000/shared_scss/lists.html at: 768x1500

Resizing http://localhost:8000/shared_scss/lists.html to: 1024x1500

Snapping http://localhost:8000/shared_scss/dmspeak.html at: 600x1500

Snapping http://localhost:8000/temporary-message.html at: 600x1500

Resizing http://localhost:8000/shared_scss/dmspeak.html to: 768x1500

Resizing http://localhost:8000/temporary-message.html to: 768x1500

Snapping http://localhost:8000/summary-table.html at: 600x1500

Resizing http://localhost:8000/summary-table.html to: 768x1500

Snapping http://localhost:8000/shared_scss/lists.html at: 1024x1500

Resizing http://localhost:8000/shared_scss/lists.html to: 1280x1500

Snapping http://localhost:8000/shared_scss/dmspeak.html at: 768x1500

Snapping http://localhost:8000/temporary-message.html at: 768x1500

Resizing http://localhost:8000/shared_scss/dmspeak.html to: 1024x1500

Resizing http://localhost:8000/temporary-message.html to: 1024x1500

Snapping http://localhost:8000/summary-table.html at: 768x1500

Resizing http://localhost:8000/summary-table.html to: 1024x1500

Snapping http://localhost:8000/shared_scss/lists.html at: 1280x1500

Snapping http://localhost:8000/shared_scss/dmspeak.html at: 1024x1500

Snapping http://localhost:8000/temporary-message.html at: 1024x1500

Resizing http://localhost:8000/shared_scss/dmspeak.html to: 1280x1500

Snapping http://localhost:8000/summary-table.html at: 1024x1500

Resizing http://localhost:8000/temporary-message.html to: 1280x1500

Resizing http://localhost:8000/summary-table.html to: 1280x1500

Snapping http://localhost:8000/shared_scss/dmspeak.html at: 1280x1500

Snapping http://localhost:8000/temporary-message.html at: 1280x1500

Snapping http://localhost:8000/summary-table.html at: 1280x1500

↑   never gets past this line, which is the final page at the highest resolution  ↑

[x] I have pasted the contents of my config file below:

# Wraith
# You will need wraith, imagemagick, and phantomsjs or similar.
#
# gem install wraith
# brew install phantomjs
# brew install imagemagick
#
# Take a baseline of the current version
#
# wraith history config.yml
#
# Switch to your feature branch and make changes.
#
# wraith latest config.yml
#
# This should generate a gallery containing diffs of the pages, at
# various resolutions.

#Headless browser option
browser:
  phantomjs: "phantomjs"

#If you want to have multiple snapping files, set the file name here

# Type the name of the directory that shots will be stored in
directory: "wraith/shots"
history_dir: "wraith/shots_history"

# Add maximum of 2 domains, key will act as a label
domains:
  dev: "http://localhost:8000"

#Type screen widths below, here are a couple of examples
screen_widths:
  - 320
  - 600
  - 768
  - 1024
  - 1280

# 1. Type page URL paths below, here are a couple of examples
#paths:
#  home: "/"
#  forms: "/forms/"
#  textbox: "/forms/textbox.html"
#  breadcrumb: "/breadcrumb.html"

# 2. OR specify a yml file with all of the urls (wraith can generate this automatically)
imports: "spider.yml"

# (optional) JavaScript file to execute before taking screenshot of every path. Default: nil
before_capture: "wraith/javascripts/wait--phantom.js"

# (optional) Resize to each screen width (efficient), or reload at each screen width (costly). Default: 'reload'
resize_or_reload: "resize"

#Amount of fuzz ImageMagick will use
fuzz: "20%"

#Set the number of days to keep the site spider file
spider_days:
  - 10

#Choose how results are displayed, by default alphanumeric. Different screen widths are always grouped.
#alphanumeric - all paths (with, and without, a difference) are shown, sorted by path
#diffs_first - all paths (with, and without, a difference) are shown, sorted by difference size (largest first)
#diffs_only - only paths with a difference are shown, sorted by difference size (largest first)
mode: diffs_first

# (optional) The maximum acceptable level of difference (in %) between two images before Wraith reports a failure. Default: 0
threshold: 0

# (optional) Choose to run Wraith in verbose mode, for easier debugging. Default: false
verbose: true

# (optional) Color to highlight the image diff. Default: 'blue'
highlight_color: red

# (optional) Parameters to pass to Phantom/Casper command line. Default: '--ignore-ssl-errors=true --ssl-protocol=tlsv1'
phantomjs_options: ""

# (optional) Specify the template (and generated thumbnail sizes) for the gallery output.
gallery:
  template: "slideshow_template" # Examples: 'basic_template' (default), 'slideshow_template'
  thumb_width:  200
  thumb_height: 200

@pcraig3 How did you resolve this? Also how do you pass options to clear cache from phantomjs? Id appreciate any info thanks!!

Hey!  Thanks for the interest.
> How did you resolve this?
Unfortunately, I haven’t had any success getting this to work reliably on our project, although I have noticed that there seem to be specific conditions under which it fails.
Running Wraith against a couple of other projects we work on or against our live site seems to work much more reliably than the local version of the project I linked to — I think this means that it’s not getting something back that it expects in the response from the makeshift server we’re running in this project, but since filing this I’ve been working on other things and I haven’t had much more time to look into it.
> Also how do you pass options to clear cache from phantomjs?
Setting default parameters for phantomjs seems to be something you can do with the JavaScript files you run before opening each page (this one is a good example ), so the way that I added this line to my JS file to be run before the thing.
phantom.clearMemoryCache();

Which I found in this stack overflow answer.
Didn’t actually help solve my particular problem though, so it might not be what you’re looking for.

Thanks for responding! So Ive done a couple of things which I found here and on the internet to help me resolve some of our issues. The first is for when it hangs (I am running on sets of 10k so it does hang for me), @JimBledsoe wrote a script that will kill any hung phantomjs process' and wraith should restart it (upto 5 times I believe). That issue and script is here:
https://github.com/BBC-News/wraith/issues/461
To clear my cache, I followed this link and appended an "?wraith" to each line of my paths.
https://www.phase2technology.com/blog/wrestling-with-wraith-quick-and-dirty-visual-regression-testing/
As described:
"I also sometimes find that it’s useful to add “?wraith” to the ends of each path, so that you can see which requests are coming from Wraith in logs/analytics if needed. This can also be useful for busting caches to make sure you’re testing fresh pages, not cached ones."
Ill try to use what you put and see if works for me. Thank you!!

I am experiencing the same issue. Wraith hangs on the last url. I'm running wraith in the container https://hub.docker.com/r/bbcnews/wraith/ tagged 6eac3f399c56fc54bdbfd973908b190defa9c6cf74958900e0042118ed726f33.
The site which I compare against (current) is on the internet. The (new) site which I run the test against is inside a container which is linked with the wraith container. My setup looks like this:
docker run -d --name=wraith_new -v $PROJECT_ROOT/public:/usr/share/nginx/html nginx
docker run -it -v $(pwd):/wraithy -w='/wraithy' --link wraith_new:wraith_new bbcnews/wraith capture config.yml

Unfortunately wraith hangs always on the last url, no matter if I lower the amount of pages.
I'll try to publish both pages on a webserver to see if it still hangs when both pages are on the web and I'll share my findings here.

We had the same issue on local dev Linux machines - we wanted to compare live instance with local dev instance. Wraith was hanging on the last URL check all the time and was only working with a couple of test URLs, but as soon as we have 7-8 or more URLs it was failing.
We tried all recommended solutions in this and other issues and none of them worked. Finally we started changing web drivers so:

phantomjs - NOT working, hanging on last URL.
casperjs - NOT working, hanging on last URL.
slimerjs - NOT working, not compatible with latest Firefox Quantum engine.
chrome - WORKS!

Chrome driver support landed recently in https://github.com/BBC-News/wraith/pull/541 and I would just recommend everybody just to use this and nothing else. Its solving last URL hanging issue and it is also faster in execution. At least until slimerjs is fixed to work with latest Firefox engine this is the best option for now.

@pivica  SlimerJS beta should support Firefox 57+.

I'm using Wraith right now and I still have this problem. I use phantomjs.

How do you use Chrome in Wraith?


[VS Code] Cannot read property 'sessionId' of undefined

Error:
Cannot read property 'sessionId' of undefined
Steps to Reproduce:

host liveshare session
as host, attempt to follow to side participant prior to selecting follow participant

Version Data

extensionName
VSLS

extensionVersion
1.0.752

protocolVersion
2.2

applicationName
VSCode

applicationVersion
1.37.1

platformName
Windows

platformVersion
10.0.17134

Closing this due to inactivity. Please reopen it if you’re still encountering the issue. Thanks!


Catalog of my things

Note 🔖
This project is being developed by:

Baraka Danny
Elie Harfouche
Benjamin Kisenge

Link to the Project distribution  Kanban board
Happy Coding 🥂

Hi Team,
Good job so far! 👍🏻
There are some issues that you still need to work on to go to the next project but you are almost there!

Required Changes ♻

[ ] Kindly add a task for "adding unit testing for the label and book classes".

[ ] Kindly add a task for "preserving data for the label and book classes".

[ ] Please make sure that the tasks are assigned equally between team members when it comes to points assigned. The difference between team members' points shouldn't be large. Currently here's an overview of each team member and the points assigned to each:

Team member
Points

@barakadanny
10pts

@iambenkis
6pts

@X-Elie-X
11.5pts

Please make sure that the difference in points between team members doesn't exceed 5pts at most.

Optional suggestions
Every comment with the [OPTIONAL] prefix is not crucial enough to stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.

Hi :raising_hand_man: @barakadanny, @X-Elie-X,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉
Highlights

Tasks are assigned equally between team members :+1:

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Examples Fail To Load Assets

Running kiwi run from within any example's directory that uses assets leads to errors in the log despite the corresponding asset's main.json existing in target/assets (note that many permutations of the path were tried, and failed):
[2023-02-12T17:35:04Z WARN  kiwi_std::uncategorized::download_asset] Request for http://<IP_ADDRESS>:8999/assets/castle.glb/objects/main.json failed: 404
[2023-02-12T17:35:04Z ERROR kiwi_object] Failed to load object: Downloading http://<IP_ADDRESS>:8999/assets/castle.glb/objects/main.json failed, bad status code: 404

@SK83RJOSH Hm it should be at assets/assets on the http endpoint. How does the ObjectRef look like?


Fix broken link in 'AnonymousAuthConfigurableEndpoints' feature gate file

Fixes the broken link to https://kubernetes.io//docs/reference/access-authn-authz/authentication/#anonymous-authenticator-configuration in AnonymousAuthConfigurableEndpoints feature gate description file.
- https://kubernetes.io//docs/reference/access-authn-authz/authentication/#anonymous-authenticator-onfiguration
+ https://kubernetes.io//docs/reference/access-authn-authz/authentication/#anonymous-authenticator-configuration

/approve


Readme Logging Updates

Need to describe:

What the ideal log level is that's a good balance of diagnosability vs verbosity
How do I log just errors? What log levels are in play?

@bterlson - Is this for Autorest generated clients or for the data plane clients?

I would say anything using the DEBUG environment variable.

@bterlson I think this is resolved now?

@xirzec Agreed.


how do you check if there is open orders or not?

Hello. Im trying to cancel open orders if there is one, but the code fails. I check it with these two options, but sometimes the first one doesn't work and sometimes the second one doesn't work.
1- len(myBittrex.get_open_orders(currencyPair)["result"]) != 0
2- myBittrex.get_open_orders(currencyPair)["result"] != None
What is the proper way to check if there is open orders or not for a specific currency pair?

Maybe you don't have your API keys set sometimes or you have a flaky network connection or there is another error. You could do something like:
resp = api.get_open_orders(currencyPair)
if resp['success']:
    return len(resp['result'])

An error resp would look something like this:
Out[1]: {'message': 'APIKEY_INVALID', 'result': None, 'success': False}

In the case of an error, you don't know if you have orders or not. I might just let the TypeError go to the caller. Depends on what you're trying to do...


ensure redirect target path is correctly encoded

This fixes a bug that causes setHeader() to throw an unhandled TypeError if the path of the URL we are redirecting to contains unescaped characters which are invalid for a HTTP header.
Note this is only the url path affected. The querystring was already encoded correctly
Refs https://sentry.io/organizations/shields/issues/1867642393

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @chris48s!

  Generated by :no_entry_sign: dangerJS against 69c37b465ee691da52d66c05a2810878287b0c4b


Update repo please

Hi!
Endpoint is awesome to use.
But while building Dockerfile from scratch to customize it, I got many issues about pip conflicts and non-existing weights etc. Do you have a working version of Dockerfile?

Did you find a working Dockerfile?


Looks like I'm being forced to take over this issue too to get Crow working again...

Most likely, this is also the cause of #36.

I'm going to keep this issue open for now to track all bugs with the new implementation of the GC


More GYU0 performance improvements

I rewrote the algorithm to use a simple forward search. That alone has provided a massive performance boost over the previous implementation.
There is a very common case where the lookahead buffer starts with a sequence of repeated characters. I used that to my advantage to skip several iterations of the search, further improving the performance of the new algorithm. This should be about 5 times faster than before and hopefully usable with the full 0x400 lookbehind buffer.

Thanks. I cherry-picked the commit into this branch to unblock it.


feat: partial wasm32-wasi compilation

The goal of this PR is to set a foundation for supporting wasm32-wasi compilation of reth crates.
The currently supported crates are: reth-codecs, reth-consensus, reth-db, reth-db-api, reth-ethereum-forks, reth-evm, reth-evm-ethereum, reth-network-peers, reth-primitives, reth-primitives-traits, and reth-revm with no default features but std. Overtime, we can add support for more crates as needed.
Merging this PR succesfully requires having updated releases of revm and revm-inspector following the merge of this PR: https://github.com/bluealloy/revm/pull/1601 due to the usage of kzg-rs instead of c-kzg to get compilation to work successfully.

Superseded by https://github.com/paradigmxyz/reth/issues/10088


added funding.json for drips rewards

@haroune-mohammedi once this is merged, I can set the drips rewards through their portal


public-inbox: init at 5a4caaca8f

Motivation for this change
Adds the public-inbox application, a suite of tools for managing public archives of mailing lists.
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[X] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

I would put the public-inbox application with allits patches to a separate folder.
As examples you can see linode-cli, znapzend, awstats, spamassassin and many other applications written and perl (grep -R perlPackages.buildPerlPackage will help to find others).
CPAN modules are OK to put to perl-packages.nix, they will be tracked and updated by scripts.

There are a number of bugs fixed in master which are not in the "released versions", which are only ad-hoc anyway. I'm not able to use the released version due to the bugs, so I think that will apply to most users. Therefore we can package this snapshot of git, which also obsoletes most of the patches I was carrying. The only patches left are ones for sandbox issues.

@volth ping?

Rebased on master, ready for merge now @volth ? Or should I retarget to staging?

Was looking into packaging it. Could you rebase please ?

fwiw there was a release recently.
Patches and hacks and stuff in here should no longer be necessary because I submitted fixes upstream to public-inbox and Xapian while working on packaging this in parallel.
I also have a NixOS module written that I can PR. :)

@alyssais if you have a finished package for the new version I'm happy for that to be submitted instead of this PR. If your packaging isn't ready though I'm also happy to rebase and update the version in this PR.

@alyssais if you have a finished package for the new version I'm happy
for that to be submitted instead of this PR. If your packaging isn't
ready though I'm also happy to rebase and update the version in this
PR.

I'll submit my package.  I don't think the module is quite finished, but
the package should be.  I'll try to get to it later today.


Add CODEOWNERS

#773  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @alanvardy and the rest of your teammates on  Graphite


Getting Too many errors on clean install W10 21h1

Hello!
I'm trying to apply hardening on new clean install Windows, but I'm getting a lot of errors in Account Policies.
[!] ID 1.1.1, Length of password history maintained, None, Failed to set account policy
[!] ID 1.1.5, System Access\PasswordComplexity, 0, Failed to import security policy into temporary database
[!] ID 1.1.6, System Access\ClearTextPassword, 0, Failed to import security policy into temporary database
[!] ID 1.2.2, Account lockout threshold, Never, Failed to set account policy
[!] ID 2.2.2, SeNetworkLogonRight, BUILTIN\Remote Desktop Users;BUILTIN\Administrators, Failed to configure system user right assignment
[!] ID 2.2.4, SeIncreaseQuotaPrivilege, BUILTIN\Administrators;NT AUTHORITY\NETWORK SERVICE;NT AUTHORITY\LOCAL SERVICE, Failed to configure system user right assignment
[!] ID 2.2.4, SeIncreaseQuotaPrivilege, BUILTIN\Administrators;NT AUTHORITY\NETWORK SERVICE;NT AUTHORITY\LOCAL SERVICE, Failed to configure system user right assignment
.......
Also in Category Advanced Audit Policy Configuration.
[!] ID 17.1.1, Credential Validation, Success and Failure, Failed to set audit policy
Erro 0x00000522:
The client does not have the necessary privilege.
[!] ID 17.2.1, Application Group Management, Success and Failure, Failed to set audit policy
Erro 0x00000522:
The client does not have the necessary privilege.
[!] ID 17.2.2, Security Group Management, Success, Failed to set audit policy
Erro 0x00000522:
The client does not have the necessary privilege.
....
Funny that patched old installations are ok.

I have to look into that... Which finding list did you use (CIS?)?

My original was finding_list_cis_microsoft_windows_10_enterprise_1909_machine, then I tried a more recent finding_list_cis_microsoft_windows_10_enterprise_20h2_machine and finding_list_0x6d69636b_machine. I think MS sec patches changed permission on something.

Sadly, I cannot reproduce that. I downloaded a Windows 10 ISO from Microsoft, setup a new VM and installed all updates. I only got one error "[!] ID <IP_ADDRESS>, SeCreateSymbolicLinkPrivilege, NT VIRTUAL MACHINE\Virtual Machines;BUILTIN\Administrators, Failed to configure system user right assignment". I got this error because the NT VIRTUAL MACHINE\Virtual Machines group does not exist on the system.
Is your system language English or do you use another language?

Following your question, I tried on US Windows, and it worked. The ones
that are working are because they were initially US, and the PT-BR language
pack was installed.
Is there a way to have Hardening kitty compatible? This will probably be my
homework.
Thank You Michael.
On Wed, Jul 28, 2021 at 12:39 PM Michael Schneider @.***>
wrote:

Sadly, I cannot reproduce that. I downloaded a Windows 10 ISO from
Microsoft, setup a new VM and installed all updates. I only got one error "[!]
ID <IP_ADDRESS>, SeCreateSymbolicLinkPrivilege, NT VIRTUAL MACHINE\Virtual
Machines;BUILTIN\Administrators, Failed to configure system user right
assignment". I got this error because the NT VIRTUAL MACHINE\Virtual
Machines group does not exist on the system.
Is your system language English or do you use another language?
[image: image]
https://user-images.githubusercontent.com/13913706/127351681-886eb0a4-b4d7-45b1-91dc-e96c5ed7a56f.png
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/0x6d69636b/windows_hardening/issues/59#issuecomment-888412537,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AU523A26YTJYGW5IZKDRFG3T2AQCDANCNFSM5BDRVM7Q
.

There is always way :-) As a workaround you could replace the RecommendedValue values with your chosen language, Microsoft uses for user and group names the installed language and therefore HardeningKitty fails (if not English). So, when you replace Administrator with the correct name (and the same for all groups like Remote Desktop Users), then it should work. The same applies for the audit policy, you can replace Success and Failure with your language and it should work.
The proper (and longer) way would be to create a full translation of the finding lists in Portuguese, see the translation issue: https://github.com/0x6d69636b/windows_hardening/issues/50


Temporary fix of pyrun that failed to install setuptools-pt3

Summary

Fixes #401
The new release of install-pyrun.sh is creating an issue when building the KA-Lite OS X installer.
To fix this issue I use the older version of eGenix PyRun prior to the latest release.

Screenshots

I base the older versions of eGenix pyrun  here
The older versions of eGenix PyRun prior to the latest release is Version 2.2.0


S3 reads eventually fail with tensorflow's dataset API

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 16.04.3 LTS
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): v1.4.0-rc1-11-g130a514
Python version: Python 2.7.12
Bazel version (if compiling from source): N/A
GCC/Compiler version (if compiling from source): N/A
CUDA/cuDNN version: CPU
GPU model and memory: N/A
Exact command to reproduce: https://gist.github.com/thunterdb/d5f86c79457eea0f1021117ea4bce0ba

Describe the problem
The given script reads the MNIST data from S3 repeatedly from a public bucket, on an EC2 machine in the same region as the S3 bucket.
Running this script eventually leads to python crashing after a few hours, and the following error:
Finished step 31890, time: 05:45:28 12/07/17, result: 32
Finished step 31920, time: 05:46:01 12/07/17, result: 32
terminate called after throwing an instance of 'std::system_error'
  what():  Resource temporarily unavailable
Aborted

Source code / logs
https://gist.github.com/thunterdb/d5f86c79457eea0f1021117ea4bce0ba
It is hard to say what is happening without debugging symbols. From the very generic error, I suspect this is an issue with the S3 SDK. As a workaround, it would be nice for tensorflow's S3 plugin to retry or be more resilient to networking issues.
It is currently an annoying issue when running large distributed training jobs, because they crash after a few hours of reading data. Is anyone having a similar experience with S3?

cc @smurching

I suspect the problem is this line:
                  res = sess.run(iterator.get_next())

iterator.get_next() creates a new op each time it's called, and this op happens to be an especially heavyweight one that owns a thread, so calling it in a loop will eventually cause a resource leak. The fix is  simple, and we'll shortly start printing a warning message to advise users to do it when we detect this situation:
      # ...
      next_element = iterator.get_next()
      with tf.Session() as sess:
            sess.run(iterator.initializer)
            for i in xrange(num_steps):
                  res = sess.run(next_element)
                  # ...

@mrry thanks for the response, I am going to give it a try and get back to you.

By the way, one suggestion I would have for the documentation of get_next is emphasize that calling the resulting op repeatedly is going to return sequential batches of data. From the documentation at [1] and from most iterator interfaces (java, c++), the convention assumes that you would have to call get_next to fetch a new batch.
[1] https://www.tensorflow.org/versions/master/api_docs/python/tf/data/Iterator#get_next

@mrry I updated the gist following your suggestion. It failed after ~ 10M reads on S3 (a few hours) with the following stack trace.
Has anyone else encountered this issue before? Our current workaround is to copy the data locally to the machines' drives before starting the training, but this adds some complexity.
  File "/databricks/python2/local/lib/python2.7/site-packages/IPython/terminal/interactiveshell.py", line 443, in mainloop
    self.interact(display_banner=display_banner)
  File "/databricks/python2/local/lib/python2.7/site-packages/IPython/terminal/interactiveshell.py", line 567, in interact
    self.run_cell(source_raw, store_history=True)
  File "/databricks/python2/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2741, in run_cell
    interactivity=interactivity, compiler=compiler)
  File "/databricks/python2/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2833, in run_ast_nodes
    if self.run_code(code):
  File "/databricks/python2/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2883, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-8-201cc217ea8a>", line 1, in <module>
    test_s3_read_singlemachine(worker_index=0, num_workers=2, data_dir=data_dir, num_readers=2, shuffle_buffer_size=32, batch_size=32, num_prefetch_batches=1, num_steps=int(1e7))
  File "<ipython-input-7-58d40f4ce8d4>", line 15, in test_s3_read_singlemachine
    it_op = iterator.get_next()
  File "/databricks/python2/local/lib/python2.7/site-packages/tensorflow/python/data/ops/iterator_ops.py", line 259, in get_next
    name=name))
  File "/databricks/python2/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_dataset_ops.py", line 706, in iterator_get_next
    output_shapes=output_shapes, name=name)
  File "/databricks/python2/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "/databricks/python2/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2956, in create_op
    op_def=op_def)
  File "/databricks/python2/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1470, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

DataLossError (see above for traceback): truncated record at 785862
         [[Node: IteratorGetNext = IteratorGetNext[output_shapes=[[?]], output_types=[DT_STRING], _device="/job:localhost/replica:0/task:0/device:CPU:0"](Iterator)]]

I believe the S3 filesystem was contributed by @yongtang... hopefully he will have some suggestions!

I tried the script and it is still running
Finished step 1764750, time: 15:23:37 12/11/17, result: 32
Finished step 1764780, time: 15:23:38 12/11/17, result: 32
Finished step 1764810, time: 15:23:39 12/11/17, result: 32
Finished step 1764840, time: 15:23:40 12/11/17, result: 32
Finished step 1764870, time: 15:23:42 12/11/17, result: 32
Finished step 1764900, time: 15:23:43 12/11/17, result: 32
Finished step 1764930, time: 15:23:44 12/11/17, result: 32
Finished step 1764960, time: 15:23:46 12/11/17, result: 32
Finished step 1764990, time: 15:23:46 12/11/17, result: 32

Probably it is not long enough. Will see if I could reproduce it.

Note that S3 can fail every so often. I am not sure if we have retry logic.

My test is still running and I haven't been able to reproduce yet:
Finished step 3888180, time: 15:52:12 12/12/17, result: 32
Finished step 3888210, time: 15:52:14 12/12/17, result: 32
Finished step 3888240, time: 15:52:14 12/12/17, result: 32

I think adding retry logic to S3 support would be great.
I can't commit to have it done in the short term but will give it a try at some point once I have some spare time.
In the meantime, if anyone is interested in working on retry logic for S3 that would be excellent as well.

Something is slightly fishy here - the AWS SDK has retry logic baked in to it which Aws::S3::S3Client should pick up.
Aws::Client::ClientConfiguration has a default value for retryStrategy which provides a max retry count of 10 and we don't appear to doing anything that would change that default value in s3_filesystem.cc

By the way my test on the script has been running for more than a day and it is still OK:
Finished step 4701000, time: 01:16:31 12/13/17, result: 32
Finished step 4701030, time: 01:16:33 12/13/17, result: 32
Finished step 4701060, time: 01:16:33 12/13/17, result: 32

Closing this out is it looks as though we have not been able to reproduce it on our end.

Interesting. I will try to reproduce it with more information, and reopen the ticket if something occurs again.

thunterdb@, sorry for being a blast from the past. Did you not see this issue later? I believe I'm seeing something similar on my end. I am curious if there was anything you had to do to get around it.

@yongtang We're running into the same issue. Is there a workaround or are we missing a config param somewhere?


Set pushState as default for history. Fixes #12

Changed to {pushState: true} by default
Removed all redundant {pushState: true} instances and added {pushState: false} where necessary
Created restartHistoryWithoutPushState function to manage setting up test env. more easily
Updated tests (there were plenty of changes – please verify)
Unified code styling in tests
Updated readme
All tests pass

+1. Just got bitten by this. :+1:

Rebased once again. @ampersand-core

Rebased once again. @AmpersandJS/core-team

Accept PR, decide if its a breaking change, bump version accordingly.
The question arose in Ampersand Gitter Chat: Why aren't prs like this merged into master sooner? :)

I guess it's just lack of time + double verification process which we follow. @AmpersandJS/core-team

+1 let's ship this as breaking change

Will publish as v2.0.0 once I get npm authorization

@wraithgar done

@wraithgar added, that is

OK this is published as v2.0.0

Thanks guys :+1:


Added OPA files, configurations, images and code customization

Added OPA files in demo and test-build environment: opa/policy.rego and opa/data.json
Added OPA vars in common.env: F7T_OPA_USE, _OPA_URL and _POLICY_PATH
Added containers for OPA in demo and test-build
Added function check_user_auth in certificator.py and in cscs_api_common.py
Added 2 test for OPA in unit/test_unit_certificator.py
Removed some lines and comments

Thanks for the feedback @fcndl, I have changed OPA's error handling.
On the other hand service-account-firecrest-sample is not an user and I have already talked with @aledabin to fix that on the service account in demo.ini pytest environment.