Do not redo healthchecks for endpoints with different priorities

Title: Do not redo healthchecks for endpoints with different priorities
Description:

Describe the desired behavior, what scenario it enables and how it
would be used.

we use eds to deliver endpoints that represent different priorities. Sometimes the priorities would switch for an endpoint as we change which set of IPs should be prioritized in load balancing. During this action I've noticed that when an endpoint changes priority it becomes unhealthy.
# initially
myapp_cluster::<IP_ADDRESS>:443::health_flags::healthy
myapp_cluster::<IP_ADDRESS>:443::priority::0

# upon update of priorities
myapp_cluster::<IP_ADDRESS>:443::health_flags::/failed_active_hc
myapp_cluster::<IP_ADDRESS>:443::priority::0
myapp_cluster::<IP_ADDRESS>:443::health_flags::/failed_active_hc
myapp_cluster::<IP_ADDRESS>:443::priority::1

# eventually
myapp_cluster::<IP_ADDRESS>:443::health_flags::healthy
myapp_cluster::<IP_ADDRESS>:443::priority::0
myapp_cluster::<IP_ADDRESS>:443::health_flags::healthy
myapp_cluster::<IP_ADDRESS>:443::priority::1

Since both IPs in the cluster becomes unhealthy this creates a scenario where if I do not use panic routing, clients will see a no_healthy_upstream 503 error. This seems avoidable since in this example the ip <IP_ADDRESS> was already being healthchecked prior to the update.
Is it possible to carry over <IP_ADDRESS>'s healthcheck state even though its priority has changed?
related issues might be: https://github.com/envoyproxy/envoy/issues/4280
envoy version: 1.31.3

To the best of my knowledge there is a test that validates this, so it should be working. It was added as part of #14483, so unless something changed it should work for your Envoy version.
I'm not sure if there's any other config knob that overrides the healthcheck status in this case.
Further investigation is probably needed, and I suggest starting with an integration test that reproduces the bug.

Thank you for the response and the links to the code. I don't see anything obvious that would cause this so I will work on a repro.

@adisuissa @KBaichoo
circling back to this
I am unfamiliar with how to write unit tests or functional tests so as I'm working that out, I thought I would just use the envoy you can install via brew to see if I can build a simple repro case.
envoy config: https://gist.github.com/shulin-sq/60d723009689b8f31400f87fff890393
control plane: https://github.com/shulin-sq/java-control-plane/commit/40207281d13cfc06af9ff5dfc325817c3b61bbfb running the test control plane implementation with some modifications to flip the priority between 0 and 1 io.envoyproxy.controlplane.server.TestMain
I have a video of the repro but it's too large to upload but in the screenshot you can see that the healthcheck failed even  though in the control plane we're only changing the priority and not the endpoint address.

I also went back -1yr of envoy builds that I have handy as old as v1.25.4 and was able to reproduce the bug in our staging environment. unfortunately I was unable to go back to when the fix was first introduced so I cannot say if it was ever behaving in the way that I expected.

