deployment isn't listed on the FullVM

Description
Qanet 2.2.0-rc2.
I got deployments on the FullVM, but it doesn't list them on the deployment list and doesn't show any error on the logs or show a failed deployment list.

please check if reproducible on devnet or not.
as it should e fixed there.

Verified on devnet.
Updated is done but not released yet on devnet.


Let user hide datatype in tables headers

Description
Suddenly the datatypes have appeared as "string", "number" etc under the table headers. I would very much like to hide these types.

Suggested solution
Add an argument like hide_datatypes or something similar to the table constructor.
Alternative
No response
Additional context
No response

This cropped up when I started to auto-infer data-types from the column values: https://github.com/marimo-team/marimo/pull/2796
I've fixed that in this PR: https://github.com/marimo-team/marimo/pull/2907, which won't show data-types if you pass a list/dict, and instead only show when you pass a dataframe.
We can also make this configurable, but this at least fixes the default case.


GDB Client/Server enhancements and tweaks

to make the unit tests work correctly.
very close....  but we have a translation issue.  and gdb_client isn't updating to use the target.xml register indexes (and since QEMU has ebx as index 1 and most sane implementations, including envi, have it as index 3, this is currently causing a test failure. great progress tho!

working toward a more complete GDB Client and Server.  almost got it where i want it.


Add NixOS (and home-manager support via flake

Added support for building the plugin via flake, and using it in a declarative home-manager configuration. Added details about how to do this in the README, with an example flake to demonstrate.

#6 Should be closed if this is merged

Closes #6


NavigationRegion3D - Referencing runtime generated navmesh property returns editor generated navmesh property

Godot version
v4.0.alpha13.official [59dcddc45]
System information
Kubuntu 22.04, kernel: 5.15.0-46-generic (64-bit), Vulkan, NVIDIA GeForce RTX 3050/PCIe/SSE2, AMD Ryzen 7 3700X 8-Core
Issue description
Referencing navmesh property of NavigationRegion3D does not return newest state. It will return navmesh generated in editor, not new navmesh generated in code.
Output from attached godot project:
Navmesh vertices from editor:
(-0.5, 1.5, -0.5)
(-0.5, 1.5, 0.5)
(0.5, 1.5, 0.5)
(0.5, 1.5, -0.5)
Navmesh vertices from realtime baking (edited gridmap):
(-0.5, 1.5, -0.5)
(-0.5, 1.5, 0.5)
(0.5, 1.5, 0.5)
(0.5, 1.5, -0.5)
Steps to reproduce

Use GridMap to create simple grid
Set GridMap as child of NavigationRegion3D
Bake NavMesh in editor
Add script that will a) add extra tiles to GridMap b) bake_navigation_mesh
for v in self.navmesh.get_vertices():
print(v)
Values do not match new state with extra tiles

Minimal reproduction project
Uploading NavigationRegion3D_bug_report.zip…
Uploading MRP went wrong so I uploaded it again to Google drive

Your MRP link does not work.
The NavigationRegion3D navmesh on top of your GridMap is not the same as the cell navmesh baked inside your GridMap cells.

Uploading MRP went wrong so I uploaded it again to Google drive

The issue is that you are calling everything in the _ready() function, at that time most nodes and resources are not fully setup.
NavigationMesh baking happens threaded / deferred in the background, the navmesh is not replaced instantly.
Because navmesh baking parses the entire geometry depending on NavigationMesh properties it needs to wait until all SceneTree nodes are done so a _ready() call in a (sub)node is the wrong time to change and bake something procedural. If you disable the threaded baking with bake_navigation_mesh(false) and use a deferred function call in your _ready() it reports the updated vertices.
func _ready():
    place_cells()
    bake_navigation_mesh(false)
    call_deferred("deferred")

func deferred():
    print(navmesh.get_vertices())

If below ~10 mb please upload always directly to github, external links are not reliable in the long run.
NavigationRegion3D_bug_report.zip

Your solution works, thanks for helping out.
So no bug after all, I will close the issue.


How to parallelize fit_generator? (PicklingError)

I tried several ways but cannot get parallelization of sample / data generation to work successfully. Below is a gist. Am I doing something wrong, or is there a bug?
https://gist.github.com/stmax82/283ef735c8e2601ef841de8b37243ee1
I suppose that my fourth try would be the correct one - but when I set pickle_safe=True, I get the error:
PicklingError: Can't pickle <function generator_queue.<locals>.data_generator_task at 0x000000001B042EA0>: attribute lookup data_generator_task on keras.engine.training failed

You can read this

@parag2489 I did, but it doesn't seem to solve my problem - please explain? Is this for an older version? In 1.1.0 you cannot set nb_worker=2 (like they did in #1638) without also setting pickle_safe=True.. and when you set pickle_safe=True it uses multiprocess parallelization, which should make the threadsafe wrapper unnecessary... but setting pickle_safe results in another error like in my fourth case (PickleError).

Same problem here. I also tried with the solution proposed in #1638 but it didn't solve my problem. I'm trying to read my dataset from a hdf5 file, it it matters.

Same problem, my code works perfectly with threads, but fails with process (pickle_safe = True). Any solution?

TL;DR: Do NOT set pickle_safe=True. You're bound for trouble.
Extensive explanation:
I've been investigating the way workers are used in the _generator function sets (see issues #5071, #6745 ).
So far, my conclusion is that the way pickle_safe=True is implemented is, at best, flawed beyond recovery and should be avoided completely.
Here's what I've gathered:

Generators are not picklable, and it seems they won't be any time soon.
 Since Windows doesn't have fork(), the multiprocessing.Process is made -simplifying heavily- by creating a whole new application process, pickling the data the new process needs and sending it over a pipe, together with other data required to simulate a fork() (See this article for a more detailed and precise explanation of why that is necessary)
If you're a Linux user, your problem is sneakier. The code will run just fine, because thanks to fork()'s magic, there isn't the need to pickle and unpickle the generator. However, An identical independent clone of the original generator is created and used independently in each child process!
Which means that your data is being enqueued one time per each worker whenever they call next() and obtain a new batch.

Take this example:
import multiprocessing
import time

if __name__ == '__main__':
    def my_generator():
        i = 0
        while True:
            i += 1
            yield i
    gen = my_generator()
    queue = multiprocessing.Queue()
    def target_f():
        import os
        import sys
        import time
        sys.stdout = open(str(os.getpid()) + ".out", "w")
        sys.stderr = open(str(os.getpid()) + ".err", "w")
        time.sleep(1)
        queue.put(next(gen))
    p1 = multiprocessing.Process(target=target_f)
    p2 = multiprocessing.Process(target=target_f)
    p1.start()
    time.sleep(0.3)
    p2.start()
    p1.join()
    p2.join()
    print(queue.qsize())
    print(queue.get())
    print(queue.get())

The output of this code under Linux is:
2
1
1

while under Windows it breaks with the error:
TypeError: can't pickle generator objects

Considering all, I believe the pickle_safe argument to be misleading, wrong and potentially harmful and should be IMO removed altogether.
Until then, stick to pickle_safe=False in your code to avoid headaches.

Is it possible to clone a generator? If you have copies of a generator, calling next() on one will also advance the state of its clones, which means they aren't really separate copies of the original generator. If the generator supports concurrent use (i.e., it won't throw ValueError: generator already in use), multiple processes accessing the generator shouldn't be a problem.
Now, this problem may be different for an iterable object, which is possible to clone. But not for a generator function, I don't think.

As far as I could research, it's not possible to clone a generator (unless done implicitly by fork() when a new process is spawned from the process that has the original generator, but even then the two copies are entirely independent from each other).
What do you mean with "If you have copies of a generator, calling next() on one will also advance the state of its clones, which means they aren't really separate copies of the original generator"?

def gen():
    i = 0
    while True:
        yield i
         i += 1

g = gen()
h = g
print(next(g)) // 0
print(next(h)) // 1

That is not "cloning" the generator, you're just making a second reference to it. When you move an object to a new process, however, you must create a real copy of it, not just a reference. The object is either copied when the process forks (on linux) or pickled, sent to the new process and unpickled (on windows).
The problem is that generators are not picklable, so they can't be sent to the second process.

I've been using generators with pickle_safe=True. It indeed creates an
independent process for each worker.
This is not a problem if you have a large dataset and each generator
shuffles the sample indexes independently.
Just make sure not to initialize the random seed to a constant within the
generator, otherwise all of the copies will have the same sample order, and
your mini-batches will have K copies of each sample (if you have K workers).
On Fri, Jun 9, 2017 at 12:22 PM, GPhilo<EMAIL_ADDRESS>wrote:

That is not "cloning" the generator, you're just making a second reference
to it. When you move an object to a new process, however, you must create a
real copy of it, not just a reference. The object is either copied when the
process forks (on linux) or pickled, sent to the new process and unpickled
(on windows).
The problem is that generators are not picklable, so they can't be sent to
the second process.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/fchollet/keras/issues/3962#issuecomment-307340730,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFdLCNIz6vaJ1fQA_bKv0naJrZGPFvW2ks5sCQ7vgaJpZM4KN1ck
.

