Date picker doesn't reflect the correct first day of week

Steps to Reproduce
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Test",
      home: TestPage(),
    );
  }
}

class TestPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Test")),
      body: Container(
        child: Center(
          child: RaisedButton(
            color: Colors.redAccent,
            textColor: Colors.white,
            onPressed: () {
              testAlert(context);
            },
            child: Text("PressMe"),
          ),
        ),
      ),
    );
  }

  void testAlert(BuildContext context) {
    var alert = AlertDialog(
      title: Text("Test"),
      content: Text("Done..!"),
    );

    showDatePicker(
      context: context,
      initialDate: DateTime.now(),
      firstDate: DateTime(2018),
      lastDate: DateTime(2030),
      builder: (BuildContext context, Widget child) {
        return Theme(
          data: ThemeData.dark(),
          child: child,
        );
      },
    );
  }
}

switch the system calendar format between US and Australia on the device, the first day of week should correctly show Monday and Sunday.
Target Platform: Android/iOS
[✓] Flutter (Channel master, v1.10.7-pre.187, on Mac OS X 10.14.6 18G95, locale
    en-TW)
    • Flutter version 1.10.7-pre.187 at /Users/jerry/Documents/project/flutter
    • Framework revision 1946fc4da0 (4 weeks ago), 2019-10-07 15:23:31 -0700
    • Engine revision 1d62160fdb
    • Dart version 2.6.0 (build 2.6.0-dev.1.0 d6c6d12ebf)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/jerry/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling
      support)
    • Platform android-29, build-tools 28.0.3
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.2, Build version 11B52
    • CocoaPods version 1.7.1

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 39.0.3
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Community Edition (version 2019.2.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 40.2.4
    • Dart plugin version 192.7402

CC @darrenaustin

Hi @jerrywell
In my testings, first day of the week is Sunday for US and Australia  in Date Picker

flutter doctor -v
[✓] Flutter (Channel dev, v1.18.0, on Mac OS X 10.15.4 19E266, locale en-GB)
    • Flutter version 1.18.0 at /Users/taha/Code/flutter_dev
    • Framework revision 8f7327f83a (2 days ago), 2020-04-06 22:11:01 -0400
    • Engine revision 49891e0653
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 1210d27678)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • 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)
    • All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] 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.44.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.9.1
[✓] Connected device (3 available)
    • macOS      • macOS      • darwin-x64     • Mac OS X 10.15.4 19E266
    • Chrome     • chrome     • web-javascript • Google Chrome 81.0.4044.92
    • Web Server • web-server • web-javascript • Flutter Tools
• No issues found!
taha@Tahas-MacBook-Pro AndroidStudioProjects % flutterd doctor -v
[✓] Flutter (Channel dev, v1.18.0, on Mac OS X 10.15.4 19E266, locale en-GB)
    • Flutter version 1.18.0 at /Users/taha/Code/flutter_dev
    • Framework revision 8f7327f83a (2 days ago), 2020-04-06 22:11:01 -0400
    • Engine revision 49891e0653
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 1210d27678)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • 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)
    • All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] 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.44.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.9.1
[✓] Connected device (5 available)
    • SM M305F      • 32003c30dc19668f          • android-arm64  • Android 10
      (API 29)
    • Taha’s iPhone • 00008020-001059882212002E • ios            • iOS 13.4.1
    • macOS         • macOS                     • darwin-x64     • Mac OS X
      10.15.4 19E266
    • Chrome        • chrome                    • web-javascript • Google Chrome
      81.0.4044.92
    • Web Server    • web-server                • web-javascript • Flutter Tools
• No issues found!

if you're still experiencing this problem with latest master please create a new issue and provide the information required in
the template.
Thank you


⚠ Bofrost.lu has degraded performance

In e6c53df, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 933 ms

Resolved: Bofrost.lu performance has improved in c5263dc after 9 minutes.


Fix Capybara/FeatureMethods not working when there is require before the spec

As reported in 75baab383d3d60d0972b3d8e30bc88891bb1c2b0 the cop doesn't work when describe/feature is not the first statement in the file

Before submitting the PR make sure the following are checked:

