NBitcoin.Tests.AltcoinTests.CanSyncWithoutPoW requires PoW checks.

I'm implementing Monacoin support that isn't implemented PoW related code.
This issue will not reproduce on Scrypt based coins.
I got an error with logs below.
I'm not sure but it seems SkipPoWCheck doesn't set to true when nodeClient.GetBlocks() is called in CanSyncWithoutPow().
Failed   NBitcoin.Tests.AltcoinTests.CanSyncWithoutPoW
Error Message:
NBitcoin.Protocol.ProtocolException : An header which does not pass proof of work verification has been received
Stack Trace:
   at NBitcoin.Protocol.Node.<GetHeadersFromFork>d__131.MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at NBitcoin.Extensions.<Partition>d__8`1.MoveNext() in /build/NBitcoin/Utils.cs:line 142
   at NBitcoin.Protocol.Node.<GetBlocks>d__138.MoveNext() in /build/NBitcoin/Protocol/Node.cs:line 1422
   at NBitcoin.Protocol.Node.<GetBlocksFromFork>d__136.MoveNext() in /build/NBitcoin/Protocol/Node.cs:line 1402
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at NBitcoin.Tests.AltcoinTests.CanSyncWithoutPoW() in /build/NBitcoin.Tests/AltcoinTests.cs:line 145

checking now CanSyncWithoutPow should not test PoW so this is strange.

@cryptcoin-junkey thanks! I just disabled PoW check in CanSyncWithoutPow now. Rebase your PR. It should work. (Close this issue if it is solved)

Looks fixed by dc668ec72ad03e62217f67d91230ae9a2540ded3. I close this. Thanks!


airflow: Repair up.sh and Dockerfile for MacOS

Problem
When trying to run integration tests on MacOS (M1) i encountered some errors when running integration/airflow/tests/integration/docker/up.sh:

directory integration/target does not exist and yet it's included in Dockerfile
chmod a+rwx -R does not work on MacOS, i think it requires more strict syntax
script that builds mysql container did not have execute permissions

I am not sure if all these changes are correct, but with these changes everything worked as intended for me.
Solution
I adjusted some directory references and syntax of some commands.
One-line summary:
Some scripts are not working well on MacOS, they need adjusting.
Checklist

[X] You've signed-off your work
[X] Your pull request title follows our guidelines
[ ] Your changes are accompanied by tests (if relevant)
[ ] Your change contains a small diff and is self-contained
[ ] You've updated any relevant documentation (if relevant)
[ ] Your comment includes a one-liner for the changelog about the specific purpose of the change (if necessary)
[ ] You've versioned the core OpenLineage model or facets according to SchemaVer (if relevant)
[ ] You've added a header to source files (if relevant)

SPDX-License-Identifier: Apache-2.0
Copyright 2018-2023 contributors to the OpenLineage project

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

Comparison is base (67c2390) 84.29% compared to head (394b31f) 83.15%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2316      +/-   ##
==========================================
- Coverage   84.29%   83.15%   -1.15%
==========================================
  Files          59       36      -23
  Lines        3342     1911    -1431
==========================================
- Hits         2817     1589    -1228
+ Misses        525      322     -203

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


To look for other datasets

In this list of databases:
https://r-dir.com/reference/datasets.html

Found this, also: http://www.secrepo.com/

Will save this for the thesis but not for this paper.


⚠ Bofrost.es has degraded performance

In 83a4ada, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1692 ms

Resolved: Bofrost.es performance has improved in 005e0c3.


Use $animate for tooltip animation

There's still some cruft for animating the tooltip, such as a fixed timeout for the closing animation.

Close delay was added under PR #3576


Recommend setting BROWSER for xdg-open instead of a fake command

xdg-open supports delimited browsers in a BROWSER environment variable. This is how VSCode intercepts remote protocol open requests:
BROWSER=/home/coder/.vscode-server/bin/863d2581ecda6849923a2118d93a088b0745d9d6/bin/helpers/browser.sh

Where browser.sh is:
#!/usr/bin/env sh
#
# Copyright (c) Microsoft Corporation. All rights reserved.
#
ROOT="$(dirname "$(dirname "$(dirname "$(readlink -f "$0")")")")"

APP_NAME="code"
VERSION="1.87.2"
COMMIT="863d2581ecda6849923a2118d93a088b0745d9d6"
EXEC_NAME="code"
CLI_SCRIPT="$ROOT/out/server-cli.js"
"$ROOT/node" "$CLI_SCRIPT" "$APP_NAME" "$VERSION" "$COMMIT" "$EXEC_NAME" "--openExternal" "$@"

There's no need to fake xdg-open, you can just set BROWSER to a helper script.

+1.
Renamed the xdg-open helper script to opener and set export BROWSER=opener on the remote. Then the default xdg-open will route through this for browser links but also support local files as usual.


PEP.js is now deprecated

Is your feature request related to a problem? Please describe.
Related announcement: https://openjsf.org/blog/2021/02/10/pointer-events-polyfill-pep-enters-emeritus-status-at-the-openjs-foundation/
Describe the solution you'd like
Remove dependence on PEP.js and use native API instead.

What about following the issue template? We ask specifically for people to discuss the issue on the forum before coming here so everyone in the community can participate
btw from where precisely do you want to remove pep? playground? sandbox? other places?

I removed it from all our pages :)


Update main.tf

What does this PR do?

Motivation

Checklist

[ ] The attack technique emulates a single attack step, not a full attack chain
[ ] We have factual evidence & references that the attack technique was used by real malware, pentesters, or attackers
[ ] The attack technique makes no assumption about the state of the environment prior to warming it up

Thanks for the PR @Adelabumowe, are there some files missing?

closing for inactivity


⚠ Bofrost.at has degraded performance

In 2ecea9e, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1193 ms

Resolved: Bofrost.at performance has improved in 9ff35b6 after 6 minutes.


Allowed mirror types overly restrictive

OpticsDescription raises errors, if mirror type is not one of DC or SC.
This is overly restrictive, as there are many more mirror types, even within CTA, I think the LST for example is a segmented parabolic mirror, not a Davies Cotton.
FACT for example is a hybrid, in between Davies--Cotton and parabolic.
For what is is type actually used? I did not find anything.

Hi, yeah to be honest this information is not super useful, the optical configuration should not make any difference to our analysis. What would be useful though is just to store whether the telescope is single mirror or dual mirror. As if we introduce an "engineering camera frame" or something like that we will need to perform a flip of the camera for dual mirror optics at some point.

To be really useful (I think the muon analysis needs it @AMWMitchell, @rlopezcoto),
one would also need information about the single tiles positions and shadowing, right?

I started refactoring this in #982

Completely irrelevant side note: the MST is also not a DC, but of 'intermediate' design with the intention to improve the timing compared to a pure DC design...

Fixed in #982


EKS Cluster creation failed in region us-east-1

Hi,
Thank you for a great project.
While I was following getting started guide, I did not fully understand the procedure.
 ➜ tg apply -auto-approve
[terragrunt] [/Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/eks] 2021/01/27 17:19:49 Running command: terraform --version
[terragrunt] 2021/01/27 17:19:49 Terraform version: 0.14.5
[terragrunt] 2021/01/27 17:19:49 Reading Terragrunt config file at /Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/eks/terragrunt.hcl
[terragrunt] [/Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/vpc] 2021/01/27 17:19:49 Generated file /Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/vpc/.terragrunt-cache/569303351/backend.tf.
[terragrunt] [/Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/vpc] 2021/01/27 17:19:49 Running command: terraform init -get=false -get-plugins=false
[terragrunt] [/Users/amitkarpe/code/terraform/tg/first/teks/terragrunt/live/mycluster/us-east-1/clusters/full/vpc] 2021/01/27 17:19:53 Running command: terraform output -json
Failed to load state: AuthorizationHeaderMalformed: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-3'
	status code: 400, request id: E0C2281C2098748E, host id: yOzy5JSeIdmHlj/m2M+rkKD9KY86uCrLQ+1xtp+Rp+jmYFYVaDmixcwaiy3KdvvcwKxLWkFvEJ0=
[terragrunt] 2021/01/27 17:20:01 exit status 1

I created cloned here, copied demo into mycluster folder.
While running terragrunt apply, it failed with the above errors. Can you please let me know how to follow the guide?
Also, I want to know do you have a slack channel or any community forum to a discussion about further contribution?

@amitkarpe Hi and thanks for your feedback, what module are you running here ? VPC, EKS or EKS-addons ?
I recently deployed two clusters with this setup on different region in eu-west-1 and eu-west-3. How did you create the S3 bucket ? is it created by Terragrunt or did you create it before ?
Can you check the location of the bucket ? It tries to load the state but failed because it tries the us-east-1 region but the bucket might be in eu-west-3
I'm available to chat in the Kubernetes slack channel, my handle is ArchiFleKS

@amitkarpe Hi and thanks for your feedback, what module are you running here ? VPC, EKS or EKS-addons ?
I recently deployed two clusters with this setup on different region in eu-west-1 and eu-west-3. How did you create the S3 bucket ? is it created by Terragrunt or did you create it before ?
Can you check the location of the bucket ? It tries to load the state but failed because it tries the us-east-1 region but the bucket might be in eu-west-3
I'm available to chat in the Kubernetes slack channel, my handle is ArchiFleKS

Hi @ArchiFleKs,
I was wrong. When I create s3 bucket in us-east-1, it started working.
I will try to update the guide with PR. Thank you for your fast response.

Hi @ArchiFleKs,
I was wrong. When I create s3 bucket in us-east-1, it started working.
I will try to update the guide with PR. Thank you for your fast response.


Added ability to start/stop specific processes

This allows you to restart, start or stop specific supervisor processes. To use, set supervisord_processes. If you do not set this variable, it will restart/start/stop all processes.
Example:
set :supervisord_processes, %w{example-process1 example-process2}
after 'deploy:published', 'supervisord:stop'
after 'deploy:published', 'supervisord:start'
after 'deploy:published', 'supervisord:restart'

Great idea, thank you for the PR. I will test it when I get the time and merge it!

Fixed!


[main] Fix: regressions after refactor

The change to TsTextObjects.Range leaved some nonsensical code after the refactor, this has been adressed.
Also, TsTextObjects.Range.is_in_range wasn''t working as expected, this has been fixed.

For the record I copy the repro from the source discussion
init.lua:
local thisInitFile = debug.getinfo(1).source:match('@?(.*)')
local configDir = vim.fs.dirname(thisInitFile)

vim.env['XDG_CONFIG_HOME'] = configDir
vim.env['XDG_DATA_HOME'] = vim.fs.joinpath(configDir, '.xdg', 'data')
vim.env['XDG_STATE_HOME'] = vim.fs.joinpath(configDir, '.xdg', 'state')
vim.env['XDG_CACHE_HOME'] = vim.fs.joinpath(configDir, '.xdg', 'cache')
local stdPathConfig = vim.fn.stdpath('config')

vim.opt.runtimepath:prepend(stdPathConfig)
vim.opt.packpath:prepend(stdPathConfig)

local function gitClone(url, installPath, branch)
  if vim.fn.isdirectory(installPath) ~= 0 then
    return
  end

  local command = {'git', 'clone', '--', url, installPath}
  if branch then
    table.insert(command, 3, '--branch')
    table.insert(command, 4, branch)
  end
  local sysObj = vim.system(command, {}):wait()
  if sysObj.code ~= 0 then
    error(sysObj.stderr)
  end
  vim.notify(sysObj.stdout)
  vim.notify(sysObj.stderr, vim.log.levels.WARN)
end

local pluginsPath = 'nvim/pack/plugins/opt'
vim.fn.mkdir(pluginsPath, 'p')
pluginsPath = vim.uv.fs_realpath(pluginsPath)

--- @type table<string, {url:string, branch: string?}>
local plugins = {
--  ['nvim-treesitter'] = {url = 'https://github.com/nvim-treesitter/nvim-treesitter'},
  ['nvim-treesitter-textobjects'] = {url = 'https://github.com/nvim-treesitter/nvim-treesitter-textobjects', branch = 'main'}
}

for name, repo in pairs(plugins) do
  local installPath = vim.fs.joinpath(pluginsPath, name)
  gitClone(repo.url, installPath, repo.branch)
  vim.cmd.packadd({args = {name}, bang = true})
end

local tsSelectKeymaps = {
  ['ap'] =<EMAIL_ADDRESS>  ['ip'] =<EMAIL_ADDRESS>}

for input, capture in pairs(tsSelectKeymaps) do
  vim.keymap.set({'x', 'o'}, input, function ()
    require 'nvim-treesitter-textobjects.select'.select_textobject(capture, 'textobjects')
  end)
end

nvim --clean -u init.lua init.lua

Try vip on the second parameter of gitClone declaration (line 13), third param in line 21 (branch) and not only.
One obvious exception: the branch is from this PR.
I still get
E5108: Error executing lua: ...from-src/share/nvim/runtime/lua/vim/treesitter/query.lua:788: No handler for make-range!
stack traceback:
        [C]: in function 'error'
        ...from-src/share/nvim/runtime/lua/vim/treesitter/query.lua:788: in function 'apply_directives'
        ...from-src/share/nvim/runtime/lua/vim/treesitter/query.lua:959: in function 'matches'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:42: in function '(for generator)'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:147: in function 'fn'
        ...c/share/nvim/runtime/lua/vim/treesitter/languagetree.lua:488: in function 'for_each_tree'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:144: in function 'get_capture_ranges_recursively'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:379: in function 'textobject_at_point'
        ...r-textobjects/lua/nvim-treesitter-textobjects/select.lua:186: in function 'select_textobject'
        ...ctgx/nvim/envs/nvim-treesitter-textobjects-main/init.lua:54: in function <...ctgx/nvim/envs/nvim-treesitter-textobjects-main/init.lua:53>

@przepompownia Thanks for the report and the repro. Could you try this PR again?

@TheLeoP now on the repro I get correct parameter selection. Thanks for fixing.

E5108: Error executing lua: .../nvim-treesitter-textobjects/plugin/query_predicates.lua:15: #make-range! does not supp
ort captures on multiple nodes
stack traceback:
        [C]: in function 'assert'
        .../nvim-treesitter-textobjects/plugin/query_predicates.lua:15: in function 'handler'
        /usr/local/share/nvim/runtime/lua/vim/treesitter/query.lua:791: in function 'apply_directives'
        /usr/local/share/nvim/runtime/lua/vim/treesitter/query.lua:959: in function 'matches'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:44: in function '(for generator)'
        ...r-textobjects/lua/nvim-treesitter-textobjects/shared.lua:177: in function 'find_best_range'
        ...ter-textobjects/lua/nvim-treesitter-textobjects/move.lua:136: in function 'move_fn'
        ...ects/lua/nvim-treesitter-textobjects/repeatable_move.lua:75: in function 'move_repeatable'
        ...ter-textobjects/lua/nvim-treesitter-textobjects/move.lua:208: in function <...ter-textobjects/lua/nvim-tree
sitter-textobjects/move.lua:207>
        /Users/towry/.config/nvim/lua/user/plugins/lang.lua:88: in function </Users/towry/.config/nvim/lua/user/plugin
s/lang.lua:86>

I have a attempt fix that works.
  local end_node_id = predicate[4]

  local start_nodes = match[start_node_id]
  local end_nodes = match[end_node_id]

  -- if start_nodes then
  --   assert(#start_nodes <= 1, "#make-range! does not support captures on multiple nodes")
  -- end
  if end_nodes then
    if #end_nodes > 1 then
      # select last, works for select @function.inner and @function.outer
      end_nodes = { end_nodes[#end_nodes] }
    end
  end

This is happening because, with the previous behaviour of iter_matches, if multiple nodes where captured under the same name, only the last node would be taken into account. Queries as the one used for typescript/javascript rely in this previous behaviour. For example:
(function_declaration
  body: (statement_block
    .
    "{"
    .
    (_) @_start @_end
    (_)? @_end
    .
    "}"
    (#make-range! "function.inner" @_start @_end)))

The implementation of make-range! already defaults the end of the range to the start node if there is no end node (and viceversa). So, unless I'm missing something, updating the captures to no longer have this fallback behaviour that results in multiple nodes being captured sometimes would also be a solution. I would prefer this option because I don't think it makes sense to handle multiple nodes being captured on make-range!, but I may be missing some edge case.
@clason is there a preferred approach for solving this?

To be honest, the preferred approach is to avoid the fake #make-range! directive in the first place... But that would be a much larger refactor.
For other predicates, we have deliberately added any- variants to distinguish this, but that doesn't make much sense here.

As a side note. Do you know if shome recent change in nvim-treesitter may have cause the install-parsers.lua´ script to stop working properly?. It looks like it's hanging on html-tags` because neovim is asking if the parsers should be reinstalled or not.

