Graceful loop shutdown with running executor tasks

When I send a long task to tread-pool executor and immediately close the loop without waiting future returned by .run_in_executor() call I get exception report in logs:
ERROR:concurrent.futures:exception calling callback for <Future at 0x7ff1ae393630 state=finished returned NoneType>
Traceback (most recent call last):
  File "/usr/lib/python3.4/concurrent/futures/_base.py", line 297, in _invoke_callbacks
    callback(self)
  File "/home/andrew/projects/asyncio/asyncio/futures.py", line 410, in <lambda>
    new_future._copy_state, future))
  File "/home/andrew/projects/asyncio/asyncio/base_events.py", line 487, in call_soon_threadsafe
    handle = self._call_soon(callback, args)
  File "/home/andrew/projects/asyncio/asyncio/base_events.py", line 461, in _call_soon
    self._check_closed()
  File "/home/andrew/projects/asyncio/asyncio/base_events.py", line 288, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

That's because task executed in thread has finished after loop closing. The task calls call_soon_threadsafe() (see futures.wrap_future() for details) and it fails on check for loop health.
Due threaded nature it's hard to avoid situations like this: threads cannot be cancelled, we need cope with these even after loop closing. That's pretty common situation, especially for client-side jobs like web page fetching: DNS resolver is executed in thread pool also.
I see two options:

Ignore loop closing in wrap_future call, skip call_soon_threadsafe() for closed loops
Do the same but only if special boolean flag passed into run_in_executor() (while I don't see situations when I don't like the behavior, maybe flag should be True by default).

I think the first option is fine. But I'd like wrap_future to still log somehow that there was a concurrent.future that resolved after the loop was closed.

See http://stackoverflow.com/questions/32598231/asyncio-runtimeerror-event-loop-is-closed/32615276 for yet another example for the problem

Thank you @asvetlov for your AsyncIO support on StackOverflow, a coworker told me he has found a solution from one of your answer ;-)

For the record, I am running into this same issue with run_in_executor() when I close the event loop. @asvetlov's solution here works for me.

I think throwing away the callback when the loop is already closed is fine (i.e., option 1). When closing a loop we throw away all callbacks that haven't run yet, so this would just extend that behavior.
Now, arguably it is actually inconsistent that calling call_soon() on a closed loop raises an error at all -- why not just ignore the call? However, given that no further callbacks are run, we don't expect any further callbacks to be scheduled either, since only callbacks -- or coroutines, which is the same in this context -- should schedule callbacks. So it arguably doesn't matter much, and it does occasionally catch errors (I presume).
But for call_soon_threadsafe() calls made from the executor it's a different story -- we explicitly don't wait for the workers to finish (since who knows when that might be) so we should expect such calls -- but we should treat them the same regardless of whether the thread finishe just before or just after the loop is closed. So option 1 is the right one.

Pull Request would be welcome!

Can I be helpful with that? :) I'd probably be able to implement the first option if I get some initial key points.
So, for call_soon_threadsafe() we need to check self.is_closed()? Is it (probably) enough?
As for test case for this, I think it's clear.

When I use my implementation of ThreadPool (uses threading.pool under the hood) an exception not raises.

loop = asyncio.get_event_loop()
pool = ThreadPool(loop=loop)
loop.set_default_executor(pool)

# do something

pool.shutdown(wait=True)
loop.close()

Also when I call pool.shutdown(wait=True) for futures.ThresdPoolExecutor an exception raises.
exception calling callback for <Future at 0x1064c1f28 state=finished returned NoneType>
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks
    callback(self)
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 442, in _call_set_state
    dest_loop.call_soon_threadsafe(_set_state, destination, source)
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 532, in call_soon_threadsafe
    handle = self._call_soon(callback, args)
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 506, in _call_soon
    self._check_closed()
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 334, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

For uvloop the same.
exception calling callback for <Future at 0x11019cfd0 state=finished returned NoneType>
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/concurrent/futures/_base.py", line 297, in _invoke_callbacks
    callback(self)
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/futures.py", line 442, in _call_set_state
    dest_loop.call_soon_threadsafe(_set_state, destination, source)
  File "uvloop/loop.pyx", line 1023, in uvloop.loop.Loop.call_soon_threadsafe (uvloop/loop.c:23215)
  File "uvloop/loop.pyx", line 500, in uvloop.loop.Loop._call_soon (uvloop/loop.c:13237)
  File "uvloop/loop.pyx", line 504, in uvloop.loop.Loop._call_soon_handle (uvloop/loop.c:13296)
  File "uvloop/loop.pyx", line 532, in uvloop.loop.Loop._check_closed (uvloop/loop.c:13856)
RuntimeError: Event loop is closed

This looks like special behaviour of futures.ThresdPoolExecutor.

Some tests from our stack fail because of this bug. We could mock the executor but since they are end to end tests ideally we shouldn't mock anything.
What's the current status of this? Is anyone working on it? Do we have a reference in https://bugs.python.org/?

I'm on my phone but a pr is open on python search for my login
Le mar. 24 oct. 2017 à 10:07, Manuel Miranda<EMAIL_ADDRESS>a
écrit :

Some tests from our stack fail because of this bug. We could mock the
executor but since they are end to end tests ideally we shouldn't mock
anything.
What's the current status of this? Is anyone working on it? Do we have a
reference in https://bugs.python.org/?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/python/asyncio/issues/258#issuecomment-338909048, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAVFXdbgPzjwuLVAhwRp3ILT1At4y7Bbks5svZrRgaJpZM4Ff4WE
.

That PR is https://github.com/python/cpython/pull/431.
The corresponding bug is https://bugs.python.org/issue29711.
Closing this one since we're no longer developing asyncio as a separate process.

Thanks for the references!


Added cancellation token support

Added CancellationToken support as noted in #46

Great idea! Thank you for this. Code looks good to me, but could you add a test method to try against? If not, I can merge and add a case before the version bump this afternoon or tomorrow

Great idea! Thank you for this. Code looks good to me, but could you add a test method to try against? If not, I can merge and add a case before the version bump this afternoon or tomorrow

Sure thing! I'll add a test method and update the PR once done. 😄

@acupofjose I've added the mentioned test case for cancellation tokens. Do note that I've given the token source as low of TimeSpan as possible (1 tick), however, this still might be too slow in certain edge-cases, triggering a false-failed test.
If you know of a better way to reliably test cancellation tokens, please do let me know.

This is perfect, thanks for doing this so efficiently. That seems to be the best way I know of to test cancellation tokens! - I'll get put it (with credit) in the next release.
Implements #46


Doc/Feat: Git-Worktree Support

Hello and thank you for garden!
I wonder if garden has support for https://git-scm.com/docs/git-worktree or could be extended to support them?
It's useful for me to checkout many worktrees which can get tricky when switching among different workspaces.
I'm still learning about Garden but I appreciate the sanity it brings this challenge and look forward to understanding and using it more over time.

Hi @davvid,
Glad to be in contact with you and thanks for sharing! Far from a distraction, reading through your use-case/workflow is very illuminating! It strengthens my sense there are parts of garden that I'd like to grow into. Initially I'm just glad to have a way to document, reproduce and share my repo/workspace configs.
Workflow and Tools
Myself and my team use a bushy-monorepo pattern, resulting in a catalog of semi-independent, solution-branches, each forked from the same starting branch. Occasionally multiple branches will together compose into a larger body of work, either in concept or in delivery.
In order to make switching among these solutions easier I usually encourage folks to use git-worktrees. This also helps when frequently switching between tasks and (perhaps ironically) helps to flatten out the complexities of branch-mgmt for any that aren't well versed with git. Within each branch we usually use direnv and Nix to dynamically setup available software and environment variables.
Now that I'm working on semi-ephemeral VMs more often I've come to appreciate how home-manager improves the productivity-bootstrapping experience, but it doesn't manage git repos.
(BTW I wonder if you would be open to a future integration between home-manager and garden? info)
Envisioning a Possible Future
As it goes, the more ergonomic things become, the more noticeable those non-ergonomic things become! 😆
For me the missing tool takes a config in a common format and blast out dozens of git-repos/worktrees/branch into their right place. On a more ephemeral machine this saves a bunch of time and makes the other benefits of this branching workflow immediately available.
To be able to do that with garden, (perhaps even based on a config file that we could keep in version control) - would be just amazing!
Summary Request
As I understand it, this may involve these changes:

Add the ability to define git-worktree,
And the ability to specify a checkout branch in the config file.

I just hope this is something you may also consider worthwhile.
Cheers and warm regards,
Nick

miscellany

Though garden doesn't appear to be in nixpkgs, it's install with Nix is as easy as:
nix shell nixpkgs#rustc nixpkgs#cargo nixpkgs#clang -c cargo install garden-tools