[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Added an entry to the changelog if the new code introduces user-observable changes.
[x] The build (bundle exec rake) passes (be sure to run this locally, since it may produce updated documentation that you will need to commit).

If you have created a new cop:

[ ] Added the new cop to config/default.yml.
[ ] The cop documents examples of good and bad code.
[ ] The tests assert both that bad code is reported and that good code is not reported.

Updated


[Bug]: Two issues with GSelect: list goes out of view, resizeObserver issue

Environment
Developement/Production OS: Windows 10 19043.1110
Node version: 16.0.0
Package manager<EMAIL_ADDRESS>Radix Vue version: 1.0.0
Vue version: 3.0.0
Nuxt version: 3.0.0
Nuxt mode: universal
Nuxt target: server
CSS framework<EMAIL_ADDRESS>Client OS: Windows 10 19043.1110
Browser: Chrome 90.0.4430.212

Link to minimal reproduction
None
Steps to reproduce
I'm cross-linking an issue from shadcn-vue which is what I use https://github.com/radix-vue/shadcn-vue/issues/114
The idea is:

when a list of option is very long, it goes "out of the screen" and doesn't allow to scroll, thus some options are not available. Don't know if this is a radix-vue or a shadcn-vue issue, and what's the best way to handle this? Ideally with a resizeObserver and monitoring the size of the options
I wanted to have "custom items" in my Select, but when I have items of different height, but this cause an issue that I'll describe below:

So I'm using a dropdown list, where the items inside can have different height depending on the type.
To make it nicer, I'd like that once I selected the option, the selected item shows with the minimal possible height, so I'm using "h-auto" (otherwise I'd have to fix the height to the maximal one, like using "h-16" — when I do this it works without issue)
If I do this, then the item displays correctly, but when I change item for a different height item (the bug doesn't appear when I select another item of the same height), it triggers a "ResizeObserver loop completed with undelivered notifications." error
I guess it might be linked to that error ? https://github.com/radix-ui/primitives/issues/2313
Describe the bug
Described above
Expected behavior
No response
Conext & Screenshots (if applicable)
No response

I dont understand the struggle here.
Why not just set a height to viewport? <SelectViewport class="p-[5px] max-h-[500px] ">.
Why not removing the set height for each item?
https://codesandbox.io/p/sandbox/5rmrl7?file=src%2FApp.vue

I'll try to clarify:

initially I didn't want to set any height on the viewport, because I figutred out this was the role of radix-vue, in order to choose the best height (for instance, if my list is higher than 500px and fits in screen, then I'd like it to be displayed in full)
also setting a max-height won't prevent the list from going out of the screen (for instance if it's near the bottom of the screen)
there is no "set height" for each item, it's just that each item in the list has different content, and thus different height (in my case: some items have a "subtitle" below which changes the height)

setting a max-h solves the issue, but still feels improper somehow, I guess that resizeObserver should not cause an issue even when the list has items with different heights

@maelp it's possible to constrain content height and width automatically as described in the docs here. floating-ui computes available size and radix expose these as --radix-popper-available-height and --radix-popper-available-width CSS variables on the floating element.
So you can use them these way with tailwindcss:
<SelectViewport
  class="overflow-auto max-h-[--radix-popper-available-height] max-w-[--radix-popper-available-width]"
>

Here's an updated sandbox: https://codesandbox.io/p/sandbox/radix-vue-hovercard-forked-h3j46j?file=%2Fsrc%2FApp.vue%3A53%2C47-53%2C78.
Is that what you're trying to achieve?

Interesting thanks! So I solved my issue by doing this: removing the "popper" and set "replace item" (or I don't remember the other option name), and adding the "DropdownUpButton" and "DropdownDownButton" which are in the radix-vue example, but not in shadcn, and this was working
But I guess your solution is the correct one when we set popper. Shouldn't this be added by default to the styles of SelectViewport in the radix-vue example and in shadcn?

Does this also work with the Combobox from radix-vue and from shadcn? Perhaps we should also add this (I'd love to have similar DropdownUpButton and DropdownDownButton in the Combobox shadcn example for instance, would that be complicated to add?)

Does this also work with the Combobox from radix-vue and from shadcn? Perhaps we should also add this (I'd love to have similar DropdownUpButton and DropdownDownButton in the Combobox shadcn example for instance, would that be complicated to add?)

Yes for sure
--radix-popper-available-width/height availability

Combobox -> PopoverContent
DropdownMenu -> DropdownMenuContent, DropdownMenuSubContent
Select -> SelectContent

@sadeghbarati I tried to add this in the shadcn combobox example
    <PopoverContent
      class="w-[200px] p-0"
      style="max-height: --radix-combobox-content-available-height"
    >

or
    <PopoverContent
      class="w-[200px] p-0"
      style="max-height: --radix-popover-content-available-height"
    >

but it didn't work?

hmmmm forgot the "var(--radix-...)"
but if I do this, it seems it doesn't take into account the "search" field so it does that if I add the style to "CommandGroup"

(and if I add the style to "PopoverContent", it works but of course the "search field" scrolls with the rest instead of staying fixed

I did this trick which seems to work enough, this is my code for a kind of Combobox which allows both single-value select and multi-value select

<template>
  <Popover v-model:open="open">
    <PopoverTrigger as-child>
      <Button
        variant="outline"
        role="combobox"
        :aria-expanded="open"
        class="w-[200px] flex justify-between"
      >

          {{ selectedValues }}

        <ChevronsUpDown class="ml-2 h-4 w-4 shrink-0 opacity-50" />
      </Button>
    </PopoverTrigger>
    <PopoverContent class="w-[200px] p-0">
      <Command
        v-model="internalModelValue"
        :filter-function="filterFunction"
        :multiple="props.multiple"
      >
        <CommandInput placeholder="Search..." />

          <slot name="before"></slot>

        <CommandEmpty>No item found.</CommandEmpty>

        <CommandGroup
          class="overflow-y-scroll"
          style="max-height: calc(0.85 * var(--radix-popper-available-height))"
        >
          <CommandItem
            v-for="option in options"
            :key="option.value"
            :value="option"
            @select="toggleValue"
          >
            <Check
              :class="
                cn(
                  'mr-2 h-4 w-4',
                  (
                    props.multiple
                      ? modelValue?.includes(option.value)
                      : modelValue === option.value
                  )
                    ? 'opacity-100'
                    : 'opacity-0'
                )
              "
            />
            {{ option.title }}
          </CommandItem>
        </CommandGroup>
      </Command>
    </PopoverContent>
  </Popover>
</template>

@maelp  I really want to help but could you use the Stackblitz link to create reproduction instead of just sending the code here. If not.. I will have to close this ticket

Hey sorry about that, I guess I updated some dependencies to the latest radix version and now it seems to work as expected, closing the issue


Temporal aspect of the response

(pulled from #55)
The temporal aspect of the response needs to be well thought out. To my understanding there are no rules and no documentation which states that the result of the CDS request is valid for a limited amount of time. Depending on the EHR workflow and where the CDS request is executed, it may not be unusual for the card to take some time (hours) before it is utilized. However, taken to an extreme, the cards and all contained data could be expected to be valid literally forever. This is also compounded by the re-triggering functionality to obtain the current state.
For the CDS Service this means it must maintain hook instance state for an unlimited amount of time. It also negatively impacts the security of the resulting integration.
I don't think this is the intention, so there needs to be documentation which defines theses constraints and/or provides them within the API. As a solution, I propose that per card or perhaps at the response level there is a required field which defines the expiration time of the contained data. It might be also useful/necessary to have the EHR define in the request how long they need the CDS service to maintain state for the provided hookInstance.

The CDS service could provide  the HTTP 'Expires' header in the cds response to indicate how long the content of the response is valid.
While it might be possible to put such metadata in the discovery endpoint, I believe there are cases where the expiration is based on the particular request. Taking a simple example, a result with no cards (successful) may have a different expiration than one with cards presented to the user.
This value may also be different for each consumer based on expectation negotiated out-of-band.
Ultimately for the CDS service it should be a requirement to provide content expiration. The EHR must understand that content expires and the CDS service provides this expiration, but it is up to the particular EHR's implementation to determine how to handle data refresh.

It would be useful to know how EHR systems currently handle this.  Could EHR vendors respond with their current approach?  From an EHR client/healthcare system perspective, I think it would be confusing if some CDS (those supported by CDS Hooks) behaved one way, while others behaved another way.  Because in many cases, from the provider perspective, they can't tell the difference.  This may cause a safety issue if healthcare providers now EXPECT for this expiration notion to be in place, but that non-CDS Hooks CDS content don't expire.  I think if the expiration notion is supported, it needs to be supported globally within a given EHR system.


MTK60D-11B1308-V2 is this source  suitable?

Do you have this source? I can't find any link to get it.


[BUG]: CSI-PowerFlex entering boot loop when array has long response times

Bug Description
When installing csi-powerflex driver (v2.12.0), if multiple powerflex arrays are provided in the secret, and one of the arrays is unreachable and takes a long time to respond, the driver controller is stuck in a boot loop trying to authenticate with the unreachable powerflex array.
Specifically, if one of the arrays does not respond before the timeout specified by the kubernetes sidecar in the driver deployment workload (.spec.template.spec.container[].args["--timeout=120s"]), this is when the issue is encountered. If the timeout is not specified, the default is 15s.
Logs
You can see here, there are 27 Probe requests before the first reply.
vxflexos-controller - driver container logs:
time="2024-12-12T21:37:10Z" level=info msg="/csi.v1.Identity/Probe: REQ 0024: XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:10Z" level=debug msg="Probe called"
time="2024-12-12T21:37:10Z" level=debug msg=systemProbe
time="2024-12-12T21:37:10Z" level=info msg="Probing all arrays. Number of arrays: 3"
time="2024-12-12T21:37:10Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: c6d03fd700000407  from systemID: <array 2> \n"
time="2024-12-12T21:37:10Z" level=info msg="volumePrefixToSystems: systemID: <array 2>  already added for key c6d. Not adding for key again. \n"
time="2024-12-12T21:37:10Z" level=info msg="array <array 2> probed successfully"
time="2024-12-12T21:37:10Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: 70a19854000000d4  from systemID: <array 1> \n"
time="2024-12-12T21:37:10Z" level=info msg="volumePrefixToSystems: systemID: <array 1>  already added for key 70a. Not adding for key again. \n"
time="2024-12-12T21:37:10Z" level=info msg="array <array 1> probed successfully"
time="2024-12-12T21:37:11Z" level=info msg="/csi.v1.Identity/Probe: REQ 0025: XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:11Z" level=debug msg="Probe called"
time="2024-12-12T21:37:11Z" level=debug msg=systemProbe
time="2024-12-12T21:37:11Z" level=info msg="Probing all arrays. Number of arrays: 3"
time="2024-12-12T21:37:11Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: c6d03fd700000407  from systemID: <array 2> \n"
time="2024-12-12T21:37:11Z" level=info msg="volumePrefixToSystems: systemID: <array 2>  already added for key c6d. Not adding for key again. \n"
time="2024-12-12T21:37:11Z" level=info msg="array <array 2> probed successfully"
time="2024-12-12T21:37:11Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: 70a19854000000d4  from systemID: <array 1> \n"
time="2024-12-12T21:37:11Z" level=info msg="volumePrefixToSystems: systemID: <array 1>  already added for key 70a. Not adding for key again. \n"
time="2024-12-12T21:37:11Z" level=info msg="array <array 1> probed successfully"
time="2024-12-12T21:37:12Z" level=info msg="/csi.v1.Identity/Probe: REQ 0026: XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:12Z" level=debug msg="Probe called"
time="2024-12-12T21:37:12Z" level=debug msg=systemProbe
time="2024-12-12T21:37:12Z" level=info msg="Probing all arrays. Number of arrays: 3"
time="2024-12-12T21:37:12Z" level=info msg="/csi.v1.Identity/Probe: REQ 0027: XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:12Z" level=debug msg="Probe called"
time="2024-12-12T21:37:12Z" level=debug msg=systemProbe
time="2024-12-12T21:37:12Z" level=info msg="Probing all arrays. Number of arrays: 3"
time="2024-12-12T21:37:12Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: 70a19854000000d4  from systemID: <array 1> \n"
time="2024-12-12T21:37:12Z" level=info msg="volumePrefixToSystems: systemID: <array 1>  already added for key 70a. Not adding for key again. \n"
time="2024-12-12T21:37:12Z" level=info msg="array <array 1> probed successfully"
time="2024-12-12T21:37:22Z" level=error msg="array <bad array> probe failed: rpc error: code = FailedPrecondition desc = unable to login to VxFlexOS Gateway: Get \"https://<bad array ip>/api/login\": dial tcp <bad array ip>:443: connect: connection timed out"
time="2024-12-12T21:37:22Z" level=error msg="array <bad array> probe failed: rpc error: code = FailedPrecondition desc = unable to login to VxFlexOS Gateway: Get \"https://<bad array ip>/api/login\": dial tcp <bad array ip>:443: connect: connection timed out"
time="2024-12-12T21:37:22Z" level=error msg="array <bad array> probe failed: rpc error: code = FailedPrecondition desc = unable to login to VxFlexOS Gateway: Get \"https://<bad array ip>/api/login\": dial tcp <bad array ip>:443: connect: connection timed out"
time="2024-12-12T21:37:22Z" level=debug msg="Probe returning: true"
time="2024-12-12T21:37:22Z" level=error msg="array <bad array> probe failed: rpc error: code = FailedPrecondition desc = unable to login to VxFlexOS Gateway: Get \"https://<bad array ip>/api/login\": dial tcp <bad array ip>:443: connect: connection timed out"
time="2024-12-12T21:37:22Z" level=debug msg="Probe returning: true"
time="2024-12-12T21:37:22Z" level=info msg="/csi.v1.Identity/Probe: REP 0002: Ready=value:true, XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:22Z" level=info msg="/csi.v1.Identity/Probe: REP 0005: Ready=value:true, XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:22Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: c6d03fd700000407  from systemID: <array 2> \n"
time="2024-12-12T21:37:22Z" level=info msg="volumePrefixToSystems: systemID: <array 2>  already added for key c6d. Not adding for key again. \n"
time="2024-12-12T21:37:22Z" level=info msg="array <array 2> probed successfully"
time="2024-12-12T21:37:22Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: c6d03fd700000407  from systemID: <array 2> \n"
time="2024-12-12T21:37:22Z" level=info msg="volumePrefixToSystems: systemID: <array 2>  already added for key c6d. Not adding for key again. \n"
time="2024-12-12T21:37:22Z" level=info msg="array <array 2> probed successfully"
time="2024-12-12T21:37:22Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: 70a19854000000d4  from systemID: <array 1> \n"
time="2024-12-12T21:37:22Z" level=info msg="volumePrefixToSystems: systemID: <array 1>  already added for key 70a. Not adding for key again. \n"
time="2024-12-12T21:37:22Z" level=info msg="array <array 1> probed successfully"
time="2024-12-12T21:37:22Z" level=debug msg="Probe returning: true"
time="2024-12-12T21:37:22Z" level=info msg="/csi.v1.Identity/Probe: REP 0001: Ready=value:true, XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:22Z" level=info msg="vol id in UpdateVolumePrefixToSystemsMap is: 70a19854000000d4  from systemID: <array 1> \n"
time="2024-12-12T21:37:22Z" level=info msg="volumePrefixToSystems: systemID: <array 1>  already added for key 70a. Not adding for key again. \n"
time="2024-12-12T21:37:22Z" level=info msg="array <array 1> probed successfully"
time="2024-12-12T21:37:22Z" level=debug msg="Probe returning: true"
time="2024-12-12T21:37:22Z" level=info msg="/csi.v1.Identity/Probe: REP 0004: Ready=value:true, XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"
time="2024-12-12T21:37:22Z" level=info msg="/csi.v1.Identity/Probe: REQ 0028: XXX_NoUnkeyedLiteral={}, XXX_sizecache=0"

Screenshots
No response
Additional Environment Information
No response
Steps to Reproduce
Install csi-powerflex with >=2 storage systems configured in the secret.
One of the storage systems should be unreachable and take longer than 2 minutes to respond.
Expected Behavior
Ideally, if one of the arrays responds within the given timeout, the driver should continue with initialization, eventually entering a running state and allowing the user to perform storage maintenance actions against all powerflex arrays that are online.
CSM Driver(s)
csi-powerflex:v2.12.0
Installation Type
Operator:v1.7.0
Container Storage Modules Enabled
N/A
Container Orchestrator
OpenShift v4.17.7
Operating System
RHEL 9.4

@lukeatdell : Please sync the defect

link: ECS01G-2


Time consumption of the first "make launch"

CARLA version: 0.9.12
Platform/OS: Ubuntu20.04
Problem you have experienced: When I use the 'make launch' command, the CPU runs at full capacity for the first few minutes. However, when the progress reaches 95%, the CPU usage drops sharply, but there are no error messages. Is this normal? Also, how long does the first compilation usually take?

Yes it's normal
https://www.reddit.com/r/unrealengine/comments/n1c4zk/ue_4261_stuck_at_95/
Just let it work


Isssue

Wget badadress

Wget badadress

My pr will fix this issue:
https://github.com/Magisk-Modules-Repo/energizedprotection/pull/5

Merged or still waiting?

Merged or still waiting?

Still waiting for an unknow reason.

@erkin98
Hello, as now i have manualy updated the module for Magisk v19, can u try again please ?

Pushed fixed to repo, update from magisk manager.
Closing issue now !!


fix: Show loading progress while parsing local JSON assets

Fixes #1703
Changes:

Add verbose error handling during loading of resources
Add correct count to event while displaying progress bar
Add progress bar when loading static assets
Notify UI to refresh once the downloading is complete

@arp95 @Shailesh351 @shreyasnbhat @mahikaw Please review

@iamareebjamal All working fine. but getting one problem for root url empty case.
After uninstalling app if i again run app directly from android studio then only once app is getting stuck i mean download progress dialog. Then if i close app and open app again then all the data from assets are not loaded. only that much data is loaded which was saved before dialog stuck.

OK. I'm getting it, but can you explain the part about the dialog being stuck. I mean, is it stuck at 0, or something else, and can you see the logs and post here. Till the app gets stuck

Sometimes it stops at 0 sometimes some other values.
06-13 22:06:35.107 12138-12307/org.fossasia.openevent I/OpenGLRenderer: Initialized EGL, version 1.4 06-13 22:06:35.107 12138-12307/org.fossasia.openevent D/OpenGLRenderer: Swap behavior 1 06-13 22:06:35.269 12138-12138/org.fossasia.openevent D/DownloadCounter: 6 counter 06-13 22:06:35.270 12138-12138/org.fossasia.openevent D/DownloadCompleteHandler: Progress : 0.000000 Downloading Event Info… 06-13 22:06:35.358 12138-12145/org.fossasia.openevent I/art: Do partial code cache collection, code=17KB, data=30KB 06-13 22:06:35.359 12138-12145/org.fossasia.openevent I/art: After code cache collection, code=17KB, data=30KB 06-13 22:06:35.359 12138-12145/org.fossasia.openevent I/art: Increasing code cache capacity to 128KB 06-13 22:06:35.612 12138-12138/org.fossasia.openevent I/BaseActivity: Activity onResume

This happens if the root url is empty?

Yes, In that case

In my case, if there is no root URL, the JSON is automatically loaded as you coded it to @Shailesh351 mm

Weren't you doing a clean install after deleting the root URL?

@arp95 @mahikaw @rohanagarwal94 This PR is open for 2 days. I know you guys are super busy, but still, we need to reduce the time between PR merges :smile:

@iamareebjamal really sorry for that. i am quite busy with samples nowadays.
anyways having a look.

I'm not facing this issue now. May be some issue with my device before.

This is how progress is being showed
D/DownloadCompleteHandler: Progress : 0.000000 Downloading Event Info…
D/DownloadCompleteHandler: Progress : 16.666668 Downloading Event Info…
D/DownloadCompleteHandler: Progress : 33.333336 Downloading Sponsors…
D/DownloadCompleteHandler: Progress : 50.000000 Downloading Locations…
D/DownloadCompleteHandler: Progress : 66.666672 Downloading Tracks…
D/DownloadCompleteHandler: Progress : 83.333328 Downloading Speakers…
D/DownloadCompleteHandler: Progress : 100.000000 Downloading Sessions…
Shouldn't it be like
D/DownloadCompleteHandler: Progress : 0.000000 Downloading Event Info…
D/DownloadCompleteHandler: Progress : 16.666668 Downloading Sponsors…
D/DownloadCompleteHandler: Progress : 33.333336 Downloading Locations…
D/DownloadCompleteHandler: Progress : 50.000000 Downloading Tracks…
D/DownloadCompleteHandler: Progress : 66.666672 Downloading Speakers…
D/DownloadCompleteHandler: Progress : 83.333328 Downloading Sessions…
D/DownloadCompleteHandler: Progress : 100.000000 Download complete.
?

True. Will look into it

@Shailesh351 Please check now

@arp95 @mahikaw @rohanagarwal94 @mejariamol Please review

@the-dagger Please review and merge


Enemy Range Shooting improved

Now enemy bullets collide with the character (character's colider adapted) and change of enemy bullets vfx.

Task linked: CU-86bzebz3x Level2 Range / Melee Enemies


Compatibility with OpenZeppelin Upgradability

Hi everyone,
are there any plans to support contract UUPS upgradability though proxy to the ERC721A token type?
Thanks for the great project either way!
Cheers

Pull request already exists. #4


feat!: support coordinated v2 upgrade with flag

Overview
As discussed, given no pre-existing coordinating mechanism (i.e. signalling), v2 will have to work differently to future upgrades. Namely, nodes will run start with an upgrade-height flag. At the height before that in EndBlock, the protocol version will be updated and cometbft will receive the new v2 app version. There will be no state migrations. The block at the following height will be v2 and validators will begin validating and executing accordingly.
I plan on following up with this with a e2e test upgrading from v1.x to main.
Checklist

[ ] New and updated code has appropriate documentation
[ ] New and updated code has new and/or updated testing
[ ] Required CI checks are passing
[ ] Visual proof for any user facing features like CLI or documentation updates
[ ] Linked issues closed with keywords

Codecov Report

Merging #2803 (e14038e) into cal/minor-upgrade-testing (c13fa61) will decrease coverage by 0.64%.
The diff coverage is 54.54%.

@@                      Coverage Diff                      @@
##           cal/minor-upgrade-testing    #2803      +/-   ##
=============================================================
- Coverage                      19.95%   19.31%   -0.64%
=============================================================
  Files                            141      139       -2
  Lines                          17080    16957     -123
=============================================================
- Hits                            3408     3275     -133
- Misses                         13352    13381      +29
+ Partials                         320      301      -19

Files
Coverage Δ

app/prepare_proposal.go
0.00% <ø> (ø)

app/process_proposal.go
0.00% <ø> (ø)

test/tokenfilter/setup.go
100.00% <100.00%> (ø)

x/upgrade/keeper.go
23.68% <100.00%> (+3.17%)
:arrow_up:

x/upgrade/types.go
24.13% <ø> (-59.00%)
:arrow_down:

app/app.go
4.41% <0.00%> (+0.05%)
:arrow_up:

... and 1 file with indirect coverage changes

this still LGTM, but out of curiosity, did we add a commit here and github is still letting us merge without getting more approves?

I think the approvals didn't get dismissed b/c this PR targets a feature branch cal/minor... that doesn't have this setting:

ahh I see thanks. assumed it was towards main

I assume when it switches, it will dismiss the review


Update readme

Coverage remained the same at 100.0% when pulling c9207c0255a6dca55634721a7c4d1b53f9d4200d on update-readme into d2c26d2b079beb214b8af05dccb75dd4e76d4841 on master.


Missing Index

Hello, we are using this provider since a few month with orchestration having more than 500k activities using Azure Sql and some index have been given by Azure Sql query performance:
One on NewEvents that is specialy used in our 500k activities orchestration
CREATE NONCLUSTERED INDEX [IX_NewEvents_TaskHub_VisibleTime] ON [dt].[NewEvents]
(
	[TaskHub] ASC,
	[VisibleTime] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO

And 2 for dt.Instances

CREATE NONCLUSTERED INDEX [IX_Instances_ParentInstanceID] ON [dt].[Instances]
(
	[ParentInstanceID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_Instances_RuntimeStatus_Name] ON [dt].[Instances]
(
	[RuntimeStatus] ASC,
	[Name] ASC
)
INCLUDE([CreatedTime],[ExecutionID],[LastUpdatedTime]) WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO

I think for sure the first one should be added but not sure for the 2 on dt.Instances

Hi @bhugot. Can you clarify for me why we need these additional indexes? I didn't quite understand your original explanation. Are you saying that Azure SQL is making this explicit recommendation in the Azure Portal?

Yes it is explicit recommendation from the Azure Portal


[Bug]: Fix category issues of previous versions

Connector Name
connectors/openapi (Open API Connector)
What happened?
Need to fix issues in categories of the following connector versions in DEV, STG & PROD
ballerinax/gotomeeting/1.2.0
ballerinax/gototraining/1.2.1
ballerinax/gotowebinar/1.2.0
ballerinax/livestorm/2.1.0
ballerinax/logoraisr/1.2.0
ballerinax/workday.absencemanagement/1.2.0
ballerinax/workday.accountspayable/1.2.0
ballerinax/workday.businessprocess/1.2.0
ballerinax/workday.common/1.2.0
ballerinax/workday.compensation/1.2.0
ballerinax/workday.connect/1.2.0
Related https://github.com/wso2-enterprise/choreo/issues/12741
Status

[x] Updated all specified connectors versions on DEV
[x] Updated all specified connectors versions on STG
[x] Updated all specified connectors versions on PROD

Following connector versions have been updated with the requested changes
https://dev-central.ballerina.io/ballerinax/gotomeeting/1.2.0
https://dev-central.ballerina.io/ballerinax/gototraining/1.2.1
https://dev-central.ballerina.io/ballerinax/gotowebinar/1.2.0
https://dev-central.ballerina.io/ballerinax/livestorm/2.1.0
https://dev-central.ballerina.io/ballerinax/logoraisr/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.absencemanagement/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.accountspayable/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.businessprocess/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.common/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.compensation/1.2.0
https://dev-central.ballerina.io/ballerinax/workday.connect/1.2.0
https://staging-central.ballerina.io/ballerinax/gotomeeting/1.2.0
https://staging-central.ballerina.io/ballerinax/gototraining/1.2.1
https://staging-central.ballerina.io/ballerinax/gotowebinar/1.2.0
https://staging-central.ballerina.io/ballerinax/livestorm/2.1.0
https://staging-central.ballerina.io/ballerinax/logoraisr/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.absencemanagement/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.accountspayable/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.businessprocess/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.common/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.compensation/1.2.0
https://staging-central.ballerina.io/ballerinax/workday.connect/1.2.0
https://central.ballerina.io/ballerinax/gotomeeting/1.2.0
https://central.ballerina.io/ballerinax/gototraining/1.2.0
https://central.ballerina.io/ballerinax/gotowebinar/1.2.0
https://central.ballerina.io/ballerinax/livestorm/2.1.0
https://central.ballerina.io/ballerinax/logoraisr/1.2.0
https://central.ballerina.io/ballerinax/workday.absencemanagement/1.2.0
https://central.ballerina.io/ballerinax/workday.accountspayable/1.2.0
https://central.ballerina.io/ballerinax/workday.businessprocess/1.2.0
https://central.ballerina.io/ballerinax/workday.common/1.2.0
https://central.ballerina.io/ballerinax/workday.compensation/1.2.0
https://central.ballerina.io/ballerinax/workday.connect/1.2.0


Fixing documentation from candidate.name to candidate.module

Any of the checked boxes below indicate that I took action:

[ ] Reviewed the Contribution Guidelines.
[x] Signed the Gradle CLA.
[ ] Ensured that basic checks pass: ./gradlew quickCheck

For all non-trivial changes that modify the behavior or public API:

[ ] Before submitting a pull request, I started a discussion on the
Gradle developer list
or can reference a JIRA issue.
[ ] I wrote a design document. A design document can be
brief but explains the use case or problem you are trying to solve,
touches on the planned implementation approach as well as the test cases
that verify the behavior. Optimally, design documents should be submitted
as a separate pull request. Samples
can be found in the Gradle GitHub repository. Please let us know if you need help with
creating the design document. We are happy to help!
[ ] The pull request contains an appropriate level of unit and integration
test coverage to verify the behavior. Before submitting the pull request
I ran a build on your local machine via the command
./gradlew quickCheck <impacted-subproject>:check.
[ ] The pull request updates the Gradle documentation like user guide,
DSL reference and Javadocs where applicable.

Some context: this corrects some javadoc which has an incorrect reference to a name field of ModuleComponentidentifier, which should be module.

Thanks for your contribution Ethan!


Clean warning from tests.

Move them to webpack.config.dev.
The grunt test shows this console now:
Running "webpack:builder_specs" task
(node:82691) DeprecationWarning: loaderUtils.parseQuery() received a non-string value which can be problematic, see https://github.com/webpack/loader-utils/issues/56
parseQuery() will be replaced with getOptions() in the next major version of loader-utils.
main.affected-specs.js 3.3 MB
vendor.affected-specs.js 6.9 MB
main.affected-specs.js.map 4.3 MB
Time: 11874
Task 'webpack:builder_specs' took 12031ms

The grunt dev task shows the warnings in compilation, IMHO it's where they belong.

@CartoDB/frontend please take a look and give your thoughts.

Fine be me! :es:


Lower bound on ghc-exactprint was wrong, added stack.yaml

[4 of 7] Compiling Language.Haskell.HGrep.Internal.Data ( src/Language/Haskell/HGrep/Internal/Data.hs, .stack-work/dist/x86_64-linux/Cabal-<IP_ADDRESS>/build/Language/Haskell/HGrep/Internal/Data.o )

/home/callen/work/hgrep/src/Language/Haskell/HGrep/Internal/Data.hs:19:1: error:
    Failed to load interface for ‘Language.Haskell.GHC.ExactPrint.Annotater’
    Perhaps you meant
      Language.Haskell.GHC.ExactPrint.Annotate (from ghc-exactprint-<IP_ADDRESS>)
      Language.Haskell.GHC.ExactPrint.Delta (from ghc-exactprint-<IP_ADDRESS>)
      Language.Haskell.GHC.ExactPrint.Pretty (from ghc-exactprint-<IP_ADDRESS>)
    Use -v to see a list of the files searched for.
Completed 13 action(s).

Thanks for this!


Convert package to ROS2

Remove all references to Turtlebot as it was only included for backwards-compatibility reasons. This package should be robot agnostic.
Convert launch files, CMakeLists and package.xml to ROS2 equivalent.

Tested running in a ROS2 dashing container running both launch files with and without gui:=true and it launched correctly in all cases.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Remove all references to Turtlebot as it was only included for backwards-compatibility reasons. This package should be robot agnostic.

Does removing the turtlebot launch files have any impact on downstream dependencies? E.g. the navigation launch files have been deleted.
What are we doing with the turtelbot3 map files in this package? Did you get a chance to test those with ROS2?

Does removing the turtlebot launch files have any impact on downstream dependencies? E.g. the navigation launch files have been deleted.

We originally left the turtlebot files in because voice interaction was relying on them, but because this is a major bump we can remove them all and any ROS2 sample apps (or other apps using htis package) can import the robot themselves.

What are we doing with the turtelbot3 map files in this package? Did you get a chance to test those with ROS2?

I think we want the map files as they describe a path that the robot takes around the store right? I'm unsure if they are robot agnostic but it would be good to have a defined path that others can make their robot follow. @samuelgundry what do you think?
I haven't tested the map files with ROS2. I'll test with cloudwatch sample application as I'm in the process of porting it's simulation_ws to ROS2 using this branch of bookstore-world.

I've got this working with the ROS2 port of cloudwatch-sample-application however it has 2 hacks that need to be fixed before this is merged. It needs to set additional environment variables GAZEBO_MODEL_PATH and GAZEBO_RESOURCE_PATH so that it can correctly load all the models / mesh's for this simulation and the turtlebot.
The hacks that need to be fixed are:

The path to the default gazebo resources and models directories are hard coded, this should be dynamic somehow. The are loaded when sourcing /usr/share/gazebo-9/setup.sh on Ubuntu.
The path to turtlebot3_description_reduced_mesh models has been added but this should be a dynamic parameter passed to this launch file instead of hard coded in there as this package should have no knowledge about turtlebot.


Added plugin related changes in definition

Codecov Report

Merging #642 into release-2.4.0 will not change coverage.
The diff coverage is n/a.

@@               Coverage Diff                @@
##             release-2.4.0     #642   +/-   ##
================================================
  Coverage            32.66%   32.66%
  Complexity            1232     1232
================================================
  Files                  170      170
  Lines                14981    14981
  Branches              2371     2371
================================================
  Hits                  4893     4893
  Misses                9363     9363
  Partials               725      725

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 8c11a5d...685fd8d. Read the comment docs.


Can only execute write transactions to dApp using DEVELOPER MODE

Hello all,
I'm trying to integrate the coinbase wallet to my front end. However I stamp on a weird issue. While I'm able to request account access and execute read calls to smart contract, I can only execute write transactions (eg staking ERC721, mint ERC20) while DEVELOPER MODE is on. This happens to my staging server and not in localhost. Every time I'm trying to execute a writable tx, I get the following error:

I inspected the error window and found out the following error in the console.

I don't believe this is a bug, maybe something messing up with my configurations.  I also posted a question in Ethereum Stack Exchange which I'm referencing it here: https://ethereum.stackexchange.com/questions/125049/cannot-execute-write-transactions-to-dapp-using-coinbase-wallet
Does anyone have an opinion on my case? I find it quite weird that I can only send  write and payable transactions with DEVELOPER MODE on.

I can confirm that I cannot execute any transactions on test networks without first enabling DEVELOPER MODE. Rather than simply show a "Something Went Wrong" which gives the user no description, there should be a specific error message displayed to the user that says something like "Please enable Developer Mode to send testnet transactions".
Especially since even with Developer Mode disabled, I am still able to successfully approve switchChain requests from Coinbase Wallet. This gives the impression everything is working fine before throwing a non-descriptive error when actually trying to issue a transaction.

Mentioning people on a weekend isn’t going to make things happen any faster.

@ljharb I only mentioned you because this issue is 26 days old and hasn't been addressed yet. Sorry for trying to improve your repository. I'm a founder trying to integrate your product and I work 7 days a week. Not sure why you're giving me such bad attitude since I have been helping clear up issues and helping answer users questions.

@kyokosdream its not a bad attitude, it’s just about GitHub etiquette.
This repo has been newly rebranded and restaffed, so it will take some time to address every issue. Please be patient - your choice to work 7 days a week is your own, and doesn’t mean the rest of us are likely to make the same choice.

Developer Mode has been removed. All features enabled by Developer Mode (Testnets, etc.) have been moved under Advanced Settings.
To connect and make transactions to a test network you will need to enable testnets ( Advanced Settings > Enable Testnets), and switch to that network.
Closing as works as intended. If you still run into issues or confusion when using the latest version of the browser extension, feel free to reopen.


Peer MediaStream with WebAudio not working

Hi
When want to use the WebAudio API on the received peer's MediaStream, it doesn't output any sound, but when I do it with the local MediaStream, it works fine. I'm using the latest version of Chrome. What could be the issue?
Here is my code:
webrtc.on('videoAdded', function (video, peer) {
    var panner = audioCtx.createPanner()
    panner.setOrientation(1,0,0)
    panner.coneInnerAngle = 360
    panner.coneOuterAngle = 0

    var source = audioCtx.createMediaStreamSource(peer.stream)
    source.connect(panner)
    panner.connect(audioCtx.destination)

    peer.videoEl.muted = 'muted'
})

Thanks for any help!

Am 03.07.2015 um 21:24 schrieb Gerhard Berger:

Hi
When want to use the WebAudio API on the received peer's MediaStream, it doesn't output any sound, but when I do it with the local MediaStream, it works fine. I'm using the latest version of Chrome. What could be the issue?

Sadly, remote streams can't be hooked up with webaudio in chrome:
https://code.google.com/p/chromium/issues/detail?id=121673
long story :-(


[main < T622] Add convert str2object

Description
Please briefly explain the changes you made here.
Pull request type

[ ] Bugfix
[x] Algorithm/Module
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

Reviewer checklist (the reviewer checks this part)
Module/Algorithm

[ ] Core algorithm/module implementation
[ ] Query module implementation
[ ] Unit tests
[ ] End-to-end tests
[ ] Code documentation
[ ] README short description
[ ] Documentation on memgraph/docs
[ ] Update GQLALchemy signatures in query builder using query module signature generator

######################################

NOTE: E2e tests on this will fail until Ivan's PR for file loading https://github.com/memgraph/mage/pull/322 is merged into main and tests use it, because I load files in the way which his PR enables


Panic invalid memory address after reconnect a node

Describe the bug
Using the example genstage, change it to have two nodes, connect one to the other, disconnect, reconnect and panic
It kills the producer process directly, the entire node does NOT crash

Open two terminals
First one: go run ./producer
Second one: go run ./consumer
They should communicate and trigger events
CTRL + C on consumer
Restart it again
The error should show up

2023/01/06 17:06:25 WARNING! Server terminated <336B493D.0.1011>["producer"]. Panic reason: "invalid memory address or nil

To Reproduce
Steps to reproduce the behavior:
I've made a gist with all the code and a readme there https://gist.github.com/davidroman0O/db04fa224c710a4ae33d53d28304e88b
Expected behavior
Maybe a better error why it has a nil pointer? why? where? stacktrace?
Or maybe it should just not panic
Environment (please complete the following information):

OS: Tested on Windows 10 and QubeOS 4.11
Framework Version v1.999.220
Number of CPU 12

Additional context
I was just experimenting with the examples, trying to plug a bit of my codebase of some side projects and end up with this issue
I came back on the examples to test it again with very little modification and the error appear!

Hello, thanks for the report. May I ask you to run with -ergo.norecover?

Of course
> go run .\producer --ergo.norecover --ergo.trace --ergo.warning

to stop press Ctrl-C

Starting nodes 'producer@localhost'
2023/01/06 17:27:44 Start node with name "producer@localhost" and cookie "cookies"
2023/01/06 17:27:44 Node listener[0] port range: 15000...65000
2023/01/06 17:27:44 Started embedded EMPD service and listen port: 4369
2023/01/06 17:27:44 EPMD accepted new connection from [::1]:64323
2023/01/06 17:27:44 Request from EPMD client: [0 26 120 58 152 77 0 0 6 0 5 0 8 112 114 111 100 117 99 101 114 0 4 17 59 1 0 0]
2023/01/06 17:27:44 [producer@localhost] EPMD client: node registered
2023/01/06 17:27:44 SYSTEM: Application load
2023/01/06 17:27:44 [producer@localhost] CORE registering behavior "system_app" in group "ergo:applications"
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1001>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1001> (registered name: "")
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1002>): system_app_sup
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1002>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1002> (registered name: "system_app_sup")
2023/01/06 17:27:44 [producer@localhost] SUPERVISOR "system_app_sup" with restart strategy: one_for_one[permanent]
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1003>): system_metrics
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1003>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1003> (registered name: "system_metrics")
2023/01/06 17:27:44 [producer@localhost] SYSTEM_METRICS: Init: []etf.Term{node.System{DisableAnonMetrics:false}}
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1002> => <336B493D.0.1003>
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1001> => <336B493D.0.1002>
2023/01/06 17:27:44 [producer@localhost] SYSTEM: Application started
2023/01/06 17:27:44 [producer@localhost] CORE registering behavior "erlang" in group "ergo:applications"
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1004>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1004> (registered name: "")
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1005>): net_kernel_sup
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1005>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1005> (registered name: "net_kernel_sup")
2023/01/06 17:27:44 [producer@localhost] SUPERVISOR "net_kernel_sup" with restart strategy: one_for_one[permanent]
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1006>): net_kernel
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1006>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1006> (registered name: "net_kernel")
2023/01/06 17:27:44 NET_KERNEL: Init: []etf.Term(nil)
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1005> => <336B493D.0.1006>
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1007>): global_name_server
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1007>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1007> (registered name: "global_name_server")
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1005> => <336B493D.0.1007>
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1008>): rex
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1008>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1008> (registered name: "rex")
2023/01/06 17:27:44 REX: Init: []etf.Term(nil)
2023/01/06 17:27:44 [producer@localhost] CORE registering behavior "erpc" in group "ergo:remote"
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1005> => <336B493D.0.1008>
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1009>): observer_backend
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1009>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1009> (registered name: "observer_backend")
2023/01/06 17:27:44 OBSERVER: Init: []etf.Term(nil)
2023/01/06 17:27:44 [producer@localhost] RPC provide: proc_lib:translate_initial_call (gen.RPC)(0x64be20)
2023/01/06 17:27:44 [producer@localhost] RPC provide: appmon_info:start_link2 (gen.RPC)(0x64c060)
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1005> => <336B493D.0.1009>
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1010>): erlang
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1010>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1010> (registered name: "erlang")
2023/01/06 17:27:44 ERLANG: Init: []etf.Term(nil)
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1005> => <336B493D.0.1010>
2023/01/06 17:27:44 [producer@localhost] LINK process: <336B493D.0.1004> => <336B493D.0.1005>
Spawn producer on 'producer@localhost'
2023/01/06 17:27:44 [producer@localhost] CORE registering name (<336B493D.0.1011>): producer
2023/01/06 17:27:44 [producer@localhost] CORE registering process: <336B493D.0.1011>
2023/01/06 17:27:44 [producer@localhost] CORE spawn a new process <336B493D.0.1011> (registered name: "producer")
2023/01/06 17:27:52 EPMD accepted new connection from [::1]:64336
2023/01/06 17:27:52 Request from EPMD client: [0 26 120 58 153 77 0 0 6 0 5 0 8 99 111 110 115 117 109 101 114 0 4 17 59 1 0 0]
2023/01/06 17:27:52 EPMD accepted new connection from [::1]:64337
2023/01/06 17:27:52 Request from EPMD client: [0 9 122 112 114 111 100 117 99 101 114]
2023/01/06 17:27:52 [producer@localhost] NETWORK accepted new connection from <IP_ADDRESS>:64339
2023/01/06 17:27:52 [producer@localhost] NETWORK registering peer "consumer@localhost"
2023/01/06 17:27:52 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:52 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:52 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:52 [producer@localhost] CONTROL MONITOR [from consumer@localhost]: etf.Tuple{19, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "producer", etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}
2023/01/06 17:27:52 [producer@localhost] CONTROL MONITOR [from consumer@localhost]: etf.Tuple{19, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, "producer", etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23b, 0x5cdf, 0x0, 0x0, 0x0}}}
2023/01/06 17:27:52 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:52 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:52 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:52 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:27:52 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23b, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"subscribe", "nil", etf.List{etf.Tuple{"min_demand", 1}, etf.Tuple{"max_demand", 2}, etf.Tuple{"cancel", 0}, etf.Tuple{"manual", false}, etf.Tuple{"partition", 0}}}}
New subscription from: <A8F228F6.0.1011> with min: 1 and max: 2
2023/01/06 17:27:52 [producer@localhost] MONITOR process: <336B493D.0.1011> => <A8F228F6.0.1011>
2023/01/06 17:27:52 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:52 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:27:52 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23b, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 2}}
Producer: just got demand for 2 event(s) from <A8F228F6.0.1011>
2023/01/06 17:27:52 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "", "producer"}
Producer. Generate random numbers and send them to consumers... [41 96 58 14 77]
2023/01/06 17:27:52 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:52 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:52 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:52 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:52 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 4}}
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"subscribe", "nil", etf.List{etf.Tuple{"min_demand", 2}, etf.Tuple{"max_demand", 4}, etf.Tuple{"cancel", 0}, etf.Tuple{"manual", false}, etf.Tuple{"partition", 1}}}}
New subscription from: <A8F228F6.0.1012> with min: 2 and max: 4
2023/01/06 17:27:53 [producer@localhost] MONITOR process: <336B493D.0.1011> => <A8F228F6.0.1012>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:53 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23b, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 2}}
Producer: just got demand for 2 event(s) from <A8F228F6.0.1011>
Producer. Generate random numbers and send them to consumers... [10 31 10 20 88]
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:53 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23b, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 2}}
Producer: just got demand for 2 event(s) from <A8F228F6.0.1011>
Producer. Generate random numbers and send them to consumers... [28 60 49 37 48]
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:53 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:53 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1011>
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:54 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <336B493D.0.1011>
2023/01/06 17:27:54 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"retry-ask", 0x4}}
Producer: just got demand for 4 event(s) from <A8F228F6.0.1012>
Producer. Generate random numbers and send them to consumers... [9 61 38 49 40 9 74]
2023/01/06 17:27:54 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1012>
2023/01/06 17:27:54 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1012>
2023/01/06 17:27:54 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:54 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:54 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:27:54 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 4}}
2023/01/06 17:27:54 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "", "producer"}
Producer: just got demand for 4 event(s) from <A8F228F6.0.1012>
2023/01/06 17:27:54 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
Producer. Generate random numbers and send them to consumers... [82 57 0 58 60 97 59]
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:54 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1012>
2023/01/06 17:27:54 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, "", "producer"}
2023/01/06 17:27:54 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:27:54 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:55 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:27:55 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 4}}
Producer: just got demand for 4 event(s) from <A8F228F6.0.1012>
Producer. Generate random numbers and send them to consumers... [95 61 88 36 60 98 26]
2023/01/06 17:27:55 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:55 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1012>
2023/01/06 17:27:55 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:27:55 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a068, ID:[5]uint32{0x3a23d, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 4}}
Producer: just got demand for 4 event(s) from <A8F228F6.0.1012>
Producer. Generate random numbers and send them to consumers... [47 96 46 5 55 66 39]
2023/01/06 17:27:55 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:27:55 [producer@localhost] CORE route message by pid (remote) <A8F228F6.0.1012>
2023/01/06 17:27:57 Request from EPMD client: []
2023/01/06 17:27:57 EPMD unregistering node: 'consumer'
2023/01/06 17:27:57 [producer@localhost] NETWORK unregistering peer consumer@localhost
2023/01/06 17:27:57 [producer@localhost] MONITOR NODE  down: consumer@localhost
2023/01/06 17:27:57 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:57 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:27:57 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <336B493D.0.1011>
2023/01/06 17:27:57 m: gen.MessageDown{Ref:etf.Ref{Node:"producer@localhost", Creation:0x63b8a060, ID:[5]uint32{0x33227, 0x5cdf, 0x0, 0x0, 0x0}}, ProcessID:gen.ProcessID{Name:"", Node:""}, Pid:etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a068}, Reason:"noconnection"}
2023/01/06 17:27:57 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <336B493D.0.1011>
2023/01/06 17:27:57 m: gen.MessageDown{Ref:etf.Ref{Node:"producer@localhost", Creation:0x63b8a060, ID:[5]uint32{0x33228, 0x5cdf, 0x0, 0x0, 0x0}}, ProcessID:gen.ProcessID{Name:"", Node:""}, Pid:etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a068}, Reason:"noconnection"}
2023/01/06 17:27:59 EPMD accepted new connection from [::1]:64344
2023/01/06 17:27:59 Request from EPMD client: [0 26 120 58 153 77 0 0 6 0 5 0 8 99 111 110 115 117 109 101 114 0 4 17 59 1 0 0]
2023/01/06 17:27:59 EPMD accepted new connection from [::1]:64345
2023/01/06 17:27:59 Request from EPMD client: [0 9 122 112 114 111 100 117 99 101 114]
2023/01/06 17:28:00 [producer@localhost] NETWORK accepted new connection from <IP_ADDRESS>:64347
2023/01/06 17:28:00 [producer@localhost] NETWORK registering peer "consumer@localhost"
2023/01/06 17:28:00 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a06f}, "", "producer"}
2023/01/06 17:28:00 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:28:00 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:28:00 [producer@localhost] CONTROL MONITOR [from consumer@localhost]: etf.Tuple{19, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a06f}, "producer", etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5283, 0x5cdf, 0x0, 0x0, 0x0}}}
2023/01/06 17:28:00 [producer@localhost] CONTROL MONITOR [from consumer@localhost]: etf.Tuple{19, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a06f}, "producer", etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5285, 0x5cdf, 0x0, 0x0, 0x0}}}
2023/01/06 17:28:00 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a06f}, "", "producer"}
2023/01/06 17:28:00 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:28:00 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:28:00 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a06f}, "", "producer"}
2023/01/06 17:28:00 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:28:00 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a06f}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5283, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 2}}
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1011>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f3, Creation:0x63b8a06f}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5283, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"subscribe", "nil", etf.List{etf.Tuple{"min_demand", 1}, etf.Tuple{"max_demand", 2}, etf.Tuple{"cancel", 0}, etf.Tuple{"manual", false}, etf.Tuple{"partition", 0}}}}
New subscription from: <A8F228F6.0.1011> with min: 1 and max: 2
2023/01/06 17:28:00 [producer@localhost] MONITOR process: <336B493D.0.1011> => <A8F228F6.0.1011>
2023/01/06 17:28:00 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a06f}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5285, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"subscribe", "nil", etf.List{etf.Tuple{"min_demand", 2}, etf.Tuple{"max_demand", 4}, etf.Tuple{"cancel", 0}, etf.Tuple{"manual", false}, etf.Tuple{"partition", 1}}}}
New subscription from: <A8F228F6.0.1012> with min: 2 and max: 4
2023/01/06 17:28:00 [producer@localhost] MONITOR process: <336B493D.0.1011> => <A8F228F6.0.1012>
2023/01/06 17:28:00 [producer@localhost] NETWORK found active connection with consumer@localhost
2023/01/06 17:28:00 [producer@localhost] CONTROL REG_SEND [from consumer@localhost]: etf.Tuple{6, etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a06f}, "", "producer"}
2023/01/06 17:28:00 [producer@localhost] CORE route message by gen.ProcessID (local) <producer:producer@localhost>
2023/01/06 17:28:00 [producer@localhost] CORE route message by pid (local) <336B493D.0.1011>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER <336B493D.0.1011> got message from <A8F228F6.0.1012>
2023/01/06 17:28:00 [producer@localhost] GEN_SERVER etf.Pid{Node:"producer@localhost", ID:0x3f3, Creation:0x63b8a060} got simple message etf.Tuple{"$gen_producer", etf.Tuple{etf.Pid{Node:"consumer@localhost", ID:0x3f4, Creation:0x63b8a06f}, etf.Ref{Node:"consumer@localhost", Creation:0x63b8a06f, ID:[5]uint32{0x5285, 0x5cdf, 0x0, 0x0, 0x0}}}, etf.Tuple{"ask", 4}}
Producer: just got demand for 4 event(s) from <A8F228F6.0.1012>
Producer. Generate random numbers and send them to consumers... [95 69 87 59 44 97 27]
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x58 pc=0x5e46bb]