digging more into this it seems that all_hosts here is empty https://github.com/envoyproxy/envoy/blob/ee567154320b11f54f2ad0453e9d620d910df4f4/source/common/upstream/upstream_impl.cc#L2272 from my functional test that I shared above which means that the previous endpoint is never found.
I'm wondering if this is a bug or if I've set up the test incorrectly to make it seem like a new cluster is added instead of just changing the endpoint
[2024-08-09 22:12:30.241][82232][info][upstream] [source/common/upstream/cds_api_helper.cc:32] cds: add 1 cluster(s), remove 1 cluster(s)
[2024-08-09 22:12:30.242][82232][debug][upstream] [source/common/upstream/cds_api_helper.cc:54] cds: add/update cluster 'httpbin' skipped
[2024-08-09 22:12:30.242][82232][info][upstream] [source/common/upstream/cds_api_helper.cc:71] cds: added/updated 0 cluster(s), skipped 1 unmodified cluster(s)
[2024-08-09 22:12:30.243][82232][debug][upstream] [source/common/upstream/upstream_impl.cc:469] transport socket match, socket default selected for host with address <IP_ADDRESS>:80
[2024-08-09 22:12:30.244][82232][debug][upstream] [source/extensions/clusters/eds/eds.cc:428] EDS hosts or locality weights changed for cluster: httpbin current hosts 0 priority 0
[2024-08-09 22:12:30.244][82327][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82329][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82328][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82338][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82339][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82337][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82232][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82330][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82340][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82331][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82334][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 1 removed 0
[2024-08-09 22:12:30.244][82232][debug][upstream] [source/extensions/clusters/eds/eds.cc:428] EDS hosts or locality weights changed for cluster: httpbin current hosts 1 priority 1
[2024-08-09 22:12:30.244][82327][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.244][82329][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.244][82328][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.244][82330][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.244][82331][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82337][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82334][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82232][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82338][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82340][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
[2024-08-09 22:12:30.245][82339][debug][upstream] [source/common/upstream/cluster_manager_impl.cc:1550] membership update for TLS cluster httpbin added 0 removed 1
{"health_checker_type":"HTTP","host":{"socket_address":{"protocol":"TCP","address":"<IP_ADDRESS>","port_value":80,"resolver_name":"","ipv4_compat":false}},"cluster_name":"httpbin","add_healthy_event":{"first_check":true},"timestamp":"2024-08-09T22:12:25.243Z","locality":{"region":"","zone":"","sub_zone":""}}
{"health_checker_type":"HTTP","host":{"socket_address":{"protocol":"TCP","address":"<IP_ADDRESS>","port_value":80,"resolver_name":"","ipv4_compat":false}},"cluster_name":"httpbin","add_healthy_event":{"first_check":true},"timestamp":"2024-08-09T22:12:28.487Z","locality":{"region":"","zone":"","sub_zone":""}}

Ok while debugging the code I was able to confirm that my repro is correct. The cluster churn is because of the xds_cluster that I added as an example which keeps trying to remove itself from the config
So far what I've seen is that it seems the issue is due to https://github.com/envoyproxy/envoy/blob/5b80c5d9a9e63bf274963862f43ab5b9b1e57f50/source/common/upstream/upstream_impl.cc#L975-L996

because all_hosts is populated by the crossPriorityHostMap https://github.com/envoyproxy/envoy/blob/5b80c5d9a9e63bf274963862f43ab5b9b1e57f50/source/common/upstream/upstream_impl.cc#L2269-L2272
crossPriorityHostMap does not have priority metadata in its internal storage. So say we are flipping the priority of <IP_ADDRESS>, it is constantly being added and removed from crossPriorityHostMap
Before I attempt to introduce a PR I wonder if anyone more familiar with this code would recommend how we introduce a fix. I think in languages I'm more familiar with what I would do is keep crossPriorityHostMap as a mapping of priorities to host addresses, and when fetching it, return a set of addresses.

Alright I think I have an idea on how to fix this and will submit a PR soon.


[VL] Fix some compilation errors with Clang 12

This would not mean adding support for clang-12, just to solve some issues that clang-12 has complained about.

One of the way to switch to clang-12 on ubuntu 20
apt-get install clang-12
update-alternatives --install /usr/bin/cc cc /usr/bin/clang-12 60
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-12 60

Why not use clang-15?

Why not use clang-15?

@zhanglistar ubuntu 20.04 provides up to llvm 12 by apt, that's why I am using 12 for this PR.
Besides the PR is just to fix some errors from clang-12, but not to officially support clang-12. I assume the fixes should also benefit when using a higher version although I don't intend to test against them yet.

@zuochunwei @rui-mo


Report an error for unknown rule

If the configuration contains an unknown rule: Markdownlint must report that the rule isn't supported.
For example, ESLint reports the error: Definition for rule 'no-konsole' was not found.
7 years ago, I misspelled the commonds-show-output rule. And I've just realized it, thanks to a spellchecker that reported that the word commonds doesn't exist.

This has come up before, though I can’t find the discussion. Basically, because custom rules (like the one you are using) exist, there is no definitive list of valid rules they could appear in configuration. There IS a schema for configuration files and I have instructions for how to use it generally as well as how to identify non-core rules here: https://github.com/DavidAnson/markdownlint/blob/main/schema/ValidatingConfiguration.md
But I do not think it is appropriate to throw an error just because a configured rule does not happen to be in use at the moment. That same configuration file could be used across multiple runs of the tool and some of those runs may include or exclude various rules. It’s not wrong to configure a rule that isn’t in use, though I understand why you would have liked to be alerted in this scenario.
I’m open to suggestions, but think that validating with a schema as above is a reasonable approach.

You could provide two schemas: the current markdownlint-config-schema.json and the new markdownlint-config-strict-schema.json which is the same schema, but with “additionalProperties”: false. And export a new type ConfigurationStrict which is type Configuration without [k: string]: unknown.
With this solution, I can detect my problem with the JSDoc /** @type {import("markdownlint").ConfigurationStrict} */ and TypeScript.


ACM-14201 AWS Clusters autoscaling

This PR is for ACM-14201
Fix enforces maxReplicas should be greater than or equal to minReplicas

/lgtm


Scroll become slow if I created SliverList with difference height of items

I found scroll speed become slow if I create multi row with difference height.
Any suggest to improve this?

Duplicate of #32448

I think this is difference issue with #32448
After debug I found the issue is
https://github.com/flutter/flutter/blob/9c77e8e8a05a62368dbfeb05236ec2cf84d5c291/packages/flutter/lib/src/rendering/sliver_list.dart#L259
Everything work perfect for me if I try to replace above logic with constant.

Are you seeing this on iOS? Do you mind sharing your flutter doctor -v?
Could you elaborate a bit more on why you think this is a different issue? If I remember correctly if you override the estimateMaxScrollOffset logic so that the viewport's dimension does not change when you scroll, that would prevent #32448 from happening as well.

Flutter doctor - v
[✓] Flutter (Channel stable, v1.17.5, on Mac OS X 10.14.6 18G95, locale en-VN)
• Flutter version 1.17.5 at /Users/flutter
• Framework revision 8af6b2f038 (11 days ago), 2020-06-30 12:53:55 -0700
• Engine revision ee76268252
• Dart version 2.8.4
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/nmduong/Library/Android/sdk
• Platform android-29, build-tools 29.0.2
• Java binary at: /Applications/Android
Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_212-release-1586-b4-5784211)
! Some Android licenses not accepted.  To resolve this, run: flutter doctor
--android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.3, Build version 11C29
• CocoaPods version 1.9.1
[✓] Android Studio (version 3.6)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 45.0.1
• Dart plugin version 192.7761
• Java version OpenJDK Runtime Environment (build
1.8.0_212-release-1586-b4-5784211)
[✓] VS Code (version 1.47.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.12.2
[✓] Connected device (1 available)
• Duong's iphone • 6f68995eebb2b97277d19b390d6727f6ebd366f8 • ios • iOS 13.3
I see this issue happen on both iOS and android.
I also include code of my temporary solution.
I create new SliverList with closure to calculate maxScrollOffset by myself.
I found scroll work perfect for me.

class SliverList2 extends SliverMultiBoxAdaptorWidget {
  final double Function() maxScrollOffset;
  /// Creates a sliver that places box children in a linear array.
  SliverList2( { this.maxScrollOffset,
    Key key,
    @required SliverChildDelegate delegate,
  }) : super(key: key, delegate: delegate);

  @override
  RenderSliverList2 createRenderObject(BuildContext context) {
    final SliverMultiBoxAdaptorElement element = context as SliverMultiBoxAdaptorElement;
    return RenderSliverList2(childManager: element, maxScrollOffset: this.maxScrollOffset);
  }
}

class RenderSliverList2 extends RenderSliverMultiBoxAdaptor {
  final double Function() maxScrollOffset;
  /// Creates a sliver that places multiple box children in a linear array along
  /// the main axis.
  ///
  /// The [childManager] argument must not be null.
  RenderSliverList2({
    @required RenderSliverBoxChildManager childManager,
    this.maxScrollOffset
  }) : super(childManager: childManager);

  @override
  void performLayout() {
    final SliverConstraints constraints = this.constraints;
    childManager.didStartLayout();
    childManager.setDidUnderflow(false);

    final double scrollOffset = constraints.scrollOffset + constraints.cacheOrigin;
    assert(scrollOffset >= 0.0);
    final double remainingExtent = constraints.remainingCacheExtent;
    assert(remainingExtent >= 0.0);
    final double targetEndScrollOffset = scrollOffset + remainingExtent;
    final BoxConstraints childConstraints = constraints.asBoxConstraints();
    int leadingGarbage = 0;
    int trailingGarbage = 0;
    bool reachedEnd = false;

    // This algorithm in principle is straight-forward: find the first child
    // that overlaps the given scrollOffset, creating more children at the top
    // of the list if necessary, then walk down the list updating and laying out
    // each child and adding more at the end if necessary until we have enough
    // children to cover the entire viewport.
    //
    // It is complicated by one minor issue, which is that any time you update
    // or create a child, it's possible that the some of the children that
    // haven't yet been laid out will be removed, leaving the list in an
    // inconsistent state, and requiring that missing nodes be recreated.
    //
    // To keep this mess tractable, this algorithm starts from what is currently
    // the first child, if any, and then walks up and/or down from there, so
    // that the nodes that might get removed are always at the edges of what has
    // already been laid out.

    // Make sure we have at least one child to start from.
    if (firstChild == null) {
      if (!addInitialChild()) {
        // There are no children.
        geometry = SliverGeometry.zero;
        childManager.didFinishLayout();
        return;
      }
    }

    // We have at least one child.

    // These variables track the range of children that we have laid out. Within
    // this range, the children have consecutive indices. Outside this range,
    // it's possible for a child to get removed without notice.
    RenderBox leadingChildWithLayout, trailingChildWithLayout;

    RenderBox earliestUsefulChild = firstChild;

    // A firstChild with null layout offset is likely a result of children
    // reordering.
    //
    // We rely on firstChild to have accurate layout offset. In the case of null
    // layout offset, we have to find the first child that has valid layout
    // offset.
    if (childScrollOffset(firstChild) == null) {
      int leadingChildrenWithoutLayoutOffset = 0;
      while (childScrollOffset(earliestUsefulChild) == null) {
        earliestUsefulChild = childAfter(firstChild);
        leadingChildrenWithoutLayoutOffset += 1;
      }
      // We should be able to destroy children with null layout offset safely,
      // because they are likely outside of viewport
      collectGarbage(leadingChildrenWithoutLayoutOffset, 0);
      assert(firstChild != null);
    }

    // Find the last child that is at or before the scrollOffset.
    earliestUsefulChild = firstChild;
    for (double earliestScrollOffset = childScrollOffset(earliestUsefulChild);
    earliestScrollOffset > scrollOffset;
    earliestScrollOffset = childScrollOffset(earliestUsefulChild)) {
      // We have to add children before the earliestUsefulChild.
      earliestUsefulChild = insertAndLayoutLeadingChild(childConstraints, parentUsesSize: true);

      if (earliestUsefulChild == null) {
        final SliverMultiBoxAdaptorParentData childParentData = firstChild.parentData as SliverMultiBoxAdaptorParentData;
        childParentData.layoutOffset = 0.0;

        if (scrollOffset == 0.0) {
          // insertAndLayoutLeadingChild only lays out the children before
          // firstChild. In this case, nothing has been laid out. We have
          // to lay out firstChild manually.
          firstChild.layout(childConstraints, parentUsesSize: true);
          earliestUsefulChild = firstChild;
          leadingChildWithLayout = earliestUsefulChild;
          trailingChildWithLayout ??= earliestUsefulChild;
          break;
        } else {
          // We ran out of children before reaching the scroll offset.
          // We must inform our parent that this sliver cannot fulfill
          // its contract and that we need a scroll offset correction.
          geometry = SliverGeometry(
            scrollOffsetCorrection: -scrollOffset,
          );
          return;
        }
      }

      final double firstChildScrollOffset = earliestScrollOffset - paintExtentOf(firstChild);
      // firstChildScrollOffset may contain double precision error
      if (firstChildScrollOffset < -precisionErrorTolerance) {
        // The first child doesn't fit within the viewport (underflow) and
        // there may be additional children above it. Find the real first child
        // and then correct the scroll position so that there's room for all and
        // so that the trailing edge of the original firstChild appears where it
        // was before the scroll offset correction.
        // TODO(hansmuller): do this work incrementally, instead of all at once,
        // i.e. find a way to avoid visiting ALL of the children whose offset
        // is < 0 before returning for the scroll correction.
        double correction = 0.0;
        while (earliestUsefulChild != null) {
          assert(firstChild == earliestUsefulChild);
          correction += paintExtentOf(firstChild);
          earliestUsefulChild = insertAndLayoutLeadingChild(childConstraints, parentUsesSize: true);
        }
        earliestUsefulChild = firstChild;
        if ((correction - earliestScrollOffset).abs() > precisionErrorTolerance) {
          geometry = SliverGeometry(
            scrollOffsetCorrection: correction - earliestScrollOffset,
          );
          final SliverMultiBoxAdaptorParentData childParentData = firstChild.parentData as SliverMultiBoxAdaptorParentData;
          childParentData.layoutOffset = 0.0;
          return;
        }
      }

      final SliverMultiBoxAdaptorParentData childParentData = earliestUsefulChild.parentData as SliverMultiBoxAdaptorParentData;
      childParentData.layoutOffset = firstChildScrollOffset;
      assert(earliestUsefulChild == firstChild);
      leadingChildWithLayout = earliestUsefulChild;
      trailingChildWithLayout ??= earliestUsefulChild;
    }

    // At this point, earliestUsefulChild is the first child, and is a child
    // whose scrollOffset is at or before the scrollOffset, and
    // leadingChildWithLayout and trailingChildWithLayout are either null or
    // cover a range of render boxes that we have laid out with the first being
    // the same as earliestUsefulChild and the last being either at or after the
    // scroll offset.

    assert(earliestUsefulChild == firstChild);
    assert(childScrollOffset(earliestUsefulChild) <= scrollOffset);

    // Make sure we've laid out at least one child.
    if (leadingChildWithLayout == null) {
      earliestUsefulChild.layout(childConstraints, parentUsesSize: true);
      leadingChildWithLayout = earliestUsefulChild;
      trailingChildWithLayout = earliestUsefulChild;
    }

    // Here, earliestUsefulChild is still the first child, it's got a
    // scrollOffset that is at or before our actual scrollOffset, and it has
    // been laid out, and is in fact our leadingChildWithLayout. It's possible
    // that some children beyond that one have also been laid out.

    bool inLayoutRange = true;
    RenderBox child = earliestUsefulChild;
    int index = indexOf(child);
    double endScrollOffset = childScrollOffset(child) + paintExtentOf(child);
    bool advance() { // returns true if we advanced, false if we have no more children
      // This function is used in two different places below, to avoid code duplication.
      assert(child != null);
      if (child == trailingChildWithLayout)
        inLayoutRange = false;
      child = childAfter(child);
      if (child == null)
        inLayoutRange = false;
      index += 1;
      if (!inLayoutRange) {
        if (child == null || indexOf(child) != index) {
          // We are missing a child. Insert it (and lay it out) if possible.
          child = insertAndLayoutChild(childConstraints,
            after: trailingChildWithLayout,
            parentUsesSize: true,
          );
          if (child == null) {
            // We have run out of children.
            return false;
          }
        } else {
          // Lay out the child.
          child.layout(childConstraints, parentUsesSize: true);
        }
        trailingChildWithLayout = child;
      }
      assert(child != null);
      final SliverMultiBoxAdaptorParentData childParentData = child.parentData as SliverMultiBoxAdaptorParentData;
      childParentData.layoutOffset = endScrollOffset;
      assert(childParentData.index == index);
      endScrollOffset = childScrollOffset(child) + paintExtentOf(child);
      return true;
    }

    // Find the first child that ends after the scroll offset.
    while (endScrollOffset < scrollOffset) {
      leadingGarbage += 1;
      if (!advance()) {
        assert(leadingGarbage == childCount);
        assert(child == null);
        // we want to make sure we keep the last child around so we know the end scroll offset
        collectGarbage(leadingGarbage - 1, 0);
        assert(firstChild == lastChild);
        final double extent = childScrollOffset(lastChild) + paintExtentOf(lastChild);
        geometry = SliverGeometry(
          scrollExtent: extent,
          paintExtent: 0.0,
          maxPaintExtent: extent,
        );
        return;
      }
    }

    // Now find the first child that ends after our end.
    while (endScrollOffset < targetEndScrollOffset) {
      if (!advance()) {
        reachedEnd = true;
        break;
      }
    }

    // Finally count up all the remaining children and label them as garbage.
    if (child != null) {
      child = childAfter(child);
      while (child != null) {
        trailingGarbage += 1;
        child = childAfter(child);
      }
    }

    // At this point everything should be good to go, we just have to clean up
    // the garbage and report the geometry.

    collectGarbage(leadingGarbage, trailingGarbage);

    assert(debugAssertChildListIsNonEmptyAndContiguous());
    double estimatedMaxScrollOffset;
    if (reachedEnd) {
      estimatedMaxScrollOffset = endScrollOffset;
    } else {
      estimatedMaxScrollOffset = this.maxScrollOffset();
    }
    final double paintExtent = calculatePaintOffset(
      constraints,
      from: childScrollOffset(firstChild),
      to: endScrollOffset,
    );
    final double cacheExtent = calculateCacheOffset(
      constraints,
      from: childScrollOffset(firstChild),
      to: endScrollOffset,
    );
    final double targetEndScrollOffsetForPaint = constraints.scrollOffset + constraints.remainingPaintExtent;
    geometry = SliverGeometry(
      scrollExtent: estimatedMaxScrollOffset,
      paintExtent: paintExtent,
      cacheExtent: cacheExtent,
      maxPaintExtent: estimatedMaxScrollOffset,
      // Conservative to avoid flickering away the clip during scroll.
      hasVisualOverflow: endScrollOffset > targetEndScrollOffsetForPaint || constraints.scrollOffset > 0.0,
    );

    // We may have started the layout while scrolled to the end, which would not
    // expose a new child.
    if (estimatedMaxScrollOffset == endScrollOffset)
      childManager.setDidUnderflow(true);
    childManager.didFinishLayout();
  }
}

I see this issue happen on both iOS and android.

I tested on android (using master), similar fling gestures yielded roughly the same scroll distance on lists with fixed height items and varying height items. I'll keepp this issue closed. Let's see if fixing #32448 also fixes this issue.


Books amend5000

What does this PR do?
Add resource(s) | Remove resource(s) | Add info | Improve repo
For resources
Description
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Read our contributing guidelines.
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction).
[x] Used an informative name for this pull request.

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

Please remove extra line 229.

.. here is the recommended solution

OK, I'm a bit new to this i just did a search on how to remove an extra
line but it does not make a lot of sense, is there a way to do this fast?
On Tue, Oct 24, 2023 at 4:49 AM domalasherpa @.***>
wrote:

Please remove extra line 229.
—
Reply to this email directly, view it on GitHub
https://github.com/EbookFoundation/free-programming-books/pull/10706#issuecomment-1776788272,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOKVD2D5KWIWM32Q56VHHA3YA56KDAVCNFSM6AAAAAA6NAL76GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZWG44DQMRXGI
.
You are receiving this because you authored the thread.Message ID:
@.***>

OK, I'm a bit new to this i just did a search on how to remove an extra line but it does not make a lot of sense, is there a way to do this fast?
…
On Tue, Oct 24, 2023 at 4:49 AM domalasherpa @.> wrote: Please remove extra line 229. — Reply to this email directly, view it on GitHub <#10706 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOKVD2D5KWIWM32Q56VHHA3YA56KDAVCNFSM6AAAAAA6NAL76GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZWG44DQMRXGI . You are receiving this because you authored the thread.Message ID: @.>

There is seems to be other issue of alphabetical ordering. try swapping content in line 224 and 225.
P.S: you can simply hit backspace to remove an extra line..


一个样式上的小问题，分享层被遮住了

问题反馈
在您提交问题前, 请检查以下项目:

[x] 您在报告一个 bug 或者提交一个功能请求. 如果您需要一般性的帮助, 请直接和我们联系或者在项目首页下留言.
[ ] 如果您在报告一个 bug 请确定它可以在最新的发行版或 master 分支下重现. 同时, 请详细说明重现问题的步骤 (如果有屏幕截图的话就更好了).
[ ] 您的问题在与现有问题并不重复. 如果已有一个相同话题的问题, 请直接在其下留言.
[ ] 您已填写了系统环境信息.

环境信息
请填写以下信息:

win10 x64:
Chrome 57.0.2987.110 (64-bit):
v<IP_ADDRESS>:

您可以在扩展选项页中查看.
重现步骤/尝试的解决方案
层的z-index改一下
Feedback
Before submitting your issue, please check to make sure of the following:

[ ] You are reporting a bug or making a feature request. If you are looking for general support, please contact us directly or comment at our project homepage.
[ ] Your issue is not a duplicate of an existing issue. If there is an open issue of the same topic, please just comment under it.
[ ] If you are reporting a bug, please make sure it can be reproduced in the latest release or master branch. Also, please specify detailed procedures to reproduce the bug (screenshots would be greatly appreciated).
[ ] You have filled out your system environment info.

Environment Info
Please fill out the following:

Operating System (Windows/macOS/Linux):
Chrome Version (You can check this under [Menu/Help/About]):
Extension Version:

You can see this on extension options page. You can also put the latest commit ID here if you are reporting about the master branch.
Steps to Reproduce / Attempted solution
Please be specific here, thanks :)