I am interested in Rust but not experienced with it and will spend some time reading through the code to better understand it.

I wonder if either of the below hold your interest as topics for the future:

Teach garden to read it's config from a non-local git repo
Some integration between garden and home-manager

I've started writing up an example garden.yaml demonstrating how we can integrate the git-worktree feature.
https://github.com/davvid/garden/blob/next/doc/src/garden.yaml
The main additions to the config file are:
trees:
  example/example.git:
     bare: true
     url: ...

bare: true makes garden clone a bare repository.
trees:
    example/v1:
        worktree: example/example.git
        branch: maint/v1.x

worktree: example/example.git tells it that this is a worktree whose parent is the example/example.git tree. That tree is a bare repository, but it doesn't need to be ~ that's optional.
The example/v1 tree will be created by first ensuring that example/example.git exists. git worktree is then used to create example/v1.
branch: maint/v1.x makes garden checkout and associate the maint/v1 branch with that worktree.
Alternate syntax I considered:
trees:
    example/v2:
        # "parent" instead of worktree.. but worktree seemed like a better choice
        parent: example/example.git
        branch: maint/v2.x
    example/v3:
        git:  # have everything namespaced under a "git" top-level key. Kinda tidy but also a bit nested.
            worktree: example/example.git
            branch: maint/v3.x
            config: # if we did that then git top-level `gitconfig` would make sense here too
                user.email<EMAIL_ADDRESS>
I also thought.. "what if we overload branch?" so that branch: null can convey a bare repo, but that seemed like too much overloading. It seems simpler to just add a new bare: true key.
worktree: <tree> is a concept very similar to extend: <tree> in that it's going to copy over all of the tree's settings (such as the URL, gitconfig, commands, environment, etc). The one special case is that worktree will always ignore bare: true because these always have worktrees associated with them.
We do support garden -c <path.yaml> to load an alternate garden file, as well as garden -C <path> to make garden chdir somewhere before it does its garden.yaml discovery, so those may be helpful for teaching garden to read it's config from a non-local git repo. Ah.. by non-local do you mean network URLs so that we can pass an http or other url and garden will read the config from that location? That sounds pretty awesome to have built-in. Supporting network urls is kinda like curl <url> | sh which can be dangerous in general and something that often makes security-minded folks uneasy. That would be a pretty useful / convenient feature, though. That's pretty much the classic tradeoff (security vs. convenience) so I'm not necessarily opposed to it.
Regarding Nix and home-manager ~ Nix is conceptually awesome so I'd like to learn more about it in the future and how we can better integrate with home-manager. For now I'll focus this issue primarily on the worktree stuff. It does seem like there's room for expansion there in the future as well.
I've been trying to force myself to work on the documentation first before diving into the implementation, and hopefully that's a good way for us to hash out how we'd like it to work first before implementing it.
Once we agree on what the example garden.yaml should look like then I'll update the documentation around it to reflect the new capabilities. There should probably be a dedicated page in the docs for just the worktree feature IMO.
Let me know what you think about the config file format.

Beyond excited to see these updates!
I'll review your notes and respond in kind over the next few hours or days.
Thank you so much!!!

I think the worktree spec needs a little bit more metadata in order for it to work. Here's what is currently proposed:
trees:
    project/repo.git:
        url: ...
        bare: true
    project/v1:
        worktree: project/repo.git
        branch: new-branch

The branch also needs a way to specify an upstream branch, otherwise it's going to be a brand-new branch that's not associated with any upstream branch. That might be useful in some situations but I imagine that a common situation is that we want the branch to track an upstream branch.
git worktree add --track -b todo origin/todo is what we have to tell git to create a worktree called "todo" with the same branch name which tracks the same branch from the origin remote.
I think we would need a few more (optional) fields to represent the ability to track upstream branches.
I'm thinking something like this:
trees:
    project/repo.git:
      url: ...
      bare: true
      # The "branches" block is where we can define metadata the defines the branch
      branches:
          maint/v1.x: origin/maint/v1.x

    project/v1-worktree:
      worktree: project/repo.git
      # This branch has configuration in the parent "branches" metadata.
      # This worktree is created using "git worktree add --track -b maint/v1.x origin/maint/v1.x"
      branch: maint/v1.x

    # This worktree creates a brand-new "dev" branch that is local to the git repos and not associated with
    # any upstream branches. There is no entry for it in the parent "branches" block so it doesn't get any configuration.
    project/dev:
        worktree: project/repo.git
        branch: dev

That seems like it'd be useful for both git-worktree usage and for regular git repos. The branches + branch concept could even be used in a plain tree entry and it would make sense.
trees:
  project/repo:
    url: ...
      branch: maint/v1.x
      branches:
        maint/v1.x: origin/maint/v1.x

That means to checkout the maint/v1.x branch when creating the repo and associate it with the upstream origin/maint/v1.x branch.

Heads-up @nickgarber this is basically working now. garden grow is able to grow worktrees now.
Please ignore the examples above where we use a bare repository for the common storage -- git isn't really designed to work that way.
The documentation now recommends using a "main" repository and additional child worktrees linked off of it. For example:
trees:
  main: https://example.com/repo/example.git
  dev:
    worktree: main
     branch: dev

https://davvid.github.io/garden/commands.html#worktrees
v0.2.0 has been tagged and garden-tools 0.2.0 was published to crates.io.
The only remaining TODO: is to teach garden plant to detect and configure worktrees so this issue remains open.
The rest of the functionality is available now.

Thanks so much for making this worktree-centric workflow so graceful!

Thanks! I'm glad you're finding garden helpful.
garden v0.3.0 was just published to crates.io/crates/garden-tools.
This release finalized support for git worktree repositories. garden plant was taught to detect parent and child repositories created using git worktree.
cheers!


Fix dependabot not working for go-spacemesh repo

Motivation
dependabot has troubles parsing a go.mod file with go 1.21 if it doesn't specify a patch version. (see https://github.com/dependabot/dependabot-core/issues/7895). This PR fixes the issue.
Summary from https://go.dev/doc/toolchain:
The version in go.mod now specifies the minimum version of go that is required to build the module and must include a patch version. Additionally if the module or any of its dependencies require a newer version of go than the compiler the compiler will auto download the required toolchain, i.e. the compiler will essentially download the minimum required version of itself if it's older than the newest versions specified by the module or its dependencies.
go 1.21.0 instructs the compiler to use at least version 1.21.0 or any newer version (if specified by e.g. a dependency) when building the module. We do not need to update the patch version with every new release of go unless go-spacemesh is affected by a bug that was fixed in that release.
actions/setup-go doesn't use the newest patch version with check-version when it is already specified. With the new behavior this is also not needed, as the go build command will automatically download the required toolchain if needed. In case we still want to automatically use the newest patch version to build our binaries we have to set 1.21 and check-version=true explicitly for actions/setup-go.
Changes

specify a minor version in go.mod until dependabot is able to parse go 1.21
Update ci.yml to explicitly use the newest patch version of 1.21 when building go-spacemesh.

Test Plan
n/a
TODO

[x] Explain motivation or link existing issue(s)
[x] Test changes and document test plan
[x] Update documentation as needed
[x] Update changelog as needed

bors merge

bors merge

bors merge

Merge keeps failing due to flaky hare3 test. Will wait with merge until after https://github.com/spacemeshos/go-spacemesh/pull/5033 is merged

bors merge


Prevent duplicated message in wheel page

When the user spins the wheel successfully, but an error occurs when refreshing the page data, the two messages overlap each other, as in the picture.

This should not happen. One should have priority over the other.

Isn't this already solved?


Documentation missing

What are the purpose of these values in the example file?
#ext_constant_name: "test"
#app_folder_name:"app"

The plugin is missing some documentation on "how to use". You guys need any help with this?  Thanks

You are right and I plan on improving this very soon.

Hi there, I don't understand how people are figuring out how to use this plugin, I cannot find any documentation at all, only some tutorials that explain a few commands here and there, how are you guys figuring it out?


DA Records

[ ] It shall be possible to view and verify a shared data agreement record
[ ] Filter data agreement by purpose and lawful basis of processing (for e.g. consent, legitimate interest e.t.c)
[ ] Search data agreement id, data agreement record id, subscriber id
[ ] View data agreement record

Attaching the wireframes:

@lalc On clicking 'eye' icon, view data agreement panel is shown ?


subs: Limit editing subscribers for waiting period users.

Commit 1:
This is a preparatory refactor for adding
UserProfile.can_subscribe_other_users.
Although there existed a test for limiting users from creating
streams at test_subs.test_user_settings_for_adding_streams,
it did not test the logic inside can_add_streams, tests have
been added to solve that issue.
Commit 2:
Does not let you subscribe other users if you are a guest or a
waiting period user.