goroutine 122 [running]:
github.com/ergo-services/ergo/gen.(*dispatcherPartition).Dispatch(0xc0000982f0, {0x689ae0?, 0xc00008d140}, {0xc000164280, 0x7, 0x46b8ce?})
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/stage_dispatcher.go:479 +0x4db
github.com/ergo-services/ergo/gen.(*StageProcess).SendEvents(0xc0000ea000, {0xc000164280?, 0xc0000f5888?, 0x2?})
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/stage.go:352 +0x74
main.(*Producer).HandleDemand(0x0?, 0x0?, {{{0xc00047a060, 0x12}, 0x3f4, 0x63b8a06f}, {{0xc00047a078, 0x12}, 0x63b8a06f, {0x5285, ...}}}, ...)
        D:/ergoex/producer/producer.go:40 +0x185
github.com/ergo-services/ergo/gen.(*StageProcess).handleProducer(0xc0000ea000, {{{0xc00047a060, 0x12}, 0x3f4, 0x63b8a06f}, {{0xc00047a078, 0x12}, 0x63b8a06f, {0x5285, 0x5cdf, ...}}}, ...)
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/stage.go:914 +0x604
github.com/ergo-services/ergo/gen.(*StageProcess).handleStageRequest(0x100000001?, {{0xc000212090, 0xd}, {{{0xc00047a060, 0x12}, 0x3f4, 0x63b8a06f}, {{0xc00047a078, 0x12}, 0x63b8a06f, ...}}, ...})
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/stage.go:612 +0x3bb
github.com/ergo-services/ergo/gen.(*Stage).HandleInfo(0x0?, 0xc0000ac300, {0x6a2460?, 0xc000238288})
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/stage.go:497 +0x2c5
github.com/ergo-services/ergo/gen.(*ServerProcess).handleInfo(0xc0000ac300, {{0x6a2460?, 0xc000238288?}})
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/server.go:571 +0xd5
github.com/ergo-services/ergo/gen.(*ServerProcess).waitCallbackOrDeferr.func3()
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/server.go:463 +0x2e
created by github.com/ergo-services/ergo/gen.(*ServerProcess).waitCallbackOrDeferr
        desktop/go/pkg/mod/github.com/ergo-services/ergo@v1.999.220/gen/server.go:461 +0x32a