你好，请问是直播间的共享弹出窗口吗？并没有问题的样子啊


run_line_magic with local scope

I have a magic function that needs the local scope, it can be replicated like this:
from IPython.core.magic import register_line_magic, needs_local_scope

@register_line_magic
@needs_local_scope
def printvarplusone(line, local_ns):
    x = local_ns.get(line)
    print(x + 1)

But instead of getting a dict with all the values where I can get the desired variable's value, I obtain a dict with a DataflowTracer object
I'm no expert, but I think this fixme might be relevant
https://github.com/ipyflow/ipyflow/blob/f9e1b1c50100228de44613bd07b2755461919dfc/core/ipyflow/line_magics.py#L174-L176

Thanks for opening an issue on this! I just pushed a fix -- you should be able to pick it up with
pip install --upgrade ipyflow

The issue wasn't around rewriting the __name__ attribute of the function, but around setting _stack_depth correctly for InteractiveShell.run_line_magic (so that it looks at the correct stack depth for things like the locals).
Note that code in line magics doesn't get instrumented or traced, so you've identified an example wherein ipyflow won't actually correctly detect the usage of x, unfortunately. There are reasons we won't to disable instrumentation for line magics but just wanted to make sure you were aware of this caveat :)


remove snapshot clusterrole

@raunakkumar can you update helm ones as well?

Helm already has check for 1.17. Let me know if anything is missed there


Nicer Debug for enums

Hello
I understand why enums are encoded as numbers in the resulting structure. Still, having the Debug trait output the number is a bit uncomfortable, eg:
Message { stuff: Some(3) }

Would it be possible to provide a custom Debug implementation that would provide the enum variant instead of the number if there's one available and fall back to the number if the name is unknown?

This is a great idea.  I'm not going to have time to work on it immediately, but let's keep this issue open to track.