Looks great, merged, thanks @shubham-padia!


"Olt" county is listed in the drop-down menu

Description:
"Olt" county appears in the drop-down menu list alongside the rest of the counties in Romania according to law
Precondition:
The website is up an running.

Step 1
Click on the search bar.

Expected results
The counties appears in the drop-down menu.

Step 2
Scroll down the list

Expected results
The county appears in the drop-down menu as "Olt".


Is it possible to extract Activity Logs for  a subscription as seen in azure console using the sdk?

Is your feature request related to a problem? Please describe.
I would like to view role assignment creation and deletion activity for a stipulated time. Currently I have to login manually to the console and download logs as csv. I wish to automate this process.
Describe the solution you'd like
A clear and concise description of what you want to happen.

Login to azure console with access keys and client id.
Create Service Prinicipals and generate access token and request management url to list activity logs reports using a LogsManagementClient.
Store the listed activity logs in csv
Describe alternatives you've considered
Given the size of sdk I tried looking into the azure core and azure-mgmt-operations but to no avail. Can some azure expert shed light on what package can be used to extract these logs?

CSV is not built directly in the python library, but should be implementable using another library. You should use https://docs.microsoft.com/en-us/python/api/azure-mgmt-monitor/azure.mgmt.monitor.v2015_04_01.operations.activitylogsoperations?view=azure-python#list-filter--select-none----kwargs- to retrieve the requested logs.

@smoolya17 Thanks for reaching out to us. Apologies for the delay in getting back to you.
Could you please confirm if the pointers suggested by @nkiest helped in achieving your requirement ?
Alternatively, you can also automate the retrieval of the Activity logs using the Powershell as explained here. Please let me know if you still have any queries on this. Awaiting your reply.

Yes it helped, you may close this issue


[gdrive] potential regression of folder name handling

in my app, I found folders would have extra / for google drive

might be a regression recently

20:18:04 [WARN] service=gdrive operation=stat path=apps/infoflow/default.ifvault/v1/data/48aaec2f-ed21-4f37-a3ca-90f9ac5d6872 -> NotFound (permanent) at stat, context: { service: gdrive, path: apps/infoflow/default.ifvault/v1/data/48aaec2f-ed21-4f37-a3ca-90f9ac5d6872 } => path not found: apps/infoflow/default.ifvault/v1/data/48aaec2f-ed21-4f37-a3ca-90f9ac5d6872
20:18:06 [WARN] service=gdrive operation=stat path=apps/infoflow/default.ifvault/v1/data/1dff98d4-a8c6-4b08-a9e3-78e45d4aa034 -> NotFound (permanent) at stat, context: { service: gdrive, path: apps/infoflow/default.ifvault/v1/data/1dff98d4-a8c6-4b08-a9e3-78e45d4aa034 } => path not found: apps/infoflow/default.ifvault/v1/data/1dff98d4-a8c6-4b08-a9e3-78e45d4aa034

yes. it is a regression.
the path created by the same open dal client cannot be read.

this regression is happening between v0.45.1 and v0.46.0
this is the last correct version: https://github.com/apache/opendal/blob/v0.45.1/core/src/services/gdrive/core.rs#L396

Interesting. It also repros using v0.45.1

https://github.com/apache/opendal/blob/27c6a776653b7671da8171dea8c36283713eeb45/core/src/services/gdrive/core.rs#L396-L405
Maybe we don't need to append the / suffix for name?

let me try!

it seems to be fixed by this change.

https://github.com/imWildCat/opendal/commits/main/
I also found another issue shown above: opendal now create folder with same names...

Could it be related to cache?
I'm not calling opendal concurrently.

I'm not calling opendal concurrently.

The cache is thread-safe, so concurrent calls should not pose a problem. I believe this issue is related to how we handle paths.

anyway, let me create a PR to fix the naming issue first.
let's see if the test can pass

@Xuanwo any suggestion on the direction to fix the tests on main first?
I believe we have many regressions since https://github.com/apache/opendal/pull/3975

@Xuanwo any suggestion on the direction to fix the tests on main first?

Hi, I've been quite busy recently. I plan to set aside some time next week to debug this issue.


Off by one error introduced in ooxml/XSSF/UserModel/XSSFSheet.RemoveRow

This commit moves the getting of 'row.RowNum + 1' from after _rows.Remove(row.RowNum) to before. Since _rows.Remove shifts that number by one this introduces an off by one error.
https://github.com/nissl-lab/npoi/commit/33bc6acd878da7b8c428c4dc2cd5d80919e613f2

Tried to create a pull request to fix it: https://github.com/nissl-lab/npoi/pull/451
Be gentle, git and open source noob here:)

This


LPC2368 - ARM failure - critical.c not compatible with ARM7 core

The mbed lib build output:
python tools\build.py -m LPC2368 -t ARM

Compile: critical.c
[Warning] critical.h@50:  #1295-D: Deprecated declaration core_util_critical_section_enter - give arg types
[Warning] critical.h@63:  #1295-D: Deprecated declaration core_util_critical_section_exit - give arg types
[Warning] critical.c@37:  #223-D: function "__get_PRIMASK" declared implicitly
[Error] critical.c@86:  #20: identifier "tmp_IntEnable" is undefined
[Warning] critical.c@95:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@98:  #223-D: function "__CLREX" declared implicitly
[Warning] critical.c@102:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@107:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@110:  #223-D: function "__CLREX" declared implicitly
[Warning] critical.c@114:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@120:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@123:  #223-D: function "__CLREX" declared implicitly
[Warning] critical.c@127:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@134:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@135:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@143:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@144:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@152:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@153:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@162:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@163:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@171:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@172:  #223-D: function "__strex" declared implicitly
[Warning] critical.c@180:  #223-D: function "__ldrex" declared implicitly
[Warning] critical.c@181:  #223-D: function "__strex" declared implicitly
"mbed/.build/mbed/critical.h", line 50: Warning:  #1295-D: Deprecated declaration core_util_critical_section_enter - give arg types
"mbed/.build/mbed/critical.h", line 63: Warning:  #1295-D: Deprecated declaration core_util_critical_section_exit - give arg types
"mbed\hal\common\critical.c", line 37: Warning:  #223-D: function "__get_PRIMASK" declared implicitly
"mbed\hal\common\critical.c", line 86: Error:  #20: identifier "tmp_IntEnable" is undefined
"mbed\hal\common\critical.c", line 95: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 98: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 102: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 107: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 110: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 114: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 120: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 123: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 127: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 134: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 135: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 143: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 144: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 152: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 153: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 162: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 163: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 171: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 172: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 180: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 181: Warning:  #223-D: function "__strex" declared implicitly
mbed\hal\common\critical.c: 24 warnings, 1 error
"mbed/.build/mbed/critical.h", line 50: Warning:  #1295-D: Deprecated declaration core_util_critical_section_enter - give arg types
"mbed/.build/mbed/critical.h", line 63: Warning:  #1295-D: Deprecated declaration core_util_critical_section_exit - give arg types
"mbed\hal\common\critical.c", line 37: Warning:  #223-D: function "__get_PRIMASK" declared implicitly
"mbed\hal\common\critical.c", line 86: Error:  #20: identifier "tmp_IntEnable" is undefined
"mbed\hal\common\critical.c", line 95: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 98: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 102: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 107: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 110: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 114: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 120: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 123: Warning:  #223-D: function "__CLREX" declared implicitly
"mbed\hal\common\critical.c", line 127: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 134: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 135: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 143: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 144: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 152: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 153: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 162: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 163: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 171: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 172: Warning:  #223-D: function "__strex" declared implicitly
"mbed\hal\common\critical.c", line 180: Warning:  #223-D: function "__ldrex" declared implicitly
"mbed\hal\common\critical.c", line 181: Warning:  #223-D: function "__strex" declared implicitly
mbed\hal\common\critical.c: 24 warnings, 1 error

Completed in: (7.00)s

Build failures:
  * ARM::LPC2368

cc @c1728p9 @adbridge

I am looking at this further to fix this. LPC2xxx family (I found at least 2) have VIC peripheral: here's some description of those registers.
What is important for us, it's in the cm7 header file for LPC2368:
#define __disable_irq()         unsigned tmp_IntEnable = LPC_VIC->IntEnable; \
                                LPC_VIC->IntEnClr = 0xffffffff

#define __enable_irq()          LPC_VIC->IntEnable = tmp_IntEnable

It's obvious that tmp_IntEnable is defined for disable_irq(), therefore __enable_irq needs t o be in the same scope,  this is not valid for our critical enter/exit.  The macros look weird even for this target:
#define __disable_irq()         unsigned tmp_IntEnable = LPC_VIC->IntEnable; \
                                LPC_VIC->IntEnClr = 0xffffffff