Yes, there was a huge breaking change (which I'm still fiddling with). It will reinstall dependencies multiple times (can't really be helped due to async, but it's something I am looking at), but it shouldn't hang. Can you try the current version?

Thanks, that was it c:

Is this ready to be merged?

Yes. I just squashed all the commits

Thanks!!


Add rule for disallowing instantiation of classes in JSX props

Instantiating a class in the render method of a React component means that a brand new instance will be created every single time the component is re-rendered. This is bad for performance, as it will result in the garbage collector being invoked way more than is necessary. This issue is in a similar category as jsx-no-bind.

I can't conceive of how this could ever become a problem. Why are people doing this in the first place?
The issue with jsx-no-bind is primarily that .bind is slow, and only secondarily that creating any new functions in the render path prevents === optimizations and increases GC (this turns out to not be that bad for performance in actual practice).
If we want to handle other patterns, what about creating new arrays and objects in the render path? What about function calls that do this and return them into the render path?

Why are people doing this in the first place?

That is what I'd love to know 😛  It's a pattern I stumbled upon today - I found ~100 places in our codebase that were doing something similar to this. A few of them were from people that didn't have much experience writing React code. I posted an internal group post and someone said "This is such an easy mistake to make when you're somewhat new to react"

prevents === optimizations and increases GC (this turns out to not be that bad for performance in actual practice).

Every little bit counts when you have a large app 😃  The app I deal with at work has over 300 Flux stores and probably thousands or tens of thousands of components in total. It's death by a thousand cuts if you have little GC-unfriendly patterns like this all over the place. Things like bind in render are particularly bad as an entire subtree could re-render unnecessarily.
It's fine if this is not merged, as I can just add it to our internal lint rules (we've already forked a few of the rules in this repo to adjust them to better suit our use cases). I just thought other people might find use in it.

I can't decide if I'm -1 or +1 on it; I think a generic configurable rule that tries to prevent any new creation of things in the render path might be more useful? but that also might be too hard to achieve.

I don't care enough about this any more to push it through.


Upgrade to Meteor 1.3

After upgrading to the latest version of Astronomy rc7 and to Meteor 1.3 final. I am getting this:
/Users/talhaasad/.meteor/packages/meteor-tool/.1.3.0_3.197bwrg++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:267
(STDERR)             throw(ex);
(STDERR)                   ^
(STDERR) ReferenceError: fieldDefinition is not defined
(STDERR)     at checkTypeExistence (packages/jagi:astronomy/lib/modules/fields/hooks/apply_definition.js:15:18)
(STDERR)     at packages/jagi:astronomy/lib/modules/fields/hooks/apply_definition.js:48:7
(STDERR)     at /Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:4143:15
(STDERR)     at baseForOwn (/Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:2669:24)
(STDERR)     at /Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:4112:18
(STDERR)     at Function.forEach (/Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:7828:11)
(STDERR)     at Module.onApplyDefinition (packages/jagi:astronomy/lib/modules/fields/hooks/apply_definition.js:23:5)
(STDERR)     at packages/jagi:astronomy/lib/core/class.js:174:11
(STDERR)     at packages/jagi:astronomy/lib/core/module.js:95:4
(STDERR)     at arrayEach (/Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:483:11)
(STDERR)     at Function.forEach (/Users/talhaasad/.meteor/packages/stevezhu_lodash/.<IP_ADDRESS>yf9lf++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:7827:11)
(STDERR)     at Function.forEach (packages/jagi:astronomy/lib/core/module.js:94:5)
(STDERR)     at Function.extend (packages/jagi:astronomy/lib/core/class.js:161:10)
(STDERR)     at Function.create (packages/jagi:astronomy/lib/core/class.js:103:9)
(STDERR)     at meteorInstall.collections.activities.js (collections/activities.js:3:30)
(STDERR)     at fileEvaluate (packages/modules-runtime.js:158:9)

