Running an async task in a synchronous application

Hi,
I am looking to do what I hope is a very simple task (at least in my head) but I'm struggling to wrap my head around how amphp is supposed to work. I have a synchronous application with a problem that I thought amphp would be perfect to solve. Picture the following:

A client uploads a video to our site via AJAX.
Our site sends the video to a 3rd-party site which automatically generates a thumbnail for the video.
The 3rd-party site takes some time to generate the thumbnail depending on the video size/length etc. Unfortunately, there's no way to track this and  the 3rd-party site does not inform us when it is ready either.

Given the above scenario, our site basically has to query the 3rd-party site every 5 seconds for the thumbnail from the moment the video is successfully uploaded to the 3rd-party site. This process could take anywhere from a few seconds to minutes. I figured doing this particular task via an async PHP script/function would be the best solution and that's where amphp comes in. So the above scenario with amphp involved becomes this:

A client uploads a video to our site via AJAX.
Our site sends the video to a 3rd-party site which automatically generates a thumbnail for the video.
An amphp async task is created to get the thumbnail from the 3rd-party site.
The AJAX response is returned.
Sometime later... the DB is updated with the thumbnail results from the async task in step 3. I also plan to send a ZMQ request back to the client if they're still online to update the thumbnail.

I thought I could do the above by following this example (from amphp.org/amp/promises/):
use Amp\Loop;

function asyncMultiply($x, $y)
{
    // Create a new promisor
    $deferred = new Amp\Deferred;

    // Resolve the async result 30s from now
    Loop::delay($msDelay = 30000, function () use ($deferred, $x, $y) {
        $deferred->resolve($x * $y);
    });

    return $deferred->promise();
}

// Some code here...
$promise = asyncMultiply(6, 7);
$result = Amp\Promise\wait($promise);

var_dump($result); // int(42)
// More code here...

However, the above example must have gone right over my head because when I ran that directly in my synchronous application, it seemed to just wait for the 30 seconds. My expectation was that this was an async task, and the Some code here and More code here would execute without waiting for the result from the asyncMultiply(6, 7) since that was an async task. What am I missing?
Furthermore, presuming I'm not far off from achieving my task, would this approach be a problem if there were a few clients simultaneously uploading a video to our site via AJAX (i.e. our application would be running multiple async tasks at the same time) ?
Note: Not sure if relevant but the application is running in a WordPress/PHP-FPM environment.

Amp is great for this but it is non-trivial to integrate into conventional PHP applications. Since you mentioned AJAX I am assuming you have conventional PHP deployment where each PHP process handles a single web request. In this typical execution context, you have a PHP script that is executed in it's entirety for a single HTTP request, usually returning an HTTP response, and exiting.
Amp is an event loop that will run until there is nothing else to run on the loop. So once you start an Amp event loop, it blocks until completion, and provides an API for you to run tasks on the event loop. If you re-create your example with a single PHP script and run it from the command line, you will see the exact same behavior: your command line script runs synchronously for 30 seconds and exits. The event loop has one task to run after a delay of 30 seconds, and exits after all tasks complete. The asynchronous power of Amp comes when you use it to run your entire application, allowing any task (including handling HTTP requests/responses) to be run on the event loop. This lets you do things like immediately return a response to the client, and simultaneously kick off a long-running job on the event loop.
Now with your existing application, you have a couple options.