#define __enable_irq()          LPC_VIC->IntEnable = tmp_IntEnable

#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/

#define __enable_irq                              __enable_interrupt        /*!< global Interrupt enable */
#define __disable_irq                             __disable_interrupt       /*!< global Interrupt disable */
#define __NOP                                     __no_operation()          /*!< no operation intrinsic in IAR Compiler */

#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/

static __INLINE void __enable_irq() {
    unsigned long temp;
    __asm__ __volatile__("mrs %0, cpsr\n"
                         "bic %0, %0, #0x80\n"
                         "msr cpsr_c, %0"
                         : "=r" (temp)
                         :
                         : "memory");
}

static __INLINE void __disable_irq() {
    unsigned long old,temp;
    __asm__ __volatile__("mrs %0, cpsr\n"
                         "orr %1, %0, #0xc0\n"
                         "msr cpsr_c, %1"
                         : "=r" (old), "=r" (temp)
                         :
                         : "memory");
    // return (old & 0x80) == 0;
}

3 different toolchains - 3 different enable/disable irq :sob:
I am going to send a patch to disable ARM toolchain until this is fixed.

I think we should deprecate support for ARM7 and focus only on Cortex

ARM Internal Ref: IOTMORF-140


Tammy would like to be able to create a private ROSA cluster

Updated module to provision private cluster.


Modular Data Adapters and Simulator Dispatch

This PR has 2 main features:

Data Adapters are now much more modular:

data_adapter = bf.DataAdapter() \
    .drop("dim") \
    .to_array() \
    .as_set("y") \
    .broadcast("n") \
    .convert_dtype(from_dtype="float64", to_dtype="float32") \
    .standardize(exclude="n") \
    .concatenate(["mu", "sigma"], into="inference_variables") \
    .rename("n", "inference_conditions") \
    .rename("y", "summary_variables")

Simulators can now be created via dispatch utility, which automatically tries to select an optimal implementation for the simulator:

simulator = bf.simulators.make_simulator([prior, likelihood], meta_fn=meta_fn)

These features are not independent of one another, which is why I am only making 1 PR for both.
I am open to improving the overall simulator structure, still; either with this pull request or after merging. If you feel like there are any critical bugs or missing features, please also do not hesitate to request changes.
Tests may still require updates, so leaving this as a draft PR for now.

This looks very very cool Lars!
One quick immediate question. Shall we think about the meta_fn argument name for a bit? First of all, do we think that meta is a good name? I think I remember that I kind of suggested this but I would like us to think about it more before just going with it. Second, do we need the _fn suffix? I think it makes the argument name look a bit ugly.

@paul-buerkner Thank you for bringing this up. I think meta is fitting in the sense that we supply meta data about the batch, but I am open to other names. The _fn suffix signifies to the user that this is supposed to be a function object (as opposed to a Simulator or bare values), so I would leave this in.

I personally like the function signifier suffix.
Any thoughts on _fn vs. _fun vs. _func? Needless to say, once we choose one, that should be consistently used throughout the library.

@marvinschmitt I have consistently used fn everywhere so far (which is not too many places to switch now though). But I think this is also because I come from a programming background where this is more commonly used than the other alternatives :smile:

I also prefer _fn given the common options. so let's stick to it!
Marvin Schmitt @.***> schrieb am Fr., 18. Okt. 2024,
15:04:

Agreed, I also prefer the _fn suffix, with _func being a close second.
@paul-buerkner https://github.com/paul-buerkner given your experience
with end users from statistical programming, what's your opinion here?
—
Reply to this email directly, view it on GitHub
https://github.com/bayesflow-org/bayesflow/pull/219#issuecomment-2422315057,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADCW2ABTKN74XPRMSQSSIULZ4D2OLAVCNFSM6AAAAABQFXMAWCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRSGMYTKMBVG4
.
You are receiving this because you were mentioned.Message ID:
@.***>


Regarding the dataset-related question

Your work is exceptionally fascinating and highly commendable. Could you kindly clarify which version of the ImageNet dataset you utilized in your experiments? For instance, was it the classic 2012 version or the latest 2017 version? Your contributions are greatly appreciated. Thank you very much.

Hi @6akso,
Thank you for showing interest in MaPLe!
Regarding your query, please note that we used the classic 2012 version of ImageNet for training and evaluation.


check_indexes: write page to explain Outdated Statistics warning

https://smartpostgres.com/problems/outdated_statistics

Added: https://smartpostgres.com/problems/outdated-statistics/


Add Hosting concerns segment about NodeJS

add paragraph talking about the challenges of hosting a NodeJS application
Related issues

closes #
Short description and why it's useful

Screenshots of visual changes before/after (if there are any)

Which environment this relates to
Check your case. In case of any doubts please read about Release Cycle