Any ideas what could be causing this, i have a feeling its something very basic.

 However i also found a typo in your code @jagi. I think you ought to fix it for next release.

Oh thanks for noticing it. I will make an update.

I have the same issue. Will the fix be in rc8 and when will you release rc8? :)

I'm just working on rc8. Should be soon. I think it will be one of the last rc version before 2.0 release

Thanks for the fast reply! Looking forward to it! :+1:


Update to govuk frontend v3

Signon still uses govuk_admin_template, but this bump still brings in some new things from GOV.UK Frontend 3.
Screenshot

https://trello.com/c/m3F4UCQE


[DOC] Missing docs about installation using kubeadm

Bug report
When searching for information about how to install Cilium CNI with kubeadm, the documentation promises to find the instructions to install Cilium on K8s in the official Kubernetes documentation. However, the link shows no instructions, just general CNI information. I think that link used to show the instructions for several CNI plugins but probably it was removed and thus the link is useless now.
This is the link ==> https://docs.cilium.io/en/v1.8/gettingstarted/k8s-install-kubeadm/

Huh, that page in k8s documentation:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
used to have information how to deploy the most popular CNI plugins (IIRC also Calico, Weave), but it's not there anymore. @aanm were you aware of it being removed?

@mrostecki yes, that page was removed from Kubernetes. We should update the documentation to have kubeadm instructions that were on that page.

OK, I will add it then.


Solana v1.17 uses the same Solana platform-tools v1.37 and Rust v1.68.0 as Solana v1.16

Solana platform-tools v1.37 got released on April 1, 2023. It uses Rust v1.68.0, released on March 9, 2023.
Solana v1.16.0 got released on May 31, 2023 and uses Solana platform-tools v1.37 with Rust v1.68.0.
Solana platform-tools v1.38 got released on Aug 20, 2023 and it still uses Rust v1.68.0.
Solana v1.17.0 got released on Oct 2, 2023 and still uses Solana platform-tools v1.37 with Rust v1.68.0.
Solana platform-tools v1.39 got released on Oct 21, 2023 and uses Rust v1.72.0, released on Aug 24, 2023.
Solana v1.18.0 got released on Jan 27, 2024 and uses Solana platform-tools v1.39 with Rust v1.72.0.

I summarized the information above in the following table:

Solana version
Solana release date
Solana program Rust version
Rust release date
Difference between Solana version and Rust version

v1.16.0
May 31, 2023
v1.68.0
March 9, 2023
2 months

v1.17.0
Oct 2, 2023
v1.68.0
March 9, 2023
7 months

v.18.0
Jan 27, 2024
v1.72.0
Aug 24, 2023
5 months

Is the 7 month delay between the initial release of Rust v1.68.0 and Solana v1.17.0 intentional?
I am asking because it is almost an year since the release of Rust v1.68.0 and the current Solana v1.17.24 release uses a 1-year old version of Rust v1.68.0 for building Solana programs.
I believe this hinders Solana program developer experience, since some packages require Rust versions newer than v1.68.0.
I got sent to this repository from https://github.com/solana-labs/solana/issues/35428.

Solana v1.18 now contains platform tools v1.41 with Rust 1.75: https://github.com/anza-xyz/agave/pull/362


Document whether Uri::path and friends return (un-)escaped strings or not

This caught me off-guard as well; I assumed that accessing the URI components would do the percent decoding for me but it seems that is not the case. Perhaps we could add accessors for the decoded form through an optional dependency such as percent-encoding?

Hi! Is there any progress on this issue?

I'm also facing this issue, particularly when having to take a query parameter from one request and use it in another request, which seems to lead to double-encoding issues.


⚠ Mobitopup has degraded performance

In 3c97ea2, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 5140 ms

Resolved: Mobitopup performance has improved in 486fdef.


[BUG] make_unique not annotated with except +

Describe the bug
When make_unique was provided in memory.pxd in https://github.com/cython/cython/pull/487, it didn't come with an except + annotation. At the time, this was due to the Cython compiler not emitting the correct std::move(...) in the subsequent assignment in the transpiled source code.
AFAICT this can be worked around in a reasonable manner by explicitly putting a move call in the rvalue of the assignment, and although that is less ergonomic, perhaps it is better because exceptions will actually be caught.
In the intervening years, it looks like this restriction has gone, and so except + should be reintroduced. The issue here is that a (potentially) throwing constructor wrapped by make_unique does not
Code to reproduce the behaviour:
from libcpp.utility cimport move
from libcpp.memory cimport unique_ptr
from libcpp.vector cimport vector

def some_function(int n):
    cdef unique_ptr[vector[double]] vec

    with nogil:
        vec = move(make_unique[vector[double]](n))

    return vec.get().size()

Expected behaviour
I expect this to be transpiled to:
        /* "cython_except.pyx":9
 *
 *     with nogil:
 *         vec = move(make_unique[vector[double]](n))             # <<<<<<<<<<<<<<
 *
 *     return vec.get().size()
 */
        try {
          __pyx_t_1 = std::make_unique<std::vector<double> >(__pyx_v_n);
        } catch(...) {
          #ifdef WITH_THREAD
          PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
          #endif
          __Pyx_CppExn2PyErr();
          #ifdef WITH_THREAD
          __Pyx_PyGILState_Release(__pyx_gilstate_save);
          #endif
          __PYX_ERR(0, 9, __pyx_L4_error)
        }
        __pyx_v_vec = cython_std::move<std::unique_ptr<std::vector<double> > >(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1));
      }

Whereas in fact it is transpiled to:
      /*try:*/ {

        /* "cython_except.pyx":9
 *
 *     with nogil:
 *         vec = move(make_unique[vector[double]](n))             # <<<<<<<<<<<<<<
 *
 *     return vec.get().size()
 */
        __pyx_v_vec = cython_std::move<std::unique_ptr<std::vector<double> > >(std::make_unique<std::vector<double> >(__pyx_v_n));
      }

OS
Linux
Python version
3.10.6
Cython version
3.0.0
Additional context
No response

Maybe I'm missing some detail of C++, but I believe the explicit call to std::move should be unnecessary and the generated code can be simpler:
// exception stuff as above
__pyx_v_vec = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

If that's the case there's basically no reason not to add except+ to our definition since all existing code would continue to work. The only question is whether the code detecting move support is robust enough.

I think that is correct. From some quick local testing that does appear to work. I'm going to try rebuilding a few of my libraries with this change to verify that there are no surprises.

Maybe I'm missing some detail of C++, but I believe the explicit call to std::move should be unnecessary and the generated code can be simpler:
// exception stuff as above
__pyx_v_vec = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

If that's the case there's basically no reason not to add except+ to our definition since all existing code would continue to work. The only question is whether the code detecting move support is robust enough.

I was testing with Cython < 3 which transpiles this example:
from libcpp.utility cimport move
from libcpp.memory cimport unique_ptr
from libcpp.vector cimport vector

cdef extern from "<memory>" namespace "std" nogil:
    unique_ptr[T] make_unique[T](...) except +

def some_function(int n):
    cdef unique_ptr[vector[double]] vec

    with nogil:
        vec = make_unique[vector[double]](n)

    return vec.get().size()

to
      /*try:*/ {

        /* "cython_except.pyx":12
 *
 *     with nogil:
 *         vec = make_unique[vector[double]](n)             # <<<<<<<<<<<<<<
 *
 *     return vec.get().size()
 */
        try {
          __pyx_t_1 = std::make_unique<std::vector<double> >(__pyx_v_n);
        } catch(...) {
          #ifdef WITH_THREAD
          PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
          #endif
          __Pyx_CppExn2PyErr();
          #ifdef WITH_THREAD
          __Pyx_PyGILState_Release(__pyx_gilstate_save);
          #endif
          __PYX_ERR(0, 12, __pyx_L4_error)
        }
        __pyx_v_vec = __pyx_t_1;
      }

However, with cython 3 we get
      /*try:*/ {

        /* "cython_except.pyx":12
 *
 *     with nogil:
 *         vec = make_unique[vector[double]](n)             # <<<<<<<<<<<<<<
 *
 *     return vec.get().size()
 */
        try {
          __pyx_t_1 = std::make_unique<std::vector<double> >(__pyx_v_n);
        } catch(...) {
          #ifdef WITH_THREAD
          PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
          #endif
          __Pyx_CppExn2PyErr();
          #ifdef WITH_THREAD
          __Pyx_PyGILState_Release(__pyx_gilstate_save);
          #endif
          __PYX_ERR(0, 12, __pyx_L4_error)
        }
        __pyx_v_vec = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);
      }

So I agree it looks like the explicit move should not be necessary. Though perhaps that also means one shouldn't backport to cython < 3 since existing code might break.

I think this probably should be backported since it needs updated features to work. I've proposed a change. I've also changed how we detect MOVE_IF_SUPPORTED to let the user force it to on. My one worry with this signature change is that it breaks compatibility for anyone who we aren't detecting move support for. And having a way to force it on mitigates that.


[Bug report] Failed to resolve import "@vuepress/plugin-theme-data/client" from "docs/.vuepress/.cache/deps/chunk-TRDB2MBY.js?v=88d8bd57". Does the file exist?

Description
pnpm create vuepress vuepress-starter
"docs:dev": "vuepress dev docs",

Reproduction
1
Used Package Manager
pnpm
System Info
"vuepress": "^2.0.0-rc.7",

I encountered the same issue when building VuePress today.

I see, the create-vuepress is still using old version. Please add tests for the package @pengzhanbo @Mister-Hope


Robber still able to move back to Desert Tile

Once the robber is moved from the desert tile, it should NOT be able to go back, regardless of whether it is legal to move it there or not

Simply did a check for whether the selected tile had a resouceId of 5. Prevented anyone from moving the robber to that tile


Fix broken ui and update readme

Shaders ui is broken and will freeze the game and cause it to flicker.
Readme is outdated, so I copied the info from the discord.
Let me know if anything else needs changed. Thanks!

Shaders screen should work fine if you're choosing the shaderpack already in a world.

Ah sorry my bad, you are correct. I will see if I can change this PR to either:
A) Fix the broken UI when not logged into a world
B) Remove the shaders UI option when not logged into a world