Since you're already using a message-broker (ZMQ), that is an ideal solution for handling async/long-running jobs in conventional PHP applications. You can use ZMQ to communicate between your current application, and an Amp event loop to run jobs.
You can also just use shell_exec to kick off background process as well right after the upload completes. Like shell_exec("poll_api.php &")
You can skip Amp for now and create a PHP script that polls for jobs from ZMQ, looking for messages to run that job (see https://github.com/zeromq/php-zmq/blob/master/examples/simple-server.php).

Thanks for your suggestions, they're very helpful. I was actually just thinking of doing your first suggestion but I might be missing something.
For contextual purposes, I have a CLI-ran PHP Ratchet script with websockets. This is where I send my ZMQ requests to as well. It also tracks clients logging on and off the site so it is an infinitely running Event Loop (server). I thought that if I ran the exact same example (I posted earlier) within the CLI-ran PHP Ratchet event loop's onMessageReceived() function, that I'd be able to execute the task asynchronously. But I must be missing something because the code I had put after the async task only executed 30 seconds later. Am I missing an amp event loop that I need to instantiate myself on another CLI-ran PHP script for the example I copied from the docs to work? If so, is it possible to somehow get this async task to use my PHP Ratchet event loop (it's a React loop if that makes a difference) somehow haha?
As for your 2nd suggestion, I did actually try that at first and got it to work (although with exec as opposed to shell_exec) exactly how I wanted it to, but I had 2 main concerns with it, specifically:

Passing arrays/objects as parameters to the script.
What happens when a 2nd client uploads a video at the same time (i.e. would 2 background processes run simultaneously and if so how many simultaneous background processes can the system handle and what happens when it can't OR would they be scheduled to run sequentially).

Hey @fuad-tareq, thank you for the detailed summary of your current situation. It really helps giving you the right hints. As @bennnjamin already mentioned, thing are only async / non-blocking within the event loop. If you're already running Ratchet, that's great! Ratchet makes use of ReactPHP, which is another event loop implementation in PHP. However, we've got you covered with https://github.com/amphp/react-adapter. It let's you run any Amp / ReactPHP application in combination on a single event loop. Without the adapter, each event loop would block the other from executing. Given that, I'd probably move polling into the Ratchet process.

In that case you definitely have the right setup for what you're trying to achieve. This line $result = Amp\Promise\wait($promise); will cause your application to block until the promise resolves so if your server has this code exactly as written, any code after that line will be executed 30 seconds later. Instead, you want to use
$promise->onResolve(function ($exception, $value) {
  //handle $exception, or $value here
});

which is a callback that will be ran after your promise completes, so 30 seconds later in your case. This will not block the event loop.
exec/shell_exec is not the most scalable solution for the reasons you mentioned. Since you already have a separate PHP process running an event loop, I would not recommend it. Amp or React is a far superior solution. To answer the question though 1) Passing data to the script is done by serializing it, typically with json_encode and json_decode 2) yes you would get two background processes and it may not be scalable depending on your client load. There are more robust solutions to allow X number of jobs to run simultaneously, etc.

Ah, I must be doing something really silly now because I did exactly as you suggested @bennnjamin but it only partially worked. I have this exact snippet in my onMessageReceived() handler in the React event loop:
function asyncMultiply($x, $y) {
  // Create a new promisor
  $deferred = new \Amp\Deferred;

  // Resolve the async result 30s from now.
  Loop::delay($msDelay = 30000, function () use ($deferred, $x, $y) {
    $deferred->resolve($x * $y);
  });

  return $deferred->promise();
}

if ($data['w_async'] === 'true') {
  error_log('async start');
  $promise = asyncMultiply(6, 7);
  $promise->onResolve(function ($exception, $value) {
      error_log('onComp: ' . print_r($exception, true));
      error_log('onComp: ' . print_r($value, true));
   });
  error_log('async end');
}

And I'm getting the following output immediately on execution in my error_log:
async start
async end

What I expected:
async start
async end
... 30 seconds later ...
onComp ...
onComp ...

So while it is no longer blocking my event loop, I am not getting the onComp error_logs (inside the onResolve) I expect 30 seconds later. What am I missing?
PS: @kelunik's brilliant answer went straight over my head, not sure if he means that there's a more efficient way to achieve what I am intending using amphp's React adapter... or perhaps I'm supposed to combine his answer with yours in order to get the promise to work as intended?

You do need to ensure you are using amphp/react-adapter as @kelunik mentioned. This is because your application can only have one event loop running. Both Amp and React provide their own event loop implementations. The adapter allows you to mix both Amp and React libraries in the same application, which is great!
You could also try just getting the example to work with React's own Promise library (https://github.com/reactphp/promise) since it seems you already have an event loop running under React.

Thanks for the quick response. Upon looking more into this, I am a bit confused because it seems there's React PHP (as referenced by you which is on v1.3 right now) and there's react/zmq which is what I have installed and it's on version 0.3. I suspect upgrading just the react library to the latest might break things with zmq. Would your react-adapter still work with this setup?

I'm not familiar with React's versioning semantics so you may need to open an issue with them. react-adapter allows you to run any React PHP library the expects a LoopInterface on the Amp event loop. If you are using React, it might be simpler to stick with only react libraries for now (dropping any Amp libs), or create a simple project that uses react-adapter to run React libraries on the Amp event loop.

Thanks for all your help


Upgrade to EF Core 2.1

Use value conversions

Done by https://github.com/loic-sharma/BaGet/commit/c6a5b889f18d3cbd149fa71630f152c61df53985


Type editor does not append structure members to correct place when structure size manually set

Version and Platform (required):

Binary Ninja Version: 3.4.4189-dev
OS: Windows 11, x64

Bug Description:
See the GIF please.
Steps To Reproduce:

Open types sidebar
Create a structure and give it a size in Create Structure dialog
Click end of the structure and press 4 in order to append a member in 4 byte size
See that member append in the beginning of the structure

Expected Behavior:
I expect it to append it to end of the structure
Screenshots:

This is fixed in the new Type Browser, available as of 3.6.4615-dev


ENS reveal phase error - Please enter valid amount.

Hello, I am trying to reveal a bid. I enter the Long string of text I copied. It populates the Name:, Bid Amount: and Secret Phrase: correctly. I click Reveal Your Bid and it reports the error "Please enter valid amount".
But I have entered the correct bid amount. If I hover my mouse over the Bid Amount field, it says "Please enter a valid value. The two nearest valid values are 0 and 1".

Your bid is < 0.01

No, my bid is 0.0.1 exactly. Plus 0.01 to hide the bid.

I thought we fixed this? Do you have less than .01 eth in your account currently?

Any chance you can share the name?

Do you use MEW 3.8.0?

Nope using MEW 3.7.8. Yes I have less than 0.01 ETH. I will add some more and try again.

Ahh. Yeah, either update MEW or add 0.01 ETH to your account. This was such a weird mismatched error message

OK it worked with extra ETH in the wallet. Thanks. I like MEW. Have installed 3.8.0 on another Chrome instance and will upgrade this one too.

Hey guys I have .01 ETH in my account, and trying to make a bid of .01 for my .eth domain name, but I keep getting the message requesting a valid amount.
What is the valid amount??

I don't get this.
Ok I have 0.01 in my account, I made the Bid Mask 0.05 and it turned green, however no number I enter in the actual Bid amount works, if I go above .05 both turn red?
What are the rules for this?

Ok I added another .005 and now it works, BUT it's now asking for another 0.01 to cover the cost off the Gas. Wish it had mentioned that before hand :(

Ah, so this "Gas" thing is the issue, gotcha. I have 0.002 ETH in my account and this wasn't making any sense. The website should be updated to reflect this.


gnomeExtensions: auto-update

Things done
I ran the following commands:
cd pkgs/desktops/gnome/extensions/
./update-extensions.py

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

I got the following error locally:
gtk4-ding_at_smedius.gitlab.com.patch> building '/nix/store/hdamyxbc1m2sraihk4xbwxx0kzfirrfa-gtk4-ding_at_smedius.gitlab.com.patch.drv'
gnome-shell-extension-gtk4-desktop-icons-ng-ding> building '/nix/store/c4gfxgjh8hgjxc297h1irvpb2wyqj2kw-gnome-shell-extension-gtk4-desktop-icons-ng-ding-70.drv'
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Running phase: unpackPhase
gnome-shell-extension-gtk4-desktop-icons-ng-ding> unpacking source archive /nix/store/hzfpbl9jfckg2q3pkz0xyfspr0j78dqx-source
gnome-shell-extension-gtk4-desktop-icons-ng-ding> source root is source
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Running phase: patchPhase
gnome-shell-extension-gtk4-desktop-icons-ng-ding> applying patch /nix/store/33vlfajgg3p9p3nq7wkv89bs1islgb63-gtk4-ding_at_smedius.gitlab.com.patch
gnome-shell-extension-gtk4-desktop-icons-ng-ding> patching file app/fileItemMenu.js
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #1 FAILED at 683.
gnome-shell-extension-gtk4-desktop-icons-ng-ding> 1 out of 1 hunk FAILED -- saving rejects to file app/fileItemMenu.js.rej
gnome-shell-extension-gtk4-desktop-icons-ng-ding> patching file app/preferences.js
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #1 succeeded at 29 with fuzz 1 (offset -2 lines).
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #2 succeeded at 37 with fuzz 1 (offset -2 lines).
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #3 succeeded at 49 with fuzz 1 (offset 1 line).
gnome-shell-extension-gtk4-desktop-icons-ng-ding> patching file dingManager.js
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #1 succeeded at 401 (offset 4 lines).
gnome-shell-extension-gtk4-desktop-icons-ng-ding> Hunk #2 succeeded at 425 with fuzz 2 (offset 4 lines).
error: builder for '/nix/store/c4gfxgjh8hgjxc297h1irvpb2wyqj2kw-gnome-shell-extension-gtk4-desktop-icons-ng-ding-70.drv' failed with exit code 1;
       last 10 log lines:
       > patching file app/fileItemMenu.js
       > Hunk #1 FAILED at 683.
       > 1 out of 1 hunk FAILED -- saving rejects to file app/fileItemMenu.js.rej
       > patching file app/preferences.js
       > Hunk #1 succeeded at 29 with fuzz 1 (offset -2 lines).
       > Hunk #2 succeeded at 37 with fuzz 1 (offset -2 lines).
       > Hunk #3 succeeded at 49 with fuzz 1 (offset 1 line).
       > patching file dingManager.js
       > Hunk #1 succeeded at 401 (offset 4 lines).
       > Hunk #2 succeeded at 425 with fuzz 2 (offset 4 lines).
       For full logs, run 'nix log /nix/store/c4gfxgjh8hgjxc297h1irvpb2wyqj2kw-gnome-shell-extension-gtk4-desktop-icons-ng-ding-70.drv'.

I'll see if I can fix it...

I don't know if this PR is relevant but gtk4-ding is currently broken. There's no icon shown on the desktop even if the plugin has been enabled.

Superseded by #285869.


[Proposal] A “expression-binding” api to avoid gesture move js-native bridge cost

Everyone knows when response to a gesture event  like pan, there is three steps:
start ==> move ==> end(cancel)
For "start", "end" and "cancel" event, it's OK to raise the event to JS. But for move event, it's triggering too rapidly and there is not enough time for calling js-native bridge. At this state, it's really hard to implement fancy effect related to gesture with weex
To resolve this issue, I'm thinking of a “expression-binding” system, described as following:

When gesture start, (js code) create a "expression-binding" between a property and the gesture.
During the gesture moving process, native code automatically execute the expression with argument from   gesture and set it to the binding property.
When gesture is end or canceled, destroy the binding.

The code might like the following
element.onPanGestureStart = function(event){
    event.createBinding(element, "transform.translate", "{x: x, y: y+10 }")
    event.createBinding(element, "opacity", " (abs(x) + abs(y)) / 100 ")
}

Now, the most necessary gesture is pan and two-finger touching.
Available variables in expression:
pan
    x : the displacement x from original point
    y : the displacement y from original point
    translate:  the translate of the point

two-finger
    x : the displacement x from original point
    y : the displacement y from original point
    translate: the translate of the two points' middle point
    rotate : the rotation from original line(in rad)
    scale : the scaling rate from original line
    transform: the combined transform of the two finger points

Available tool-functions in expression:
    abs
    acos
    asin
    atan
    atan2
    ceil
    cbrt
    cos
    exp
    floor
    log
    max
    min
    pow
    round
    sign
    sin
    sqrt
    tan

Available consts in expression:
    E
    LN10
    LN2
    PI

Available operators in expression:
  ( … )
  ! …
  ~ …
  + …
  - …
  … * …
  … / …
  … % …
  … + …
  … - …
  … << …
  … >> …
  … >>> …
  … < …
  … <= …
  … > …
  … >= …
  … == …
  … != …
  … === …
  … !== …
  … & …
  … ^ …
  … | …
  … && …
  … || …
  … ? … : …

Interface design:
event
    createBinding
        parameters:
             @element : the element to bind to the event
             @propertyPath: the property path of the element
             @expression: the property value expression
             @rangeCheckExpression[opt]: A expression to check if the bind will be execute, returns true of false
        return value
             undefined

I do remember when a pen drawing on a canvas , the basic principle is logging what coordinates the pen reached.  here's we need an array to log it, Queue, FIFO. .. tbc

Great! contribution welcome. 😃

It's absolutely useful to do better perf for gesture events model. My concern is does it be enough for some extreme cases or boundary conditions? For example an element should be stoped when people move it out of the screen by an "expression-binding". It's common and how to finish it with our current design?
Thanks.

I think this proposal can solve some problems related to js-native bridge communication.

Boht js->native and native-> js communication will cause precision lost as <meta name="viewport" content="750, initial-scale=1"> is set by default.

As sampling problem in pan gesture, there will also be precision lost.

js->dom->ui and ui->js threads communication may delay the UI response to user's action

How to use it?Have some exmple code?I can't use it in weex version 2.0.

This PR/issue doesn't receive response since Weex migrated to Apache two years ago and this repository is no longer active yet.
Feel free to ask question in new repository and thanks for your contribution.

This issue is outdated for a long time and will be closed now. You can create a new one if you still have questions.

This issue is outdated for a long time and will be closed now. You can create a new one if you still have questions.


Technical cooperation

Hello, we are very interested in your open source code, I don't know if I can cooperate. We are a start-up company from China and are currently working on face recognition research and development. We are willing to pay some compensation for research and development. I hope we can cooperate. Live detection is used on Android. If you are willing to cooperate

I am an University student. My graduation project is Live detection used on Android. If you are interested about me, please contact me via<EMAIL_ADDRESS>.

@huillll I am an University student. My graduation project is Live detection used on Android. If you are interested about me, please contact me via<EMAIL_ADDRESS>.


XWayland Apps Not Accepting Mouse Input

I just started to use Hyprland and was moving over my Sway config when at a certain point all XWayland apps stopped accepting mouse input, though keyboard input was still working. Tried restarting Hyprland and using the latest master branch via the hyprland-git AUR package. Unfortunately to no avail. Unsure what else to tell you. Verified that it's an XWayland specific issue as VS Code in XWayland has the issue, running it with Wayland native enabled does not have the issue. Also verified it with xwininfo.

Config used is shown below, but also occurs with the sample config: https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.conf
Tested on 0.25.0 and 9f8c5cb63c239ffd09b69cb0c635e8870dbd667e.
All of my Hyprland session logs: https://gist.github.com/AndreasBackx/f30037f6f65c386a784f6e2dab3c173a

#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#

# autogenerated = 1 # remove this line to remove the warning

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto

monitor=desc:Dell Inc. DELL U2515H 9X2VY4B101CL, 2560x1440, 0x30, 1, transform, 1
monitor=desc:Acer Technologies XF270HU T78EE0048521, 2560x1440@144Hz, 1440x570, 1
monitor=desc:Dell Inc. DELL U2515H 9X2VY4B101BL, 2560x1440, 40000x0, 1, transform, 3

# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
exec-once = waybar

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# Some default env vars.
env = XCURSOR_SIZE,24

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = no
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 20
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    blur = yes
    blur_size = 3
    blur_passes = 1
    blur_new_optimizations = on

    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_is_master = true
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = off
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic-mouse-v1 {
    sensitivity = -0.5
}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, F, togglefloating,
# bind = $mainMod, P, pseudo, # dwindle
# bind = $mainMod, J, togglesplit, # dwindle

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

###
### Key Bindings
###

# Open terminal
bind = $mainMod, Return, exec, kitty

# Rofi launcher
bind = $mainMod, D, exec, pkill rofi; rofi -show run
bind = $mainMod, Space, exec, pkill rofi; rofi -show run
# Sudo version
# bind = $mainModSHIFT, D, exec, pkill rofi; rofi -show run
# bind = $mainModSHIFT, Space, exec, pkill rofi; rofi -show run
# Emoji picker
bind = $mainModCONTROL, Space, exec, emoji

# Power options
bind = $mainModSHIFT, E, exec, power-options selection

# Screenshot
bind = $mainModSHIFT, S, exec, screenshot
bind = $mainModSHIFTCONTROL, S, exec, grim - | wl-copy

#
# Media
#

    # Volume
    binde = ,XF86AudioRaiseVolume, exec, pamixer --increase 5
    binde = ,XF86AudioLowerVolume, exec, pamixer --decrease 5
    bind = ,XF86AudioMute, exec, pamixer --toggle-mute

    # Controls
    bind = ,XF86AudioPlay, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
    bind = ,XF86AudioStop, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop
    bind = ,XF86AudioPrev, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
    bind = ,XF86AudioNext, exec, dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

Searching ISSUES with keyword Intellij might help you. Likely it's because of focus losing on xwayland apps. windowdance rule might help, I'm not sure but it's worth giving a shot.

Your monitor configurations seem strange, are you using a Nvidia gpu?

monitor=desc:Dell Inc. DELL U2515H 9X2VY4B101BL, 2560x1440, 40000x0, 1, transform, 3 40000, that's a lot.

ah yeah that might cause issues, IIRC X11 supports only up to 32k?

I cannot reverify right now as I'm out of the country without said machines, though from testing XWayland had issues with the default config as well. I'm unsure if I restarted Hyprland in between, though the config was definitely reloaded. I can try again in a month only unfortunately as I'll be away for that long.

I would reduce this number but also you probably need to set a X11 primary monitor by adding exec-once = xrandr --output XWAYLAND0 --primary to your config (xrandr --listmonitors to get the right number). It's common to have issues with XWayland and multiple monitors without it: when you click somewhere XWayland will sometimes be misaligned, it is still accepting mouse input but not where you think 🙃

Thanks! I will report back though it will be a while as I won't be with said machines till the end of June.

i got the same issue, @ThomChroma's fix worked

Sorry forgot to update this issue as I was out of the country for the entirety of June. I've been using Hyprland for a while now without issues.


[bugfix] fix timegrain addon regression

CATEGORY

[x] Bug Fix
[ ] Enhancement (new features, refinement)
[x] Refactor
[x] Add tests
[ ] Build / Development Environment
[ ] Documentation

SUMMARY
Custom timegrains defined in superset_config.py stopped working between 0.32 and 0.34. This fixes the regression and renames some functions and variables to more clearly indicate what is public and private. The tests were also lacking, as they only tested private methods, not the actual end result of making changes to the config file. Now both blacklisted and addon grains are tested properly.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN
Local testing + CI
ADDITIONAL INFORMATION

[ ] Has associated issue: Closes #8162
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

REVIEWERS
@lilila @mistercrunch

Codecov Report

Merging #8165 into master will increase coverage by 7.7%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #8165      +/-   ##
==========================================
+ Coverage   66.06%   73.76%    +7.7%
==========================================
  Files         479      115     -364
  Lines       22930    12057   -10873
  Branches     2524        0    -2524
==========================================
- Hits        15148     8894    -6254
+ Misses       7648     3163    -4485
+ Partials      134        0     -134

Impacted Files
Coverage Δ

superset/db_engine_specs/bigquery.py
52.23% <100%> (ø)
:arrow_up:

superset/db_engine_specs/presto.py
77.8% <100%> (ø)
:arrow_up:

superset/db_engine_specs/drill.py
54.16% <100%> (ø)
:arrow_up:

superset/db_engine_specs/kylin.py
53.84% <100%> (ø)
:arrow_up:

superset/db_engine_specs/db2.py
85.71% <100%> (ø)
:arrow_up:

superset/db_engine_specs/teradata.py
88.88% <100%> (ø)
:arrow_up:

superset/db_engine_specs/athena.py
57.89% <100%> (ø)
:arrow_up:

superset/db_engine_specs/druid.py
100% <100%> (ø)
:arrow_up:

superset/db_engine_specs/impala.py
65% <100%> (ø)
:arrow_up:

superset/db_engine_specs/snowflake.py
59.09% <100%> (ø)
:arrow_up:

... and 375 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 ee24539...2609c3b. Read the comment docs.

This should be ready for review.

Thank you @villebro , it works well (at least for mysql db)


Update/sum of multiples

I've left the example function as variadic. I quite like it, and like the original exercise implementer in #53 think it could be a good opportunity to introduce variadic functions. Though I do also realise this goes against the recommendation from @petertseng to just take a slice instead, and could very well be considered inappropriate. I'm happy to change to a slice if preferred.

oh gosh yeah, I totally overlooked the test version, sorry!
Thanks for merging, happy holidays @petertseng! :fireworks:


Fix - Room - Rooms mention list does not appear in message edit mode

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/46889
PROPOSAL: https://github.com/Expensify/App/issues/46889#issuecomment-2271397284
Tests

Go to any room or create new one
Send a message with a room mention
Edit this message by adding or editing room mentions and verify Room mention list appears
Verify the newly added mention is a correct room mention

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/user-attachments/assets/1c5939a3-6f15-45fb-9117-0482c2afe467

Android: mWeb Chrome

https://github.com/user-attachments/assets/32b78c7a-b345-4343-b635-e11d63729d80

iOS: Native

iOS: mWeb Safari

https://github.com/user-attachments/assets/cbb09946-2e18-4950-9cee-ae6c9ee34626

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/9fea2ef1-2122-4e1f-b96a-f1c472b3cf8b

MacOS: Desktop

https://github.com/user-attachments/assets/07228421-00e7-4b18-985e-adaf1e8f9bf8

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

This doesn't work properly for me, but the issue isn't caused by this PR, it's also present on main
Screen.Recording.2024-08-29.at.13.07.25.mov
I wonder what could be the cause. @FitseTLT, could you please check is you're encountering the same problem?

Yep. I did reproduce it but you can type the whole mention instead of selecting from the suggestion to test for this pr.

bump @eVoloshchak

Updated @eVoloshchak

Aand now it's untestable on small screen layout, since you cannot edit the message
This bug is present on staging, should be resolved soon, I'll be monitoring It and will leave a message here when it's resolved
https://github.com/user-attachments/assets/428b9aec-2857-4562-a04e-7773888342c5

Aand now it's untestable on small screen layout, since you cannot edit the message This bug is present on staging, should be resolved soon, I'll be monitoring It and will leave a message here when it's resolved
Screen.Recording.2024-09-04.at.17.53.37.mov

@eVoloshchak This is not a bug. U have to set strict mode false for testing it is already included in our documentations and also I remember I dropped the same note on the other pr you are reviewing.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.


Update the NCP code to use otMessage and otMessageQueue APIs

This change updates the NCP related files to use otMessage and otMessageQueue APIs to replace the direct calls into OpenThread internal Message and MessageQueue classes.

Current coverage is 72.60% (diff: 77.41%)

Merging #1151 into master will decrease coverage by 0.78%

@@             master      #1151   diff @@
==========================================
  Files           128        124     -4
  Lines         17631      17174   -457
  Methods        2496       2430    -66
  Messages          0          0
  Branches       2128       2068    -60
==========================================
- Hits          12940      12470   -470
- Misses         3890       3925    +35
+ Partials        801        779    -22

Powered by Codecov. Last update 3f243ed...bb94ddb

Fixed the issue with the unit test make file.


Remove the use of flask-peewee

This fixes #199

Thanks for doing this - there is a bit more to do however - we should actually remove it from
usage - in tests and setup.py. Do you have time to do that?

Hello, sorry for the late reply. My latest commit does just that, can you have a look and let me know if it looks good?
I'm new to all things open source so forgive any misstep.

Thanks!
Make sure you run:
python setup.py test  build_sphinx
to catch errors like flake8, unit tests, black, formatting.

Thanks for the heads up. It's all done now.


Run WASM-MICRO-RUNTIME on cortex-m7

Hello guys and girls,
thank you for your good work on this runtime.
However, i cant quite understand the porting guide to get this micro-runtime running on a Cortex-m7.
The Porting guide dont tell me which files/folders exactly i need to include to my project.
I think i included the wasm-micro-runtime wrong on my system. i think i didn't do it quite well, so i decide to start from beginning asking you guys now how to do it right.
I use segger-embedded-studio to build my projects and i want the runtime to load a aot-wasm module generated by wasmrc.
It would be nice if someone helps me which files i exactly need to include to my project and which flags i need to run. I use a cortex-m7. There is a linux like OS installed. I dont have a MMU so i want to use a buffer as memory for malloc.

Hi,

The Porting guide dont tell me which files/folders exactly i need to include to my project.
I think i included the wasm-micro-runtime wrong on my system. i think i didn't do it quite well, so i decide to start from beginning asking you guys now how to do it right.

Seems you are not using our cmake build system, if you need to collect the source code manually, you can refer to the Makefile  from some platform. Here is the Makefile from product-mini/platforms/alios-things/aos.mk:
https://github.com/bytecodealliance/wasm-micro-runtime/blob/6847e15f64a6d8c333ba92225425f7c6932a3d30/product-mini/platforms/alios-things/aos.mk#L63-L114
The GLOBAL_INCLUDES are the include dirs, the $(NAME)_SOURCES is the source code you need, you may need to change some platform/arch related files according to your platforms.

I dont have a MMU so i want to use a buffer as memory for malloc.

To use a global buffer as memory, please use WAMR's Alloc_With_Pool mode:
static char global_heap_buf[512 * 1024];
RuntimeInitArgs init_args;
memset(&init_args, 0, sizeof(RuntimeInitArgs));

/* configure the memory allocator for the runtime */
init_args.mem_alloc_type = Alloc_With_Pool;
init_args.mem_alloc_option.pool.heap_buf = global_heap_buf;
init_args.mem_alloc_option.pool.heap_size = sizeof(global_heap_buf);

Please refer to runtime initialization for more details.
As for the build flags, please refer to cmake building configurations
The WAMR_BUILD_XXX are CMake flags, the corresponding C flags are WASM_ENABLE_XXX (except BUILD_TARGET_XXX)
These flags may be useful for your platform:

BUILD_TARGET_ARM
WASM_ENABLE_INTERP=1
WASM_ENABLE_AOT=1
WASM_ENABLE_LIBC_BUILTIN=1
WASM_ENABLE_LIBC_WASI=1

Hi,

The Porting guide dont tell me which files/folders exactly i need to include to my project.
I think i included the wasm-micro-runtime wrong on my system. i think i didn't do it quite well, so i decide to start from beginning asking you guys now how to do it right.

Seems you are not using our cmake build system, if you need to collect the source code manually, you can refer to the Makefile  from some platform. Here is the Makefile from product-mini/platforms/alios-things/aos.mk:
https://github.com/bytecodealliance/wasm-micro-runtime/blob/6847e15f64a6d8c333ba92225425f7c6932a3d30/product-mini/platforms/alios-things/aos.mk#L63-L114
The GLOBAL_INCLUDES are the include dirs, the $(NAME)_SOURCES is the source code you need, you may need to change some platform/arch related files according to your platforms.

I dont have a MMU so i want to use a buffer as memory for malloc.

To use a global buffer as memory, please use WAMR's Alloc_With_Pool mode:
static char global_heap_buf[512 * 1024];
RuntimeInitArgs init_args;
memset(&init_args, 0, sizeof(RuntimeInitArgs));

/* configure the memory allocator for the runtime */
init_args.mem_alloc_type = Alloc_With_Pool;
init_args.mem_alloc_option.pool.heap_buf = global_heap_buf;
init_args.mem_alloc_option.pool.heap_size = sizeof(global_heap_buf);

Please refer to runtime initialization for more details.
As for the build flags, please refer to cmake building configurations
The WAMR_BUILD_XXX are CMake flags, the corresponding C flags are WASM_ENABLE_XXX (except BUILD_TARGET_XXX)
These flags may be useful for your platform:

BUILD_TARGET_ARM
WASM_ENABLE_INTERP=1
WASM_ENABLE_AOT=1
WASM_ENABLE_LIBC_BUILTIN=1
WASM_ENABLE_LIBC_WASI=1

Tank you very much. It almost worked.
Now i get an error called ""AOT module load failed: invalid target type, expected thumb.*_vfp but got thumbv4t"
Im sure that either i defined by build_target wrong or i build my aot file wrong.
My defines:
BH_MALLOC=wasm_runtime_malloc BH_FREE=wasm_runtime_free BUILD_TARGET_THUMB_VFP WASM_ENABLE_INTERP=1 WASM_ENABLE_AOT=1 WASM_ENABLE_FAST_INTERP=0 WASM_ENABLE_LIBC_BUILTIN=1 WASM_ENABLE_LIBC_WASI=0 LIBC_BUILTIN_DIR="./wasm-micro-runtime/core/iwasm/libraries/libc-builtin" WASM_ENABLE_LIBC_BUILTIN=1 WAMR_BUILD_TARGET="THUMB.*_VFP" BUILD_TARGET=WAMR_BUILD_TARGET
the way i build my aot file:
wamrc --target=thumbv4t -o wasmapp.aot /root/wasmapp.wasm
I hope you can help me again. Thank you in advance.

Tank you very much. It almost worked.
Now i get an error called ""AOT module load failed: invalid target type, expected thumb.*_vfp but got thumbv4t"
Im sure that either i defined by build_target wrong or i build my aot file wrong.
My defines:
BH_MALLOC=wasm_runtime_malloc BH_FREE=wasm_runtime_free BUILD_TARGET_THUMB_VFP WASM_ENABLE_INTERP=1 WASM_ENABLE_AOT=1 WASM_ENABLE_FAST_INTERP=0 WASM_ENABLE_LIBC_BUILTIN=1 WASM_ENABLE_LIBC_WASI=0 LIBC_BUILTIN_DIR="./wasm-micro-runtime/core/iwasm/libraries/libc-builtin" WASM_ENABLE_LIBC_BUILTIN=1 WAMR_BUILD_TARGET="THUMB.*_VFP" BUILD_TARGET=WAMR_BUILD_TARGET
the way i build my aot file:
wamrc --target=thumbv4t -o wasmapp.aot /root/wasmapp.wasm
I hope you can help me again. Thank you in advance.

Hi, the format of WAMR_BUILD_TARGET for thumb should be <arch>[<sub-arch>][_VFP], e.g. THUMBV7, THUMBV7T, or THUMBV7T_VFP, normally it should not be  "THUMB.*_VFP" which is used by by cmake file to detech the string pattern.
For cortex-m7, could you please try -DWAMR_BUILD_TARGET=THUMBV7_VFP (or -DWAMR_BUILD_TARGET=THUMBV7 if it doesn't work) and use wamrc with the following command:
wamrc --target=thumbv7 --target-abi=eabi --cpu=cortex-m7 -o wasmapp.aot wasmapp.wasm
Ref to little vgl sample and its zephyr-build CMakeLists.txt for more details. Thanks.

Hi, the format of WAMR_BUILD_TARGET for thumb should be <arch>[<sub-arch>][_VFP], e.g. THUMBV7, THUMBV7T, or THUMBV7T_VFP, normally it should not be  "THUMB.*_VFP" which is used by by cmake file to detech the string pattern.
For cortex-m7, could you please try -DWAMR_BUILD_TARGET=THUMBV7_VFP (or -DWAMR_BUILD_TARGET=THUMBV7 if it doesn't work) and use wamrc with the following command:
wamrc --target=thumbv7 --target-abi=eabi --cpu=cortex-m7 -o wasmapp.aot wasmapp.wasm
Ref to little vgl sample and its zephyr-build CMakeLists.txt for more details. Thanks.


minScrollbarLength, maxScrollbarLength

Would you please let me know how can use "minScrollbarLength" and "maxScrollbarLength" like original perfect scrollbar?
(https://github.com/utatti/perfect-scrollbar)
This react version perfect scrollbar looks good, but I can not find how to use "maxScrollbarLength" in this component. Any idea?
Thank you.

<PerfectScrollbar option={{minScrollbarLength: 20}}>
        ... SCROLLBAR CONTENT HERE ...
</PerfectScrollbar>

Thank you a lot, @goldenyz


How to view label results for each predicted box?

I'm sure this is very simple, so hopefully someone can help me. I've successfully run test.py with an existing dataset (SUNRGB-D) on an existing model (VoteNet) all the way through, with an mAP output at the end and everything. I have each test output the point cloud and predictions, and those work too. Here's a screen capture from MeshLab:

What I can't figure out is how to get what each of those boxes represents. I know the large box in the middle is a bed, but is that what VoteNet thinks it was in this particular point cloud? How do I connect each box there in MeshLab to a label for each result? There does not seem to be any data output that I can find along those lines.

For now ,we don't support to show labels during visualization., but in the next version of visualization, we will support it.

Ok, thank you for the quick response! In the meantime I will look into at least outputting that data into a text file or something like that myself.

For now ,we don't support to show labels during visualization., but in the next version of visualization, we will support it.

Hello, could you tell me that the visualization of label of boxes is available now？

Hello, I have the same question. I get this result in MeshLab.
@damonftl Did you manage to get the label names for each prediction with any method? Thanks in advance

Hi, unfortunately I never did get it completely working. I managed to get it to output the label names into a console window but not in the actual 3D data, so it was still difficult to figure out exactly which box was which label. Sorry I can't really help. We ended up using a completely different neural network for our development.

Thank you very much for the information.

Hey @rebeccamart, did you figure out how to add label names to the final detections? Thank you in advance :)


[#5815] Change the http protocol for Google Analytics

[backport] Change the http protocol in the access url from http to https for Google Analytics

Codecov Report

Merging #5856 into 1.8.x will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##            1.8.x    #5856      +/-   ##
==========================================
+ Coverage   40.63%   40.66%   +0.02%
==========================================
  Files        2670     2670
  Lines       80357    80357
  Branches    10887    10887
==========================================
+ Hits        32657    32679      +22
+ Misses      44732    44711      -21
+ Partials     2968     2967       -1

Impacted Files
Coverage Δ

...navercorp/pinpoint/rpc/common/SocketStateCode.java
82.92% <0%> (-2.44%)
:arrow_down:

...point/rpc/client/DefaultPinpointClientHandler.java
71.83% <0%> (-0.95%)
:arrow_down:

...rver/cluster/zookeeper/CuratorZookeeperClient.java
86.91% <0%> (+0.93%)
:arrow_up:

...java/com/navercorp/pinpoint/rpc/DefaultFuture.java
74.16% <0%> (+1.66%)
:arrow_up:

.../profiler/sender/StandbySpanStreamDataStorage.java
76.27% <0%> (+3.38%)
:arrow_up:

...r/zookeeper/ZookeeperClusterDataManagerHelper.java
80.85% <0%> (+4.25%)
:arrow_up:

...cluster/zookeeper/ZookeeperClusterDataManager.java
68.38% <0%> (+5.88%)
:arrow_up:

...r/zookeeper/CuratorZookeeperConnectionManager.java
75% <0%> (+6.25%)
:arrow_up:

.../cluster/zookeeper/ZookeeperExceptionResolver.java
34.48% <0%> (+17.24%)
:arrow_up:

...p/pinpoint/rpc/client/WriteFailFutureListener.java
75% <0%> (+18.75%)
:arrow_up:

... and 1 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 efb6ebd...b110485. Read the comment docs.


Update init.py

Fix missing back-tick symbol in the docstring of the at() method.

Coverage remained the same at 99.699% when pulling ac9492b2578752820b618d4b51dbbaf4d61c7d29 on chrimaho:patch-1 into 6eb0b5346b1ce35ece5050e65789fa6e44368175 on dbader:master.


Parallax bottom to top

hello thx for very usefull parallax i have a question
İ tried but didnot normal parallax working top to bottom  but i want to work with bottom to top how can i do it thx for help have a nice day

Invert your values. Try data-rellax-speed="-4" and data-rellax-speed="4" in the speed attributes.


Rename foo to foobar

Error while checking build/root6:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'

Error while checking build/root6@8d7e2fae8a375952bc591c87ac05c4e55e6436c1:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'

Error while checking build/root6 for 8d7e2fae8a375952bc591c87ac05c4e55e6436c1:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'

Error while checking build/root6 for 8d7e2fae8a375952bc591c87ac05c4e55e6436c1:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'

Error while checking build/root6 for 8d7e2fae8a375952bc591c87ac05c4e55e6436c1:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'

Error while checking build/root6 for 8d7e2fae8a375952bc591c87ac05c4e55e6436c1:
../sw/BUILD/AliPhysics-latest/log
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/CaloTrackCorrBase/AliCalorimeterUtils.cxx:1935:61: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:393:66: error: use of undeclared identifier 'fRandomPsi'; did you mean 'fRandom'?
/Users/ktf/work/active/sw/BUILD/38e29351fc94eb9165a0af438f266984cc2f0291/AliPhysics/PWG/Cocktail/G__PWGCocktail.cxx:1537:51: error: no member named 'SetRandomEventPlane' in 'AliGenEMCocktail'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGDQ/reducedTree/AliAnalysisTaskReducedTreeMaker.cxx:1071:58: error: no member named 'GetChi2TPCConstrainedVsGlobal' in 'AliAODTrack'; did you mean 'IsHybridTPCConstrainedGlobal'?
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskGammaCocktailMC.cxx:174:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGGA/GammaConv/AliAnalysisTaskHadronicCocktailMC.cxx:173:60: error: no member named 'GetGenerator' in 'AliMCGenHandler'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:784:19: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWGPP/EMCAL/AliAnalysisTaskEMCALClusterize.cxx:1073:58: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:854:52: error: too many arguments to function call, expected at most 3, have 4
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/TENDER/TenderSupplies/AliEMCALTenderSupply.cxx:1729:26: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'
/Users/ktf/work/active/sw/SOURCES/AliPhysics/0/0/PWG/EMCAL/EMCALtasks/AliAnalysisTaskEMCALClusterizeFast.cxx:450:25: error: no member named 'RecalculateCellLabelsRemoveAddedGenerator' in 'AliEMCALRecoUtils'


tried reproducing a previous run

Issue Description /
i tried to load a record, i added the path in the config to a previous run
Steps to Reproduce /
added path to record_dir then tried loading a prompt
Expected Behavior /
i expected it to pick up where it left off on a previous run.
Environment /

Operating System / windows 11
Python Version / Python 版本：3.11
Other Relevant Information /

Error Screenshots or Logs /
C:\Users\deadb\XAgent>python run.py --task "where did you leave off? can you finish your web search?" --model gpt-4 --config_file assets/config.yml
XAgentServer is running on cmd mode
XAgentServer log:  XAgentServer\localstorage\interact_records\2023-10-25\2bdf41bf6f2c4355b8d1284784b06e8b
init localstorage connection: interaction.json
-=-=--=-=-=-=-=-=-= Current Instruction =-=-=-=-=-=-=-=-=-=-=-=-=-=-
where did you leave off? can you finish your web search?
Receive args from 2bdf41bf6f2c4355b8d1284784b06e8b:   user_id: admin, token: xagent-admin, description: XAgent-Test
Receive data from 2bdf41bf6f2c4355b8d1284784b06e8b:   where did you leave off? can you finish your web search?
Register parameter: {'interaction_id': '2bdf41bf6f2c4355b8d1284784b06e8b', 'parameter_id': '22661e8c21734bc9b14dc8e63f5e0ff2', 'args': {'description': 'XAgent-Test', 'role_name': 'Assistant', 'download_files': [], 'file_list': None, 'record_dir': 'C:\Users\deadb\XAgent\running_records\2023_10_25_03_47_3124609a7d', 'goal': 'where did you leave off? can you finish your web search?', 'mode': 'auto', 'plan': [], 'max_wait_seconds': 600}} into interaction of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
init interaction: 2bdf41bf6f2c4355b8d1284784b06e8b
Register logger into interaction of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
Register io into interaction of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
Register db into interaction of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
Register logger into XAgentServer of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
Start a new thread to run interaction of 2bdf41bf6f2c4355b8d1284784b06e8b, done!
Constructing an AgentDispatcher:  XAgentDispatcher
---config file---
assets/config.yml
---args---
{'record_dir': 'C:\Users\deadb\XAgent\running_records\2023_10_25_03_47_3124609a7d', 'default_completion_kwargs': {'model': 'gpt-4', 'temperature': 0.2, 'request_timeout': 60}, 'enable_ask_human_for_help': True, 'max_subtask_chain_length': 15, 'max_plan_refine_chain_length': 3, 'max_plan_tree_depth': 3, 'max_plan_tree_width': 5, 'max_retry_times': 5}
load from a disk record, overwrite all the existing config-info  C:\Users\deadb\XAgent\running_records\2023_10_25_03_47_3124609a7d
---config file---
assets/config.yml
---args---
{'record_dir': 'C:\Users\deadb\XAgent\running_records\2023_10_25_03_47_3124609a7d', 'default_completion_kwargs': {'model': 'gpt-4', 'temperature': 0.2, 'request_timeout': 60}, 'enable_ask_human_for_help': True, 'max_subtask_chain_length': 15, 'max_plan_refine_chain_length': 3, 'max_plan_tree_depth': 3, 'max_plan_tree_width': 5, 'max_retry_times': 5}
Traceback (most recent call last):
File "C:\Users\deadb\XAgent\run.py", line 53, in
cmd.start(
File "C:\Users\deadb\XAgent\command.py", line 163, in start
self.run({
File "C:\Users\deadb\XAgent\command.py", line 137, in run
asyncio.run(server.interact(interaction=interaction))
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\deadb\XAgent\XAgentServer\server.py", line 40, in interact
recorder.load_from_disk(interaction.base.recorder_root_dir)
File "C:\Users\deadb\XAgent\XAgent\running_recorder.py", line 222, in load_from_disk
self.llm_server_cache[inout_id] = llm_pair
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
IndexError: list assignment index out of range

It doesn't seem to be implemented yet?

  init interaction: 1e7a574ca40c4bfc907407bf01f92d88
  Register logger into interaction of 1e7a574ca40c4bfc907407bf01f92d88, done!
  Register io into interaction of 1e7a574ca40c4bfc907407bf01f92d88, done!
  Register db into interaction of 1e7a574ca40c4bfc907407bf01f92d88, done!
  Register logger into XAgentServer of 1e7a574ca40c4bfc907407bf01f92d88, done!
  Start a new thread to run interaction of 1e7a574ca40c4bfc907407bf01f92d88, done!
Constructing an AgentDispatcher:  XAgentDispatcher
---config file---
assets/config_gpt4_8k.yml
---args---
{'record_dir': 'finance_manager_records', 'default_completion_kwargs': {'model': 'gpt-4', 'temperature': 0.2, 'request_timeout': 60}, 'enable_ask_human_for_help': True, 'max_subtask_chain_length': 7, 'max_plan_refine_chain_length': 3, 'max_plan_tree_depth': 3, 'max_plan_tree_width': 5, 'max_retry_times': 3}
load from a disk record, overwrite all the existing config-info  finance_manager_records
Traceback (most recent call last):
  File "/Users/fredrikbranstrom/Dropbox/Code/XAgent/run.py", line 53, in <module>
    cmd.start(
  File "/Users/fredrikbranstrom/Dropbox/Code/XAgent/command.py", line 163, in start
    self.run({
  File "/Users/fredrikbranstrom/Dropbox/Code/XAgent/command.py", line 137, in run
    asyncio.run(server.interact(interaction=interaction))
  File "/Users/fredrikbranstrom/miniconda3/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/Users/fredrikbranstrom/miniconda3/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/fredrikbranstrom/miniconda3/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/Users/fredrikbranstrom/Dropbox/Code/XAgent/XAgentServer/server.py", line 40, in interact
    recorder.load_from_disk(interaction.base.recorder_root_dir)
  File "/Users/fredrikbranstrom/Dropbox/Code/XAgent/XAgent/running_recorder.py", line 250, in load_from_disk
    raise NotImplementedError
NotImplementedError
 ~code/XAgent ⚡

User in discord also report that.

Please make sure you use the latest code to generate the records and load it, the old code has broken record loader.

We've update the logic in loading records, now it should be able to reload correctly! Thank you for your comments!

@luyaxi i updated my code 2x because i saw you commented that a change was made. after deleteing my xagent folder and doing another git clone command. i copied the path into the record_dir. i tried on just the config.yml at first then added the path into gpt4 config and gpt3.5 config. i added the path to all 3 as a final attempt but it didnt work. heres the error i got.
C:\Users\deadb\XAgent>python run.py --task "did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?" --model gpt-4 --config_file assets/config.yml
XAgentServer is running on cmd mode
XAgentServer log:  XAgentServer\localstorage\interact_records\2023-10-25\f9ce94add4584a30add147faa298fb97
init localstorage connection: interaction.json
-=-=--=-=-=-=-=-=-= Current Instruction =-=-=-=-=-=-=-=-=-=-=-=-=-=-
did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?
Receive args from f9ce94add4584a30add147faa298fb97:   user_id: admin, token: xagent-admin, description: XAgent-Test
Receive data from f9ce94add4584a30add147faa298fb97:   did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?
Register parameter: {'interaction_id': 'f9ce94add4584a30add147faa298fb97', 'parameter_id': 'c11d591b5c9c43d1865bb36514eeaac3', 'args': {'description': 'XAgent-Test', 'role_name': 'Assistant', 'download_files': [], 'file_list': None, 'record_dir': None, 'goal': 'did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?', 'mode': 'auto', 'plan': [], 'max_wait_seconds': 600}} into interaction of f9ce94add4584a30add147faa298fb97, done!
init interaction: f9ce94add4584a30add147faa298fb97
Register logger into interaction of f9ce94add4584a30add147faa298fb97, done!
Register io into interaction of f9ce94add4584a30add147faa298fb97, done!
Register db into interaction of f9ce94add4584a30add147faa298fb97, done!
Register logger into XAgentServer of f9ce94add4584a30add147faa298fb97, done!
Start a new thread to run interaction of f9ce94add4584a30add147faa298fb97, done!
Constructing an AgentDispatcher:  XAgentDispatcher
---config file---
assets/config.yml
---args---
{'task': 'did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?', 'default_completion_kwargs': {'model': 'gpt-4', 'temperature': 0.2, 'request_timeout': 60}, 'mode': 'auto', 'quiet': False, 'enable_ask_human_for_help': False, 'config_file': 'assets/config.yml'}
load from a disk record, overwrite all the existing config-info  C:\Users\deadb\OneDrive\Desktop\running_records\2023_10_25_19_07_364e5981a0
---config file---
assets/config.yml
---args---
{'task': 'did you finish the request i asked for? did you find the waether in the place i asked about? what was the weather there?', 'default_completion_kwargs': {'model': 'gpt-4', 'temperature': 0.2, 'request_timeout': 60}, 'mode': 'auto', 'quiet': False, 'enable_ask_human_for_help': False, 'config_file': 'assets/config.yml'}
Traceback (most recent call last):
File "C:\Users\deadb\XAgent\run.py", line 52, in
cmd.start(
File "C:\Users\deadb\XAgent\command.py", line 163, in start
self.run({
File "C:\Users\deadb\XAgent\command.py", line 137, in run
asyncio.run(server.interact(interaction=interaction))
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\deadb\XAgent\XAgentServer\server.py", line 41, in interact
recorder.load_from_disk(interaction.base.recorder_root_dir)
File "C:\Users\deadb\XAgent\XAgent\running_recorder.py", line 222, in load_from_disk
self.llm_server_cache[inout_id] = llm_pair
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
IndexError: list assignment index out of range

It seems that you have a broken running records, can you remove all sensitive info in the records and upload the records? By the way, the records is used to replay actions, not start new task from a old running.

i might have a misunderstanding of how it worked then. heres a screen shot of what was loaded in the  from the run. the this-is-a-reload-run.yml only has the path to the file i gave it. i will send you what is needed, im not sure what to send you though.

Try to use your origin running records rather than reload running records (as your screenshot shows, you are trying to load a reloaded running records). The reloaded running records is not ready for reload again yet.

@luyaxi Hmm
"the records is used to replay actions, not start new task from a old running"
I wonder if I misunderstood then as well...
I have the following problem: I tested XAgent two days ago with a task of creating a "finance manager" Vue application based on a Ruby script I had been using in the past, which I uploaded. I had input my API keys for GPT-4 (8k) and GPT-3.5 (16k). I set the default model to GPT-4. But didn't realize I had to remove the config section where it had example API keys for GPT-4 32k which are irrelevant because I don't have access to 32k.
So when it ran, it finished a few subtasks, installed node and npm and vue-cli etc and created a bunch of Vue components, but then eventually it failed due to running out of tokens. Having read the code now, I see that it will try to use the (non-default) 32k GPT-4 when that happens, or if that API key doesn't seem to be available, it will try to use the 16k GPT-3.5 to be able to work with the larger context.
I had mistakenly left the config example for 32k GPT-4 so it tried to use that but ultimately failed.
Now, yesterday I was able to figure out how to replay an old record. I copied a datetime-marked subdirectory (cp -r) from inside running_records and put it in a separate directory named finance_manager_records and referenced that.
It was able to go forward with the replay, except when it came to accessing the workspace. As you can see by the logs, when it finishes replaying the recorded steps and resumes making actual calls, there's something wrong with the workspace writing/reading:
Some of the logs from the replay run
I think this is the primary type of error occurring:
NEXT ACTION:  COMMAND: FileSystemEnv_write_to_file ARGUMENTS: {'filepath': 'finance-manager/src/components/DisplayFinance.vue', 'content': 'mock content', 'line_number': 25, 'overwrite': True}
SYSTEM:  Command FileSystemEnv_write_to_file returned: {"detail":"Traceback (most recent call last):\n File \"/app/main.py\", line 171, in execute_tool\n result = tool(**arguments)\n File \"/app/core/envs/filesystem.py\", line 176, in write_to_file\n raise FileNotFoundError(f\"File {filepath} not found in workspace.\")\nFileNotFoundError: File finance-manager/src/components/DisplayFinance.vue not found in workspace.\n"}
TOOL STATUS CODE:  TOOL_CALL_FAILED

Y、

@luyaxi Hmm
"the records is used to replay actions, not start new task from a old running"
I wonder if I misunderstood then as well...
I have the following problem: I tested XAgent two days ago with a task of creating a "finance manager" Vue application based on a Ruby script I had been using in the past, which I uploaded. I had input my API keys for GPT-4 (8k) and GPT-3.5 (16k). I set the default model to GPT-4. But didn't realize I had to remove the config section where it had example API keys for GPT-4 32k which are irrelevant because I don't have access to 32k.
So when it ran, it finished a few subtasks, installed node and npm and vue-cli etc and created a bunch of Vue components, but then eventually it failed due to running out of tokens. Having read the code now, I see that it will try to use the (non-default) 32k GPT-4 when that happens, or if that API key doesn't seem to be available, it will try to use the 16k GPT-3.5 to be able to work with the larger context.
I had mistakenly left the config example for 32k GPT-4 so it tried to use that but ultimately failed.
Now, yesterday I was able to figure out how to replay an old record. I copied a datetime-marked subdirectory (cp -r) from inside running_records and put it in a separate directory named finance_manager_records and referenced that.
It was able to go forward with the replay, except when it came to accessing the workspace. As you can see by the logs, when it finishes replaying the recorded steps and resumes making actual calls, there's something wrong with the workspace writing/reading:
Some of the logs from the replay run
I think this is the primary type of error occurring:
NEXT ACTION:  COMMAND: FileSystemEnv_write_to_file ARGUMENTS: {'filepath': 'finance-manager/src/components/DisplayFinance.vue', 'content': 'mock content', 'line_number': 25, 'overwrite': True}
SYSTEM:  Command FileSystemEnv_write_to_file returned: {"detail":"Traceback (most recent call last):\n File \"/app/main.py\", line 171, in execute_tool\n result = tool(**arguments)\n File \"/app/core/envs/filesystem.py\", line 176, in write_to_file\n raise FileNotFoundError(f\"File {filepath} not found in workspace.\")\nFileNotFoundError: File finance-manager/src/components/DisplayFinance.vue not found in workspace.\n"}
TOOL STATUS CODE:  TOOL_CALL_FAILED

Currently the replay does not regain the workspace, we will add a feature to replay the actions in the toolservernode to ensure the workspace is same.

Ok. Can I just copy them into the workspace, or upload them? Is there a workaround so I can continue the work on this project, with the state of the workspace as it was right before the last run failed?

Cool, I'll try it.
Also another thing: I had trouble using a custom config path. It seems to me (after reading the code of run.py) that you might be loading the config from the default path before loading the custom config?

Cool, I'll try it.
Also another thing: I had trouble using a custom config path. It seems to me (after reading the code of run.py) that you might be loading the config from the default path before loading the custom config?

Can you provide more specific description with your run's arguments and your config file in a new issue? Please remove sensitive information before you submit the issue.


chore: publish under two names

this should make the npx @elastic/synthetics work. We have decided to keep the executable available under two names. We will revisit during the beta phase

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Build Cause: [Pull request #132 updated]

Start Time: 2020-11-09T16:56:58.199+0000

Duration: 23 min 47 sec

Test stats :test_tube:

Test
Results

Failed
0

Passed
43

Skipped
0

Total
43


Crasher in FLEXNetworkObserver

I encountered an exception coming out of +[FLEXNetworkObserver injectDidFinishLoadingIntoDelegateClass].
It seemed like my code managed to cause the NSURLConnection to release before the connectionDidFinishLoading:delegate: was called. As a result, sniffWithoutDuplicationForObject:selector:sniffingBlock: attempted to set an associated object on nil.

Digging deeper, I noticed that my connection is nil as early as the call to the implementationBlock, which is swizzled in for connectionDidFinishLoading:. I'm not entirely unsurprised that my connection was released so early, as this connection represents a "fire and forget" analytics call.

This is my current workaround, but I suspect someone who knows more about FLEX might be able to find an appropriate way for FLEX to hook in and hold a reference to the NSURLConnection:
diff --git i/Classes/Network/PonyDebugger/FLEXNetworkObserver.m w/Classes/Network/PonyDebugger/FLEXNetworkObserver.m
index 1dca18f..61eb2a4 100644
--- i/Classes/Network/PonyDebugger/FLEXNetworkObserver.m
+++ w/Classes/Network/PonyDebugger/FLEXNetworkObserver.m
@@ -680,11 +680,13 @@ didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask delegate:(id <NSU
     };

     NSURLConnectionDidFinishLoadingBlock implementationBlock = ^(id <NSURLConnectionDelegate> slf, NSURLConnection *connection) {
-        [self sniffWithoutDuplicationForObject:connection selector:selector sniffingBlock:^{
-            undefinedBlock(slf, connection);
-        } originalImplementationBlock:^{
-            ((void(*)(id, SEL, id))objc_msgSend)(slf, swizzledSelector, connection);
-        }];
+        if (connection) {
+            [self sniffWithoutDuplicationForObject:connection selector:selector sniffingBlock:^{
+                undefinedBlock(slf, connection);
+            } originalImplementationBlock:^{
+                ((void(*)(id, SEL, id))objc_msgSend)(slf, swizzledSelector, connection);
+            }];
+        }
     };

     [self replaceImplementationOfSelector:selector withSelector:swizzledSelector forClass:cls withMethodDescription:methodDescription implementationBlock:implementationBlock undefinedBlock:undefinedBlock];

Thanks!

Thanks for the detailed write up! I'll try to dig into this one tonight.

As you suggested, it seems like we have two options here:

Take the diff above which would avoid the crash but result in incomplete request history in some cases.
Keep a strong reference to the NSURLConnection in FLEXInternalRequestState. This would give us complete request history, but could also extend the lifetime of the NSURLConnection and potentially change the behavior of the underlying app.

I'm leaning towards 2 but I don't have a strong opinion either way. Any thoughts?

I think it would be acceptable to keep a reference to the NSURLConnection. In general, I don't think implementations should rely on particular reference count for any given object (but I suppose this could mask some subtle bugs). I'd lean towards option 2 as well.

@mickeyreiss I'm trying to reproduce this to understand the issue a little better. Could you tell me what version of AFNetworking you were using and what iOS version you were on when the crash occurred?
Thanks!

I'm also encountering this issue. Using AFNetworking (2.5.3) but that may not be relevant in this case. I'm using iphonesimulator set to iPhone 6 running iOS Version 8.3 (SimulatorApp-565.9 CoreSimulator-117.15)

Great, thanks for the details. I'm going to try to repro with a similar setup.

I've finally gotten to the bottom of this one. It turns out it's unrelated to AFNetworking .
The PayPal SDK is making it's own call to the -connectionDidFinishLoading: method. This was especially tricky to track down because it does it via a call to performSelector:afterDelay:withObject: in -[PPSimpleURLConnection initWithRequest:connectionTimeout:]. It seems to be passing nil in the object argument, too. I knew something wasn't right when I saw __NSFireDelayedPerform on the stack trace rather than what you'd expect from URL loading system.
It's unfortunate that the PayPal SDK calls the delegate method itself, but we can avoid the crash by no-oping if the connection argument is nil. In the general case, if libraries are calling the NSURLConnectionDelegate  methods themselves, our request accounting will likely be inaccurate. It's worth noting that keeping a strong reference to the connection wouldn't've helped us here.
Here's the performSelector:withObject:afterDelay trace

I'm working on a change to fix the crash and should have something up shortly. /cc @mickeyreiss @intelliot

Ok! Please check out a42af79040d6506eb431a04b8cf9d45f0f8c0ffa and let me know if it works out for you.


[PP] Tests on ephemeral models

Describe the bug
With partial parsing turned on, executing a test against an ephemeral model trips a mysterious error:
$ dbt test
Running with dbt=0.20.0-rc1
Partial parsing enabled: 0 files deleted, 0 files added, 0 files changed.
Partial parsing enabled, no changes found, skipping parsing
Found 1 model, 1 test, 1 snapshot, 0 analyses, 333 macros, 0 operations, 1 seed file, 0 sources, 0 exposures

18:00:02 | Concurrency: 1 threads (target='dev')
18:00:02 |
18:00:02 | 1 of 1 START test unique_ephemeral_model_id.......................... [RUN]
Unhandled error while executing test.my_project.unique_ephemeral_model_id.9493b44128
__enter__
18:00:02 | 1 of 1 ERROR unique_ephemeral_model_id............................... [ERROR in 0.02s]
18:00:02 |
18:00:02 | Finished running 1 test in 5.54s.

Completed with 1 error and 0 warnings:

__enter__

Done. PASS=0 WARN=0 ERROR=1 SKIP=0 TOTAL=1

Here's the full stacktrace:
Traceback (most recent call last):
  File "/Users/jerco/dev/product/dbt/core/dbt/task/base.py", line 348, in safe_run
    result = self.compile_and_execute(manifest, ctx)
  File "/Users/jerco/dev/product/dbt/core/dbt/task/base.py", line 285, in compile_and_execute
    ctx.node = self.compile(manifest)
  File "/Users/jerco/dev/product/dbt/core/dbt/task/compile.py", line 33, in compile
    return compiler.compile_node(self.node, manifest, {})
  File "/Users/jerco/dev/product/dbt/core/dbt/compilation.py", line 466, in compile_node
    node, _ = self._recursively_prepend_ctes(
  File "/Users/jerco/dev/product/dbt/core/dbt/compilation.py", line 317, in _recursively_prepend_ctes
    manifest.sync_update_node(cte_model)
  File "/Users/jerco/dev/product/dbt/core/dbt/contracts/graph/manifest.py", line 592, in sync_update_node
    with self._lock:
AttributeError: __enter__

Steps To Reproduce
models/ephemeral_model.sql
{{ config(materialized='ephemeral') }}

select 1 as id

models/schema.yml
version: 2
models:
  - name: ephemeral_model
    columns:
      - name: id
        tests:
          - unique

$ dbt --no-partial-parse test
$ dbt --partial-parse test

Expected behavior
The test should execute as normal.
System information
Which database are you using dbt with?

[x] postgres
[ ] redshift
[ ] bigquery
[ ] snowflake
[ ] other (specify: ____________)

The output of dbt --version:
$ dbt --version
installed version: 0.20.0-rc1
   latest version: 0.19.1

Your version of dbt is ahead of the latest release!

Plugins:
  - postgres: 0.20.0rc1
  - snowflake: 0.20.0rc1
  - redshift: 0.20.0rc1
  - bigquery: 0.20.0rc1

My guess is that this is related to the manifest._lock field. It would not serialize, so I created a metadata lambda that was supposed to create a new flags.MP_CONTEXT.Lock object. This is probably not working properly.

@gshank are we good to close this out based off PR #3445 ?

Resolved by #3445