I started playing around with it. It turns out a bit harder than I expected (without any insult, the code in the code generator is a bit spaghetti style ‒ and my experiments aren't helping either). Maybe I'm going about it in a wrong way (I'm trying to add it into the prost-build crate). And it has another disadvantage ‒ it pollutes the generated code and it is no longer as nice.
I was wondering about an alternative. Instead of having an i32 field and a companion enum, what about having a real enum and adding an Unknown(i32) variant to it (with some fallback strategy on collision)? That would be a breaking change, but on the other hand, the resulting code would be more rusty ‒ it would prevent confusing one enum with other and it would be more convenient to use.
Or at least adding a newtype EnumerationValue(i32) for each enumeration?

I started playing around with it. It turns out a bit harder than I expected (without any insult, the code in the code generator is a bit spaghetti style ‒ and my experiments aren't helping either). Maybe I'm going about it in a wrong way (I'm trying to add it into the prost-build crate). And it has another disadvantage ‒ it pollutes the generated code and it is no longer as nice.

Yeah, I think the way this should be done is to generate the Debug impl during the derive step.  This is, for example, how the custom Default impl for enums works: https://github.com/danburkert/prost/blob/master/prost-derive/src/lib.rs?utf8=✓#L248-L252.

I was wondering about an alternative. Instead of having an i32 field and a companion enum, what about having a real enum and adding an Unknown(i32) variant to it (with some fallback strategy on collision)? That would be a breaking change, but on the other hand, the resulting code would be more rusty ‒ it would prevent confusing one enum with other and it would be more convenient to use.

I considered this, but in the end I think it's better to do the current style, and have getter/setter methods that work with the enum type.  For example, here's a [message type|https://docs.rs/prost-types/0.2.3/prost_types/struct.FieldDescriptorProto.html] which includes a few enum fields, notice how they have getters/setters like fn label(&self) -> Label  and fn set_label(&mut self, value: Label) which work directly on the more ergonomic enum types instead of i32.

I already started another experiment in the derive part. It seems a better match, but I still have to hijack the Debug of the whole message.
I must admit I haven't known about the getters/setters (maybe I haven't read the documentation thoroughly enough, or maybe the generated methods are just well hidden). It actually makes it much better to use than I've expected. I still do wonder if there's a better solution for the problem ‒ another that crossed my mind is Result<TheEnum, i32>.

I think this can be closed now.


Markdown preview no longer shows images with root relative path after update to 1.40.0

Markdown preview of images using this syntax ![](/assets/2019-10-24_07_56_26.png) no longer works after updating to 1.40.0.
/assets/ is a folder in the root of the folder open in vscode.

VSCode Version:  1.40.0, 1.40.1
OS Version:  Windows 10 1903

Steps to Reproduce:

git clone https://github.com/NathanielACollier/issues_vscode_1_40_0_markdownPreviewRootRelativeImg
cd issues_vscode_1_40_0_markdownPreviewRootRelativeImg
code .
Image doesn't display in readme.md

Does this issue occur when all extensions are disabled?: Yes/No
Yes
11/14/2019 11:15 AM - Reformatted

Works for me. Please fill out the issue template and provide steps to reproduce this
/needsMoreInfo

I'll work on the issue template.  This is the minimal folder that would reproduce the problem.  The problem is still present in 1.40.1.
https://github.com/NathanielACollier/issues_vscode_1_40_0_markdownPreviewRootRelativeImg
We've seen the problem on every windows 10 1903 computer we've tried it on.  We are going to try it on macos and ubuntu.

I got the same issue on Windows 10 1903, and every time I open the preview page I got following lines in console:
[Embedded Page] Not allowed to load local resource: file:///D:/%5Copt%5CDocuments%5Cwww%5Cassets%5C2019%5CIMG_20191003_184153.jpg
  ERR Invalid regular expression: /^image\\jpeg;label:IMG_20191003_184153\.jpg;description:HEAD;size:313833;base64...

Same for me;

Windows 10 1903 / VS Code 1.40.1

I found out today that the Markdown Preview Enhanced extension still functions correctly.  So if your on windows and use vscode for  markdown  you can install it and your images with root folder paths should function again.

@mjbvz
It still reproduces in Vscode 14.0.2 on Windows 10.

As @pingu8007 mentioned, the reason is, that it can not load local images in schema such as file:///D:/....
It may be a  problem with security policies.

Same here on Linux it seems this feature is broken in all major operating systems. Absoulte path, Relative path, Absolute with file protocol to make it a valid URI, no matter what i do it doesn't load images. :(

Same here on Linux it seems this feature is broken in all major operating systems. Absoulte path, Relative path, Absolute with file protocol to make it a valid URI, no matter what i do it doesn't load images. :(

It's strange. Did your update to latest version?
It should be fixed in last few updates and I can confirm it's works in vscode 1.14.1


Minor changes to the readme and polyfill update

Polyfill is important and used for builtin Mesquito apps and also provides what I would say is "bare minimum" JS support which the Kindle doesn't natively have (last I checked)
Lgtm


Add ExchangeIssuanceV2 contract

PR adds a simplified variant of the ExchangeIssuance contract which has all native currency logic removed.
The rationale for doing this is two-part:

non-ethereum chains have non-ETH native currencies. ExchangeIssuance's WETH unwrapping logic becomes WMATIC unwrapping (or equivalent) when executed on a side chain.
WETH is still the most liquid component in AMM pairs on the side chain we're targeting (Polygon). Substituting a native currency like MATIC for WETH would impair trade performance.

Contract changes here are:
Method removals

receive
issueSetForExactETH
issueExactSetFromETH
redeemExactSetForETH

Replace
The WETH redemption flow issueExactSetFromToken has been changed from "unwrap WETH and sendValue" to "WETH.transfer"
Old
https://github.com/SetProtocol/index-coop-smart-contracts/blob/ecef4a21cc6161c3651b72bc6da6ffa787af2dd7/contracts/exchangeIssuance/ExchangeIssuance.sol#L277-L281
New
https://github.com/SetProtocol/index-coop-smart-contracts/blob/7ef60ef3f007de8dd40a9cfcd0c0dd1e0a3b693c/contracts/exchangeIssuance/ExchangeIssuanceV2.sol#L243-L246
The only tests with substantive changes (apart from those removed) to accommodate the new behavior are in
exchangeIssuanceV2.spec.ts#L754-L798

This is a unified diff of ExchangeIssuance vs. ExchangeIssuanceV2
33d32
<
42c41
< contract ExchangeIssuance is ReentrancyGuard {
---
> contract ExchangeIssuanceV2 is ReentrancyGuard {
145,149d143
<     receive() external payable {
<         // required for weth.withdraw() to work properly
<         require(msg.sender == WETH, "ExchangeIssuance: Direct deposits not allowed");
<     }
<
217,244d210
<      * Issues SetTokens for an exact amount of input ether.
<      *
<      * @param _setToken         Address of the SetToken to be issued
<      * @param _minSetReceive    Minimum amount of SetTokens to receive.


[KYUUBI #5786][AUTHZ] Disable spark script transformation

:mag: Description
Issue References 🔗

This pull request fixes #5786.
Describe Your Solution 🔧
Add spark check rule.
Types of changes :bookmark:

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Test Plan 🧪
Behavior Without This Pull Request :coffin:
Behavior With This Pull Request :tada:
Related Unit Tests
org.apache.kyuubi.plugin.spark.authz.rule.AuthzUnsupportedOperationsCheckSuite.test("disable script transformation")

Checklists
📝 Author Self Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[x] This patch was not authored or co-authored using Generative Tooling

📝 Committer Pre-Merge Checklist

[ ] Pull request title is okay.
[ ] No license issues.
[ ] Milestone correctly set?
[ ] Test coverage is ok
[ ] Assignees are selected.
[ ] Minimum number of approvals
[ ] No changes are requested

Be nice. Be informative.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (5761e83) 61.36% compared to head (cfea484) 61.42%.
 Consider uploading reports for the commit deb09fb to get more accurate results

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #5788      +/-   ##
============================================
+ Coverage     61.36%   61.42%   +0.05%
  Complexity       23       23
============================================
  Files           607      608       +1
  Lines         35935    35941       +6
  Branches       4936     4937       +1
============================================
+ Hits          22053    22077      +24
+ Misses        11499    11479      -20
- Partials       2383     2385       +2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

in spark extensions plugin

Why in spark extensions plugin? @wForget

Why in spark extensions plugin? @wForget

As far as I understand, the authz plugin implements access control by integrating ranger. This PR rejects ScriptTransformation command based on configuration, more like the watchdog in the spark extensions plugin.

If the code is actually not related to auth, we can move this new rule to extension module and revisit the config name. It can help people to ban script transform without auth module.

Updated, @wForget @ulysses-you

thanks, merged to master.

Thanks all, @cxzl25 @wForget @ulysses-you @pan3793


fix(docs): correct dead link to install docs

PR Checklist:
- [ ] Link to related issues: #number
- [ ] Add changelog entry linking to issue, describe API changes
- [ ] Add tests (optional)
- [ ] (If new feature) add to description / readme
there's no linking api change, test or issue since this is just a dead link fix.
Overview
the link to install instructions from the main README is broken (see 'dead link' below). it points to atomicserver/intro.html.
dead link

Changes Summary

I updated the url to point to the install page atomicserver/installation
I opted to follow the md link style as the badges, putting the hyperlink at the footer of the doc

manual test

Great work, thank you!


eslint-plugin-azure-sdk: hotfix and changes to rules for azure-sdk-for-js

New rules and tests for azure-sdk-for-js:
We wanted to have an automated way to check that the types field of our packages and our api-extractor configs match. Linters like eslint are not designed to "cross-validate" files, so these rules treat the package folder as a single source of truth and enforce that both the api-extractor output and the package types field be named according to the package folder. It also suggests that the names of packages match the folder that they are in for consistency.
This is part of Azure/azure-sdk-for-js#5172
Changes:

Additionally require the base name (part after @azure/ of each package.json to be equal to the name of the directory it is in
Require that the types entry in package.json be a file (directory part is ignored) named <package name>.d.ts
Require that the api-extractor,json be configured to roll-up types to a file (directory part is ignored) named <package name>.d.ts
Version changed to 3.0.0 according to semver, as these rules will make previously-accepted code unacceptable.

This PR also includes a small hotfix for a rule crashing on anonymous functions, which are used in the template sdk.

cc @sadasant @richardpark-msft @KarishmaGhiya


There are no "Connect to Host via Remote SSH" and "Add SSH Key…" actions in the VM context menu

OS: All
Azure Resource Extension Build Version: 20220421.32 (unified)
Azure VM Extension Build Version: 20220421.7 (unified)
Regression: Not a regression
Repro Steps:

Create a new VM.
Right click this VM to open its context menu.
Check whether there are "Connect to Host via Remote SSH" and "Add SSH Key…" actions in the context menu or not.

Expect:
There are "Connect to Host via Remote SSH" and "Add SSH Key…" actions in the context menu.

Actual:
There are no "Connect to Host via Remote SSH" and "Add SSH Key…" actions in the context menu.

Fixed by #314


obm migration error

I pulled a mongo dump from one of our production rackhd servers onto our testing vm and ran the obm migration script.  It appeared to go through each node, collecting obmSettings to obmSavesToBeDone, but partially through it threw an exception.
5706fa2625a985c051c7d80e
5706fcd525a985c051c7d83a
5707ca0b0f9ac06f50fa9e62
Saving: 5707ca0b0f9ac06f50fa9e62 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:55:a4"}}
5707cdb50f9ac06f50fa9e63
Saving: 5707cdb50f9ac06f50fa9e63 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fc:5a:3c"}}
5707d56e0f9ac06f50fa9e64
Saving: 5707d56e0f9ac06f50fa9e64 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:63:c0"}}
5707f54d0f9ac06f50fa9e66
Saving: 5707f54d0f9ac06f50fa9e66 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:5e:20"}}
570813da58bbc61c05f23107
Saving: 570813da58bbc61c05f23107 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:59:7c"}}
572294e383b26dd761a50899
Saving: 572294e383b26dd761a50899 {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:f7:36:d4"}}
57229da383b26dd761a5089b
Saving: 57229da383b26dd761a5089b {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:64:a4"}}
57229ef283b26dd761a5089c
Saving: 57229ef283b26dd761a5089c {"service":"ipmi-obm-service","config":{"user":"root","password":"password","host":"00:8c:fa:fd:59:52"}}
buffer.js:138
    throw new TypeError('must start with number, buffer, array or string');
    ^

TypeError: must start with number, buffer, array or string
    at fromObject (buffer.js:138:11)
    at new Buffer (buffer.js:65:10)
    at Encryption.encrypt (/vagrant/scratch/ombmigrator/node_modules/on-core/lib/common/encryption.js:35:13)
    at EncryptionService.encrypt (/vagrant/scratch/ombmigrator/node_modules/on-core/lib/services/encryption.js:25:36)
    at /vagrant/scratch/ombmigrator/node_modules/on-core/lib/models/obms.js:48:35
    at /vagrant/scratch/ombmigrator/node_modules/lodash/index.js:3395:24
    at /vagrant/scratch/ombmigrator/node_modules/lodash/index.js:3073:15
    at baseForOwn (/vagrant/scratch/ombmigrator/node_modules/lodash/index.js:2046:14)
    at Function.mapValues (/vagrant/scratch/ombmigrator/node_modules/lodash/index.js:3394:9)
    at baseWrapperValue (/vagrant/scratch/ombmigrator/node_modules/lodash/index.js:2768:30)
    at LodashWrapper.wrapperValue (/vagrant/scratch/ombmigrator/node_modules/lodash/index.js:6124:14)
    at _encryptSecrets (/vagrant/scratch/ombmigrator/node_modules/on-core/lib/models/obms.js:51:12)
    at ObmsModelFactory.Model.extend.beforeCreate (/vagrant/scratch/ombmigrator/node_modules/on-core/lib/models/obms.js:103:13)
    at fn (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:41:10)
    at /vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:162:20
    at iterate (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:256:13)
    at Object.async.forEachOfSeries.async.eachOfSeries (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:275:9)
    at Object.async.forEachSeries.async.eachSeries (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:211:22)
    at Object.runner.beforeCreate (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:44:9)
    at /vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/lib/waterline/query/dql/create.js:180:17
    at /vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:699:13
    at iterate (/vagrant/scratch/ombmigrator/node_modules/on-core/node_modules/waterline/node_modules/async/lib/async.js:256:13)

The last node in question:
db.nodes.find({"_id": ObjectId("57229ef283b26dd761a5089c")})
{ "_id" : ObjectId("57229ef283b26dd761a5089c"), "autoDiscover" : false, "createdAt" : ISODate("2016-04-28T23:38:26.900Z"), "identifiers" : [  "00:8c:fa:f2:92:7a" ], "name" : "os-r06-c04-s02", "obmSettings" : [ 	{ 	"service" : "ipmi-obm-service", 	"config" : { 	"user" : "root", 	"password" : "password", 	"host" : "00:8c:fa:fd:59:52" } } ], "relations" : [ 	{ 	"relationType" : "enclosedBy", 	"targets" : [ 	"5706ae5225a985c051c7d624" ] } ], "sku" : ObjectId("57041c42f37ec2a960d3ef09"), "type" : "compute", "updatedAt" : ISODate("2016-04-29T19:17:14.429Z") }

@dalebremner @brianparry @keedya

@ytjohn can you add all  nodes

Encryption service needs to be started in on-core in case old obmsettings password is saved un-encrypted

Temporary fix available at
https://gist.github.com/ytjohn/77e13ef159943347520bfc52c89f3cfb

The tool was removed from the gist and a repo was created for it: https://github.com/dalebremner/rackhd-obm-migration


a couple of fixes

so I turned on the library x feature on and there is a couple of little things that need to be fixed the profile image would be better if it was a circle and the song timer needs to be a bit higher because it's over the album artwork

or make the profile image not change

library x is a experimental feature. So I wont add support for it.
If you wanna discuss pls dont create issue. Contact me in discord


feat(subscription): add defender for cloud security contact configuration

Overview/summary
Enable Microsoft Defender for Cloud contact settings within the subscription
Options:

Create the security contact configuration
Enable email notifications about new security alerts
Enable email notifications from Microsoft Defender for Cloud to persons with specific RBAC roles on the subscription

This PR fixes/adds/changes/removes

#277

Testing evidence

As part of this pull request I have

[x] Checked for duplicate Pull Requests
[x] Associated it with relevant issues, for tracking and closure.
[x] Run and make fmt & make docs to format your code and update documentation.
[x] Created unit and deployment tests and provided evidence.
[x] Updated relevant and associated documentation.

This looks great thanks for your efforts!

I see more commits tricking in. Are you happy with this work now @felipebbc ?

I see more commits tricking in. Are you happy with this work now @felipebbc ?

Yes. Had to ignore the “location” field since it cannot be set by deployment, but it is set by Azure causing a change on subsequent runs.
I’m good with this.

Hi @matt-FFFFFF Anything pending from me to get this PR approved?

Hi yes the check failures need addressing
(make docs && make fmt)

Hi yes the check failures need addressing
(make docs && make fmt)

Updated. Thank you.

Any update on this? Would be very useful for our organization.


Allow internal tests to set whether or not a VCD should be dumped

Type of issue: other enhancement

Impact: no impact to user code

Development Phase: request
Other information: Some long running tests (as noticed in #1088, though exhaustive testing may not be the right approach in a unit test) may want to be able to control or suppress if a VCD is generated.
Chisel's TestDriver calls FIRRTL's verilogToCpp which has VCD generation turned on by default.
https://github.com/freechipsproject/chisel3/blob/7da0d5f8704b25a94e25cd9638c77695ae081d7f/src/main/scala/chisel3/testers/TesterDriver.scala#L60
https://github.com/freechipsproject/firrtl/blob/a7cf6ff3416a11088d811a435ba71fd36b191fb4/src/main/scala/firrtl/util/BackendCompilationUtilities.scala#L101

My specific annoyance is that assertTesterPasses is generating VCDs by default. Repeated runs of sbt test keep filling up test_run_dir with a lot of VCD files that aren't being checked.

Turn off VCD generation by default, add flag to turn them on? It's also probably reasonable for developers to just change the Scala to turn it back on.


doc: proofread and copyedit learning > cluster-api page

proofread, copyedit, clean up architecture image

Is this rebased to latest @csymons-suse ? Im wondering if my fix for docs only run is not working as expected :(

@Itxaka

Is this rebased to latest @csymons-suse ? Im wondering if my fix for docs only run is not working as expected :(

The doc text changes were no-big-deal; nothing new. I just rebased to latest, and successful check.


How should I upsert all columns?

I've read your docs, but still don't know how to upsert all columns.
I tried to do like this:
Db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "id"}},
DoUpdates: clause.AssignmentColumns([]string{"*"}),
}).Create(&users)

but get a "column excluded.* does not exist"
so how to do this?

Just use Save

@jinzhu I used save but it then creation time resets to zero value. Any way to work around it?


tanimutomo/Graphql Handson

Codecov Report

Merging #320 (047dab7) into design/event-driven-modular-monolith (d9d3138) will not change coverage.
The diff coverage is n/a.

@@                          Coverage Diff                          @@
##           design/event-driven-modular-monolith     #320   +/-   ##
=====================================================================
  Coverage                                 89.28%   89.28%
=====================================================================
  Files                                         1        1
  Lines                                        28       28
=====================================================================
  Hits                                         25       25
  Misses                                        3        3

Flag
Coverage Δ

unittests
89.28% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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


Updates commit documentation to explain 'public' vs. 'private' concept

Thoughts?

Coverage remained the same at 100.0% when pulling fafd16ee939426091c5a660c0ed37517d38649fc on documentation-update into bc392be2f0404f41ed99310b82a68abba6587ae7 on master.

👍 . This is much clearer. We should go through the docs some time and see if they'd benefit from similar updates.

Updated site too:
http://code.viget.com/microcosm/api/domains.html#commitnext-staged


Enable F404 by default

This seems to have been forgotten in #159.

Thanks, I should really automate that list (enable everything that isn’t a Refactor rule; or maybe even enable everything by default).


Toastify for toast notifications

Show toasts on:

Resource save
Bot save
Bot simulate
Bot deploy
Bot execute

Both success and error toasts for each
https://user-images.githubusercontent.com/749094/173649614-839d185f-1869-4a49-8dcb-ddc86ede0282.mp4

Coverage decreased (-0.1%) to 95.013% when pulling 4a865b08207af0306f2278fd67ba8f49cde8a036 on cody-toastify into aa9339bfa7cdfc75668bd5a1f766ee083f56c31a on main.

Love the toasts. Would it be possible to disable the Deploy and Save buttons while they're running, so that users (e.g. me) don't spam them ?


release 0.0.0-RC1

Staging-Repo: https://s01.oss.sonatype.org/content/repositories/orgcongocc-1006/
@revusky would you be okay with a release 0.0.0-RC1 ?

Well, I would prefer to start numbering at a higher number. I don't know if you know the whole history of this. My original JavaCC "fork" was called FreeCC and I believe I put out 4 releases between mid-2008 and the beginning of 2009. I started the numbering at 0.9 so there was a 0.9.0, a 0.9.1, a 0.9.2, and a 0.9.3. You can see an announcement for the last one here.  A grand experiment that is now coming to an end, I guess. Part of the experiment was just to see whether I could get away with eschewing all this release/versioning stuff and just tell people to download the thing and use it. But, apparently, one cannot get away with that. That would be too easy and thus, is somehow not allowed.
But anyway, the current CongoCC is actually vastly more advanced than those previous FreeCC releases were. And those versions of FreeCC were in turn vastly more advanced than any version of legacy JavaCC that has ever existed! They already had the INJECT directive, for example -- which I consider a very key feature since it actually makes JJTree usable!
Well, truth told, I don't have any particular ideas about version numbering, since, as you doubtless have inferred, I tend to think the whole thing is basically BS. (Certainly when the legacy POC implementation that is hosted on javacc.org is version 7.0.x and nobody seems to object to that!) We could resume the old numbering, going to 0.9.5. Another few releases and then we put out a 1.0RC and a 1.0final. Something like that...
Actually, now that I think about it, maybe we could just start at 2.x, the theory being that JavaCC21 was really CongoCC 1.x....
Anyway, what do you think? I might want to think about this a bit more, but to answer your question, I think we should start with a much higher number.

I think.
JavaCC21 -> 0.x
CongoCC -> 1.x
i also would ognore all 7.X and 0.95 ( others will not understand..)
The question is also, whether current CongoCC I just include is ready to release.


GUACAMOLE-1468: Adds SKIP_IF_UNAVAILABLE in options

Adds properties to guacamole.process wich configure other options (like skip-if-unavailable)

Thanks, @kevinimbrechts. This will need to be associated with a Jira issue and tagged appropriately before we will merge it.

Hi @necouchman. Yes sorry. Is it ok now ? Thanks.

Hi @mike-jumper.
Thank you for the review.
I corrected typos and change du function name to associate_general_options. I added a better description.
Personally, I prefer to keep the function. Maybe placing guacd-hostname and guacd-port into associate_general_options is a good idea?
Let me know and I will adapt accordingly.
Thanks

Closing this, as this option was added by #794.


Issue replicating websocket example

When trying to replicate the websocket example, keep getting the same issue:
2017-04-17 08:10:35,759: INFO: Goin' Fast @ http://<IP_ADDRESS>:8080
2017-04-17 08:10:35,774: INFO: Starting worker [8146]
2017-04-17 08:10:35,774: INFO: Starting worker [8145]
2017-04-17 08:10:42,336: ERROR: Traceback (most recent call last):
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/websockets/handshake.py", line 85, in check_request
    assert get_header('Upgrade').lower() == 'websocket'
AssertionError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/sanic/websocket.py", line 52, in websocket_handshake
    key = handshake.check_request(get_header)
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/websockets/handshake.py", line 93, in check_request
    raise InvalidHandshake("Invalid request") from exc
websockets.exceptions.InvalidHandshake: Invalid request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/sanic/app.py", line 465, in handle_request
    response = await response
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/sanic/app.py", line 205, in websocket_handler
    ws = await protocol.websocket_handshake(request)
  File "/home/ubuntu/workspace/.venv/lib/python3.5/site-packages/sanic/websocket.py", line 55, in websocket_handshake
    raise InvalidUsage('Invalid websocket request')
sanic.exceptions.InvalidUsage: Invalid websocket request

I can't reproduce this. What version are you using?

@r0fls this was a docker container running 16.04.

Was it the latest sanic version? I'm using 0.5.1.

@r0fls I reproduce this situation,
I guess he use the Nginx or other server software as a request proxy tool, but he don't set the right option.
@Sniedes722
For example , In Nginx, if you want use it to proxy a websocket request, you must set proxy option like this:
server {
    listen 8020;
    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

if you don't do that, the request header will just like this:

but the right header is like this:

So I guess it's not the Sanic error.

Closing via @Zheaoli's comment. @Sniedes722 feel free to reopen if that solution doesn't work for you or you need more help.


Terminal reset while execution

Hello there,
First, great work you put into this. It's a awesome addition to the robot framework.
Lately I did reset my laptop and insalled the newest versions of all python libraries.
And I got two issues while using the robot mainframe 3270 library.
When I execute it with visible = True then suddenly the processing stops and I get like a start screen for wc3270:

and secondly the terminal is really scrambled

Do you have any clues what I can do to resolve these issues?
Thank yo. Kind regards Michael

Hi @MichaelSeeburger ,
given the error occurred after the upgrade it would be interesting to know your current OS and version.
Then also what version of python are you using?

@MichaelSeeburger Maybe your terminal config? like the model number? see this: https://github.com/Altran-PT-GDC/Robot-Framework-Mainframe-3270-Library/wiki/Keyword-Tests

Hello @robinmatz,
I am on a windows 11 laptop and using python 3.10.9.
Hi @samuelpcabral ,
Ok I will try that and post my results back =)
Thank you both

As an update:
I tried to change the model number with using extra Args for Open Connection and it did not help.
I was reinstalling all different versions which were available here: https://x3270.miraheze.org/wiki/Downloads
But this did not resolve the issue either. I'm still looking into it.

I was able to resolve the scrambled terminal error!
I think this has something to do with Windows 11 rather then anything else.
First I created a testcase which basically just waited a long time after connecting to the TSO.
If you then press ALT+Spacebar a menu pops up where you can click on "Settings".
At the bottom there is the option to define the start size of the screen.
I picked 24x80 and  this issue was gone. Now I am testing if I still get the reset issue.

I did test it with a larger test suite and there are no "terminal resets" anymore. =)
There is only one new "cosmetic" issue left. Anything what robot enters is shifted down 3 rows as you can see in my uploaded picture. For example my operid "My Opid" has been entered 3 rows below in a false row. The testcases still work and this is just a visual bug

Great! So I will close this issue, and keep with this information related with WIndows 11


SSLError: ("read error: Error([('SSL routines', 'ssl3_read_n', 'unexpected eof while reading')],)",)

Hello! Earlier today, working with gcsfs version 0.4, I was getting a lot of the error mentioned in #221. I decided to go ahead and update my installation to 69d32fbd3e1575b1b7b9bc06adf6eced09fd20f1 and subsequently I am getting the error mentioned in the title (though I realize that this may or may not be related to the fix in #226)
The code I am using is:
from scipy.io import loadmat
import gcsfs

fs = gcsfs.GCSFileSystem(project='myprojectname')

data = np.empty((124, 11796177))

for chan in range(1, 125):
    fname = op.join(path, f'chan-{chan}', f'sub-SA_sess-20180918_chan-{chan}.mat')
    # print(f"Opening {fname}")
    with fs.open(fname) as f_chan:
        f_chan = loadmat(f_chan)
        data[chan-1] = f_chan['data'].squeeze()

Which reads 124 individual mat-files into one big local array.
The full traceback is:
---------------------------------------------------------------------------
Error                                     Traceback (most recent call last)
~/.conda/envs/l2lhub/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py in recv_into(self, *args, **kwargs)
    312         try:
--> 313             return self.connection.recv_into(*args, **kwargs)
    314         except OpenSSL.SSL.SysCallError as e:

~/.conda/envs/l2lhub/lib/python3.6/site-packages/OpenSSL/SSL.py in recv_into(self, buffer, nbytes, flags)
   1839             result = _lib.SSL_read(self._ssl, buf, nbytes)
-> 1840         self._raise_ssl_error(self._ssl, result)
   1841

~/.conda/envs/l2lhub/lib/python3.6/site-packages/OpenSSL/SSL.py in _raise_ssl_error(self, ssl, result)
   1670         else:
-> 1671             _raise_current_error()
   1672

~/.conda/envs/l2lhub/lib/python3.6/site-packages/OpenSSL/_util.py in exception_from_error_queue(exception_type)
     53
---> 54     raise exception_type(errors)
     55

Error: [('SSL routines', 'ssl3_read_n', 'unexpected eof while reading')]

During handling of the above exception, another exception occurred:

SSLError                                  Traceback (most recent call last)
<ipython-input-4-3103004a59ee> in <module>
      5     # print(f"Opening {fname}")
      6     with fs.open(fname) as f_chan:
----> 7         f_chan = loadmat(f_chan)
      8         data[chan-1] = f_chan['data'].squeeze()

~/.conda/envs/l2lhub/lib/python3.6/site-packages/scipy/io/matlab/mio.py in loadmat(file_name, mdict, appendmat, **kwargs)
    216     with _open_file_context(file_name, appendmat) as f:
    217         MR, _ = mat_reader_factory(f, **kwargs)
--> 218         matfile_dict = MR.get_variables(variable_names)
    219
    220     if mdict is not None:

~/.conda/envs/l2lhub/lib/python3.6/site-packages/scipy/io/matlab/mio5.py in get_variables(self, variable_names)
    290                 continue
    291             try:
--> 292                 res = self.read_var_array(hdr, process)
    293             except MatReadError as err:
    294                 warnings.warn(

~/.conda/envs/l2lhub/lib/python3.6/site-packages/scipy/io/matlab/mio5.py in read_var_array(self, header, process)
    250            `process`.
    251         '''
--> 252         return self._matrix_reader.array_from_header(header, process)
    253
    254     def get_variables(self, variable_names=None):

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_real_complex()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_numeric()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_element()

streams.pyx in scipy.io.matlab.streams.ZlibInputStream.read_string()

streams.pyx in scipy.io.matlab.streams.ZlibInputStream.read_into()

streams.pyx in scipy.io.matlab.streams.ZlibInputStream._fill_buffer()

~/.conda/envs/l2lhub/lib/python3.6/site-packages/fsspec/spec.py in read(self, length)
   1128             # don't even bother calling fetch
   1129             return b""
-> 1130         out = self.cache._fetch(self.loc, self.loc + length)
   1131         self.loc += len(out)
   1132         return out

~/.conda/envs/l2lhub/lib/python3.6/site-packages/fsspec/caching.py in _fetch(self, start, end)
    154             part = b""
    155         end = min(self.size, end + self.blocksize)
--> 156         self.cache = self.fetcher(start, end)  # new block replaces old
    157         self.start = start
    158         self.end = self.start + len(self.cache)

<decorator-gen-177> in _fetch_range(self, start, end)

~/.conda/envs/l2lhub/lib/python3.6/site-packages/gcsfs/core.py in _tracemethod(f, self, *args, **kwargs)
     50         logger.log(logging.DEBUG - 1, tb_io.getvalue())
     51
---> 52     return f(self, *args, **kwargs)
     53
     54

~/.conda/envs/l2lhub/lib/python3.6/site-packages/gcsfs/core.py in _fetch_range(self, start, end)
   1291             head = None
   1292         try:
-> 1293             r = self.gcsfs._call("GET", self.details["mediaLink"], headers=head)
   1294             data = r.content
   1295             return data

<decorator-gen-157> in _call(self, method, path, *args, **kwargs)

~/.conda/envs/l2lhub/lib/python3.6/site-packages/gcsfs/core.py in _tracemethod(f, self, *args, **kwargs)
     50         logger.log(logging.DEBUG - 1, tb_io.getvalue())
     51
---> 52     return f(self, *args, **kwargs)
     53
     54

~/.conda/envs/l2lhub/lib/python3.6/site-packages/gcsfs/core.py in _call(self, method, path, *args, **kwargs)
    532                     headers=headers,
    533                     data=data,
--> 534                     timeout=self.requests_timeout,
    535                 )
    536                 validate_response(r, path)

~/.conda/envs/l2lhub/lib/python3.6/site-packages/google/auth/transport/requests.py in request(self, method, url, data, headers, max_allowed_time, timeout, **kwargs)
    315                 headers=request_headers,
    316                 timeout=timeout,
--> 317                 **kwargs
    318             )
    319         remaining_time = guard.remaining_timeout

~/.conda/envs/l2lhub/lib/python3.6/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    528         }
    529         send_kwargs.update(settings)
--> 530         resp = self.send(prep, **send_kwargs)
    531
    532         return resp

~/.conda/envs/l2lhub/lib/python3.6/site-packages/requests/sessions.py in send(self, request, **kwargs)
    681
    682         if not stream:
--> 683             r.content
    684
    685         return r

~/.conda/envs/l2lhub/lib/python3.6/site-packages/requests/models.py in content(self)
    827                 self._content = None
    828             else:
--> 829                 self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
    830
    831         self._content_consumed = True

~/.conda/envs/l2lhub/lib/python3.6/site-packages/requests/models.py in generate()
    749             if hasattr(self.raw, 'stream'):
    750                 try:
--> 751                     for chunk in self.raw.stream(chunk_size, decode_content=True):
    752                         yield chunk
    753                 except ProtocolError as e:

~/.conda/envs/l2lhub/lib/python3.6/site-packages/urllib3/response.py in stream(self, amt, decode_content)
    562         else:
    563             while not is_fp_closed(self._fp):
--> 564                 data = self.read(amt=amt, decode_content=decode_content)
    565
    566                 if data:

~/.conda/envs/l2lhub/lib/python3.6/site-packages/urllib3/response.py in read(self, amt, decode_content, cache_content)
    505             else:
    506                 cache_content = False
--> 507                 data = self._fp.read(amt) if not fp_closed else b""
    508                 if (
    509                     amt != 0 and not data

~/.conda/envs/l2lhub/lib/python3.6/http/client.py in read(self, amt)
    457             # Amount is given, implement using readinto
    458             b = bytearray(amt)
--> 459             n = self.readinto(b)
    460             return memoryview(b)[:n].tobytes()
    461         else:

~/.conda/envs/l2lhub/lib/python3.6/http/client.py in readinto(self, b)
    501         # connection, and the user is reading more bytes than will be provided
    502         # (for example, reading in 1k chunks)
--> 503         n = self.fp.readinto(b)
    504         if not n and b:
    505             # Ideally, we would raise IncompleteRead if the content-length

~/.conda/envs/l2lhub/lib/python3.6/socket.py in readinto(self, b)
    584         while True:
    585             try:
--> 586                 return self._sock.recv_into(b)
    587             except timeout:
    588                 self._timeout_occurred = True

~/.conda/envs/l2lhub/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py in recv_into(self, *args, **kwargs)
    330         # TLS 1.3 post-handshake authentication
    331         except OpenSSL.SSL.Error as e:
--> 332             raise ssl.SSLError("read error: %r" % e)
    333
    334     def settimeout(self, timeout):

SSLError: ("read error: Error([('SSL routines', 'ssl3_read_n', 'unexpected eof while reading')],)",)

Any thoughts? Thanks!

@arokem what version of openssl are you using? There was a recent release (version 1.1.1e) that had a breaking change which caused unexpected EOF errors to be raised.

Indeed: OpenSSL 1.1.1e  17 Mar 2020
BTW: this seems intermittent. I eventually did manage to read the data without any issue.

Gotcha, thanks for the quick reply. I think pinning to the previous release openssl=1.1.1d is the fix for now. There's a PR upsteam (https://github.com/openssl/openssl/pull/11400) to revert the unexpected EOF change, so the 1.1.1f release should fix things when it's out

OK - I just ran that again a couple of times and did not encounter this again. I think that it's safe to close this issue.

This may have had something to do with a particular version of openSSL
On March 26, 2020 5:34:37 PM EDT, Ariel Rokem<EMAIL_ADDRESS>wrote:

Closed #246.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/dask/gcsfs/issues/246#event-3170169455


Allow configurability of the linter or at least show the source of the linting warning

The linting warning from this extension looks extremely similar to a Go warning + the source of the linting warning is not clear so it causes confusion when devs see what looks like a Go lint warning in TS code.
https://stackoverflow.com/questions/73508835/vscode-get-rid-of-message-in-js-and-ts-files-exported-identifier-should-have

[ ] Change the warning text
[ ] Be clear that the warning is coming from this extension
[ ] Allow warnings from this extension to be configurable.

Ref:
https://github.com/antfu/vscode-vite/issues/27

Thanks @smashah , I will take a look at this


EXR file format support

Setting it to draft so I can go on vacation :)

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

Snapshot stored with reference name:
refs/pull/15461/merge
Test environment:
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/15461/merge/index.html
To test a playground add it to the URL, for example:
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/15461/merge/index.html#WGZLGJ#4600
Links to test babylon tools with this snapshot:
https://playground.babylonjs.com/?snapshot=refs/pull/15461/merge
https://sandbox.babylonjs.com/?snapshot=refs/pull/15461/merge
https://gui.babylonjs.com/?snapshot=refs/pull/15461/merge
https://nme.babylonjs.com/?snapshot=refs/pull/15461/merge
To test the snapshot in the playground with a playground ID add it after the snapshot query string:
https://playground.babylonjs.com/?snapshot=refs/pull/15461/merge#BCU1XR#0

WebGL2 visualization test reporter:
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/15461/merge/testResults/webgl2playwright/index.html

Visualization tests for WebGPU (Experimental)
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/15461/merge/testResults/webgpuplaywright/index.html

Visualization tests for WebGL 1 have failed. If some tests failed because the snapshots do not match, the report can be found at
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/15461/merge/testResults/webgl1/index.html
If tests were successful afterwards, this report might not be available anymore.

Did you write all these EXR files from scratch, or was it from some OSS solution? I'm assuming the latter since it is a lot of code and uses different casing than the rest of the code? If it is, is it documented anywhere where it came from?

@ryantrem: https://github.com/BabylonJS/Babylon.js/blob/3e360f321cc25c0c07ba8ad97eca41f35302c7fd/packages/dev/core/src/Materials/Textures/Loaders/exrTextureLoader.ts#L8


Replicate test cases for Postgres

Work in progress... code essentially written but getting syntax errors for PG side of things....

Working really well now. Will refactor the test case code now.


Update new mongo branch with master

Merges master into the new mongo branch and resolves all the conflicts.

There are some failing mongo planner tests and lib tests that were failing before the merge, so I don't think anything has worsened as a result of the merge.
We may see some it tests for other connectors fail due to the merge as I may have mixed up a enabling/disabling a test for a particular connector (there were conflicts on pretty much every *.test file).

@wemrysi sounds good, let's sort out all the full stack integration tests before we merge this, but I think it's fine to merge with any mongo unit tests failing that were failing before the latest merge of master.

Shall we first update next-major with master? I see a lot of changes in the diff because of next-major not being uptodate.

@rintcius I'd be fine with that. But the diff against master should be identical to the diff in #2305 which was reviewed, modulo handling merge conflicts. So I was thinking that we could merge this without extensive review because we already reviewed it over in #2305.

@alissapajer Ok I'm fine with merging as-is. Was just thinking it may help in looking into those failures in IT tests. We can also do that after merge as long as we get this build green ASAP.

@rintcius yeah, that's a good point that we don't want to have any regressions in integration tests, and a clean diff against master would make it easy to see that we didn't skip/pending any extra tests in new mongo.
Ok, I'm convinced, let's PR master to next-major and get that merged. Then ideally the diff here will just update to reflect that merge, but with diffs as large as this I've seen that fail in the past. So we might have to re-open this PR.

The diff is cleaner over here https://github.com/quasar-analytics/quasar/pull/2524. I'll keep this open for now, but let's see if we can get https://github.com/quasar-analytics/quasar/pull/2524 merged and just close this. They are ultimately the same diff, but maybe the integration tests are in a better state over there.

I think the diff of #2524 looks cleaner because it's not entirely uptodate with master (eg no diff in .travis.yml where there's a diff in this PR). So maybe best to merge this one first and then merge #2524

I think merging the other way around might make more sense. So we merge #2524 first which gets new mongo cleanly into next-major. Then we merge master into next-major (which is what this PR does).

Not sure what I was thinking before, but we are definitely going to have regressions in mongo integration tests against new mongo; we know that everything is not working yet.

Merged as-is


Python API docs fix array syntax

Fix array syntax in comments for examples tf.pow and tf.accumulate_n

Can one of the admins verify this patch?

I've also updated the docstrings in tensorflow/python/ops/math_ops.py.

Thanks!


add Domain type

Motivation
The backstage Domain entity type is missing from @frontside/graphgen-backstage.
Approach
Add it

The following preview packages were published:

Name
Version
Install Command

@frontside/graphgen-backstage
0.2.1-pc-domain.0
yarn add @frontside/graphgen-backstage@pc-domain

@frontside/backstage-plugin-graphql
0.3.1-pc-domain.0
yarn add @frontside/backstage-plugin-graphql@pc-domain

Generated by @thefrontside/actions


report: enable experiment run with local introspector

Script for running an experiment using a local version of Fuzz Introspector's webapp.
For reference, there is also a more end-to-end version of this, which will run both the harness itself and the building of the introspector reports here. The logic in this PR is focused on using a local version of Fuzz Introspector's webapp such that all requests to ../api/.. happens to the local webapp.
Sample run:
export OPENAI_API_KEY=....
git clone https://github.com/google/oss-fuzz-gen
cd oss-fuzz-gen
python3.11 -m virtualenv .venv
. .venv/bin/activate
python3 -m pip install -r ./requirements.txt
TARGET_PROJECTS=htslib,tinyxml2 LLM_MODEL=gpt-3.5-turbo ./report/docker_local_run.sh
python3 -m report.web ./results/ 8012

Superseded by https://github.com/google/oss-fuzz-gen/pull/423


Prettier CLI output

Instead of just outputting JSON, I created a new CliReporter submodule that:

Groups run results into issues by line
Filters out duplicates
Builds a pretty CLI output string using cliui and chalk
Supports multiple files
Introduces an API contract to possibly support other types of reporters in the future

I also changed the bin exit code to be the total number of unique issues found, to better support using this tool as a CI check.
Includes tests for CliReporter.
Here's an example of CLI output:

Here's an example of CLI output when there are no issues:

Note that the output width currently defaults to 110 but is easily adjustable (example of 180 width):

Also note that I played around with using language-docker and hl to add Dockerfile syntax highlighting when outputting the file contents for each offending line, but I didn't think the results were spectacular enough to warrant the additional dependencies.

this looks good to me! merging


[Port dspace-7_x] Added support for caching embedded objects without a self link & null responses

Port of #3415 to dspace-7_x.
Also restored these changes that were accidentally dropped in #3405 causing the item-edit.cy.ts e2e tests to be more flaky again

Thanks @alexandrevryghem. I tested this on a DSpace 7.6.3-SNAPSHOT instance and found:

Before: 66 requests, 210KiB transferred
After: 56 requests, 201KiB transferred

This was an extreme case where none of the ten items on the search page had thumbnails. Total time taken was ~300ms less. I didn't notice any side effects in my brief testing of the search page.


Remove assertion about nodes in a request in AsyncAction

NodeRequests with no nodes will result now in a noop.
Summary of the changes / Why this improves CrateDB
Checklist

[x] User relevant changes are recorded in CHANGES.txt
[x] Touched code is covered by tests
[x] Documentation has been updated if necessary
[x] CLA is signed
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in CHANGES.txt
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

retest this please

retest this please

retest this please

retest this please


Address image issues and associated text in Transpiler stages page

Closes #657

@kaelynj do you still have this image? -- and if so, would it be complicated to switch the background to light mode? We have functionality to automatically change an image based on the user's light/dark mode preferences.

We have functionality to automatically change an image based on the user's light/dark mode preferences.

If and only if we provide the dark mode variant of the image.

We have functionality to automatically change an image based on the user's light/dark mode preferences.

If and only if we provide the dark mode variant of the image.

The image we have now would serve as the dark mode version -- unless it can't for some reason @Eric-Arellano ?

I only have the dark mode version unfortunately.  I got it from someone else to make slides from and can ask if they have a light mode version of it.

If we can't get the light-mode version, you can make a rough one by inverting the image, then inverting the hue to preserve the colours.

If we can't get the light-mode version, you can make a rough one by inverting the image, then inverting the hue to preserve the colours.

Thanks for the tip @frankharkins ! I tried out bringing in the image you created and it works to switch from light to dark.

@kaelynj I've added in the new images, as you can see in this preview: https://qiskit-docs-preview-pr-674.1799mxdls7qz.us-south.codeengine.appdomain.cloud/transpile/transpiler-stages
I'm not thrilled with the sizing and the alignment of the hardware map image... wonder if we can instead produce it directly in the notebook as output? I fussed with it but can't seem to reproduce it myself within the notebook.
Feel free to write directly to this branch to make the necessary text edits. Thanks!

Ah, @Eric-Arellano, looks like some of the checks are failing b/c the tox environment does not contain the graphviz library.  Is it straightforward to add in?

Is it straightforward to add in/are there any concerns about the prod environment?

It's installed at the OS-level, not Python package manager. So it's more complex than normal but not too bad. You would add graphviz to this line:
https://github.com/Qiskit/documentation/blob/75aaa317a204068fb940cc2776b0ce5935471cb2/.github/workflows/notebook-test.yml#L46-L50
Rename the job title from "Install LaTeX dependencies" to "Install Linux dependencies"


coprocessor: migrate password function from TiDB

Signed-off-by: psinghal20<EMAIL_ADDRESS>What problem does this PR solve?
Issue Number: closes #6776
Problem Summary:
What is changed and how it works?
Migrates the scalar function password from TiDB.
I am not sure of the correct way to report deprecation warning, let me know if any changes are required. @andylokandy PTAL
Check List
Tests

Unit test
Integration test

LGTM

@Fullstop000  PTAL

@sre-bot /approve

/merge

/approve

/merge


Inconsistency in font-family rendering

Hi! Thanks for doing this, it's an interesting library. There's inconsistent behaviour with the font-family; it renders system fonts correctly but might not render the same font referenced from packages. Something like Vercel's Geist but it works with the mono version of the typeface from the same package.
I'm thinking it somehow doesn't resolve the font-family's value correctly, kindly take a look

It's safe to say it only works with system fonts

Thanks for the report @contigen. Indeed, when @DaveKeehl and I worked on this we tested only with system fonts and did not consider externally installed ones. We're both a bit preoccupied with different things, but we will try to devise a solution or workaround in preparation for the next release. Since we only work on this in our free time, we can't give a reliable ETA. If you have a solution in mind, feel free to open a PR and we will merge it once reviewed.

I appreciate the clarification; I don't know much about Canvas & SVG rendering, maybe I’ll think of something


feat(rs3Examine): on click examine

Renders an examine text box on the entity clicked.

fix wrong location idicator


keyboard: emit key events without keymap

Sometimes compositors don't need an XKB keymap at all, they just handle
raw keycodes. Emit key events even if no keymap is set.

Thanks!


Update acl_opts to a union type of two item tuples

Problem: The acl_opts type is used in two places (1, 2) extending another union type of possible list item types. Putting this type in a list itself is incorrect, as it would lead to code like: put_object('bucket', 'path', 'content', [[{:acl, :public_read}]] which fails immediately in put_object_headers/1.
Solution: Define acl_opts as a union type of two item tuples and define list variants in those specific type specs.

Thank you!


Expand README for CTAN

Last submission to CTAN got this feedback:
For the next release, please expand README :
Name & contact of author as well as the license should be added,
cf. item a. of
https://ctan.org/file/help/ctan/CTAN-upload-addendum#readme
(No upload needed right now!)

Ofc I forgot to do this and i got this feedback again for v1.1.1:
  For your _next_ release please  expand README according to item a. of
  https://ctan.org/file/help/ctan/CTAN-upload-addendum#readme
  (i.e.: please add your name and contact, and the license).
  Thanks!

  (No need for an immediate reupload!)


Adsk Contrib - Reorganize and add new documentation

Reorganize the documentation to conform to the Table of Contents developed by the documentation working group.  Added a lot of new documentation on the OCIO v2 features and a section about upgrading.  Edited some of the v1 documentation to correct syntax that has changed, add missing pieces, and remove outdated or confusing aspects.  There are still some v1 sections that remain unchanged except for warnings that they may be out of date.
The v2 documentation is still incomplete and remains a work-in-progress.  However at least it gives people a sense of the breadth and scope of the new features.
The sphinx-press template is limited to two levels of hierarchy, so based on the discussion in the working group I've combined the sub-sections into one long rst file.  This is done via include directives in an rst file named for the chapter.  So for example, the authoring section of the Guides is contained in a directory called "authoring" and the pieces are assembled in authoring.rst.
We had talked in the documentation working group about wanting to have the section on config syntax change to be equally focused on the YAML and the API to encourage people to use the API rather than editing the YAML by hand.  That is still my goal, but it was too much to attempt in this first pass.  So for now the new config sections are simply YAML-based, like what was there for v1.
Signed-off-by: Doug Walker<EMAIL_ADDRESS>

Given that Carol's half is now online, we will merge this now since it is at least a step in the right direction.  Also, it will be easier for you to review on RTD than in GitHub.  Please keep the feedback coming and we will address in a follow-up.


Is this project alive?

Hi
0.51 is enforced. PR with fixes for it awaits merge..
I also think that Sniper task on URL doesn't work any longer....

adding @YvesHenri .
I've spend a few hours today on investigation and it seems that api response to after teleporting back and starting encounter is not what script expect.
Unfortunatelly my python and pokeapi knowledge are too low to fix it..
Might be pgoapi issue - no idea.

I am using your fork. Its great! Tks.

@pogarek Just wondering, if original developers for this project are not supporting anymore, can others continue the project with your fork?

Sure


"Click to close" on the entire , with "pointer" cursor, would be great.

Thanks for reaching out! I don't seem to be having any issues with the close icon on smaller screens...

The thinking was that we could eliminate the "X" and either display a small, centered phrase "tap to close/dismiss" or whatever, and have the entire bar be tappable/clickable.
Just a thought. It'd be a nice option.

Oh I see. That does sound nice! If you want to implement another argument (something like tapToClose) that would be great! If not, I'll try to get around to it sometime.

OK, do you want to reopen this so we can track it?


[BUG] Tests don't work as intended

There seem to be a few issues with how the tests are currently written. They are all a bit entangled, so ill try and describe them in a single issue.
First is the run_cmd! macro is sometimes misused, for example here
the lines are not separated by ";" as seen in the documentation.
This causes the command to fail as it is interpreted as a single line.
Second, why do the test pass then? That's what I was thinking as well. After playing with the code a little, it seems
that the test should fail as run_cmd! returns an error, an "?" returns the error from the function, so if the test function returns
an error, why doesn't it fail?
It looks like the #[sealed_test] macro does not support this kind of syntax, and it only works with the #[test] macro.
The combination of these two led to some tests that actually fail, but they don't show it because they failed by returning Err, which was not handled properly by the #[sealed_test] macro.
Because the #[sealed_test] is important for many tests, the fix is probably to replace the "?" in the tests with unwrap.
See how I implemented the test in #176.

Hey @Zshoham, thank you for the report,
I noticed this before but I was not sure where it came from.
I opened an issue here : https://github.com/oknozor/sealed-test/issues/1.
This is a fork of the rusty-fork crate used in the sealed test crate.
I will have few time to work on this during the next three weeks.
If you feel adventurous you can try to fix it there.  Otherwise I'll be working on it in late February.
Meanwhile we should definitely try to add ";" in the `run_cmd! calls when they are missing.


xmap doesn't support unary einsums

Using einsum within an xmap with a single operand gives errors.
import jax.numpy as jnp
from jax.experimental.maps import xmap

x = jnp.arange(16, dtype=jnp.float32).reshape([4, 4])
y = jnp.arange(16, dtype=jnp.float32).reshape([4, 4])

# works!
out = xmap(partial(jnp.einsum, '{i,j},{i,j}->'),
          in_axes=(['i', 'j'], ['i', 'j']), out_axes=[])(x, y)
print(out)
# 1240.0

out = xmap(partial(jnp.einsum, '{i,j}->'), in_axes=['i', 'j'], out_axes=[])(x)
# ValueError: Number of einsum subscripts must be equal to the number of operands.

I have made some partial progress in https://github.com/google/jax/pull/7772. (Not sure how to link the PR to this issue.)
I am not sure how to support diagonals and traces which is what I initially wanted in my use case. This is because xmap's in_axes doesn't seem to accept duplicated named axes for the same operand.

Hi @bloops
I executed the mentioned code with JAX version 0.3.25 on Google Colab TPU. It executed without any error.
import jax.numpy as jnp
from jax.experimental.maps import xmap
from functools import partial

x = jnp.arange(16, dtype=jnp.float32).reshape([4, 4])
y = jnp.arange(16, dtype=jnp.float32).reshape([4, 4])

out = xmap(partial(jnp.einsum, '{i,j},{i,j}->'), in_axes=(['i', 'j'], ['i', 'j']), out_axes=[])(x, y)
print(out)

out = xmap(partial(jnp.einsum, '{i,j}->'), in_axes=['i', 'j'], out_axes=[])(x)
print(out)

Output:
1240.0
120.0

Kindly find the gist for reference.
Thank you

xmap was removed from JAX, so this is obsolete