[ ] Test version (https://test.storefrontcloud.io) - this is a new feature or improvement for Vue Storefront. I've created branch from develop branch and want to merge it back to develop
[ ] RC version (https://next.storefrontcloud.io) - this is a stabilisation fix for Release Candidate of Vue Storefront. I've created branch from release branch and want to merge it back to release
[ ] Stable version (https://demo.storefrontcloud.io) - this is an important fix for current stable version. I've created branch from hotfix or master branch and want to merge it back to hotfix

Upgrade Notes and Changelog

[x] No upgrade steps required (100% backward compatibility and no breaking changes)
[ ] I've updated the Upgrade notes and Changelog on how to port existing VS sites with this new feature

IMPORTANT NOTICE - Remember to update CHANGELOG.md with description of your change
Contribution and currently important rules acceptance

[x] I read and followed contribution rules
[ ] I read the TypeScript Action Plan and adjusted my PR according to it
[ ] I read about Vue Storefront Modules and I am aware that every new feature should be a module

@sandermangel if you want this docs to be on soon, then you should create branch from master and create PR back to master. Only these docs are deployed.


xgboost ranking objective functions have strange behaviors

In xgboost you have the possibility of chosing a ranking objective function. If you do so, as I understood, the algorithm becomes lambdaMART in a way.
You have 3 different ranking function:
"rank:pairswise"
"rank:map"
"rank:ndcg"

It seems that "rank:pairwise" does a pretty good job. However the two others have bad performances (very bad tbh). I am wondering if it comes from the implementation (I've seen that it's a beta implementation of these objective functions) or if we should build our model differently ?
Another question, those objective functions should be quadratic (we need to swap each example with every single example in the training set in order to compute the gradients), however it seems that the learning time is the same as "binary:logistic" for example which is not quadratic. What am I missing there ?
Thanks ! :)

Only “rank:pairwise” is a ranking objective. "map" and "ndcg" are performance metrics for ranking.
Ranking objective performance is quadratic within each group, not the whole training set.

Please correct me if I am wrong but "rank:map" and "rank:ndcg" are objective functions. map and ndcg are performance metrics, yes, but during the training process you can optimise those metrics as it is done in LambdaMART (by multiplying each pair loss by a coefficient which is the difference in map or in ndcg when you swap the examples in the rank). If I understood well, this is what they tried to do here in xgboost. Am I wrong ?

@jf10 rank:pairwise is the objective function for gradient descent optimization (so that xgboost understands what to minimize), while rank:map and rank:ncdg are the metrics you monitor for the performance (they have zero impact on the model).

@Laurae2

@Laurae2 In .../src/objective/rank_obj.cc, it computes different objective function regarding your objective parameter (rank:map, rank:pairwise, rank:ndcg). If this is only for monitoring then I don't understand why you have an evaluation metric parameter.
Plus, it does have a strong impact on the model.
There are some typos in this file too. (i.e: PairwieRankObj).
Could someone explain how those objectives function works because I am lost now ? :/

@jf10 They (map, ncdg) are currently in testing and you should not expect any good performance from them.
If you want to understand how they work, all you need is to read the code (you don't need C++ knowledge to understand how they work, most functions are obvious in their meanings, like Sigmoid, CalcDCG, etc.).
What's important is:

The objective function is the gradient of the loss function
The loss function may not be derivable and thus require a proxy function (ex: MAE, ranking problems)

Therefore, there's a lot more going on which is not in the code itself. You may try getting and plotting the gradients to check what is happening exactly, because they guide xgboost / gradient descent on how to reduce the error. This will also help you find out exactly why they behave poorly.

@Laurae2 Thank you for you answers. I will try what you suggest.


froyo for you!

A minor typo correction.

Thanks for the contribution! I've previously asked @jpmedley to address this in the open https://github.com/GoogleChrome/sw-precache/pull/209 PR, and that should be taken care of soon. I'm going to close this PR in the meantime.


Consider supporting a list of filesystems?

Thanks for this library, it works like a charm!
I was wondering if you'd be open to accepting a list of filesystems, something like:
fs := mergefs.New(a, b, c)

Right now you have to do this following:
// Merge the filesystem together
func Merge(first fs.FS, remaining ...fs.FS) (merged fs.FS) {
	merged = first
	for _, fsys := range remaining {
		merged = merged_fs.NewMergedFS(merged, fsys)
	}
	return merged
}

But I have a feeling it would be a bit more efficient with less layers if this was possible natively.

Thanks for the thorough response @yalue!
I'm going to close this issue since I've diverging slightly from merged_fs and actuallythe io/fs.FS interface. I'm finding myself needing to pass a context.Context through for tracing support, so I decided to fork merged_fs anyway.
Hopefully if others need multiple FS support, they'll find this issue and copy & paste that Merge function in or open a PR. I don't want to add something I'm unlikely to use directly.
Thanks again!

I realized that there could be a low-effort optimization to merging multiple filesystems compared to the snippet you posted: merge them into a balanced binary tree rather than a heavily unbalanced tree.  (Technically, this may impose a slight overhead when opening files from top-priority FS's, but it will both reduce the overall number of MergedFS instances to create and reduce overhead of opening a file from a low-priority FS.)
Anyway, thought I may point this out if you're doing some similar n-way merge in your fork.  It's in my latest commit (tag v1.2.0); it works with no issue in a simple test using 2,048 zip files.


Inventory detail

Develop inventory details

[x] Design inventory details.
[x] Add functionality to save food to a particular inventory using many-to-many relationships.
[x] Data view should happen by joining all 3 tables to avoid N+1 query issues.

Hi @RitobrotoMukherjee 👍🏽
Thank you for completing your task on Inventory details. You can go ahead and merge it :shipit:

@assadounto thanks mate


can't play it again misty lol jk

Version
3.2.6 (8171900)
Seed
R720-EJJC-XXHH40ZZZMEZ9H00H3XVPEVPEV4ZZZZZZZZZZZZZZZZZZZZZZZZZ
Scenario
RE 2 (Leon A)
Player Character
misty (human)
What happened?
simply put , the game crashed as i went to enter the bus

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."


Records are white when used (used to be yellow) - VS version 17.9.4

Mocha Theme

still the same as they were for me

Can't reproduce


docs: add ML keyword references to What is DVC? in user guide [SEO]

Based on existing search results, this doc could benefit from explicit "machine learning" references. Also based on terms in use, I rewrote the 2nd paragraph to 'ML' in proximity to 'flow'.

Closing to merge with #1806.

OK, will review #1806


introduce package config commenting config

related packit-service/packit-service#168

The structure looks good from our view -- modular and extendable.
I am only not sure if the UX is good.
Do we have some other commenting in mind, that needs to be configurable?
We will have probably more interactivity through issues and commit status, so some general term like notifications make more sense to me. (Combination of yours and Hunor's proposal.)

I also like notifications, so...
notifications:
  pull_request:
    successful_build: nikdy

?

done, someone save me and hit the approve button please


Added --aggregate option to attach

Added --aggregate option which allows user to request aggregated mode for in-memory aggregation.
Issue number of the reported bug or feature request: #
Describe your changes
A clear and concise description of the changes you have made.
Testing performed
Describe the testing you have performed to ensure that the bug has been addressed, or that the new feature works as planned.
Additional context
Add any other context about your contribution here.

Codecov Report
Patch coverage: 80.00% and project coverage change: -0.01% :warning:

Comparison is base (bb9c0db) 91.88% compared to head (2751eb4) 91.87%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #455      +/-   ##
==========================================
- Coverage   91.88%   91.87%   -0.01%
==========================================
  Files          90       90
  Lines       10766    10771       +5
  Branches     1473     1475       +2
==========================================
+ Hits         9892     9896       +4
- Misses        872      873       +1
  Partials        2        2

Flag
Coverage Δ

cpp
85.23% <ø> (ø)

python_and_cython
95.28% <80.00%> (-0.02%)
:arrow_down:

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

Files Changed
Coverage Δ

src/memray/commands/attach.py
54.70% <80.00%> (+0.76%)
:arrow_up:

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


Iter for StorageVec

An internal contributor has requested the Iter trait be implemented for StorageVec

Hi, wouldnt there be a problem with function purity? Iterator::next is pure but unless the StorageVec would be preloaded as VecIter the next would require some reads. Asking out of curiosity :)
So implementation that would look like this is not feasible unless there would be a new Iterator trait for Storage structs:

pub struct StorageVecIter<T> {
    storage_vec: StorageKey<StorageVec<T>>,
    vec_len: u64,
    index: u64,
}

impl<T> Iterator for StorageVecIter<T> {
    type Item = StorageKey<T>;

    fn next(ref mut self) -> Option<Self::Item> {
        if self.index >= vec_len {
            return None
        }

        self.index += 1;
        self.storage_vec.get(self.index - 1)
    }
}


Typo in (*Rect).Equals

Equals checks that a.Y == a.Y but should check that a.Y == b.Y.
/src/github.com/veandco/go-sdl2/sdl/rect.go:52:20: identical expressions on the left and right side of the '==' operator

Fixed it. Thanks for finding this!


There are 2 cookies being created. Duplication happening.

There are 2 cookies being created on a single call to SetAsync.  And GetAsync retrieves the highlighted yellow one whereas it should retrieve the other one.

Not sure what is going on here. Can you attach a sample application where this can be replicated?

Closing due to inactivity


Add support for npm 7

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?
[x] Have you successfully run brew man locally and committed any changes?

After upgrading npm to 7, the npm install started to fail because the dirs libexec/lib doesn't exist. On https://github.com/Homebrew/homebrew-core/pull/63170 I added the mkdir_p libexec/"lib" to 2 formulas, but probably this will be necessary again for other formulas.
These lines should be removed later.

Thanks so much for your first contribution!  You rock, @diogoazevedos!


Missing nginx state metrics

Hi,
I´ve launch my Kong Cluster in production and after setups the Oficial Kong Dashboard for metrics i found that some states of nginx is missing
HELP kong_nginx_http_current_connections Number of HTTP connections
TYPE kong_nginx_http_current_connections gauge
kong_nginx_http_current_connections{state="active"} 6
kong_nginx_http_current_connections{state="reading"} 0
kong_nginx_http_current_connections{state="waiting"} 4
kong_nginx_http_current_connections{state="writing"} 2
state = total and handled are missing
Any reason?
Kong 1.1.2
Thanks

@flowdopip Are you using a custom server template to serve the /metrics endpoint or is this output from Kong's Admin port?

Yes,
I'm using a custom template. But i already compare with the default one and is equals. The only thing changed was the access logs format to json.

Very strange.
I have this nginx HTTP include directive for Prometheus metrics, only to have endpoint convention. This could be something to change in the plugin to everyone to choose the best endpoint path on the configuration
server {
server_name kong_prometheus_exporter;
listen <IP_ADDRESS>:9542; # can be any other port as well
location /monitoring/metrics {
    default_type text/plain;
    content_by_lua_block {
        local promethus = require "kong.plugins.prometheus.exporter"
        promethus:collect()
    }
}

location /monitoring/nginx {
     access_log off;
     stub_status;
}

location /monitoring/ping {
    return 200;
}

location /gc {
    content_by_lua_block {
        ngx.say(string.format("kong_nginx_worker_size{worker=%d} %.3f", ngx.var.pid, collectgarbage("count")))
    }
  }

}
On my Kong instance I'm able to do this:
ITERATION 1:
http://localhost:9542/monitoring/metrics

HELP kong_nginx_http_current_connections Number of HTTP connections
TYPE kong_nginx_http_current_connections gauge
kong_nginx_http_current_connections{state="accepted"} 239
kong_nginx_http_current_connections{state="active"} 4
kong_nginx_http_current_connections{state="reading"} 0
kong_nginx_http_current_connections{state="waiting"} 3
kong_nginx_http_current_connections{state="writing"} 1

ITERATION 2:
http://localhost:8001/metrics
-- HELP kong_nginx_http_current_connections Number of HTTP connections
-- TYPE kong_nginx_http_current_connections gauge
kong_nginx_http_current_connections{state="accepted"} 239
kong_nginx_http_current_connections{state="active"} 4
kong_nginx_http_current_connections{state="handled"} 239
kong_nginx_http_current_connections{state="reading"} 0
kong_nginx_http_current_connections{state="total"} 265
kong_nginx_http_current_connections{state="waiting"} 3
kong_nginx_http_current_connections{state="writing"} 1
ITERATION 3:
http://localhost:9542/monitoring/metrics
-- HELP kong_nginx_http_current_connections Number of HTTP connections
-- TYPE kong_nginx_http_current_connections gauge
kong_nginx_http_current_connections{state="accepted"} 239
kong_nginx_http_current_connections{state="active"} 4
kong_nginx_http_current_connections{state="handled"} 239
kong_nginx_http_current_connections{state="reading"} 0
kong_nginx_http_current_connections{state="total"} 265
kong_nginx_http_current_connections{state="waiting"} 3
kong_nginx_http_current_connections{state="writing"} 1
for some reason after call the 8001/metrics the state="handled" and state="total" magically appear
Any idea?

You are missing in your custom Nginx template:
    location /nginx_status {
        internal;
        access_log off;
        stub_status;
    }

Once you add that, you will have access to the missing metrics as well.

No. I have it

@flowdopip Not sure what you mean. Is your problem resolved?

No, I follow your suggestion and check the code and I have this piece of code on the template.
But the behavior is the same, not solved my problem


AllUltraJug not working

AllUltraJug does not change the towers's projectiles.

same goes for me i just tested it with every monkey and it does not work

same for me


Error: Compilation of µWebSockets has failed

hi.
I'm getting the following error on Debian 8 with skypool-nimiq-v1.2.1f1-linux-x64-fast version:
pkg/prelude/bootstrap.js:1172
      throw error;
      ^

Error: Compilation of µWebSockets has failed and there is no pre-compiled binary available for your system. Please install a supported C++11 compiler and reinstall the module 'uws'.
    at native (/snapshot/skypool-nimiq-miner/node_modules/uws/uws.js:40:19)
    at Object.<anonymous> (/snapshot/skypool-nimiq-miner/node_modules/uws/uws.js:44:3)
    at Module._compile (pkg/prelude/bootstrap.js:1243:22)
    at Object.Module._extensions..js (module.js:650:10)
    at Module.load (module.js:558:32)
    at tryModuleLoad (module.js:501:12)
    at Function.Module._load (module.js:493:3)
    at Module.require (module.js:583:17)
    at Module.require (pkg/prelude/bootstrap.js:1153:31)
    at require (internal/module.js:11:18)

node version is v10.6.0 and npm version is 6.2.0
my cpu supports avx and avx2

https://github.com/skypool-org/skypool-nimiq-miner/releases/download/v1.2.1f1/uws_linux_59-centos-x64-change-filename.node

@Azard  faced the same error and downloaded that file you suggested, but the error remains :(

@emersonjr The v1.2.2 version have a centos uws file, could you rename it and work ?

@Azard  Rename it to exactly what? Sorry if it's a dumb question
I renamed it to a random name and went for nothing.

@emersonjr replace uws-centos-changename to original uws file

@Azard i managed to changed the name correctly, just forget to advice here. Thank you anyway :D


Why is this different

I am connecting from my Macbook pro via an Iterm2/ssh to two raspberry pis on on which I have installed tmux, including this
One comes up with a term that looks like

and the other like

I want the former - any ideas why the second is happening? and yes, I know it says "bash" - I have apt installed zsh and also oh-my-zsh, including telling it that zsh is default shell... (and logged out completely and back in again).

Hello @pquodling 👋
I have no idea. You must have done something differently on one of the Raspberry Pis.
Please double check the tmux version on each, that you created the ~/.tmux.conf symlink and that you reload the configuration.
I don't have access to a Raspberry Pi right now but you may try to use pkill -f tmux to make sure all tmux processes are killed before trying again.

Hello @pquodling 👋
Any news?

Hey @pquodling 👋
Were you able to solve it?

I had the same issue. In my case, there was an issue with sh that did not (apparently) know about -s in .tmux.conf:
https://github.com/gpakosz/.tmux/blob/53d7ce831127b6f1b6f1600b53213cb3060b7e6d/.tmux.conf#L170
I use Ubuntu 20.10. /bin/sh seems to be a symlink to dash:
% which -a sh
/usr/bin/sh
/bin/sh

% l /bin/sh
lrwxrwxrwx 4 root 23 nov.  12:01 /bin/sh -> dash

% l /usr/bin/sh
lrwxrwxrwx 4 root 23 nov.  12:01 /usr/bin/sh -> dash

Maybe dash does not support -s?
Workaround: use bash instead of sh:
diff --git a/.tmux.conf b/.tmux.conf
index 212caca..e79ba5f 100644
--- a/.tmux.conf
+++ b/.tmux.conf
@@ -167,7 +167,7 @@ if '[ -f ~/.tmux.conf.local ]' 'source ~/.tmux.conf.local'

 # -- 8< ------------------------------------------------------------------------

-run 'cut -c3- ~/.tmux.conf | sh -s _apply_configuration'
+run 'cut -c3- ~/.tmux.conf | bash -s _apply_configuration'

 # EOF

Yes, it looks like it is a Dash issue: with dash, the command returns 2, but with bash it returns 0:
% cut -c3- ~/.tmux.conf | dash -s _apply_configuration; echo $?
2

% cut -c3- ~/.tmux.conf | bash -s _apply_configuration; echo $?
0

Hello @maelvls 👋
Can you please run
$ cut -c3- ~/.tmux.conf | sh -sx _apply_configuration

And paste the result?

I added set -x to see what was going on:
cut -c3- ~/.tmux.conf | sh -sx _apply_configuration

Output
+ command -v reattach-to-user-namespace
+ _apply_overrides
+ tmux_conf_theme_24b_colour=false
+ _is_enabled false
+ [ xfalse = xenabled ]
+ [ xfalse = xtrue ]
+ [ xfalse = xyes ]
+ [ xfalse = x1 ]
+ return 1
+ _apply_bindings
+ tmux list-keys
+ grep new-window
+ head -1
+ line=bind-key    -T prefix       c                    new-window
+ prefix=bind-key    -T prefix       c
+ column=49
+ tmux_conf_new_window_retain_current_path=false
+ tmux list-keys
+ grep -e new-window\(\s\+-c\s\+"#{pane_current_path}\|$\)
+ IFS= read -r line
+ [ -z bind-key    -T prefix       c                    new-window ]
+ printf %s bind-key    -T prefix       c                    new-window
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T prefix       c
+ _is_enabled false
+ [ xfalse = xenabled ]
+ [ xfalse = xtrue ]
+ [ xfalse = xyes ]
+ [ xfalse = x1 ]
+ return 1
+ printf %s bind-key    -T prefix       c                    new-window
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e s/-c[ \t]+"#\{pane_current_path\}"$//g
+ right= new-window
+ eval tmux bind-key    -T prefix       c                      new-window
+ IFS= read -r line
+ [ -z bind-key    -T root         MouseDown3Status     display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window ]
+ printf %s bind-key    -T root         MouseDown3Status     display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T root         MouseDown3Status
+ _is_enabled false
+ [ xfalse = xenabled ]
+ [ xfalse = xtrue ]
+ [ xfalse = xyes ]
+ [ xfalse = x1 ]
+ return 1
+ printf %s bind-key    -T root         MouseDown3Status     display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e s/-c[ \t]+"#\{pane_current_path\}"$//g
+ right= display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window
+ eval tmux bind-key    -T root         MouseDown3Status       display-menu -T "#[align=centre]#{window_index}:#{window_name}" -t = -x W -y S "Swap Left" l "swap-window -t:-1" "Swap Right" r "swap-window -t:+1" "#{?pane_marked_set,,-}Swap Marked" s swap-window Kill X kill-window Respawn R "respawn-window -k" "#{?pane_marked,Unmark,Mark}" m "select-pane -m" Rename n "command-prompt -I \"#W\" \"rename-window -- '%%'\"" "New After" w "new-window -a" "New At End" W new-window
+ IFS= read -r line
+ [ -z bind-key    -T root         MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window ]
+ printf %s bind-key    -T root         MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T root         MouseDown3StatusLeft
+ _is_enabled false
+ [ xfalse = xenabled ]
+ [ xfalse = xtrue ]
+ [ xfalse = xyes ]
+ [ xfalse = x1 ]
+ return 1
+ printf %s bind-key    -T root         MouseDown3StatusLeft display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e s/-c[ \t]+"#\{pane_current_path\}"$//g
+ right= display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window
+ eval tmux bind-key    -T root         MouseDown3StatusLeft   display-menu -T "#[align=centre]#{session_name}" -t = -x M -y S Next n "switch-client -n" Previous p "switch-client -p" Renumber N "move-window -r" Rename n "command-prompt -I \"#S\" \"rename-session -- '%%'\"" "New Session" s new-session "New Window" w new-window
+ IFS= read -r line
+ tmux_conf_new_pane_retain_current_path=true
+ tmux list-keys
+ grep -e split\(-\|_\)window
+ IFS= read -r line
+ [ -z bind-key    -T prefix       \"                   split-window ]
+ printf %s bind-key    -T prefix       \"                   split-window
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T prefix       \\\"
+ _is_enabled true
+ [ xtrue = xenabled ]
+ [ xtrue = xtrue ]
+ return 0
+ printf %s bind-key    -T prefix       \"                   split-window
+ cut -c49-
+ sed -E -e /#\{pane_current_path\}/!s/split(-|_)window([ \t]+#\{pane_tty\})?([ \t]+-(h|v))?/& -c "#{pane_current_path}"/g
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ right= split-window -c "#{pane_current_path}"
+ eval tmux bind-key    -T prefix       \\\"                     split-window -c "#{pane_current_path}"
+ true
+ IFS= read -r line
+ [ -z bind-key    -T prefix       %                    split-window -h -c "#{pane_current_path}" ]
+ printf %s bind-key    -T prefix       %                    split-window -h -c "#{pane_current_path}"
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T prefix       %
+ _is_enabled true
+ [ xtrue = xenabled ]
+ [ xtrue = xtrue ]
+ return 0
+ printf %s bind-key    -T prefix       %                    split-window -h -c "#{pane_current_path}"
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e /#\{pane_current_path\}/!s/split(-|_)window([ \t]+#\{pane_tty\})?([ \t]+-(h|v))?/& -c "#{pane_current_path}"/g
+ right= split-window -h -c "#{pane_current_path}"
+ eval tmux bind-key    -T prefix       %                      split-window -h -c "#{pane_current_path}"
+ IFS= read -r line
+ [ -z bind-key    -T prefix       -                    split-window -v -c "#{pane_current_path}" ]
+ printf %s bind-key    -T prefix       -                    split-window -v -c "#{pane_current_path}"
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T prefix       -
+ _is_enabled true
+ [ xtrue = xenabled ]
+ [ xtrue = xtrue ]
+ return 0
+ printf %s bind-key    -T prefix       -                    split-window -v -c "#{pane_current_path}"
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e /#\{pane_current_path\}/!s/split(-|_)window([ \t]+#\{pane_tty\})?([ \t]+-(h|v))?/& -c "#{pane_current_path}"/g
+ right= split-window -v -c "#{pane_current_path}"
+ eval tmux bind-key    -T prefix       -                      split-window -v -c "#{pane_current_path}"
+ IFS= read -r line
+ [ -z bind-key    -T prefix       _                    split-window -h -c "#{pane_current_path}" ]
+ printf %s bind-key    -T prefix       _                    split-window -h -c "#{pane_current_path}"
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T prefix       _
+ _is_enabled true
+ [ xtrue = xenabled ]
+ [ xtrue = xtrue ]
+ return 0
+ printf %s bind-key    -T prefix       _                    split-window -h -c "#{pane_current_path}"
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e /#\{pane_current_path\}/!s/split(-|_)window([ \t]+#\{pane_tty\})?([ \t]+-(h|v))?/& -c "#{pane_current_path}"/g
+ right= split-window -h -c "#{pane_current_path}"
+ eval tmux bind-key    -T prefix       _                      split-window -h -c "#{pane_current_path}"
+ IFS= read -r line
+ [ -z bind-key    -T root         MouseDown3Pane       if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\"  '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"} '' 'Horizontal Split' 'h' {split-window -h} 'Vertical Split' 'v' {split-window -v} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}" ]
+ printf %s bind-key    -T root         MouseDown3Pane       if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\"  '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"} '' 'Horizontal Split' 'h' {split-window -h} 'Vertical Split' 'v' {split-window -v} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
+ cut -c-49
+ sed -E -e s/[^ \ta-zA-Z0-9,._+@%/-]/\\&/g
+ left=bind-key    -T root         MouseDown3Pane
+ _is_enabled true
+ [ xtrue = xenabled ]
+ [ xtrue = xtrue ]
+ return 0
+ printf %s bind-key    -T root         MouseDown3Pane       if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\"  '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"} '' 'Horizontal Split' 'h' {split-window -h} 'Vertical Split' 'v' {split-window -v} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
+ cut -c49-
+ awk -F\" BEGIN { OFS = FS } { for (i = 1; i <= NF; i+=2) { gsub(/#{.+}/, "\"&\"", $i) } print }
+ sed -E -e /#\{pane_current_path\}/!s/split(-|_)window([ \t]+#\{pane_tty\})?([ \t]+-(h|v))?/& -c "#{pane_current_path}"/g
+ right= if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]"#{pane_index} (#{pane_id}")\"  '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \""#{q:mouse_word}"\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \""#{q:mouse_word}"\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \""#{q:mouse_word}"\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \""#{q:mouse_line}"\"} '' 'Horizontal Split' 'h' {split-window -h -c "#{pane_current_path}"} 'Vertical Split' 'v' {split-window -v -c "#{pane_current_path}"} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
+ eval tmux bind-key    -T root         MouseDown3Pane         if-shell -F -t = "#{||:#{mouse_any_flag},#{pane_in_mode}}" "select-pane -t=; send-keys -M" "display-menu -t= -xM -yM -T \"#[align=centre]"#{pane_index} (#{pane_id}")\"  '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \""#{q:mouse_word}"\"} '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \""#{q:mouse_word}"\"} '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \""#{q:mouse_word}"\"} '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \""#{q:mouse_line}"\"} '' 'Horizontal Split' 'h' {split-window -h -c "#{pane_current_path}"} 'Vertical Split' 'v' {split-window -v -c "#{pane_current_path}"} '' 'Swap Up' 'u' {swap-pane -U} 'Swap Down' 'd' {swap-pane -D} '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane} '' 'Kill' 'X' {kill-pane} 'Respawn' 'R' {respawn-pane -k} '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m} '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"