exit status 2

Thanks. It helped. Nice catch.
PS: I wouldn't recommend to use this approach https://gist.github.com/davidroman0O/db04fa224c710a4ae33d53d28304e88b#file-consumer-go-L88
for ergoNode.IsAlive() {
		if len(previousNodes) != len(ergoNode.Nodes()) {
			isConnected = false
		}
		if !isConnected {
			if err := ergoNode.Connect("producer@localhost"); err != nil {
				isConnected = false
			}
			if !strings.Contains(strings.Join(ergoNode.Nodes(), " "), "producer@localhost") {
				isConnected = false
			} else {
				isConnected = true
			}
		}
		previousNodes = ergoNode.Nodes()
	}

This code burns the CPU.
The better way is using ergoNode.Wait() to lock the main goroutine and use one of the approaches to monitor connections

gen.Process.MonitorNode(...) for the existing connection
gen.Process.MonitorEvent(node.EventNetwork) - you will receive node.MessageEventNetwork{...} message on connection/disconnection node.

This code burns the CPU.


Create crypto module for export

Many of the crypto functions, like b58cdecode, can be utilized by other go-based applications doing Tezos stuff. By putting these functions in their own /crypto module, and marking all functions as exportable, go-tezos can continue using them, plus other applications too vs re-inventing/copying code.