@jonilaserson Are you working on windows or linux? Also, this works for your case because the order in which the generator produces the data is not important. If you however use something like the generator created with ImageDataGenerator.flow_from_directory() the order in which batches are generated is important to link each result to the filename it comes from (useful, for example, if you're trying to predict the class of unlabelled data)

I think flow_from_directory is not one of Keras more flexible constructs,
and I recommend not to use it.
On Jun 9, 2017 1:04 PM, "GPhilo"<EMAIL_ADDRESS>wrote:
@jonilaserson https://github.com/jonilaserson Are you working on windows
or linux? Also, this works for your case because the order in which the
generator produces the data is not important. If you however use something
like the generator created with ImageDataGenerator.flow_from_directory()
the order in which batches are generated is important to link each result
to the filename it comes from (useful, for example, if you're trying to
predict the class of unlabelled data)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/fchollet/keras/issues/3962#issuecomment-307349814, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AFdLCLL0aUHExiPeRGzB4sD1NI0AYa0Wks5sCRiNgaJpZM4KN1ck
.

no solution yet


Issue of some operations with columns in fpn_roi_target.py

There is a big issue with computing ctr_x and ctr_y in line126 and line127.
https://github.com/AibeeDetect/BFJDet/blob/0194d5d53df8e61e344631ea87418bd5c10554d3/lib/det_oprs/fpn_roi_target.py#L126-L127
But it is clear that in the line 87, that all_rois is concatenated by rpn_rois and gt_rois which are matrices added with batch_id at their first columns.
https://github.com/AibeeDetect/BFJDet/blob/0194d5d53df8e61e344631ea87418bd5c10554d3/lib/det_oprs/fpn_roi_target.py#L87
So I think it should be skipping the first column of all_rois:
ctr_x = all_rois[gt_assignment, 1] + 0.5 * (all_rois[gt_assignment, 3] - all_rois[gt_assignment, 1] + 1)
ctr_y = all_rois[gt_assignment, 2] + 0.5 * (all_rois[gt_assignment, 4] - all_rois[gt_assignment, 2] + 1)

Great thanks for picking out this bug! We are sorry for the negligence in our re-implementation. The issue has been fixed in this commit. Fortunately, these “centers" are used to compute “distances” between boxes in the embedding loss. Although the absolute coordinates of these centers are totally wrong, distances between them follow similar trends with the right computation. So we find out that fixing this bug will keep almost the same final results.


Remove the tailing C2R for GpuDataWritingCommandExec.

Spark will append a ColumnarToRow (C2R) to a GpuDataWritingCommandExec, but this C2R is useless because DataWritingCommandExec returns empty data.
Besides, Spark will trigger a new job for the operators after a DataWritingCommandExec, and makes the DataWritingCommandExec be the data source node for this new job. Since no data is generated, this new job is entirely a noop.
This PR is to remove the tailing C2R to eliminate the useless job. And then GpuDataWritingCommandExec becomes the root node, and should support row-based executions to interact with Spark.

I verified it locally by checking the Spark UI. And it works well.

build

Close due to not a good solution.


ARROW-12950: [C++] Add count_substring kernel

Depends on ARROW-12969. ignore_case is not included here; I'll include it with the regex variant in ARROW-12952.

Could you rebase now that the parent issue has been fixed?

Travis-CI: https://travis-ci.com/github/pitrou/arrow/builds/228231543


Trouble setting up development environment

I'm working on a PR for #908 and I'm having trouble getting my environment set up. Here's what I've tried:

Forked and cloned redux-form and checked out ebaeca3 which is v6.0.0-alpha.10.
In the redux-form directory, run npm link.
In my project ruin npm link redux-form.

When I run my app and navigate to a form I get the following error:
Uncaught Invariant Violation: removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).

I also tried running using one of the examples with the same steps (using my local development version of redux-form) and I'm getting the same error. What am I doing wrong?