Hmm 🤔
Can you please make sure you're using the latest commit of the master branch?

Looks like there is no error on master!!
I guess I was using 685c74128e009d00db9ea6035537056f5aabce4e which was committed on Jun 9, 2019... my bad 😅

@maelvls 😅
Well, something not compatible with Dash may explain @pquodling's original problem. But at least in master it doesn't happen anymore.

I'm facing the same issue after upgrading from Ubuntu 18.4 to 20.4.
$ which -a sh
/bin/sh

$ l /bin/sh
lrwxrwxrwx 1 root root 4 Jul 18  2019 /bin/sh -> dash

Also checked that I'm using the current version...
$ git rev-parse HEAD
86f805280f6a8cf65d8d0a9380489aae4b72f767

Using the workaround proposed by @maelvls works for me :+1:

I'm facing the same issue after upgrading from Ubuntu 18.4 to 20.4.
$ which -a sh
/bin/sh

$ l /bin/sh
lrwxrwxrwx 1 root root 4 Jul 18  2019 /bin/sh -> dash

Also checked that I'm using the current version...
$ git rev-parse HEAD
86f805280f6a8cf65d8d0a9380489aae4b72f767

Using the workaround proposed by @maelvls works for me :+1:

Hello @Zekuro 👋
Commit 86f805280f6a8cf65d8d0a9380489aae4b72f767 doesn't belong to Oh my tmux! history 🤷♂
➜  .tmux git:(master) ✗ git rev-parse HEAD
53d7ce831127b6f1b6f1600b53213cb3060b7e6d