Seems they already are in v3?
include github.com/goat-systems/go-tezos/internal/crypto/  ?

I can do this. I will review the package before making it public.


Add alternative behavior for Constructr actor

The Constructr supervisor actor has a logic according to which:

Leaving the cluster also leads to actor-system termination
Failure of the underlying FSM must eventually lead to actor-system termination

About the first point, it seems redundant and restrictive at the same time to take that decision at the Constructr level: MemberRemoved is an event that can be easily handled by the user-space (as it is akka public API), and there may be multiple cases (like our own) that the actor-system must resume operations even after leaving the cluster. Generally, shutting down the actor-system just seems to be out of the scope of Constructr as an extension.
About the second point, for reasons similar to the above, what would seem more appropriate would be for Constructr to notify the user-space about its terminated state, and let it decide how to handle it (e.g. continue operation without clustering, or shutdown but perform some sort of cleanup first, etc)
The suggested approach here would be to propagate the failure related decision making to the user-space by elevating the ConstructrExtension class; its functionality can be extended so that consumers may register event handlers for Constructr failure, in the same fashion as the akka "native" extensions (e.g. the 'registerOn...handlers of theCluster` extension).
If backwards compatibility is required for these behaviors (i.e. terminate actor system on failures), we can add some configuration setting that will switch them on/off.
Also, given that the ConstructrExtension will be used to provide new functionality, it will be also a good chance to make it abide by the latest akka extension interface, as per akka 2.5.0 the ExtensionKey class has been deprecated. This will have the extra benefit of course that the ConstructrExtension will be initializable both from configuration and source code as well.

Good thoughts! This will become a hell of a rewrite ;-)
BTW, backwards compatibility is not required, because we're still in 0.x land. Let's strive for optimal simplicity instead of adding complexity.