Alright, I changed the PR to fix the bug rather than disable the UI, feel free to re-review :)

I did some testing with the built library and found it didn't apply the shader when not loaded into a world even though it did in the development environment. Therefore, I feel the better solution is to revert the selection when not loaded into a world as the fix does now. 👍


How can I ignore archived posts in my feed?

I figure there must be a way to identify if a post is an archived post, but after searching around I can't find anything.

Addressed in PR #21.


BUG: Resharing doesn't apply default chains

Describe the bug
After resharing a Vault the default chains do not get applied and always show an empty Home screen
Expected behavior
The selected default chains of the user should be applied.

vault - [A,B]  , reshare to add [C]   vault - [A,B,C]
for A, B, we don't save it as new vault , we just override it , in this case we don't apply
for C, we will save it as a new vault ,  need to apply default chain to it
Currently , we have issue with C
A,B is fine


Unexpected "Operation not supported" returned when using sequential write

Hi,
I have a simple Java application for coping a 1GB file to S3 storage via goofys.
  FileInputStream fis = new FileInputStream(source);
  int bufferSize = 8 * 1024;
  try (FileOutputStream outputStream = new FileOutputStream(destination)){
            byte[] buffer = new byte[bufferSize];
            int n;
            while((n = fis.read(buffer)) > -1){
                outputStream.write(buffer, 0, n);
            }
   }

There is Exception when running outputStream.write
java.io.IOException: Operation not supported
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at demo.rest.RestController.copyFileSimpleGet(RestController.java:80)
It is reported that it is caused by non sequential write operation
"ERROR WriteFile: only sequential writes supported"
I cross checked with the system call used by the application using monitoring tool sysdig
and I do not find any non sequential write operations
java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=8192 data=................................................................................  java (32537:48) > write fd=1103(<f>/opt/goofys/assets/upload/1G.bin) size=8192  java (32537:48) < write res=-95(EOPNOTSUPP) data=................................................................................  java (32537:48) > close fd=1103(<f>/opt/goofys/assets/upload/1G.bin)  java (32537:48) < close res=-95(EOPNOTSUPP)  java (32361:21) > close fd=1103(<f>/opt/goofys/assets/upload/1G.bin)  java (32361:21) < close res=0
Do you know why "Operation not supported" is returned even the sequential write operations are ised?
Is it a bug or anything can do to avoid this.
The latest version of goofys is used.
Thanks
Regards,
Francis

please run goofys with --debug_fuse and attach the log here

Thanks for the update. The testing version is
goofys version 0.0.18-2a3ff2a2adbed07472b7902dfca348c5a21bd92b
I attached the file log after enabled --debug_fuse flag
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006dde        connection.go:396] <- GetXattr (inode 193, name "security.capability", name security.capability)
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006dde        connection.go:481] -> Error: "no data available"
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006ddf        connection.go:396] <- WriteFile (inode 193, handle 252, offset 71000064, 8192 bytes)
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006ddf        connection.go:479] -> OK ()
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de0        connection.go:396] <- GetXattr (inode 193, name "security.capability", name security.capability)
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de0        connection.go:481] -> Error: "no data available"
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de1        connection.go:396] <- WriteFile (inode 193, handle 252, offset 71008256, 8192 bytes)
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de1        connection.go:479] -> OK ()
Feb  7 08:49:57 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG WriteFile: only sequential writes supported 193 assets/upload/Francis1.bin [0 107036672]
goofys_log.zip

Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de1        connection.go:396] <- WriteFile (inode 193, handle 252, offset 71008256, 8192 bytes)
Feb  7 08:49:52 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG Op 0x00006de1        connection.go:479] -> OK ()
Feb  7 08:49:55 vos-controller-node-i-056bee420c1492703 docker: time="2018-02-07T08:49:55.364126303Z" level=debug msg="Calling GET /version"
Feb  7 08:49:55 vos-controller-node-i-056bee420c1492703 docker: time="2018-02-07T08:49:55.364536827Z" level=debug msg="Calling GET /version"
Feb  7 08:49:57 vos-controller-node-i-056bee420c1492703 /usr/local/bin/goofys[6470]: fuse.DEBUG WriteFile: only sequential writes supported 193 assets/upload/Francis1.bin [0 107036672]

It looks like some log lines are missing

It looks like some log lines are missing

What lines are expected? it is all I get from log.
Any other options should be set as parameter for that log?

lines from 08:49:52 to 08:49:57 look missing. I also expect log from the fuse protocol layer for offset before "only sequential writes supported".
How are you running goofys? Maybe try running in the terminal instead of through fstab and redirect the output yourself.

Thanks for the suggestion I uploaded the log following your guideline this time.
It seems it is related to WriteFile and FlushFile.
Please help to take a look.
2018/02/09 10:57:18.044146 fuse.DEBUG Op 0x00020288        connection.go:396] <- WriteFile (inode 8, handle 1, offset 539410432, 8192 bytes)
2018/02/09 10:57:18.044461 fuse.DEBUG WriteFile 8 Test/Test/Francis1.bin [539410432 8192]
2018/02/09 10:57:18.044500 fuse.DEBUG Op 0x00020288        connection.go:479] -> OK ()
2018/02/09 10:57:18.044619 fuse.DEBUG Op 0x00020289        connection.go:396] <- FlushFile (inode 8)
2018/02/09 10:57:18.044651 fuse.DEBUG Op 0x0002028a        connection.go:396] <- GetXattr (inode 8, name "security.capability", name security.capability)
2018/02/09 10:57:18.044707 fuse.DEBUG FlushFile 8 Test/Test/Francis1.bin []
2018/02/09 10:57:18.044902 fuse.DEBUG GetXattr 8 Test/Test/Francis1.bin [security.capability]
2018/02/09 10:57:18.044938 fuse.DEBUG Op 0x0002028a        connection.go:481] -> Error: "no data available"
2018/02/09 10:57:18.045025 fuse.DEBUG Op 0x0002028b        connection.go:396] <- WriteFile (inode 8, handle 1, offset 539418624, 8192 bytes)
2018/02/09 10:57:18.045273 fuse.DEBUG WriteFile 8 Test/Test/Francis1.bin [539418624 8192]
2018/02/09 10:57:18.407279 fuse.DEBUG <-- FlushFile 8 Test/Test/Francis1.bin [<nil>]
2018/02/09 10:57:18.407323 fuse.DEBUG Op 0x00020289        connection.go:479] -> OK ()
2018/02/09 10:57:18.407361 fuse.DEBUG WriteFile: only sequential writes supported 8 Test/Test/Francis1.bin [0 539418624]
2018/02/09 10:57:18.407394 fuse.DEBUG Op 0x0002028b        connection.go:481] -> Error: "operation not supported"
2018/02/09 10:57:18.410175 fuse.DEBUG Op 0x0002028c        connection.go:396] <- FlushFile (inode 8)

goofys_fuse_log.zip

Is the debug log enough for troubleshooting?

Could you show me more of your Java-side code, specifically what's causing FlushFile to be issued? goofys cannot keep writing to a file after it's been flushed (not to be confused with sync) but in Java that typically only happens if you close the stream.

Kahing,
it is the Java code used to write the file. The FileOutputStream will be closed when the try block end. Hence, close stream is not expected while writing data
        if (new File(destination).exists()) {
            throw new FileAlreadyExistsException("File already exists");
        }

        FileInputStream fis = new FileInputStream(source);
        int bufferSize = 8 * 1024;
        try (FileOutputStream outputStream = new FileOutputStream(destination)){
            byte[] buffer = new byte[bufferSize];
            int n;
            while((n = fis.read(buffer)) > -1){
                outputStream.write(buffer, 0, n);
            }
        }

Thanks
Regards,
Francis

Could you write a standalone java program that can reproduce this problem?

I think the flush is called by JRE implementation automatically. There's no way you can control it explicitly.
Might be Gooyfs should perform an no-op to flush call to avoid the problem. The remaining buffer will be flushed during close file anyway.

I am not able to reproduce this with this java program:
import java.io.*;

public class Cp {

    public static void main(String[] argv) throws Exception {
        String source = argv[0];
        String destination = argv[1];

        if (new File(destination).exists()) {
            throw new RuntimeException("File already exists");
        }

        FileInputStream fis = new FileInputStream(source);
        int bufferSize = 8 * 1024;
        try (FileOutputStream outputStream = new FileOutputStream(destination)){
            byte[] buffer = new byte[bufferSize];
            int n;
            while((n = fis.read(buffer)) > -1){
                outputStream.write(buffer, 0, n);
            }
        }
    }

}

We are seeing a similar issue to this one, during a callout from within an application server.
You may need to run the java process as a daemon and run the test over and over in a loop in order to drive the issue. It may be that a short lived java program like this does not drive the behavior because the JRE does not perform the flush at all, or in a manner that drives the issue.

For the sake of completion, let me describe the problem and fix

If a process forks it self while holding an open file, the forked process will inherit the file descriptor. So when the forked process exits, it issues a close on the open file. So single open file can have multiple FlushFile fuse operations.
This causes the write failure.

The fix was to ignore the FlushFile op if the opening process and the flushing process is different.
Kahing and I managed to reproduce the issue by making a small change to the program in https://github.com/kahing/goofys/issues/273#issuecomment-366152967. See the java program below. (You can also check the unit test added in the fix TestClientForkExec)
import java.io.*;
public class Cp {
    public static void main(String[] argv) throws Exception {
        String source = argv[0];
        String destination = argv[1];
        if (new File(destination).exists()) {
            throw new RuntimeException("File already exists");
        }

        FileInputStream fis = new FileInputStream(source);
        int bufferSize = 8 * 1024;
        try (FileOutputStream outputStream = new FileOutputStream(destination)){
            // !!!!!========= Run some command which causes fork + exec =====!!!!
            Runtime.getRuntime().exec("ls");
            byte[] buffer = new byte[bufferSize];
            int n;
            while((n = fis.read(buffer)) > -1){
                outputStream.write(buffer, 0, n);
            }
        }
    }
}


Option CORROSION_INSTALL_EXECUTABLE not working