➜  .tmux git:(master) ✗ git branch --contains 86f805280f6a8cf65d8d0a9380489aae4b72f767
error: no such commit 86f805280f6a8cf65d8d0a9380489aae4b72f767

Hello @Zekuro 👋
Commit 86f805280f6a8cf65d8d0a9380489aae4b72f767 doesn't belong to Oh my tmux! history 🤷♂
➜  .tmux git:(master) ✗ git rev-parse HEAD
53d7ce831127b6f1b6f1600b53213cb3060b7e6d

➜  .tmux git:(master) ✗ git branch --contains 86f805280f6a8cf65d8d0a9380489aae4b72f767
error: no such commit 86f805280f6a8cf65d8d0a9380489aae4b72f767

@gpakosz :sweat_smile:
I should've checked that first. This version belongs to oh-my-zsh...
After checking the correct project I figured out I were using a version from May 2019: https://github.com/gpakosz/.tmux/commit/8809af7c9f6f8f325eb88dfc0b31a2f89e57ff53
Guess I have to quote @maelvls here:

Looks like there is no error on master!! :tada::tada:
... my bad :sweat_smile:

@gpakosz :sweat_smile:
I should've checked that first. This version belongs to oh-my-zsh...
After checking the correct project I figured out I were using a version from May 2019: https://github.com/gpakosz/.tmux/commit/8809af7c9f6f8f325eb88dfc0b31a2f89e57ff53
Guess I have to quote @maelvls here:

Looks like there is no error on master!! :tada::tada:
... my bad :sweat_smile:


Throw proper error in the debugger as well as in the property pane inputs when there is an attempt to trigger action items from data fields...Expected: Found an action invocation during evaluation. Data fields cannot execute actions.

https://www.notion.so/Throw-proper-error-in-the-debugger-as-well-as-in-the-property-pane-inputs-when-there-is-an-attempt-t-6c040f76fc03464aa79a32ed46b7754e

Bumping this issue up to prod because it should have made it's way there by now if it was not fixed

There has been a lot of patchwork to fix similar issues but there needs to be a holistic solution that not only fixes for modules but for any other non direct accessible entities like list widget children. To fix this the proposal is to add a displayName to every entity and this is to be used for any error/lint messages. If a displayName is missing the the fallback would be entity's name. The onus of setting the displayName remains on the entity itself. This would bring separation of concern for who is setting the the name and how it is being rendered.


feat: release jar to apache nexus

Signed-off-by: tzssangglass<EMAIL_ADDRESS>answer these questions before submitting a pull request

Why submit this pull request?

[ ] Bugfix

[x] New feature provided

[ ] Improve performance

Related issues

Bugfix

Description

How to fix?

New feature or improvement

Describe the details and related test reports.

Source branch

Related commits and pull requests

Target branch

wait for: https://issues.apache.org/jira/browse/INFRA-23523

In this PR

I changed the version number to 0.3.0-SNAPSHOT
When  issues.apache.org/jira/browse/INFRA-23523](https://issues.apache.org/jira/browse/INFRA-23523) is done, I will deploy 0.3.0-SNAPSHOT to Apache Nexus, but of course, I will not release it to the official repository.
I will verify 0.3.0-SNAPSHOT locally (download it via the Apache Maven Center's SNAPSHOT repository)
If everything is OK, I will start the release of version 0.3.0.

https://github.com/tzssangglass/java-plugin-runner-demo-1 works for me.


Only first ID number is identified, and incorrectly given the gas units

Describe the bug
Only the first ID is identified, and it's incorrectly identified as gas type.
To Reproduce
Steps to reproduce the behavior:

First time install
Add three space-delineated 8-digit meter ID numbers in the "IDs" field.
Input units m3 , kWh , gal
Input multipliers: 0.01, 0.01, 748.1

Expected behavior
Space-delineated IDs to each be used separately, and somehow identified as being either gas, electric, or water automatically.
Each one to be configurable in the Energy Dashboard.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Debian
Browser: Firefox
Version: Latest

Additional context
If there are instructions regarding delineation of the IDs I have not found it...
And if there's a specific order they should be given, that too is has not been communicated.

Found in the Log for this addon while trying to debug:
"filterid=: display only messages matching an id in a comma-separated list of ids."
So it IS supposed to be CSV. That should be made clear through the Config GUI. I'm not sure it worked if there were spaces between the IDs and the commas.
Now that each meter is being read, a new issue arises: All three meters are being treated as a gas meter.
Per HA Settings > Devices... > Entities, these sensors do not have unique IDs. That seems like it could be due to the debug required for ID deliminator issue above. They also show as read-only. This means I cannot change the sensor settings.
And I just recognized another issue: This add-on is 150MB. That's a lot... that's 600% larger than the rest of my HA. This doesn't seem like a big deal except that it will consume that for every single backup - so that's another 1-2 GB of backed up data that really aren't needed.


API returns 404 when query produces empty result

Describe the bug
I am not sure whether this is a bug or intentional: When startDate and endDate are declared in such a way that they produce an empty result set, the API throws a 404 at the client.
To Reproduce
Create a test dataset that spans 1979 to 1981, make sure there is a sufficiently large gap between 1980-02-15T13:00 and 1980-02-15T13:01
Then send a query with the following pattern to the API
https://.../attrs/<YYY>?id=<entityId>&startDate=1980-02-15T13:00&endDate=1980-02-15T13:01
Error accessing HTTP resource: (404) - NOT FOUND

Expected behavior
I would expect that the behaviour is similar to SELECT ... WHERE in SQL: If there there are no matching rows, return OK/200 and an empty result set. Do not throw an Exception or Error at the client.
Plus: HTTP codes 4XX are reserved for client errors. Since the data sits behind an API, there is no other way for the client to know gaps in the data beforehand. If a 404 should make sense here, the client must at least be provided with means to avoid such queries.
p.s.: I hope this is the right place to post this and that I am not knocking at the wrong door.

Hi @matthias-mueller :-)
Thanks for raising this. I agree with you 100%. Ideally Quantum Leap should return an empty result set, not a client error. Unfortunately all our queries work like that at the moment and this is surely something we should fix.
Also keep in mind we never really optimised queries and there are lots of quirks that might surprise or bite you:

https://github.com/orchestracities/ngsi-timeseries-api/wiki/The-Mother-of-all-Queries

@c0c0n3 I would like to contribute for this issue. Please confirm if fix is required.

closed by #752


[ch3206] Add a lien in referent space

https://app.clubhouse.io/enmarche/story/3206/ajouter-un-lien-dans-l-espace-référent

@cacahouwete @guillaumedenhez and I looked at the interface. Probably better if it's with the other links underneath with envoyer un message, evenements, etc. @guillaumedenhez thoughts the language could change to something shorter such as Vos retours with an font awesome icon of something that opens in a new window https://fontawesome.com/v4.7.0/icon/external-link/
If that's too much, I can help :P


Typescript error when postData is missing

From the example:
const snippet = new HTTPSnippet({
        method: 'GET',
        url: 'http://mockbin.com/request',
      });

      const options = { indent: '\t' };
      const output = snippet.convert('shell', 'curl', options);
      console.log(output);

I get a typescript error
Argument of type '{ method: string; url: string; }' is not assignable to parameter of type 'HarRequest | HarEntry'.
  Type '{ method: string; url: string; }' is not assignable to type 'HarRequest'.
    Property 'postData' is missing in type '{ method: string; url: string; }' but required in type '{ postData: any; }'.ts(2345)
httpsnippet.d.ts(19, 5): 'postData' is declared here.

With the new types, there are actually more problems that are not nice to use.

more properties like headerSize or httpVersion needs to be set
Only the predefined TargetId are allowed by Typescript, but addTarget should allow adding new targetIds.
targetId is not exported in root and needs deep import

Yeah I just tried the new version and its borderline unusable. The types are broken and I get AJV errors whenever I try very simple requests


Support for WebGL

Currently the websocket client is imported from System.Net, which is not working on WebGL platform. Perhaps maybe switch to a third party library to support WebGL.

This issue is freqently requested - we will fix this later this year, probably as we get closer to mainnet launch.


wcs conventions

Summary
Added a notebook to test and compare different different WCS conventions in FITS image headers.
Conclusion: CFIS exposures need to be transformed to SIP, or use Sheldon's esutil.
The astropy.wcs with PV gives incorrect transformed coordinates.
Reviewer Checklist

Reviewers should tick the following boxes before approving and merging the PR.

[ ] The PR targets the develop branch
[ ] The PR is assigned to the developer
[ ] The PR has appropriate labels
[ ] The PR is included in appropriate projects and/or milestones
[ ] The PR includes a clear description of the proposed changes
[ ] If the PR addresses an open issue the description includes "closes #"
[ ] The code and documentation style match the current standards
[ ] Documentation has been added/updated consistently with the code
[ ] All CI tests are passing
[ ] API docs have been built and checked at least once (if relevant)
[ ] All changed files have been checked and comments provided to the developer
[ ] All of the reviewer's comments have been satisfactorily addressed by the developer

I think this can be merged @lbaumo .


API Improvement

Think about giving Tab a new method stopping_at(<datetime or string>).

+1 for this!

done


Catch-all escalation start event is disallowed

Describe the bug
In the modeler, an escalation start event cannot be a catch-all event, but the engine supports such events.
The modeler shows two error messages
"Element of type < bpmn:EscalationEventDefinition > must have property < escalationRef >." (error panel)
"Global escalation reference must be defined." (property panel)
Steps to reproduce
Please refer to the attached process: escalation-start-event.txt

Create a process and add an expanded sub-process.
In the sub process, throw an escalation end event.
In the sub process, create an event sub process with an escalation catch-all event (global reference: < none >).
Optionally, for comparison: Attach a boundary escalation event to the sub process and make it an escalation catch-all event (global reference: < none >).
Start an instance.

Expected behavior
There should be no error messages, since an escalation start event can be a catch-all event, just like a boundary escalation event.
Environment
Camunda Modeler 5.19.0
Additional context
No response

@philippfromme Please verify if this got fixed with https://github.com/camunda/camunda-modeler/issues/4064. I believe so.