Excellent! I'm right on it then :D


Add optional native SSL support

Description

Change SSLFactory to an interface instead of a concrete class.
Add Netty SslContext based implementation that can use the
netty-tcnative library. This can potentially provide better SSL
performance than the default JDK SSLEngine implementation.
Allow NettyPerfClient to take in a test length and use OpenSSL.

Testing

Local Perf Test Results

Codecov Report

Merging #907 into master will decrease coverage by 0.07%.
The diff coverage is 41.26%.

@@             Coverage Diff              @@
##             master     #907      +/-   ##
============================================
- Coverage     67.23%   67.16%   -0.08%
- Complexity     4292     4298       +6
============================================
  Files           357      359       +2
  Lines         28098    28134      +36
  Branches       3570     3578       +8
============================================
+ Hits          18891    18895       +4
- Misses         8217     8235      +18
- Partials        990     1004      +14

Impacted Files
Coverage Δ
Complexity Δ

...rc/main/java/com.github.ambry.rest/RestServer.java
96.52% <ø> (ø)
12 <0> (ø)
:arrow_down:

....github.ambry.router/NonBlockingRouterFactory.java
79.31% <ø> (ø)
4 <0> (ø)
:arrow_down:

...ithub.ambry/tools/perf/rest/PerfRouterFactory.java
0% <ø> (ø)
0 <0> (ø)
:arrow_down:

...java/com.github.ambry.rest/NettyServerFactory.java
100% <ø> (ø)
10 <0> (ø)
:arrow_down:

...ain/java/com.github.ambry.rest/RestServerMain.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...thub.ambry/tools/admin/SafeServerShutdownTool.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

....github.ambry/tools/perf/rest/NettyPerfClient.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...va/com.github.ambry/tools/admin/BlobValidator.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

.../com.github.ambry/tools/admin/ServerAdminTool.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...b.ambry.network/BlockingChannelConnectionPool.java
63.15% <0%> (-2.5%)
7 <0> (-1)

... and 38 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 1c2acd6...eba681c. Read the comment docs.

The sslFactory is instantiated as JdkSslFactory  in ServerAdminTool.java, SafeServerShutdownTool.java etc. I am thinking if we use NettySslFactory later, do we have to make a bunch of code changes together with config changes?

@jsjtzyy, that is a good point. I will replace all of the unneeded references to JdkSslFactory and instead instantiated the SSLFactory via reflection in those places so that it is easily configurable.


nothingtoseehere

This is how our fork is updated from the origin. Then we can merge into our fork.
in error, sorry, wrong direction . .

Please don't test on public repos!  Not helpful to anyone 😟


add a python layer

Added a Python layer and included some of the common packages for hydrology computations.

Thanks!! I'll work on getting the linux image to work like this one.