Hello!
First of all thank you for the work on this repo :star:.
I'm having issues using the option CORROSION_INSTALL_EXECUTABLE documented here.
git clone https://github.com/AndrewGaspar/corrosion.git
...
cd corrosion
cmake -S./ -B./build3 -DCMAKE_BUILD_TYPE=Release -DCORROSION_INSTALL_EXECUTABLE=0 -DCMAKE_INSTALL_PREFIX="${PWD}/build3/install"
-- The CXX compiler identification is GNU 11.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Rust Target: x86_64-unknown-linux-gnu
-- Found Rust: /usr/bin/rustc (found version "1.56.0")
-- Using Corrosion as a subdirectory
-- Configuring done
-- Generating done
-- Build files have been written to: /home/esc/ss/rust/corrosion/repo/build3
esc@esc-home ~/.../corrosion/repo (master)$ cmake --build build3 --config Release
   Compiling proc-macro2 v1.0.26
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.71
   Compiling serde_derive v1.0.125
   Compiling serde v1.0.125
   Compiling ryu v1.0.5
   Compiling ucd-trie v0.1.3
   Compiling bitflags v1.2.1
   Compiling serde_json v1.0.64
   Compiling camino v1.0.4
   Compiling platforms v1.1.0
   Compiling unicode-width v0.1.8
   Compiling itoa v0.4.7
   Compiling textwrap v0.11.0
   Compiling pest v2.1.3
   Compiling clap v2.33.3
   Compiling quote v1.0.9
   Compiling semver-parser v0.10.2
   Compiling cargo-platform v0.1.1
   Compiling semver v0.11.0
   Compiling cargo_metadata v0.13.1
   Compiling corrosion-generator v0.1.0 (/home/esc/ss/rust/corrosion/repo/generator)
    Finished release [optimized] target(s) in 12.48s
[  0%] Built target cargo-build_corrosion-generator
[ 10%] Building CXX object test/cpp2rust/CMakeFiles/cpp-lib.dir/lib.cpp.o
[ 20%] Linking CXX static library libcpp-lib.a
[ 20%] Built target cpp-lib
   Compiling corrosion-build v0.1.0 (/home/esc/ss/rust/corrosion/repo/integrator)
   Compiling rust-exe v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/cpp2rust/rust)
    Finished release [optimized] target(s) in 0.38s
[ 20%] Built target cargo-build_rust-exe
   Compiling rust-lib v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/rust2cpp/rust)
    Finished release [optimized] target(s) in 0.07s
[ 20%] Built target cargo-build_rust-lib
[ 30%] Building CXX object test/rust2cpp/CMakeFiles/cpp-exe.dir/main.cpp.o
[ 40%] Linking CXX executable cpp-exe
[ 40%] Built target cpp-exe
   Compiling member1 v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/workspace/member1)
    Finished release [optimized] target(s) in 0.09s
[ 40%] Built target cargo-build_member1
   Compiling member2 v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/workspace/member2)
    Finished release [optimized] target(s) in 0.04s
[ 40%] Built target cargo-build_member2
[ 50%] Building CXX object test/workspace/CMakeFiles/my_program.dir/main.cpp.o
[ 60%] Linking CXX executable my_program
[ 60%] Built target my_program
   Compiling rust-lib-requiring-envvar v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/envvar)
    Finished release [optimized] target(s) in 0.20s
[ 60%] Built target cargo-build_rust-lib-requiring-envvar
[ 70%] Building CXX object test/envvar/CMakeFiles/program_requiring_rust_lib_with_envvar.dir/main.cpp.o
[ 80%] Linking CXX executable program_requiring_rust_lib_with_envvar
[ 80%] Built target program_requiring_rust_lib_with_envvar
   Compiling rust-host-program v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/hostbuild)
    Finished release [optimized] target(s) in 0.10s
[ 80%] Built target cargo-build_rust-host-program
   Compiling rust-feature-lib v0.1.0 (/home/esc/ss/rust/corrosion/repo/test/features/rust)
    Finished release [optimized] target(s) in 0.06s
[ 80%] Built target cargo-build_rust-feature-lib
[ 90%] Building CXX object test/features/CMakeFiles/features-cpp-exe.dir/main.cpp.o
[100%] Linking CXX executable features-cpp-exe
[100%] Built target features-cpp-exe
-- The CXX compiler identification is GNU 11.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Rust Target: x86_64-unknown-linux-gnu
-- Found Rust: /usr/bin/rustc (found version "1.56.0")
-- Defaulting Cargo to build debug
-- Configuring done
-- Generating done
-- Build files have been written to: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-build
   Compiling proc-macro2 v1.0.26
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.71
   Compiling serde_derive v1.0.125
   Compiling serde v1.0.125
   Compiling ucd-trie v0.1.3
   Compiling ryu v1.0.5
   Compiling bitflags v1.2.1
   Compiling camino v1.0.4
   Compiling serde_json v1.0.64
   Compiling platforms v1.1.0
   Compiling itoa v0.4.7
   Compiling unicode-width v0.1.8
   Compiling textwrap v0.11.0
   Compiling pest v2.1.3
   Compiling clap v2.33.3
   Compiling quote v1.0.9
   Compiling semver-parser v0.10.2
   Compiling cargo-platform v0.1.1
   Compiling semver v0.11.0
   Compiling cargo_metadata v0.13.1
   Compiling corrosion-generator v0.1.0 (/home/esc/ss/rust/corrosion/repo/generator)
    Finished dev [unoptimized + debuginfo] target(s) in 10.01s
Built target cargo-build_corrosion-generator
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-install/libexec/corrosion-generator
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-install/lib/cmake/Corrosion/CorrosionConfig.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-install/lib/cmake/Corrosion/CorrosionConfigVersion.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-install/share/cmake/Corrosion.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/test/config/test-install/share/cmake/FindRust.cmake
[100%] Built target test-install
esc@esc-home ~/.../corrosion/repo (master)$ cmake --install build3 --config Release
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/install/libexec/corrosion-generator
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/install/lib/cmake/Corrosion/CorrosionConfig.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/install/lib/cmake/Corrosion/CorrosionConfigVersion.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/install/share/cmake/Corrosion.cmake
-- Installing: /home/esc/ss/rust/corrosion/repo/build3/install/share/cmake/FindRust.cmake

With this option I would expect corrosion-generator binary not to be installed.

looks like a bug.
Out of curiousity, what's the use case of installing corrosion cmake files, but not the generator?

looks like a bug. Out of curiousity, what's the use case of installing corrosion cmake files, but not the generator?

Thanks for the follow up.
Trying to use it with meta-rust yocto layer to build a project that uses cmake and rust. So we need to first build corrosion-generator using the cargo and then have cmake generate the cmake install files.
So:

Build corrosion-generator with this bitbake class -> corrosion-bin
Generate the cmake install files with the this cmake bitbake class -> corrosion-cmake
Install corrosion-bin and corrosion-cmake to use it for building other projects that want to combine rust and cmake e.g. rust_cmake


Keyword-arg as list of str not handled properly