That is the proper theory, as I understand it, but npm link has never worked well for me. I normally do:
cd whatever/redux-form
npm run build
cp -r dist/* ../my-project/node_modules/redux-form/dist

and then restart my-project, because the hot reloading does not always work.

This is why, when I'm trying to implement a new feature or fix a bug in redux-form, I generally write a test to make sure it works. Not only is that a better way to code, but it lets me avoid all the project context switching crap of copying the built lib dir.

Fair enough. Thanks for the help on this.


Fix: Typings devDependencies

Typings dependencies should all be devDependencies.

Changes Unknown when pulling b162be6ee94f17dd72c89044c4676ae73a9998e7 on fix/typings into ** on master**.


Autocomplete: Add suggestions for ingestion-time partitions

Adds snippets for ingestion-time partitioned table:
https://user-images.githubusercontent.com/2376619/153027459-348e8571-922f-448d-9cd9-3eea703ba8e1.mov

Not sure if it is related to this pr but I tried to change the table and faced this issue.
https://user-images.githubusercontent.com/13729989/153177700-f9847fe0-53bb-41e2-a7f6-aeb49c4c4a58.mp4

Not sure if it is related to this pr but I tried to change the table and faced this issue.

Not related to this work. It deserves a bug report.


fix for HALFs deserialization from HALFs

fix for HALFs deserialization from HALFs

Refer to this link for build results (access rights to CI server needed):
/job/nd4j_PR/20/


Add unavailable role

For not-quite vacations

Any plan to make this configurable from the backend?

Well, if you delete unavailable from the role table, things should work just like today. For adding other roles, we'd have to refactor the css, otherwise the colors wouldn't display properly.


[WIP] Release version 1.0.0

Fixes #21, #5, #28, #20, #17, #29, #27, #18, #19

[x] #21
[x] #29
[ ] #5
[x] #28
[x] #20
[x] #17
[x] #27
[x] #18
[x] #19

Just #5 left. Oh god, not this again.


CIV-10564 transfer online case - screen

Jira link
Jira link CYA screen
Not suitable for SDO for transferring case online

Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[ ] No

The changes of this PR was merged with API test using this PR https://github.com/hmcts/civil-ccd-definition/pull/3339


Automated cherry pick of #2984: lbbackends: 改进错误信息传递

Cherry pick of #2984 on release/2.12.
#2984: lbbackends: 改进错误信息传递

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.12@1634fcc). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.12   #2985   +/-   ##
==============================================
  Coverage                ?   7.06%
==============================================
  Files                   ?     477
  Lines                   ?   76402
  Branches                ?       0
==============================================
  Hits                    ?    5396
  Misses                  ?   70554
  Partials                ?     452

Flag
Coverage Δ

#aFlag
7.06% <0%> (?)

Impacted Files
Coverage Δ

pkg/compute/models/guests.go
0.67% <0%> (ø)

pkg/compute/models/loadbalancerbackends.go
2.81% <0%> (ø)

Continue to review full report at Codecov.

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

/lgtm

/approve


The MD5SUM seems to be incorrect for ballerina 0.93.zip

Downloaded : ballerina-0.93.zip: 17 52 6A B8 B7 26 F8 22  00 06 8F C5 36 E6 45 FD
Actual : 24418b19040a4bc746a871afc02fc4bc  ballerina-tools-0.93.zip

I have checked the runtime it seems.


Service will not start after upgrading OTLP Exporter

After updating the OTLP exporter gem to 0.24.2, the emailservice in OpenTelemetry Demo no longer starts. This is on a M1 Mac.
Operating system details: ruby:3.1.4-alpine image
RUBY_ENGINE: "ruby"
RUBY_VERSION: "3.1.4"
Share a simplified reproduction if possible
See this PR (https://github.com/open-telemetry/opentelemetry-demo/pull/989)

Thanks Ariel - Here's a full log of docker compose build and docker compose up. https://gist.github.com/austinlparker/bb705d597f421a09bfdb3fecb10d37cb


Update deps

Developer

[x] All new ENV is documented in README
[x] All new ENV has been added to Heroku Pipeline, Staging and Prod
[ ] ANDI or Wave has been run in accordance to
our guide and
all issues introduced by these changes have been resolved or opened as new
issues (link to those issues in the Pull Request details above)
[x] Stakeholder approval has been confirmed (or is not needed)
[x] The changes have been verified

Requires database migrations?
NO
Includes new or updated dependencies?
YES

Pull Request Test Coverage Report for Build ebf04ffc26c8680ac4c309cc660ecafc03f6bc44-PR-56
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.363%

Totals

Change from base Build 0d17ced9cdc643fa054f7268f046294e34b62cc8:
0.0%

Covered Lines:
312

Relevant Lines:
314

💛  - Coveralls


Fix security config race condition

Closes
Fixes the issue where the security config is not properly loading from environment variables.
Code Changes

[x] Pre-load the config in the __init__.py
[x] Load the security setting before loading the full model

Steps to Confirm

[ ] Build the container nox -s "build(dev)"
[ ] Run the container with docker run providing the required environment variables.

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation Updated:

[ ] documentation complete, or draft/outline provided (tag docs-team to complete/review on this branch)
[ ] documentation issue created (tag docs-team to complete issue separately)

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[ ] Update CHANGELOG.md

Description Of Changes
Write some things here about the changes and any potential caveats

@ThomasLaPiana these tests are passing when I run them locally. Any chance the failures could be related to the recent CI updates?

@sanders41 no, the latest main merge shows only 4 tests failing, all known-bad (Shopify errors + the Admin UI Cypress tests)
These are probably from this PR

this seems like a pretty sprawling change, simple but touches a ton of code. I'm sure you've already thought about it, but maybe there's a way to add one or two checks somewhere instead of in every function that might need it? This will get tricky to maintain/revert/document

I tried several other ways to do the checks, but mypy was failing any other way. I don’t like the way I did this either, but I couldn’t come up with another way.
Troubleshooting the failures is also going to be difficult since they pass locally and the error is with the database config which didn’t change. The only difference I can think of right now is dev vs production builds, but don’t see why that would matter.

I'm still struggling to reproduce this error locally. I tried building and testing with the production image and that didn't do it either.

Possibly related https://github.com/nazrulworld/fhir.resources/issues/41. If so it could be a caching issue. It's the same scenario, but in the case of this issue it was with lambda and not github actions.

Hey @sanders41, I think you can reproduce this pretty easily by doing the following:
docker run ethyca/fides:local

...and then start layering in minimal ENV variables, like:
docker run -e FIDES__USER__ANALYTICS_OPT_OUT=True -e FIDES__SECURITY__APP_ENCRYPTION_KEY=keygoeshere ethyca/fides:local

This is what I did and it was running without error locally. I got it working both locally and in ci now, but the docs build is failing still. running a test now where I hope I have that fixed also.

@ThomasLaPiana I finally found a way to get everything passing in CI and running locally. It should be ready for review now.

@sanders41 can you add some more details to the PR description here? Just so I/anyone else can look at this PR and understand more clearly how the problem was solved

Still getting a failure when I run it locally 😞
Command:
docker run -e FIDES__USER__ANALYTICS_OPT_OUT=True -e FIDES__SECURITY__APP_ENCRYPTION_KEY=kfkdkslaksldkfjdkslaksldkfjskald -e FIDES__SECURITY__OAUTH_ROOT_CLIENT_SECRET=rootclient -e FIDES__SECURITY__OAUTH_ROOT_CLIENT_ID=someclient ethyca/fides:local
Result:
pydantic.error_wrappers.ValidationError: 1 validation error for FidesConfig
security
  field required (type=value_error.missing)

we also need to add some sort of test for this, as this was basically verified 100% through manual testing

Weirdly enough I've also confirmed that this specifically breaks on webserver, but running fides view config works just fine and shows the security config as expected.... 🙃

This is the kind of thing that made this so difficult to solve! Things that seemingly should act the same didn't. I would think I had everything going and find another way to break it...and thankfully you found even more in your review.

im testing this in the plus PR and still seeing the security errors....still digging

If there is a config file, it will fail to init from the environment variables for the security settings

fixed the docs checks, next step is to fix the config tests (they need the required env vars now!)

@NevilleS @sanders41 I want to call out that now, if a user does a pip install ethyca-fides, they will not be able to do anything! until they've set these values, and the failure will happen before we have a chance to tell them

Would deferring the loading of the config help with this? Adding the load to the __init__.py was one of the first things done in trouble shooting and it did help, but there have been a lot of other changes since then so we might be able to get away with removing it.

@sanders41 I think we can cross check this PR and then merge it, and do that UX improvements in another PR as this one is getting big

I think everything is working on my end. It was able to load the config but failed when trying to connect to the db with the provided snippet
docker run -e FIDES__USER__ANALYTICS_OPT_OUT=True -e FIDES__SECURITY__APP_ENCRYPTION_KEY=kfkdkslaksldkfjdkslaksldkfjskald -e FIDES__SECURITY__OAUTH_ROOT_CLIENT_SECRET=rootclient -e FIDES__SECURITY__OAUTH_ROOT_CLIENT_ID=someclient ethyca/fides:local

I think that is expected because no db config is provided so it used default-db

I got this branch working with the plus PR, so I'm going to merge this. Will immediately open a follow-up ticket around the user experience


Refacto: move rules context into a structured object

This PR is a following up of #481.

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

Project coverage is 70.47%. Comparing base (1b76259) to head (241d859).

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #491      +/-   ##
==========================================
+ Coverage   70.19%   70.47%   +0.27%
==========================================
  Files          48       48
  Lines        3013     3028      +15
  Branches      648      653       +5
==========================================
+ Hits         2115     2134      +19
+ Misses        710      704       -6
- Partials      188      190       +2

Flag
Coverage Δ

unittests
69.84% <100.00%> (+0.28%)
:arrow_up:

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

Files
Coverage Δ

qgis_deployment_toolbelt/jobs/generic_job.py
89.15% <100.00%> (ø)

qgis_deployment_toolbelt/jobs/job_splash_screen.py
67.85% <ø> (ø)

qgis_deployment_toolbelt/profiles/rules_context.py
100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes


fix: don't run profiler if incompatible version of node is used

This PR adds engines to the package.json and prevents the profiler from starting when a version of node not matching the version specified in engines is used.

@nolanmar511 Looks like CI is failing.

I wonder why the code coverage has decreased.

Code coverage decreased because I added lines of code to start(), which is not tested because that function would not exit under testing conditions.


Move assemblyinfo files to fix the build

Overview
A combination of re-adding AssemblyInfo.cs files in #7986 and moving the assemblies they refer to in #8004 led to left-behind files and a broken build.

/azp run


Increase compatibility with Oracle

Oracle db returns columns with integers as DbType.NUMERIC. Added this. Now scrutineer can also work with Oracle DB.
Also upgraded elasticsearch client to 1.5.0

thanks!


Not an issue, but a recommendation.

You should use #app-mount rather than .theme-dark when applying styles to discord, as otherwise you have to use !important on a load of elements, and using #app-mount also makes it compatible to work with both dark AND light. Also any client mods are insecure, some more than others, but all the same.

Also any client mods are insecure, some more than others, but all the same.
While client mods such as BetterDiscord have auto-update functionality and could so be seen as insecure, I use (and recommend) BeautifulDiscord, which is opensource and functions completely offline. It doesn't get much more secure than that.

#app-mount and .theme-dark are applied to different elements. In most cases, you can't just swap them around and have everything work. Also, since I'm making nearly everything transparent there is no point in having the white theme selected, so you could just switch to that for the time being.
I'll see if I can rely less on .theme-dark and more on #app-mount or equivalent selectors, but I believe it will rather require more !important attributes, since Discord's CSS rules use it and style tags overrule external stylesheets.


Connection keeps getting reset with UWSGI-NGINX

Hello,
I've been struggling with this issue for weeks. It seems the driver keeps resetting connections to my web app. I keep getting this error seemingly randomly when I try to make requests using the driver from a Flask app using UWSGI and NGINX:
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]: Exception ignored in: 'neo4j.bolt._io.ChunkedInputBuffer.receive'
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]: Traceback (most recent call last):
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:   File "/usr/lib/python3.5/ssl.py", line 929, in recv_into
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:     return self.read(nbytes, buffer)
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:   File "/usr/lib/python3.5/ssl.py", line 791, in read
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:     return self._sslobj.read(len, buffer)
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:   File "/usr/lib/python3.5/ssl.py", line 575, in read
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]:     v = self._sslobj.read(len, buffer)
Nov 19 13:08:44 ip-172-31-15-241 uwsgi[22867]: ConnectionResetError: [Errno 104] Connection reset by peer

This causes the whole application to hang but will clear itself up after some time. I can post additional logs from NGINX if it will be helpful in solving the issue. Please let me know if you have any ideas!

Hi @rdhara,
Please check when the error happens,

if there is any error in the server log?
if there is any error or warning printed out in nginx logs such as not enough thread or memory?
if your app is under a really heavy load?

If you could reproduce this error with some simple code, please do share with us.
Additional nugix logs or tcp dumps around the time when the error happens are very welcome.
Zhen

Hello,
I am able to get around the problem by simply establishing a new connection every request (which I know is non-ideal, but it works as a temporary patch). I'm assuming that after the timeout specified when making a connection with the driver that the connection is discarded? Or will this eventually lead to an unsustainable number of open threads?

Hi @rdhara,
It sounds like your server is killing connection after some timeout. Then here is what you are looking for https://neo4j.com/docs/developer-manual/3.3/drivers/client-applications/#driver-config-connection-pool-management

@rdhara Do you still have the problem? Is it related to your connection timeout settings on the server and client side?

Hi @rdhara,
We have not hear more from you regarding this issue, I am assuming you are okay with the suggested configuration options for your deployment.
Please be free to reopen this issue if you have more problems with this issue.
Cheers,
Zhen

I'm running into this problem as well.
Traceback (most recent call last):
File "/usr/local/lib/python3.6/ssl.py", line 1002, in recv_into
return self.read(nbytes, buffer)
File "/usr/local/lib/python3.6/ssl.py", line 865, in read
return self._sslobj.read(len, buffer)
File "/usr/local/lib/python3.6/ssl.py", line 625, in read
v = self._sslobj.read(len, buffer)
ConnectionResetError: [Errno 104] Connection reset by peer
[2017-12-19 07:15:40,172] ERROR in app: Exception on /api/v1/customer [GET]
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.6/site-packages/flask_classy.py", line 200, in proxy
response = view(**request.view_args)
File "/usr/local/lib/python3.6/site-packages/flask_apispec/annotations.py", line 117, in wrapped
return wrapper(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/flask_apispec/wrapper.py", line 23, in __call__
response = self.call_view(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/flask_apispec/wrapper.py", line 39, in call_view
return self.func(*args, **kwargs)
File "/code/app/api/util/paginate.py", line 27, in run
results = func(*args, **kwargs)
File "/code/app/api/util/sort.py", line 36, in run
return results.all()
File "/usr/local/lib/python3.6/site-packages/neomodel/match.py", line 431, in all
return self.query_cls(self).build_ast()._execute()
File "/usr/local/lib/python3.6/site-packages/neomodel/match.py", line 411, in _execute
results, _ = db.cypher_query(query, self._query_params)
File "/usr/local/lib/python3.6/site-packages/neomodel/util.py", line 26, in wrapper
return func(self, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/neomodel/util.py", line 98, in cypher_query
response = session.run(query, params)
File "/usr/local/lib/python3.6/site-packages/neo4j/v1/api.py", line 340, in run
self._connection.fetch()
File "/usr/local/lib/python3.6/site-packages/neo4j/bolt/connection.py", line 283, in fetch
return self._fetch()
File "/usr/local/lib/python3.6/site-packages/neo4j/bolt/connection.py", line 300, in _fetch
self._receive()
File "/usr/local/lib/python3.6/site-packages/neo4j/bolt/connection.py", line 338, in _receive
raise self.Error("Failed to read from defunct connection {!r}".format(self.server.address))
neo4j.exceptions.ServiceUnavailable: Failed to read from defunct connection Address(host=xxxxxx, port=xxxx)```

I don't have this problem developing locally with neo4j container but I run into this very frequently with GrapheneDB.

Hi @iwarin,
It sound very likely that GrapheneDB or the container holding it has some connection life time setting or connection idle timeout settings to kill connections after 5mins. I would suggest you to have a look in your system for such configuration and enlarge them accordingly.
By default this driver will close connections after created 1h.
For normal use, I suggest config your GrapheneDB or service container to have max_connection_lifetime = 2h, max_connection_idle_timeout = 2h.
You could verify if it is somewhere in your system enforce to kill connections between server and driver by creating a driver with max_connection_lifetime = 5.
self._driver = GraphDatabase.driver(uri, auth=(user, password), max_connection_lifetime=5)

Read more in this doc link.

Hi @zhenlineo sorry for the delayed reply. The only way I could resolve the problem was to reconnect per request (which is fine, since our app is pretty lightweight and is for demonstration purposes only). In response to your earlier questions

There is no error in the server log (except that the pipe was broken)
Nginx logs are blank
No, the load is negligible.

There seem to be certain incompatible settings (such as lazy) on UWSGI and connection pooling. The pooling technique seems to work fine on other DB connections (such as SQLAlchemy) although switching to pooling as you suggested made the error rate go down considerably (still happens every now and then).

@zhenlineo Thanks your answer a lot! I loss hours in this same issue. After adding max_connection_lifetime=5 as you suggest, it works! What I am confused is that this problem came out suddenly cause that my api runs in a goog state without that parameter before

hi @aforwardz, it is mostly likely that your deploy environment has some connection timeout enforced recently. The driver or the neo4j server does not kill connections.


Crash when discovering more than one service

Hi,
There seems to be an crash which may occur whenever DiscoveryProxy is handling more than one query. This is the problem code:
https://github.com/openthread/ot-br-posix/blob/b4d6f3b43d58902a27976f3700795df61e9e7713/src/sdp_proxy/discovery_proxy.cpp#L186-L227
The issue is that otDnssdQueryHandleDiscoveredServiceInstance can free the object invoker for this function (otbr::Mdns::PublisherAvahi::ServiceSubscription, for example). When this happens, aType is freed, so the program crashes at https://github.com/openthread/ot-br-posix/blob/b4d6f3b43d58902a27976f3700795df61e9e7713/src/sdp_proxy/discovery_proxy.cpp#L215
It just needs to be the case that the matching query is not the last in the current list of queries.
Reproduction
Perform queries for two different services which are active on the network in rapid succession. You should reproduce this about half the time.

Thanks @gharveymn for reporting this.
Not sure how this is happening:

It is true that aType and aInstanceInfo are const & in the DiscoveryProxy::OnServiceDiscovered() method itself
But this callback should be called from Publisher::OnServiceResolved().
And Publisher::OnServiceResolved() should gets its own copy of aType and aInstanceInfo as its signature is:
void OnServiceResolved(std::string aType, DiscoveredInstanceInfo aInstanceInfo);
So even if the original mType and mInstanceInfo inMdns::PublisherAvahi::ServiceSubscription is freed, the copies  passed to Publisher::OnServiceResolved() should stay valid.

Ah, thanks for the response @abtink. I'm using an older version, and it looks like that signature was changed by https://github.com/openthread/ot-br-posix/pull/1910.
So this has already been fixed; apologies.


placeholders text within sentence

Would love to have placeholders within text areas.
This almost does the job:
{name,price,date,time|& · } adding in a '·'
so it could be:
{name,price,|& hello there } which gives me name hello there price hello there.
However, what if we could do:
For only {price} you could be surfing too. Please signup by {date} to register.
I'm working around with stock data in cells at the minute (such as 'you could be surfing too. Please signup by ' would be a cell). Any thoughts?
Amazing work guys.

For only {price} you could be surfing too. Please signup by {date} to register.
This works for me


How to compile?

It would be nice if you can show how to compile from source.
make release complains about the present directory not being  .git repository.

No problem.
make release attempts to build for all architectures, sign the binaries, and push a release to Github etc., so that's not what you want.
If you want to build from source for the architecture of the machine doing the building, the steps are:

Install Go >= v1.14
From the root of the source code, use Go to build the program go build -o gemini ./cmd/main.go

The -o gemini flag sets the output filename to gemini.
Go will download any 3rd party dependencies automatically, and produce a binary.
Once you've got the binary, you don't need to have Go installed on the machine.

I've just added a build step to the Makefile, so you should be able to do make build and get a binary out, if you've got Go >= 1.14 already installed.
If you want to build from one machine (e.g. an x64 Windows machine) to target another (e.g. an ARM Raspberry Pi), you can set Go's GOARCH and GOOS environment variables before compilation, and it will compile for that target.
Is that what you needed?

Thank you very much!
Yes, that's it.  I'm sure it'll be of help for other people as well.


Bump identity-apps version to 2.10.6

Purpose

$subject

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/7123535244


Building vcpkg on RPi fails with out of memory. Add number of cores argument option to bootstrap script

Hey guys,
one target of our multi plattform project is a RPi 3B. Thanks to all that working with vcpkg on RPi is already possible and mostly going well.
But we are facing one problem with building vcpkg from source on RPi using bootstrap.sh. As the ninja build spawns a lot of build processes in parallel by default, the device is running out of memory very quickly. This affects all multicore system with a limited ram size (RPi 3B = 1GB).
Would it be possible to add a cmd line option to the boostrap script to adjust the number of cores used while building?
We achieved this using the follwowing additional args on cmake configuration in boostrap.sh script:
-DCMAKE_JOB_POOL_COMPILE:STRING=compile DCMAKE_JOB_POOL_LINK:STRING=link DCMAKE_JOB_POOLS:STRING=compile=1;link=1'
It would be really nice if this could get it into productive code ;-)
Thank you.
Best Regards,
Michael

I'm currently fighting with this as well, although I'm trying to work around it by temporarily adding a USB flash drive as swap space, although it is terribly slow.


"fully-featured" concurrent maps?

Inlined from this Reddit reply on the introductory /r/rust thread:

I couldn't find any fully-featured concurrent maps. They all seem to have some missing parts, like lookup given a borrowed key.

I'm planning on closing this issue by Friday if no further discussion happens by then. Thanks for the contribution, everyone!

Looks good to me!

No further discussion, so closing this -- thanks, @stjepang! :)


Move link formatting to css

https://github.com/RhoInc/web-codebook/pull/145/files/0d768b273c1f558639068850d1f2d73370f50db0#r129315665

Test Notes: QC is sufficient. No testing needed.

QC passed - everything looks normal


Integration does not work with HA 2023.10

Logger: homeassistant.setup
Source: setup.py:185
First occurred: 21:54:28 (1 occurrences)
Last logged: 21:54:28

Setup failed for custom integration qr_generator: Requirements for qr_generator not found: ['pillow==10.0.0'].

Sorry, closing because issue already reported


New Search UI - allow dead attachment links in search

Checklist

[x] the contributor license agreement is signed
[x] commit message follows commit guidelines
[x] screenshots are included showing significant UI changes

Description of change
#3044
If in the new search UI a search result contains a dead attachment link (e.g a resource selector attachment pointing at an attachment on a no longer existing item), openEQUELLA throws a 500 error and prevents search.
This is because in the getMimeTypeForAttachment function we do not handle null attachments, and so it causes a NullPointerException when this function is called. A simple null check surrounding the body of this function fixed that.
Once that error stopped happening, I would click on the attachment link from within a search, and it would open in a new tab an old UI page for a NullPointerException. This was from incrementing the view count for a particular attachment, where the attachment.getItem was null. Another null check there for attachment.getItem solved that problem. Now when cllicking on a dead attachment link, a new UI 404 page opens in a new tab.
It would be nice to include an error dialog like the old UI has, rather than open a 404 in a new tab, however this is not included as part of this PR.

Before the fix:
https://user-images.githubusercontent.com/24543345/119758641-3540dc80-beea-11eb-9109-e57dd0ba4677.mp4
After the fix:
https://user-images.githubusercontent.com/24543345/119758720-56a1c880-beea-11eb-90f1-bda6dda84a35.mp4

I'm not sure this addresses the fundamental issue. Why is the server even sending out links to itself that will result in a 404 (or previously a 500).
It's possibly fair to say the contract for these methods is that they're provided with a valid Attachment, and that under normal usage this should not occur. So perhaps search2 (or earlier - so as to stop it in the old UI too) should filter out broken attachments or (in the case of search2) return them without links and possibly a flag saying they're broken - so the caller can handle as appropriate.

@edalex-ian @PenghaiZhang  this is now ready for review - I'm just working on adding tests.

@edalex-ian @PenghaiZhang this is now ready for review - I'm just working on adding tests.

It's always when I say that that something else creeps through that needs changing :facepalm: - just needed to make sure it handled recursive attachments. That's working now.

Flaked on HierarchyTopicTest. Rerunning.

Closing, as commits made during last night's GitHub outage aren't showing in the PR. Will reopen as a new one.


Publish container image

Build plugin image
Add Dockerfile and related entrypoint.sh to build the binary and copy
it to the host.

Build and publish images in CI
Add GitHub configuration to publish the docker image with the plugin binary

Deployment file
With this configuration, bond CNI plugin can be deployed via:

kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/bond-cni/master/manifests/bond.yml

Fixes #104

@mlguerrero12 @Eoghan1232 @SchSeba please take a look when you have time.


Error: EPERM: operation not permitted, rename '...' -> '...'

Last graceful-fs 4.1.11 causes Error: EPERM: operation not permitted, rename '...' -> '...' on Windows platform.
My investigation:
It happens with session-file-store, that has dependency fs-extra, that has dependency graceful-fs. Problem occurs when user make more parallel HTTP calls to server. With the previous version graceful-fs 4.1.10 it works fine.
All start works without errors when I rollback the code in graceful-fs 4.1.11 -> polyfills.js -> line 101 from:
setTimeout(function() {
  fs.stat(to, function (stater, st) {
    if (stater && stater.code === "ENOENT")
      fs$rename(from, to, CB);
    else
      cb(er)
    })
  }, backoff)

to previous
setTimeout(function() {
  fs$rename(from, to, CB);
}, backoff)

There is discussion about similar issue https://github.com/npm/npm/issues/12059#issuecomment-269826951 .
Based on it, may be antivirus McAfee can cause this issue.
I have McAfee too. But I have no permission to disable this antivirus on my corporate machine. :( So I'm not able to test it.

I do not have McAfee and still have this issue. Though we are running npm install in parallel against many different projects.

I am getting this same error on Windows Server 2008 R2 even without an Anti Virus installed.

@ma-zal for your information, I just started using connect-loki and it's working great. Almost a drop in replacement for session-file-store. It persists data to a single json file.

I recently ran into the rename EPERM-issues when installing packages of mine on a windows machine. I could reproduce it for all package versions which I deployed together with an npm-shrinkwrap.json. Versions without that file installed without the permission issues. Can anyone confirm this behavior?

@about-code Yes, I can confirm. I was encountering it while using express-session and session-file-store.
After doing a lot of research, I now believe that it's because the rename operation is requested while the file is still open and in use.
Pretty sure this is relevant

@ferm10n Thank you replying to my question. Neither the master branch of expess-session nor the one of session-file-store seem to contain an npm-shrinkwrap.json file, though. I guess you  confirm the issue in general but not the relation to having a npm-shrinkwrap.json, do you? Nevertheless, your link seems to point to the real cause. Having a package with a shrinkwrap.json and many third party dependencies may indeed just increased the likelihood to run into the issue in my case.

Actually yes, I should have added that having a npm-shrinkwrap removed the error for me.
However I'm hesitant to point that out because I feel that is only removing the error, not the problem. The link from my previous comment addresses a real issue. Previous versions just ignore it.
I attempted getting a real solution, but this issue is very difficult thing to work with, hard to debug, and challenging to recreate. The dependencies inbetween session-file-store and graceful-fs are rather messy and outdated. I've made a PR for one of them here! https://github.com/npm/slide-flow-control/pull/10 But I am pretty confident that the root issue lies in write-file-atomic, which I'll be opening a PR later today that removes it's dependency on the ugly slide-flow-control and substitutes it with promises. Later I'll try to make another PR that should fix this issue

@about-code I believe I have confirmed the root of the problem. You can cause a EPERM issue when multiple write operations are issued concurrently on a Windows system. The reason why this isn't an issue on Unix like systems is due to the nature of the POSIX rename, which simply replaces the file. On windows I guess it's a little more complicated.
I believe this is not an issue with graceful-fs, but write-file-atomic, which should probably serialize write operations to the same file. I'll make a PR for that as well. Do you think a separate issue should be opened on write-file-atomic? I'd appreciate your input! Write-file-atomic has a LOT of dependents and I'd imagine this issue could negatively affect all Windows users of these packages.

@ferm10n I am not involved in graceful-fs or node/npm development and can't speak on behalf of its developers but if you think there's an issue in write-file-atomic I think it's sane to open up an issue there and link it to this one. It should be okay to provide a PR to write-file-atomic and if you have doubts about it affecting many Windows users just state that clearly in your PR so the maintainer has a chance to get aware of this.
From reading issue npm/npm/issues/12059 in the official npm repo write-file-atomic seems to be somehow involved, so I think you could be on the right track.

This also happens in my use case, where I am using express and socket.io, where the session is shared to the sockets.

@bchr02, I always wondered why my app was slow to render pages then noticed lots of sessions files being created and deleted for every request. Looked at the logs and surely enough it's this issue.
Just switched to Loki and everything is way faster.

@HaykoKoryun I'm glad switching worked for you too.

I found it really helpful to diagnose the cause by using Process Monitor from microsoft to inspect the write operations in flight.
I discovered that on top of session-file-store attempting to write several times to the same file simultaneously (uhg) node.exe was competing with the windows search indexer, SearchProtocolHost.exe...
But even after serializing the writes and telling the indexer to bugger off, I still occasionally get the ACCESS DENIED and EPERM result.
node.exe is the only process accessing the session files... Does anyone have any ideas how to determine the reason access is being denied?

Please don't blame anti-viruses for this. This is a recurrent and elusive issue with node on Windows, and it has to do with race-conditions due to node not handling Windows file operations properly. Active anti-virus scanners or other tools that might lock files or add a delay to IO operations may cause this otherwise hidden race-condition to trigger.

@bchr02  that works for me too, thanks a lot!

@mekwall

node not handling Windows file operations properly

I guess you could say that that, is the actual elephant in the room which no-one has been able or willing to properly address. :(

Please don't blame anti-viruses or other third-party tools for this. This is a recurrent and elusive issue with node on Windows, and it has to do with race-conditions due to node not handling Windows file operations properly (hence the need for this package to begin with). Active anti-virus scanners or other tools that might lock files or add a delay to IO operations may cause this otherwise hidden race-condition to trigger.

Isn't nodejs handling it properly? Node.js is just returning an equivalent of the error code that the Windows/Linux API is giving it.  The problem here as I see it is that the Windows rename function works differently than Linux/MacOS. On the latter platforms the rename operation is almost guaranteed to be a simple atomic operation that is very likely to succeed, but on Windows this may or not fail depending on anti-virus, any open file handles, the moon phase or some other factor. Node.js just presents a simple wrapper around the native API, so I'm not sure how much more Node.js should do, because there is not one single answer to what is right to do. If you REALLY need to have the file renamed (and can wait) then retry for a few seconds (or use graceful-fs). If it's more important that you have responsiveness and flexibility, then use the fs function directly.
What needs to be done, as I see it, is to improve the documentation on the Node fs rename function (and graceful-fs), to make developers aware of what kind of cases they need to handle when using the function.

so I'm not sure how much more Node.js should do,

Node.js could offer updated I/O abstractions that allow waiting until a file becomes available for access. If these involve OS-dependent mechanisms, then it's better for that to be part of the core runtime than for it to have to come from packages as optional dependencies; applicable to filtered platforms; with bindings to native code involved.
More importantly; NPM should sit down and have a long and hard think on how their IO is handled. In particular in the context of false assumptions like rename being atomic.

It would be nice with a core abstraction, but I think the problem is that Windows does not seem to guarantee atomic rename/replace, so advertising a rename API with the guarantee of POSIX atomicity is wrong. Better to be honest in the documentation that there are situations that need to be handled for the user of the Node.js API.

I think the problem is that Windows does not seem to guarantee atomic rename/replace,

It apparantly is supported on Windows 10:
https://stackoverflow.com/a/51737582

And before that with Windows 7 you had the ability to use ReplaceFile (which does atomically move atleast the file data itself, but not necessarily all the metadata like time modified) and before that with Vista there were NTFS transactions.

Yea I saw that. I agree that it would be nice with a unified core API for rename. So basically someone needs to write a windows abstraction that uses a combination of ReplaceFile and MoveFileEx depending on which Windows version, which filesystem (FAT does not support atomic renames afaik) is running and correctly handles the different error cases in those different methods.

The problem isn't the atomicity guarantee. The problem is that POSIX rename guarantees success even if something is still using the file, whereas Windows does not.

Right, the problem in this specific EPERM issue is not the atomicity, but the atomicity is a different yet important problem because many developers and packages including the extremely popular write-file-atomic assumes that the fs.rename function is atomic.

The problem is that fs.rename wrongly calls MoveFileEx when it ought to be calling NtSetInformationFile with the argument FILE_RENAME_INFORMATION with the flags FILE_RENAME_REPLACE_IF_EXISTS | FILE_RENAME_POSIX_SEMANTICS.
I suspect that the failure to request FILE_RENAME_POSIX_SEMANTICS is the root of the problem. fs.rename assumes that rename() is atomic per the POSIX (Linux) standard but is failing to ask Windows to provide said semantics.

Does anyone have a solution for this that works? It is filling my logs and nothing seems to work,

@JeremyTellier
Does anyone have a solution for this that works?

Yes.
Either get Node.js to patch fs.rename to have the proper POSIX semantics on Windows, as per what AlanImaginx posted.
Or get node-graceful-fs to use a completely custom rename operation based on its own native module, that does so.
Both are impractical. But asking the OS for the proper semantics is the only way to truly solve this.
Everything else is a half-bake of a hacked workaround and won't get rid of errors altogether. It'll just make them less likely to crop up, or will mitigate them by offering a transparent retry-until-success.


oxigraph 0.3.9

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin please rerender

Ugh, so this is why it was 10.14:
  cargo:warning=In file included from rocksdb/cache/fast_lru_cache.cc:10:
  cargo:warning=rocksdb/cache/fast_lru_cache.h:158:3: error: aligned deallocation function of type 'void (void *, std::align_val_t) noexcept' is only available on macOS 10.14 or newer
  cargo:warning=  ~LRUCacheShard() override = default;
  cargo:warning=  ^
  cargo:warning=rocksdb/cache/fast_lru_cache.cc:457:18: note: in defaulted destructor for 'rocksdb::fast_lru_cache::LRUCacheShard' first required here
  cargo:warning=      shards_[i].~LRUCacheShard();
  cargo:warning=                 ^
  cargo:warning=rocksdb/cache/fast_lru_cache.h:158:3: note: if you supply your own aligned allocation functions, use -faligned-allocation to silence this diagnostic
  cargo:warning=  ~LRUCacheShard() override = default;
  cargo:warning=  ^
  cargo:warning=1 error generated.
  exit status: 1


EntityDeploy with linked files causes error on dotnet clean stating that EntityClean task cannot be loaded

If I try to add an edmx file like this to a project:
  <ItemGroup>
    <EntityDeploy Include="..\EdmxDesignHost\Entities.edmx" />
  </ItemGroup>

And then I execute dotnet clean on the project, I get the following error from the command line:

C:\Users\divega.nuget\packages\entityframework\6.3.0-preview9-19420-01\build\EntityFramework.targets(115,5): error MSB4062: The "EntityClean" task could not be loaded from the assembly C:\Users\divega.nuget\packages\entityframework\6.3.0-preview9-19420-01\build\Microsoft.Data.Entity.Build.Tasks.dll. Assembly with same name is already loaded Confirm that the  declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [c:\Users\divega\source\repos\EF6DotNetCoreApp\EF6DotNetCoreApp.csproj]

Note that unless #1168 can be fixed, this is a negative scenario.
cc @bricelam, @ajcvickers

This may be a bug for microsoft/msbuild...


Validate order

Refactored place order validation
Added number validation for input
Added check for amount wrt balance before placing limit and market order
Fixes #10

I have added base fee validation before submitting order. Still testing on the local, if everything is working fine.

Ah .. ok, I will look into it .
On Wed, Aug 19, 2020, 04:42 Jonathan Gros-Dubois<EMAIL_ADDRESS>wrote:

@jondubois requested changes on this pull request.
In lisk-dex-electron/src/PlaceOrder.jsx
https://github.com/Leasehold/ldex-ui/pull/18#discussion_r472542303:

 if (Number.isNaN(this.state.amount) || this.state.amount === '') {

   errors.amount = 'The order amount must be a number.';
   success = false;

} else {

 const amount = parseFloat(this.state.amount);

 if (amount < minOrderAmount) {

   errors.amount = `The specified amount was less than the minimum order amount allowed by this DEX market which is ${

     minOrderAmount

   } ${sourceAsset.toUpperCase()}.`;

} else if (amount > actualAssetBalance) {

There is something wrong with this logic somewhere because the red error
message The specified amount was less than the minimum order amount
allowed by this DEX market which is 10 LSK. no longer comes up when
placing a limit order (it only shows up when placing a market order).
To reproduce, log into a wallet, then place a limit order, type 5 as the
amount and submit, the error message does not show up.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Leasehold/ldex-ui/pull/18#pullrequestreview-469889328,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7S6SP5Z7CKVUTFGISRCQ3SBMDGJANCNFSM4PH4RCFQ
.


[fix] #15331 Guard against no parent

See issue #15331
This patch silently ignores the after operation if the element does not have a parent node, following the implementation in jQuery.

Thx @adambuczynski! Could you add a test and make sure the commit message follows the guidelines.

@gkalpak sorry I don't have the time to do this now, I'm going on leave for 4 weeks 🌴 .
It's a trivial fix, maybe someone else can pick up the task to make a test for it, or just merge without test (as there was no test around this functionality to begin with).

Np, @adamreisnz. I'll take care of it. Have fun 🏂


I can't run VScode

VSCode Version:
1.40.0
OS Version:

Steps to Reproduce:

download current version by this link
extract zip file and run it

Does this issue occur when all extensions are disabled?: Yes

/duplicate of #82534


Expose PGPSignature.getDigestPrefix() to get fingerprint of signature

This PR adds PGPSignature.getDigestPrefix() which calls SignaturePacket.getFingerPrint() to expose the signatures digest  (the left 16 bits of the signed hash value) to the user.

Thanks for the patch, merged. Will appear in 169b05 (and later) on https://www.bouncycastle.org/betas


artifacts with jointbilateral

https://github.com/Artoriuz/glsl-joint-bilateral/commit/29c1932420542d25b712cb7f03fad68c3e783112

Can you provide me the original image so I can do some tests?

https://github.com/hooke007/MPV_lazy/blob/obs/Temp/IMG/chroma-420.jpg

Could you retest with https://github.com/Artoriuz/glsl-joint-bilateral/commit/a50418b0dc0e3aa3ece1d9d940dcbc2584a9753e?


Artist Download Error

Hi,
I'm trying to download an entire artist, not sure if it's officially supported yet, but I thought I would give it a try. It worked for a few until it got to one and threw an error. The command I'm using is ./tdl get https://listen.tidal.com/artist/19137.
Error output:
Access Token Valid
Getting Artist Albums   thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Error at line 1 column 12942', src/api/media.rs:69:53
stack backtrace:
   0:     0x55a6cd4195e1 - <unknown>
   1:     0x55a6cd1e374c - <unknown>
   2:     0x55a6cd3f5874 - <unknown>
   3:     0x55a6cd41a5b6 - <unknown>
   4:     0x55a6cd41b646 - <unknown>
   5:     0x55a6cd41b0e2 - <unknown>
   6:     0x55a6cd41b056 - <unknown>
   7:     0x55a6cd41b012 - <unknown>
   8:     0x55a6cd0d6be2 - <unknown>
   9:     0x55a6cd0d6e62 - <unknown>
  10:     0x55a6cd45f998 - <unknown>
  11:     0x55a6cd48a881 - <unknown>
  12:     0x55a6cd4a95f7 - <unknown>
  13:     0x55a6cd4abece - <unknown>
  14:     0x55a6cd498e45 - <unknown>
  15:     0x55a6cd49dffb - <unknown>
  16:     0x55a6cd41c0c5 - <unknown>
  17:     0x7fa5032fa609 - start_thread
  18:     0x7fa5030c8163 - clone
  19:                0x0 - <unknown>

Full log with RUST_LOG=trace enabled.
[2022-07-28T19:55:00Z DEBUG tdl::login] Attempting to validate access token
[2022-07-28T19:55:00Z DEBUG reqwest::connect] starting new connection: https://api.tidalhifi.com/
[2022-07-28T19:55:00Z TRACE mio::poll] registering event source with poller: token=Token(1), interests=READABLE | WRITABLE
[2022-07-28T19:55:00Z TRACE want] signal: Want
[2022-07-28T19:55:00Z TRACE want] signal found waiting giver, notifying
[2022-07-28T19:55:00Z TRACE want] poll_want: taker wants!
[2022-07-28T19:55:00Z TRACE want] signal: Want
[2022-07-28T19:55:00Z TRACE want] signal: Want
[2022-07-28T19:55:00Z DEBUG reqwest::async_impl::client] response '200 OK' for https://api.tidalhifi.com/v1/sessions
Access Token Valid
[2022-07-28T19:55:00Z TRACE want] signal: Want
Getting Artist Albums                                                                                [2022-07-28T19:55:00Z DEBUG reqwest::connect] starting new connection: https://api.tidal.com/
[2022-07-28T19:55:00Z DEBUG reqwest::connect] starting new connection: https://api.tidal.com/
[2022-07-28T19:55:00Z TRACE mio::poll] registering event source with poller: token=Token(2), interests=READABLE | WRITABLE
[2022-07-28T19:55:00Z TRACE mio::poll] registering event source with poller: token=Token(3), interests=READABLE | WRITABLE
[2022-07-28T19:55:00Z TRACE want] signal: Want
[2022-07-28T19:55:00Z TRACE want] signal found waiting giver, notifying
[2022-07-28T19:55:00Z TRACE want] poll_want: taker wants!
[2022-07-28T19:55:00Z TRACE want] signal: Want
[2022-07-28T19:55:00Z TRACE want] signal found waiting giver, notifying
[2022-07-28T19:55:00Z TRACE want] poll_want: taker wants!
[2022-07-28T19:55:01Z DEBUG reqwest::async_impl::client] response '200 OK' for https://api.tidal.com/v1/artists/19137/albums?limit=50&offset=0&countryCode=US
[2022-07-28T19:55:01Z TRACE want] signal: Want
[2022-07-28T19:55:01Z TRACE want] signal found waiting giver, notifying
[2022-07-28T19:55:01Z TRACE want] signal: Want
[2022-07-28T19:55:01Z TRACE want] poll_want: taker wants!
[2022-07-28T19:55:01Z DEBUG tdl::api] {"limit":50,"offset":0,"totalNumberOfItems":18,"items":[{"id":160076435,"title":"POST HUMAN: SURVIVAL HORROR","duration":1932,"streamReady":true,"streamStartDate":"2020-10-30T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":9,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2020-10-30","copyright":"(P) 2020 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/160076435","cover":"a34e046e-5ca9-418f-87d5-a536966ce596","vibrantColor":"#d999af","videoCover":null,"explicit":true,"upc":"886448602200","popularity":45,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":164297268,"title":"POST HUMAN: SURVIVAL HORROR","duration":1931,"streamReady":true,"streamStartDate":"2020-12-03T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":9,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2020-10-30","copyright":"(P) 2020 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/164297268","cover":"5f7cfe77-13ac-4d34-8cf7-b7a0778b30a0","vibrantColor":"#d999af","videoCover":null,"explicit":false,"upc":"886448910428","popularity":5,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":160515739,"title":"POST HUMAN: SURVIVAL HORROR","duration":1932,"streamReady":true,"streamStartDate":"2020-10-30T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":9,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2020-10-30","copyright":"(P) 2020 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/160515739","cover":"4d4fbcf1-af50-485f-8422-d43265c370ae","vibrantColor":"#d999af","videoCover":null,"explicit":true,"upc":"886448846390","popularity":18,"audioQuality":"LOW","audioModes":["SONY_360RA"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":165492381,"title":"Live at the Royal Albert Hall","duration":5012,"streamReady":true,"streamStartDate":"2020-12-18T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":16,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2020-10-28","copyright":"(P) 2020 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/165492381","cover":"46922d26-c7e9-442a-a84d-a3f95236e002","vibrantColor":"#9e4243","videoCover":null,"explicit":false,"upc":"886448959434","popularity":14,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":176307422,"title":"Live at the Royal Albert Hall","duration":4982,"streamReady":true,"streamStartDate":"2021-03-12T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":16,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2020-10-28","copyright":"(P) 2021 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/176307422","cover":"66cc908f-0df1-45bb-9ace-7402e0d938e4","vibrantColor":"#9e4243","videoCover":null,"explicit":false,"upc":"886448988700","popularity":3,"audioQuality":"LOW","audioModes":["SONY_360RA"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":126396297,"title":"Music to listen to~dance to~blaze to~pray to~feed to~sleep to~talk to~grind to~trip to~breathe to~help to~hurt to~scroll to~roll to~love to~hate to~learn Too~plot to~play to~be to~feel to~breed to~sweat to~dream to~hide to~live to~die to~GO TO","duration":4533,"streamReady":true,"streamStartDate":"2019-12-27T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":8,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2019-12-27","copyright":"(P) 2019 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/126396297","cover":"659f6902-864e-487d-a7c9-7c2488501454","vibrantColor":"#984a41","videoCover":null,"explicit":true,"upc":"886448213192","popularity":19,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":102519387,"title":"amo","duration":3119,"streamReady":true,"streamStartDate":"2019-01-25T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":13,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2019-01-25","copyright":"(P) 2019 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/102519387","cover":"743df668-55eb-445c-abf7-f24c67049f30","vibrantColor":"#c4af24","videoCover":null,"explicit":true,"upc":"886447279588","popularity":42,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":103198350,"title":"amo","duration":3119,"streamReady":true,"streamStartDate":"2020-09-16T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":13,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2019-01-25","copyright":"(P) 2019 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/103198350","cover":"86076c01-a7c3-43aa-8e70-57b52b7246f2","vibrantColor":"#c4af24","videoCover":null,"explicit":false,"upc":"886447526255","popularity":4,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":121133400,"title":"2004 - 2013","duration":3978,"streamReady":true,"streamStartDate":"2017-11-24T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":15,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2017-11-24","copyright":"Visible Noise / Sony Music Entertainment UK Ltd., under exclusive license to Epitaph","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/121133400","cover":"df3721f1-6a47-49f5-8aed-01e34d0b0609","vibrantColor":"#FFFFFF","videoCover":null,"explicit":true,"upc":"0045778756063","popularity":7,"audioQuality":"LOSSLESS","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":50793895,"title":"That's The Spirit","duration":2703,"streamReady":true,"streamStartDate":"2015-09-11T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":11,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2015-09-11","copyright":"(P) 2015 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/50793895","cover":"bc9e6d77-e0fd-4c0d-a6f9-ff33fa07184b","vibrantColor":"#FFFFFF","videoCover":null,"explicit":true,"upc":"886445386097","popularity":58,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":152008773,"title":"That's The Spirit","duration":2706,"streamReady":true,"streamStartDate":"2020-08-17T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":11,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2015-09-11","copyright":"(P) 2015 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/152008773","cover":"cf139ba0-4ea9-4ddb-90d4-e575a63042be","vibrantColor":"#FFFFFF","videoCover":null,"explicit":false,"upc":"886445388244","popularity":3,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":211802103,"title":"Sempiternal (Deluxe)","duration":3967,"streamReady":true,"streamStartDate":"2021-04-01T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":13,"numberOfVideos":1,"numberOfVolumes":1,"releaseDate":"2013-04-01","copyright":"(P) 2013 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/211802103","cover":"cb3faefe-81a2-4bad-a5c3-9d06074b17b5","vibrantColor":"#ac8025","videoCover":null,"explicit":true,"upc":"886443859111","popularity":4,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":19291979,"title":"Sempiternal (Expanded Edition)","duration":3218,"streamReady":true,"streamStartDate":"2021-04-01T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":13,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2013-04-01","copyright":"(P) 2013 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/19291979","cover":"f49be36d-4032-4c61-b1aa-85b9b0833e18","vibrantColor":"#ae8637","videoCover":null,"explicit":true,"upc":"886443690707","popularity":56,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":19440652,"title":"Sempiternal","duration":2736,"streamReady":true,"streamStartDate":"2021-04-01T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":11,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2013-04-01","copyright":"(P) 2013 Sony Music Entertainment UK Limited","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/19440652","cover":"feaef112-ec93-4848-8050-928be7e4de80","vibrantColor":"#ac8025","videoCover":null,"explicit":true,"upc":"886443690714","popularity":14,"audioQuality":"HI_RES","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":121131541,"title":"There Is A Hell Believe Me I've Seen It. There Is A Heaven Let's Keep It A Secret","duration":3177,"streamReady":true,"streamStartDate":"2010-10-05T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":12,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2010-10-05","copyright":"Visible Noise Ltd. Under Exclusive License To Epitaph.","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/121131541","cover":"a1010f2e-5a36-40c0-a8dd-840bf606d12e","vibrantColor":"#d6bf94","videoCover":null,"explicit":true,"upc":"0045778706563","popularity":24,"audioQuality":"LOSSLESS","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":121131302,"title":"Suicide Season (Deluxe Edition)","duration":6317,"streamReady":true,"streamStartDate":"2010-04-13T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":24,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2008-01-01","copyright":"Visible Noise Ltd. Under Exclusive License To Epitaph","type":"ALBUM","version":"Deluxe Edition","url":"http://www.tidal.com/album/121131302","cover":"0a6ff36a-1eef-448c-b02f-9dee2c3c520d","vibrantColor":"#d5e2a5","videoCover":null,"explicit":true,"upc":"0045778705160","popularity":18,"audioQuality":"LOSSLESS","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":121129402,"title":"Suicide Season","duration":2535,"streamReady":true,"streamStartDate":"2008-09-30T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":10,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2008-01-01","copyright":"Visible Noise Limited Under Exclusive License To Epitaph","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/121129402","cover":"a033df3b-b4cb-45bd-83c4-69edc18588c4","vibrantColor":"#dd7467","videoCover":null,"explicit":true,"upc":"0045778700660","popularity":24,"audioQuality":"LOSSLESS","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]},{"id":121132771,"title":"Count Your Blessings","duration":2176,"streamReady":true,"streamStartDate":"2013-11-26T00:00:00.000+0000","allowStreaming":true,"premiumStreamingOnly":false,"numberOfTracks":10,"numberOfVideos":0,"numberOfVolumes":1,"releaseDate":"2006-10-30","copyright":"Visible Noise Limited, under exclusive license to Epitaph","type":"ALBUM","version":null,"url":"http://www.tidal.com/album/121132771","cover":"383c039c-5a3a-4a3a-9dfd-d6a639572f80","vibrantColor":"#9adde9","videoCover":null,"explicit":true,"upc":"0045778727964","popularity":18,"audioQuality":"LOSSLESS","audioModes":["STEREO"],"artist":{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"},"artists":[{"id":19137,"name":"Bring Me The Horizon","type":"MAIN","picture":"c34fb076-fc13-4b96-a89a-0e89750c7377"}]}]}
thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Error at line 1 column 2320', src/api/media.rs:69:53
stack backtrace:
[2022-07-28T19:55:01Z TRACE want] signal: Want
   0:     0x56335c6305e1 - <unknown>
   1:     0x56335c3fa74c - <unknown>
   2:     0x56335c60c874 - <unknown>
   3:     0x56335c6315b6 - <unknown>
   4:     0x56335c632646 - <unknown>
   5:     0x56335c6320e2 - <unknown>
   6:     0x56335c632056 - <unknown>
   7:     0x56335c632012 - <unknown>
   8:     0x56335c2edbe2 - <unknown>
   9:     0x56335c2ede62 - <unknown>
  10:     0x56335c676998 - <unknown>
  11:     0x56335c6a1881 - <unknown>
  12:     0x56335c6c05f7 - <unknown>
  13:     0x56335c6c2ece - <unknown>
  14:     0x56335c6afe45 - <unknown>
  15:     0x56335c6b4ffb - <unknown>
  16:     0x56335c6330c5 - <unknown>
  17:     0x7fd43a8c7609 - start_thread
  18:     0x7fd43a695163 - clone
  19:                0x0 - <unknown>
[2022-07-28T19:55:01Z TRACE mio::poll] deregistering event source from poller
[2022-07-28T19:55:01Z TRACE mio::poll] deregistering event source from poller
[2022-07-28T19:55:01Z TRACE want] signal: Closed
[2022-07-28T19:55:01Z TRACE want] signal: Closed
[2022-07-28T19:55:01Z TRACE mio::poll] deregistering event source from poller
[2022-07-28T19:55:01Z TRACE want] signal: Closed

Seems to be a value returned from the API that mismatched with the structs causing a parsing error. Should be able to write a patch for it pretty easily with the log.
Appreciate you gathering it.

Ah, The Audiomode was a value i'd never seen from the API before.
"audioModes":["SONY_360RA"]
I can add it as an enum value in the morning and i'll author a new release that includes the fix. Want to also do some additional testing to make sure that the files it downloads actually work.

Just pushed the fix and created v0.2.3. The CI will take a bit to compile the binaries, but they'll be available at the link below shortly.
https://github.com/MinisculeGirraffe/tdl/releases/tag/v0.2.3


Handy macro to construct an integer version code

People have occasionally asked for this.
Signed-off-by: Larry Gritz<EMAIL_ADDRESS>

Closes #2261


add: hotlink protection for files in folder static

Description
Use public .htaccess in order to add hotlink protection for files in folder static.
Checklist:

[ ] Securely signed commits
[ ] Component(s) with PHPDoc blocks, only if necessary or adds value
[ ] Unit testing, with >80% coverage
[ ] User guide updated
[ ] Conforms to style guide

Why? We don't have a folder named static anywhere in the public dir.

Added static folder. Thank you.

Sorry, but that's not what I meant. We don't need this folder.
If you find it useful for your project, that's great, but it's not something that should be part of the framework. At least, I don't see why it should be.

I see. However the hotlink protection is a must.

The public folder holds the browser-accessible portion of your web application, preventing direct access to your source code. It contains the main .htaccess file, index.php, and any application assets that you add, like CSS, javascript, or images.

Now since we don't want to mess with the framework files, my solution is to protect by default a directory within public  namely directory public/static.
If the solution is approved then the documentation should state that by default any resources in directory public/static are protected against hot-linking.
The PR solves the problem: directory public has no protection against hot-linking.
This is the main idea of the PR.

Not sure what others will say about it, but I'm against it.
This is something that can be added to the user guide as advice (like removing the index.php file), but not an actual code distributed with a framework. The thing is there are many popular servers these days, not only Apache.

Hotlinking
https://simple.wikipedia.org/wiki/Hotlinking
There is no static folder, and no plan to make it, so the setting to protect static is odd.
And it works only when we use Apache.
It is better to add how to protect in the user guide.

Well probably the name of the directory static it's not the best for the purpose, but this PR means additional security and performance for the framework.
Let's say the framework becomes known for lacking hotlink protection and this fact is actively exploited. As a result some developers will label CodeIgniter as slow in production. That's one important aspect to consider when deciding further.

Okay. Should I close this PR, modify to show instructions, someone else will handle the instructions from here?

It is a feature in Apache  (mod_rewrite), not in the framework.
This PR does not make sense to people who do not use static folder, or do not use Apache.
In any case, there should first be documentation.
I think it is better to add how to protect against hotlinking in Apache and nginx in the user guide.

Alright. Then it's probably a good idea to close this PR and make another one containing instructions in user guide. Is that ok?

Yes, feel free to start another PR which will update the user guide.


Fixed form action for changePassword

The action field into the form used to change the password is defined as "changePass", but in the web.xml the URL of the servlet is defined as "changePassword".

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

It's Vulernble


Plot functionality

Combined with #51, this could be really powerful.

Evaluate functions at multiple points
Automatically label axes (x: input variable, input unit; y: function name, output unit)

I recently played a lot with https://github.com/sharkdp/numbat/issues/73 and that is going to become so much faster.

About that I also played with it a little bit and implemented a version using egui

It comes with a native mode and a wasm mode which can run in a browser.
Pros:

It gives us great support for moving and zooming on the plot by supporting drag'n'drop + scrolling to zoom
Great support for tactile screen as well for phone and tablet

We can create our own mark on charts and display stuff with the unit we want
Basically, egui let us write the mark we wants and spaces them however we want.
For example I played a bit with this functionality here: http://meteo.tamo.cool/
When I'm far away I only display the years:

Once I can decide to additionally display the month+year

And by zooming even more I start to display the hours:

With numbat in mind and https://github.com/sharkdp/numbat/issues/510 I can imagine a plot when the unit change while you zoom and that would be awesome.

Cons:

It doesn't generate HTML like plotly, which means it may not play well with the jupyter notebook you're trying to do? (I don't know anything about jupyter notebook)
The only way to save a graph on disk is to use the internal screenshot functionality, which I think requires us to open a window

Here's my branch where I only did the bare minimum: https://github.com/sharkdp/numbat/pull/516
If you're interested by this approach let me know and maybe I could help

About that I also played with it a little bit and implemented a version using egui

Nice! I just played with it as well and looks great.

It gives us great support for moving and zooming on the plot by supporting drag'n'drop + scrolling to zoom

plotly can do this as well

Since it's interactive, when you zoom-in it can requests more points and be more precise (This would require us to be able to execute numbat functions from rust)

That would be really neat! But also.... difficult to implement, I think. Because we would need to run Numbat code from within a FFI function.

Basically, egui let us write the mark we wants and spaces them however we want.

:+1:

With numbat in mind and #510 I can imagine a plot when the unit change while you zoom and that would be awesome.

I agree

In general, I really like egui. I did a project with it in the past. I haven't looked closely into the plotting functionality, but I would be a bit hesitant to choose it over more "mature" plotting libraries. Maybe we're going to support different "backends" in the end. One for interactive viewing, one for generating high-quality images, one for the web? Ideally, that would all be supported by the same library, but I doubt that'll work.
Dependencies are also a concern. This is what I liked about the plotly option. It's rather lightweight since the heavy lifting is done by the JavaScript library that can be loaded in the browser, but doesn't need to be part of Numbat itself.
I think egui_plot is a really good contender in this space. Let's continue to do some experiments. The biggest challenge right now for this feature is not the plotting backend, but rather the Numbat API that we'll use. Plotting "code" tends to have LOTS of configuration options. Even if we only support simple line and scatter plots, we're soon going to want to have more control over these plots (plot multiple functions, colors, line styles, axes options, linear vs logarithmic, …). And right now, I don't really have a good idea on how to design this in Numbat in its current stage. Maybe something like a huge struct of configuration options:
struct LinePlotOptions {
  label: String,
  log_x: Bool,
  log_y: Bool,
  line_style: String,
  line_color: Color,
  # …
}

and then something like
line_plot<X, Y>(fns: List<Fn[(X) -> Y]>, options: List<LinePlotOptions>)

Or maybe we would add the function itself to the options-struct as well.
But then we would need something like rusts ..default() construction or something like struct-update syntax.
As I said, I don't really have a great idea so far. Maybe the language is not yet ready for this.

As I said, I don't really have a great idea so far. Maybe the language is not yet ready for this.

It seems a bit early language-wise, but at the same time in terms of usage it could easily be a central part of numbat.
I feel like every single time I had to solve a problem that was more than 10 lines I wanted to plot some parts of it.

That would be really neat! But also.... difficult to implement, I think. Because we would need to run Numbat code from within a FFI function.

Yes I agree.
Being able to execute numba tcode from within a FFI function would be really neat to do some optimization (yeah I’m thinking about you map).

But then we would need something like rusts ..default() construction or something like struct-update syntax.

Either that or named optional parameter like they do in python.

It gives us great support for moving and zooming on the plot by supporting drag'n'drop + scrolling to zoom
plotly can do this as well

Nice, I missed that, I was struggling to move the chart but maybe I was just being dumb and didn't try to scroll to zoom.

It seems a bit early language-wise, but at the same time in terms of usage it could easily be a central part of numbat.
I feel like every single time I had to solve a problem that was more than 10 lines I wanted to plot some parts of it.

Ok. Let's choose a good subset of features that we want for a first version of this. Maybe:

CLI version only
Line plots only, but plotting multiple functions at the same time should be possible
Configurability can be limited at the moment, but we should maybe have an idea how that could look like


Add enable/disable option to ignore SSL errors

Add the "enable/disable" option to the AstarteDevice constructor to ignore SSL errors. It helps when using a self-signed certificate for the MQTT broker.

Add a line to the Changelog about the new option to be provided in the Astarte Device constructor.