I'm facing an issue when sending a keyword argument containing a list of strings.
The task is called as
>>> import_files.delay(access_type='local:files', filepaths=map(os.path.abspath, ['tmp/tmpfile1', 'tmp/tmpfile2'])

The getcallargs(self.run, *args, **kwargs) call, returns the following dict:
{
    'access_type': 'local:files',
    'server': None,
    'user': None,
    'filepaths': ['/home/br/code/project/project/tmp/tmpfile1', '/home/br/code/project/project/tmp/tmpfile2'],
    'password': None
}

which generates the key
"qo_externalapi.tasks.marin.import_marin_files_access_type-local:files_filepaths-['/home/br/code/project/project/tmp/tmpfile1', '/home/br/code/project/project/tmp/tmpfile2']_password-None_server-None_user-None"

When the task call returns, the  getcallargs(self.run, *args, **kwargs) call now returns the following dict:
{
    'access_type': 'local:files',
    'server': None,
    'user': None,
    'filepaths': [u'/home/br/code/project/project/tmp/tmpfile1', u'/home/br/code/project/project/tmp/tmpfile2'],
    'password': None
}

which generates the key
"qo_externalapi.tasks.marin.import_marin_files_access_type-local:files_filepaths-[u'/home/br/code/project/project/tmp/tmpfile1', u'/home/br/code/project/project/tmp/tmpfile2']_password-None_server-None_user-None"

The (subtle) difference is that inspect.getcallargs added the "u" prefix in front of each string in the filepaths kwargs. As this results in two different keys, I can only delay a task once, until the lock expires.

@brouberol Great bug report! Thanks for taking the time to include all the examples code.
I think the best bet would be to extend kwargs_to_list to force str/unicodes into one standard form
https://github.com/TrackMaven/celery-once/blob/dbce7508536eb8a2d3184dd2dded42a86357882c/celery_once/helpers.py#L37
Will hopefully get around to patching this week!

Heh, no worries. No example, no patch, right :smile:
Let me know if there is anything I can do to make this work. I think we may need to recursively iterate over each kwarg and force convert any str to unicode (in the python2 sense). Does that seem right to you?


TST: Fix NOQA for flake8 checking in datetools.py

Recent changes to pyflakes (see here) suddenly started raising errors in datetools.py due to the star imports at the top, which the #noqa was not preventing. The correct syntax is # flake8: noqa PLEASE MERGE ASAP

For anyone out there with permissions to cancel tests, all of the builds that are right now queued before my (#18011) WILL FAIL because of this style checking issue.  At the very least, if someone could cancel all of my builds (excluding this one) as well as cancel any old builds of anyone else's PR's so that this one can land ASAP would be great.

there is more, already have these in #12511
maybe we should use a fixed version of pyflakes

Perhaps.  I was surprised to see that star import checking popping up relatively late in the game given how many versions have come out already, though discouraging star imports in the general case is understandable.


Change the WindowLevel to AppWindow

This changes the WindowLevel to AppWindow so that it will appear on top of the application that invoked it. For non-Snap installed applications WindowLevel::Utility worked, but for Snap installed applications, AppWindow is the required level. This was tested with several snap-installed applications on both Wayland and X11 on Ubuntu 22.04

Hey @tommoyer, thank you so much for contributing!
Unfortunately, I don't have time to test it this week, but I hope if it works for you, you can already use your own compiled version.
IIRC, I changed it to utility for mac or windows, so I might need to do some trickery in Browsers druid fork instead. Will see.

Fixes #87


Rya 460

Description
Depends on the Query Manager PR. Addresses RYA-462, RYA-463, and RYA-464
Links
https://issues.apache.org/jira/browse/RYA-462
https://issues.apache.org/jira/browse/RYA-463
https://issues.apache.org/jira/browse/RYA-464

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/696/Build result: FAILURE[...truncated 2.99 MB...][INFO] Apache Rya Spark Support ........................... SKIPPED[INFO] Apache Rya Web Projects ............................ SKIPPED[INFO] Apache Rya Web Implementation ...................... SKIPPED[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 34:49 min[INFO] Finished at: 2018-02-21T22:37:06+00:00[INFO] Final Memory: 337M/3017M[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.5:attached-rpm (create-rpm-distribution) on project rya.streams.query-manager: Unable to query for default vendor from RPM: Error while executing process. Cannot run program "rpm": error=2, No such file or directory -> [Help 1][ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException[ERROR] [ERROR] After correcting the problems, you can resume the build with the command[ERROR]   mvn  -rf :rya.streams.query-managerchannel stoppedSetting status of bff0093e8ae48ba90410d95a0c5a1e325712dd73 to FAILURE with url https://builds.apache.org/job/incubator-rya-master-with-optionals-pull-requests/696/ and message: 'FAILURE 'Using context: Jenkins: clean package -Pgeoindexing

I'm closing this because https://github.com/apache/incubator-rya/pull/279 takes it over.


feat(interactive): Support secondary instance of groot

Support open as secondary instance to support more QPS requests and high availability for read.

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

Comparison is base (e67f8d7) 40.90% compared to head (b65e0c4) 40.90%.

Additional details and impacted files

@@           Coverage Diff           @@
##             main    #3479   +/-   ##
=======================================
  Coverage   40.90%   40.90%
=======================================
  Files         109      109
  Lines       11343    11343
=======================================
  Hits         4640     4640
  Misses       6703     6703

Files
Coverage Δ

...n/graphscope/deploy/kubernetes/resource_builder.py
72.35% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

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


ci: create rpc cache based on tests

Currently the cache is never rebuilt. Usually you would rebuild if a lockfile changed but we don't really have that, so instead we rebuild the RPC cache if the external integration tests change

says cache is 0 bytes idk, will need to figure out why so i'm making this a draft

ok it caches now but the cache is small, not sure if that's intentional. another caveat: this will only rebuild the cache if we change the integration test file, so if there are updates upstream to any of the forking tests they will still hit the rpc


vue-pdf  SimSun  Font missing

google chrome console:
Warning: Error during font loading: Font SimSun is not available
1，I want to know how to generate SimSun.bcmap file through SimSun .ttf or SimSun .ttc,
2,  I should how to fix the  following code :
vue file content:
`

`

network exception，Clean up duplicate submissions


Fix for the race condition in SauceTunnel.stop()

stop() tries to close the tunnel then kills the Sauce Connect process regardless of the result of the first operation.
There is a race condition here, because Sauce Connect automatically exits after the tunnel is successfully closed. If Sauce Connect exits before the event listener is set up in kill() then the user-provided callback will never be invoked.
The fix:

only kills the process when closing the tunnel fails
sets up a common event handler which handles the exit event regardless of what caused the process to exit.

Very nice. Thanks for tracking this down.

Published in 2.2.2.


Newsletter new implementation test #1

Abort PR and swith to a cleaner branch

Aborted PR and switched to a cleaner branch


sct_apply_transfo: Error when inputing non-image files as transformation

Description
A recent bug was introduced (after v3.2.3), which prevents sct_apply_transfo to input .txt (affine-type) as transformation (flag -w).
A possible solution would be to accept back .txt.
Steps to Reproduce
cd sct_testing_data/t2
sct_register_to_template -i t2.nii.gz -s t2_seg.nii.gz -ldisc labels.nii.gz -ref subject

Output:

--
Spinal Cord Toolbox (master/53187cf96ac3bc5e39b5fcec48d5a8d292d2435b)
Running /Users/julien/code/sct/scripts/sct_register_to_template.py -i t2.nii.gz -s t2_seg.nii.gz -ldisc labels.nii.gz -ref subject

Check template files...
  OK: /Users/julien/code/sct/data/PAM50/template/PAM50_t2.nii.gz
  OK: /Users/julien/code/sct/data/PAM50/template/PAM50_levels.nii.gz
  OK: /Users/julien/code/sct/data/PAM50/template/PAM50_cord.nii.gz

Check parameters:
  Data:                 t2.nii.gz
  Landmarks:            labels.nii.gz
  Segmentation:         t2_seg.nii.gz
  Path template:        /Users/julien/code/sct/data/PAM50
  Remove temp files:    0

Check input labels...

Create temporary folder (/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4)...

Copying input data to tmp folder and convert to nii...
WARNING: File /var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/template_label.nii.gz already exists. Will overwrite it.

Check if provided labels are available in the template

Binarize segmentation
sct_maths -i seg.nii.gz -bin 0.5 -o seg_bin.nii.gz # in /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4

Change orientation of input images to RPI...

Remove unused label on template. Keep only label present in the input label image...
sct_label_utils -i template_label.nii.gz -o template_label.nii.gz -remove /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/label_projected_rpi.nii.gz # in /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4
WARNING: File /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/label_projected_rpi.nii.gz already exists. Will overwrite it.
WARNING: File /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/template_label.nii.gz already exists. Will overwrite it.

Estimate transformation for step #0...
Labels src: [[-0.0, -0.0, 179.5], [-0.0, -0.0, 142.5], [5.0, -0.0, 179.5]]
Labels dest: [[7.2192840576171875, -1.7866058349609375, 24.678329467773438], [7.2192840576171875, -0.7866058349609375, -10.321670532226562], [12.219284057617188, -1.7866058349609375, 24.678329467773438]]
Degrees of freedom (dof): Tx_Ty_Tz_Rx_Ry_Rz_Sz
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 8
         Function evaluations: 817
Matrix:
[[  1.00000000e+00  -1.10761821e-12  -9.69881466e-14]
 [  1.10993636e-12   9.99592086e-01   2.85597739e-02]
 [  6.53152582e-14  -2.85597739e-02   9.99592086e-01]]
Center:
[  8.88595072  -1.4532725   13.0116628 ]
Translation:
[[  -7.21928406    1.4532725<PHONE_NUMBER>7]]

Estimate transformation for step #1...
sct_apply_transfo -i template_seg.nii.gz -d /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/seg_bin_rpi.nii.gz -w template2subjectAffine.txt -o template_seg_regStep0.nii.gz -x nn # in /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4
Traceback (most recent call last):
  File "/Users/julien/code/sct/scripts/sct_register_to_template.py", line 802, in <module>
    main()
  File "/Users/julien/code/sct/scripts/sct_register_to_template.py", line 612, in main
    sct.run(['sct_apply_transfo', '-i', src, '-d', dest, '-w', ','.join(warp_forward), '-o', add_suffix(src, '_regStep' + str(i_step - 1)), '-x', interp_step], verbose)
  File "/Users/julien/code/sct/scripts/sct_utils.py", line 472, in run
    raise RunError(output)
sct_utils.RunError: Running /Users/julien/code/sct/scripts/sct_apply_transfo.py -i template_seg.nii.gz -d /private/var/folders/6f/wy6ljmx9453cgth2qwv5l1s80000gn/T/sct-20180814223811.149075-register_to_template-vVOvw4/seg_bin_rpi.nii.gz -w template2subjectAffine.txt -o template_seg_regStep0.nii.gz -x nn

Parse list of warping fields...
Error: make sure template2subjectAffine.txt is an image.
Traceback (most recent call last):
File "/Users/julien/code/sct/scripts/sct_apply_transfo.py", line 304, in <module>
main()
File "/Users/julien/code/sct/scripts/sct_apply_transfo.py", line 294, in main
transform.apply()
File "/Users/julien/code/sct/scripts/sct_apply_transfo.py", line 136, in apply
if msct_image.Image(fname_warp_list[idx_warp]).header.get_intent()[0] != 'vector':
File "/Users/julien/code/sct/spinalcordtoolbox/image.py", line 231, in __init__
self.loadFromPath(param, verbose)
File "/Users/julien/code/sct/spinalcordtoolbox/image.py", line 316, in loadFromPath
sct.printv('Error: make sure ' + path + ' is an image.', 1, 'error')
File "/Users/julien/code/sct/scripts/sct_utils.py", line 1012, in printv
raise RuntimeError("printv(..., type=\"error\")")
RuntimeError: printv(..., type="error")
No handlers could be found for logger "sentry.errors"
Sentry is attempting to send 1 pending error messages
Waiting up to 10 seconds
Press Ctrl-C to quit
Note: you can opt out of Sentry reporting by editing the file ${SCT_DIR}/bin/sct_launcher and delete the line starting with "export SENTRY_DSN"
Total processing time: 0 min 2 s
Sentry is attempting to send 1 pending error messages
Waiting up to 10 seconds
Press Ctrl-C to quit
No handlers could be found for logger "sentry.errors"
Note: you can opt out of Sentry reporting by editing the file ${SCT_DIR}/bin/sct_launcher and delete the line starting with "export SENTRY_DSN"
Total processing time: 0 min 13 s

BTW: we could take this opportunity to add this scenario in test_sct_register_to_template

additional info: i noticed in sct_apply_transfo v3.2.3 that the description for -w was "warping field", which was obviously wrong (because we do want to accept .txt). So i suggest we change this description for "Transformation, including warping field or affine transfo."

Oops, I hadn't realized a warping field could be something else than an Image.


Running "npm run deploy" gives me the following errors:
npm ERR! Darwin 15.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "deploy"
npm ERR! node v4.6.0
npm ERR! npm  v3.10.7
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>deploy: concurrent --kill-others "gulp watch" "node ./dist/server/bin/www
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>deploy script 'concurrent --kill-others "gulp watch" "node ./dist/server/bin/www'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the angular2-express-mongo package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     concurrent --kill-others "gulp watch" "node ./dist/server/bin/www
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular2-express-mongo
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls angular2-express-mongo
npm ERR! There is likely additional logging output above.
Screenshots attached.
Thanks for your help.

This is because of the new version of node 6.7.0, everything worked well in 6.6.0. I can see a lot of people having this issue recently.

ok, thanks for the update.  I'll use Node 6.6.0 until there is a resolution.
All the best,
Peter

@M00ker The error list above and your screenshot shows:
npm ERR! node v4.6.0
so it wouldn't have been due to node 6.7.0 as @thomasmoldovan suggested, although there could be other problems. But, the angular.io website says: "Our examples require node v5.x.x or higher and npm 3.x.x or higher"

Ok i did a little investigation and it seems that is @types/core-js fault
run:
"npm uninstall @types/core-js --save-dev"
and everything will run ok

thanks thomas for the fix.

Hello, i am using Node 6.8.1 version and getting exception of @M00ker's write. This project works with only 6.6.0 version ? Can't update future time ? Thanks...


Add ability to specify weeks in relative date searches that start on days other than Monday

⚠ Please check that this feature request hasn't been suggested before.

[X] I searched previous Ideas in Discussions didn't find any similar feature requests.
[X] I searched previous Issues didn't find any similar feature requests.

🔖 Feature description
Currently the interpreting of week in relative date searches always uses isoweek which always starts on Monday.
There will be users who wish weeks to start on Sunday instead.
✔ Solution
One way of implementing this would be to add a user preference for first day of the week
Another way would be to provide two options in the filters:

week which uses the locale
isoweek which uses the ISO week, that is, always starts on Monday.

I think that this would need to be done before we released the initial due in this week etc facility.
Otherwise, it would be a breaking change, as the meaning of week would change for this in regions where start of week is not Monday.
❓ Alternatives
No response
📝 Additional Context
No response

/CC @ilandikov

how about week-iso? it will be easier to type at the end =)

I chose isoweek because it is already something that chrono parses.
It also happens to be the word order in the name here:
https://en.m.wikipedia.org/wiki/ISO_week_date
Also, someone parsing week and week-iso has to put an end-of-word marker on week to avoid the ambiguity, which adds a bit of complexity.
(Ease of implementation is never a strong argument, but it doesn’t do any harm)

Then maybe we change the current implementation week -> isoweek and implement week later?

Then maybe we change the current implementation week -> isoweek and implement week later?

I'm not sure whether that means:

change the query for in this week to in this isoweek - and use isoweek behind the scenes.
or change in this week to use isoweek behind the scenes.

2 is the current behavior. I suggest going for the 1

Another possibility is to release as is and propose later an option in the settings to set the first day of the week with:

Follow local settings
ISO 8601
M, T, W, T, F, S, S (which is ISO 8601 + 0...6 days offset inside)

Another possibility is to release as is and propose later an option in the settings to set the first day of the week with:

ISO 8601 (default since implemented first, no breaking chage)
Follow local settings
M, T, W, T, F, S, S (which is ISO 8601 + 0...6 days offset inside)

I do think that this is a good idea -  after the next release is out, so we can take our time.

true, however the issue is ...in relative date searches... so we can limit the option to act on the searches first and then extend it to the add/edit task modal as an another step

true, however the issue is ...in relative date searches... so we can limit the option to act on the searches first and then extend it to the add/edit task modal & auto suggestions as other steps

Totally agree. Just wanted to note the thought. We can always record in the Settings section and the docs which areas of the plugin this setting will and will not affect.

The #1797 now fixes relative & numbered ranges so I suggest editing this issue to include numbered ranges as well.

This was a bit painful so I write up how to implement this using custom filters, based on the source code in Tasks.....
filter by function \
    \
    {{! See https://momentjs.com/docs/#/manipulating/start-of/ }} \
    {{! 'isoWeek' runs Monday to Sunday, and is what Tasks uses as 'week' }} \
    {{! 'week'    is locale-aware }} \
    const unitOfTime = 'week'; \
    const today = window.moment(); \
    const start = today.clone().startOf(unitOfTime).startOf('day'); \
    const end   = today.clone().endOf(unitOfTime).startOf('day'); \
    \
    const date  = task.due.moment.clone(); \
    {{! These are how the Date Range options are calculated }} \
    {{! See https://publish.obsidian.md/tasks/Queries/Filters#Date+range+options }} \
    const before        = date ? date.isBefore(start) : false; \
    const after         = date ? date.isBefore(start) : false; \
    const inOrBefore    = date ? date.isSameOrBefore(end) : false; \
    const inOrAfter     = date ? date.isSameOrAfter(start) : false; \
    const inRange       = date ? date.isSameOrAfter(start) && date.isSameOrBefore(end) : false; \
    {{! Return whichever of the above is the operator you want... You can delete the other calculations}}
    return inRange;

For anyone subscribing to this, I've updated the previous comment...

Apologies - I've fixed errors in both the Tasks 'filter by function' lines in the comment above: https://github.com/obsidian-tasks-group/obsidian-tasks/issues/1751#issuecomment-2316965151
You can click on the edited dropdown at the top of the comment to see the changes.


Help about discord sever

I am trying to join your server, but the link indicates that it has expired. It says ''This is not a valid invitation.''

use browser

try "cottonbuds" code invite


Add configurable verification of HttpOnly cookies in JWTAuthentication filter

Title: Add configurable verification of HttpOnly cookies in JWTAuthentication filter
Problem:

One of the methods to protect against XSS attacks and token theft in web apps is the HttpOnly cookie that is set by the server, and that is not accessible from Javascript. A digest of the cookie value is recorded in the token and is verified by the server when the browser sends a request.

Proposal:

It would be very useful for JWT Authentication filter to extract the value from the cookie, take a sha256 digest and verify that a claim with the corresponding value is in the token.

Headers:

Cookie: secure_key=secure_value_1234567890

Envoy config

verify_secure_cookie:
key: "secure_key"
transform: [sha256, plaintext]
claim_name: "cookie_key"

I need some clarifications:  In the JWT token, what claim name should be checked?  Maybe also from Envoy config?
For example: a request has following headers:
Authorization: Bearer TOKEN
Cooke: secure_key=secure_value_1234567890
After Envoy Jwt_Authn filter verified the TOKEN,  it also needs to verify the cookie.  If it has following config:
verify_secure_cookie:
cookie_key: "secure_key"
jwt_claim_key: "jwt_secure_key"
transform: sha256
The filter will look for "jwt_claim_key" field in the TOKEN claim, and verify its value is sha256 of cookie value from "secure_key".
Is this correct?
I feel it is better to have a separate filter for this function.   The verified payload is written to dynamicMetadata in the stream_info.  Other filter can access it to perform such verification.

Absolutely correct. Sorry, forgot to add the claim name.

Any thoughts ?

I think these custom operations (e.g. sha256, etc.) seems too specific to be added to jwt filter unless there is a more generic way to specify and support these custom operations and allowing it to be reused in other filters.
Maybe you could try to use a Lua filter (https://github.com/envoyproxy/envoy/tree/v1.10.0/examples/lua) to do this?

Sha256 is already implemented in envoy/common/crypto/utility.cc

Sorry I did't mean sha256 is specific or there is any problem of supporting sha256 in the code, the problem is how to support this properly in the filter API so that it's not a solution that only works for some specific use cases.
For example, what if the other user want to use a hash algorithm other than sha256 or the other user want to do some preprocessing and only use part of the the cookie header to calculate the hash?

Yangmin, what am I doing wrong ? I'm doing JWT auth and want payload to be in the dynamicMetadata() (see payload_in_metadata: "my_payload") so that the lua filter after jwt_auth can check the token payload. Before JWT_auth filter I capture some headers using another lua filter so that the arguments can be reconstructed.
Problem:
I'm getting "nil", dynamicMetadata() contains only my map with recorded header values.
[2019-07-03 17:08:52.833][12][info][lua] [source/extensions/filters/http/lua/lua_filter.cc:535] script log: ------------- Request dynamic_key: envoy.lua
[2019-07-03 17:08:52.833][12][error][lua] [source/extensions/filters/http/lua/lua_filter.cc:541] script log: [string "function envoy_on_request(request_handle)..."]:9: bad argument #1 to 'pairs' (table expected, got nil)
[
Envoy Config
`          - name: envoy.lua
typed_config:
"@type": type.googleapis.com/envoy.config.filter.http.lua.v2.Lua
inline_code: |
function envoy_on_request(request_handle)
local headers = request_handle:headers()
local dm = request_handle:streamInfo():dynamicMetadata()
              dm:set("envoy.lua", ":path", headers:get(":path"))
              dm:set("envoy.lua", ":scheme", headers:get(":scheme"))
              dm:set("envoy.lua", ":authority", headers:get(":authority"))
            end

      - name: envoy.filters.http.jwt_authn
        config:
          providers:
            provider1:
              issuer: "Authentication Service"
              forward: true
              remote_jwks:
                http_uri:
                  uri: http://localhost:8080/.public-jwks
                  cluster: keyserver
              from_headers:
              - name: access_token
              payload_in_metadata: "my_payload"
          rules:
             - match:
                 prefix: /s/service1
               requires:
                 provider_name: provider1
             - match:
                 prefix: /

...
      - name: envoy.lua
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.http.lua.v2.Lua
          inline_code: |
            function envoy_on_request(request_handle)
              local dynamic = request_handle:streamInfo():dynamicMetadata()

              for dynamic_key, dynamic_value in pairs(dynamic) do
                request_handle:logInfo("------------- Request dynamic_key: " .. dynamic_key)
              end

              local dm = request_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.jwt_authn")
              for dm_key, dm_value in pairs(dm) do
                request_handle:logInfo("------------- Request dm " .. dm_key .. ":" .. dm_value)
              end
            end

`

It's only there when JWT auth is triggered and successfully completes.

How do i implement such changes in c++ ?

@andrewtikhonov I am OK to implement such verification feature in jwt_authn filter.

Am I the only one who requested this ?

Activity

Activity

Activity

Activity

Actually this feature is a must when working with JWT and JS frontends. We have our fronend apps (vuejs, reactjs etc) which communicate with backend via gateway. and its common practice to use httponly cookies with jwt so js apps can't steal them. So without this feature the usage of a gateway for jwt validation before passing valid requests to backend services is obsolete.
I tried the lua approach but its also not good/working because of POOR cookie support. there is no way to access cookies in lua except for fetching cookie header and parsing it manually by splitting etc..
so i would vote +5 for this feature. please :)

so i fount a workaround for this problem. its not that nice but I think it cleaner then processing cookies in lua. So the solution is to use hybrid approach. this is how it looks like in my solution.
http_filters:
          - name: jwtcookie.filter
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.header_to_metadata.v3.Config
              request_rules:
                - cookie: "MPJWT"
                  on_header_present:
                    key: "x-jwt-token"
                    type: STRING
                  on_header_missing:
                    key: "x-jwt-token"
                    type: STRING
                    value: ' '
          - name: jwtcookie.lua
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
              inline_code: |
                function envoy_on_request(request_handle)
                  local jwt = request_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.header_to_metadata")["x-jwt-token"]
                  if jwt == nil or jwt == '' or jwt == ' ' then
                    return
                  end
                  request_handle:logTrace("Passing jwt value from cookie into authorization header: " .. jwt)
                  request_handle:headers():add("Authorization", "Bearer " .. jwt)
                end
          - name: envoy.filters.http.jwt_authn
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication
              providers:
                myProvider1:
                  issuer: "https://myhost.com"
                  audiences: [ "https://myhost.com" ]
                  local_jwks:
                    filename: /etc/envoy/jwks/jwks.json
                  from_headers:
                  - name: Authorization
                    value_prefix: "Bearer "
                  forward: true
                  forward_payload_header: x-jwt-payload
              rules:
                - match:
                    prefix: /
                  requires:
                    provider_name: myProvider1
          - name: envoy.filters.http.router

The order is important

header_to_metadata can read a specific cookie value and store it into metadata (dynamicMetadata)
lua filter puts the value from dynamicMetadata into header
generic jwt validation

I would love to skip step 2. not sure if there is a namespace or a way to make header_to_metadata write the value back into headers. or may be we need a new extensions like header_to_header or header_transformer.
well at least with this solution no need to mess around cookie parsing from a sting (in lua its quite dirty).

btw: cookie/header name is case sensitive in header_to_metadata :(

@vemod thx a lot for your "patch"
how did you deal with grpc-web withCredentials call?
with envoy i got this error:
as been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.
In the response envoy always set the response with Access-Control-Allow-Origin: '*'..
But in the config i have this:
allow_origin_string_match:
- exact: "http://localhost:4200"
Any way to force the response header with the origin instead of *?

Any way to force the response header with the origin instead of *?
you can force response headers by setting them in lua like in my example with auth request headers. to do that you need to implement
function envoy_on_response(response_handle)`

The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

have you tried to set allow_credentials? you might need to set that in order correct headers are included or set them in lua

@vemod allow_credentials: true into cors config not working at all with something like this on client side:
this.greeterClient = new GreeterServicePromiseClient('http://localhost:8080', null, <any>{
     'withCredentials': true
}

Can i declare multiple function with inline_code?

@vemod my bad the problem was coming from an old chrome cors extension.
forgot to uninstall ^^
Your solution is ok ;) thx a lot!
Will be better to have a native support 👍
Anyway JWT filter is awesome 😄.


[AutoTVM] Re-enable ref_input

This PR aims to implement for https://discuss.tvm.apache.org/t/autotvm-interface-for-fixed-input-data/9893.
@areusch

Synced with up-to-date main.
measure_option interface added. MeasureInput is created in tuners from tasks, maybe too impactful for now.
Unittest added.

Thanks @Tantalus13A98B5F @areusch! It is merged now!


XMLDecoder marshaller

Hi dude,
Thanks for your amazing work first. I just wondered if you had plans for integrating XMLDecoder marshaller in your tool or you considered it too simple ?
Would you be interested in a pull-request ?
Thanks

Hi,
I didn't add it because both I didn't think that tooling was required and also that it was more of a honorable mention and not really new.
If you want to submit a pull request, sure, go ahead.


Parallelising image rendering of multiple sensors

I was looking into parallelising the image rendering for multiple sensors in simulator.py, however, pickling doesn't work and there isn't support for async rendering either. Is there a way rendering for multiple sensors of an agent can be parallelised?

@rishubhsingh I'm curious what you hoping to gain here?
Visual sensor rendering uses GPU operations to rasterize the scene. Without implementing something more complex on the shader side or leveraging multiple GPUs for a single simulator process, I don't know how you would intend to parallelize these rendering passes.
Curious what you have in mind.

@aclegg3 I am trying to work with agents with multiple sensors (upto 20 rgb sensors) with different positions and orientations. The current implementation of get_sensor_observations() is to loop over all agents and all sensors within each agent.
I want to leverage multiple gpus to parallelize this rendering by splitting the loop into parallel processes however the class objects necessary cannot be pickled (even by dill) to allow for multiprocessing. Additionally, the notes for batch rendering say it only supports 1 sensor right now which doesn't solve this problem.
I also tried to use start_async_render() and get_sensor_observations_async_finish() instead of get_sensor_observations() which to my understanding uses multithreading at the cpp level, however a simple verification setup emperically showed it isn't faster (but is unintuitively slower). Does this setup actually use multithreading or is the intended use case something else?
The primary need is to parallelise rendering for multiple sensors within a single environment (assuming having the needed resources) and I haven't been able to do it -- is there a suggested solution / existing function or setup that can be used?

Hey @rishubhsingh,
I understand your objective a bit better now. I agree that rendering 20+ sensors per observation is likely to be significant bottleneck.
The best way to do this would be to leverage something like multi-draw where scene contents remain loaded in the GPU shader context and only the camera matrix is modified allowing quick multi-view rendering a single scene state. We are looking into features like this with the batched renderer, but have not made it that far yet.
Spreading the load across multiple GPUs sounds like an attractive option, but remember that asset memory is loaded per-gpu. This means all textures, meshes, etc... need to be uploaded for each scene to each GPU. The resulting image observations would then need to be piped to a learner process which is doing inference. I think we may find that the device-to-device copy overhead is also a significant bottleneck.
Regarding async rendering. This feature is intended to overlap physics and rendering in order to reduce the overhead of running dynamic simulation. E.g. render the previous state while running physics to produce the next state. In Habitat 2.0 we showed that this is a significant improvement for dynamic tasks. However, if batch rendering is the bottleneck already, this won't help you much.


[BUG] Snippet in the README.md ain't working

Describe the bug
Snippet in the readme ain't working
Expected behavior
Snippet creates a quick.db instance with the file that is passed
Screenshots
https://cdn.xndr.tech/u/wwix28X.png
Desktop (please complete the following information):

OS: Windows 10
Node version: v14.6.0

If you are not using another database program, there is no need to specify the .sqlite file you want the database to be written on. You can simply remove the db() function line and it will manage the files automatically for you.

What would i need to do if i want it in a special directory?
I don't want the sqlite file in the root folder of my project.

I don't really know. I would recommend using other tools if you wanna stick with SQL data storage. quick.db is not well done for big projects. Try something like MySQL maybe?

I don't really need it for a big project. Just the way im deploying it requires me to define a persistent folder where all changing data is saved.
According to the readme i should be able to use const db = quickdb('./json.sqlite'); which doesn't seem to work

The snippet you are referencing is from the ^8.0.0 version of quick.db. Unfortunately the npm version is still at 7.1.3 which doesn't have the database function hence why you receive this error.
You can always install from the github main branch or wait for the 9.0.0 version which also has this feature.


matchAll() runs Request constructor off the main thread

That does not seem possible. You need to run the synchronous stuff at the start of the algorithm, before any parallel steps.

This is also a problem for match() by extension.

Is the same also true for pretty much every other method? In particular the ones that return Client instances, maybe also the ones that return ServiceWorker and ServiceWorkerRegistration instances?

Yeah could be. Depends on how things are worded/done.

@jungkees could you perhaps give pointers to the sections in the specification that need review? That would help a lot.

Ah.. I had to give this pointer: https://github.com/slightlyoff/ServiceWorker/commit/3d0ee145e27bcaf725ae3050759893c2daf3e363#commitcomment-14237642.
To sum, it'd be nice if you review whether this change makes sense:

Before: a queued task (to the client's event loop) captures the window's state and create a WindowClient object there and resolves the returned promise there.
After: a queued task (to the client's event loop) captures the window's state and only set the corresponding variables defined in the service worker environment. When the task has executed, the steps in the service worker environment create a WindowClient object and resolves using the values set in the variables.

I think WindowClient.focus() is an example that I want you to take a look:

Before: https://www.w3.org/TR/2015/WD-service-workers-20150625/#client-focus
After: https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#client-focus-method

It seems e.g., matchAll() still invokes the Request constructor from a section that runs in parallel. That is a little odd, because e.g., it means the promise is not guaranteed to reject at the end of the current task, which is what you'd expect.
I would expect methods to do that kind of setup work first, before returning and running some steps in parallel for lookup.

F2F: move the "if request is a string, upgrade to request" steps to before "run in parallel"


gate Scope in try block for when Scope does not exist

fix for KeyError['Scope']

Coverage decreased (-0.8%) to 99.163% when pulling 7a0b92ec5c94020a100304b7f6e5aaef0459ff22 on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-0.8%) to 99.163% when pulling 5cb8ad987c6d48ec589706d1b7ac557d07ba6e64 on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-0.8%) to 99.163% when pulling e41f67850aa330b4264aec0dfb3c6fc8ee576ae0 on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-4.2%) to 95.763% when pulling bf74768316bce3c8e94d54aa27cabba213d8b6d0 on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-0.8%) to 99.163% when pulling 38a06e99ba24cfb429111e1b569c3a22a141188b on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-0.8%) to 99.163% when pulling 38a06e99ba24cfb429111e1b569c3a22a141188b on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.

Coverage decreased (-0.8%) to 99.163% when pulling 38a06e99ba24cfb429111e1b569c3a22a141188b on mbassett:master into 392c4b00fbe2e0cc8ad4259c7896d1ffc5eca10d on TerbiumLabs:master.


Clarified local Docker image limitations

Local Docker image setup documentation updated based on feedback provided via docs.mattermost.com stating that docs aren't clear about local image limitations

updated description to be more explicit and clear about the reasons why the local image shouldn't be used in prod
emphasized the message that the local image shouldn't be used in prod
added context around the fact that the local image has an internal DB/works out of the box/is self-contained
updated LHS entry to clarify it's a local image

We're updating this page via #5517 to have both preview and production instructions. I connected with @cwarnermm about this! Once that is merged, we can close this PR. I kept the Administrator tasks page for now, but I did improve the nav links so we're clearly directing users to the preview vs. production versions of Docker, where appropriate.