fix Forward Compatibility mode is UNAVAILABLE error

ENV BASH_ENV will overwrite the BASH_ENV default variable value(=/etc/bash.bashrc) in the base image(nvcr.io/nvidia/pytorch:23.08-py3), which contains LD_LIBRARY_PATH that enables compatibility.
fix issue: #23

hi @BasicCoder - thanks for submitting that Pull Request. We will take a look at it and keep you posted. Note that our "source-of-truth" is an internal repository so we will fix the issue in that repository and publish a fix in the coming days (at most two weeks).

Thanks for your contribution. This problem exists and has been fixed in the internal repo and will be synchronized to GitHub later.

We plan to release an update of the [dev](https://github.com/NVIDIA/TensorRT-LLM/tree/main) branch by the end of this week or early next week.


Could a "moving" v1 tag be added to this repo ?

With action runners, it is generally considered bad practice to use @master as that will get you (the action user) into trouble when the action releases/is working on a new major version.
However, using a specific tag or even a specific commit @v1.7.1 means you continuously have to update the workflow. This is made easier with Dependabot, but still a pain in the neck.
To work-around this, a lot of action runners have a "moving" tag for each major. For this repo that would currently be v1, this tag would always be at the last tagged release of the 1.x range of releases.
By the time, a new major would be released, a new, moving v2 tag would then be added, which does the same for the 2.x range of releases.
That way, end-users only have to update their workflow on new majors (from @v1 to @v2), which Dependabot can handle, and they can avoid using @master and prevent unexpected surprises.
Would you be willing to consider this ?

Sure, this makes total sense!
I've updated the README and added a v1. I'll keep this one up to date with future releases. Let me know if that works well.

Thank you @srvaroa !


Fixes link

Fixes the link as suggested in this comment.
Fixes #3893
edit by @mairaw: added the fixes keyword

Related to #3893

Prego! :)


[tool.ruff.lint] usage in docs is inconsistent

Hey friends,
It seems like with the arrival of the formatter (neat!) the linter-specific configs are going to be nested under tool.ruff.lint rather than directly under tool.ruff? I think that the docs are currently somewhat inconsistent with that change, though.
For instance:

select is under tool.ruff.lint in the "Configuring Ruff" doc, but
select seems like a top-level settings in the "Settings" doc

Also in the "Configuring Ruff" doc is a mention of tool.ruff.lint.per-file-ignores and tool.ruff.lint.flake8-quotes but when I go to the Settings section to look for those, it seems like they are still under tool.ruff directly: per-file-ignores, flake8-quotes
--
From snooping around in PRs (https://github.com/astral-sh/ruff/pull/7549) it seems like maybe that section is experimental and we're still deciding whether/how to show it?
I don't really know about the current status of that thinking.
I do think that current state of docs having a mix of tool.ruff.lint and tool.ruff is a bit confusing. Maybe can get some explicit language explaining the state of tool.ruff.lint versus tool.ruff? They still get merged together for v0.1.3?
(Anyhow, thanks! Ruff is neat!)

Thanks for detailed info, I believe it's fixed on https://github.com/astral-sh/ruff/pull/8324 and will be included in coming documentation release.

it seems like maybe that section is experimental and we're still deciding whether/how to show it?

No, it's now preferable! the top-level lint names will be deprecated in https://github.com/astral-sh/ruff/issues/7651

Maybe can get some explicit language explaining the state of tool.ruff.lint versus tool.ruff? They still get merged together for v0.1.3?

Yes, always do tool.ruff.lint.option-name.
Currently top-level names used in most of project (because .lint is new), But in next release we wouldn't have any top-level lint names in documentation and later they will be deprecated.

it seems like maybe that section is experimental and we're still deciding whether/how to show it?

Kind of yes. Using ruff.lint is the new preferred way, but we haven't promoted it more, because we're looking for feedback and want to have the possibility to make breaking changes to it, without it falling under our versioning policy (just yet).
I think the downside of this approach is what you pointed out, that we now a mixture in our documentation that leads to confusion and also doesn't make it clear that ruff.lint is experimental (and may change).

Thanks for detailed info, I believe it's fixed on https://github.com/astral-sh/ruff/pull/8324 [...]

[...] in coming release we wouldn't have any top-level lint names in docs and later they will be deprecated.

Ah, great -- sounds like it's already headed towards a more consistent state, thanks all!

This should be in a better state now 🤞

For instance:

select is under tool.ruff.lint in the "Configuring Ruff" doc, but
select seems like a top-level settings in the "Settings" doc

That is still the case though.

That is still the case though. [as of Dec 7, 2023]

☝ That is true, I did see some inconsistencies linger for a bit after this issue got closed.
All of the cases I originally noted have been resolved at this point though. I can't find any others.
(I suspect we are good as of 0.2.0 because that's when the deprecation of the old names shows up in release notes?)


Comment out Leaflet fullscreen control on location add view.

This change is

Coverage increased (+0.06%) to 68.035% when pulling 0ccb0323d99124b018dd179a16007a206ff384fd on ropable:v2.1 into 8b4622c203da0306f0c1e42fb76c34f3233fcdfd on parksandwildlife:v2.1.


urlLoader failure handling and fallback loading strategie

Subject of the issue
We want to load our translation files from our server. But, if the server is not reachable, for what ever reason, the loading fails and we can not load our translations from any other source (ex. static files), because the error is handled in the .run() function from events and not in the .config() function of the app.
Your environment

version of angular-translate: 2.15.2
version of angular: 1.6.4
which browser and its version: electron@latest

Steps to reproduce
use the urlFileLoader with an url that returns an 404
Expected behaviour
There should be an configurable fallback loader, like static file loader, if the url loading fails.
Actual behaviour
The error throws and could be handle in the .run()functions but no translations could be loaded from there.

Please consider building your own custom loader (its actually only a function). You can delegate calls to the provided ones, or just rebuild the flow for your specific use case (maybe offline related situation within your Electron app).

https://angular-translate.github.io/docs/#/guide/13_custom-loaders


feat: create ECS alert template

An ECS template can be used as an alert template, so Connaisseur
generates JSON logs valid in Elastic SIEM (with ECS schema 1.12.0 -
latest [1]).
This is part of the Issue: https://github.com/sse-secure-systems/connaisseur/issues/426
The values mapped are taken from the below fields:

https://www.elastic.co/guide/en/ecs/1.12/ecs-orchestrator.html
https://www.elastic.co/guide/en/ecs/1.12/ecs-container.html
https://www.elastic.co/guide/en/ecs/1.12/ecs-agent.html
https://www.elastic.co/guide/en/ecs/1.12/ecs-ecs.html
https://www.elastic.co/guide/en/ecs/1.12/ecs-event.html

[1] : https://www.elastic.co/guide/en/ecs/1.12/index.html
Description

Checklist

[x] PR is rebased to/aimed at branch develop
[X] PR follows Contributing Guide
[ ] Added tests (if necessary)
[x] Extended README/Documentation (if necessary)
[ ] Adjusted versions of image and Helm chart in values.yaml and Chart.yaml (if necessary)

Codecov Report

Merging #427 (80948e3) into develop (9e78a8a) will increase coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #427      +/-   ##
===========================================
+ Coverage    94.45%   94.47%   +0.02%
===========================================
  Files           22       22
  Lines         1101     1105       +4
===========================================
+ Hits          1040     1044       +4
  Misses          61       61

Impacted Files
Coverage Δ

connaisseur/flask_application.py
91.35% <0.00%> (-0.11%)
:arrow_down:

connaisseur/config.py
97.29% <0.00%> (-0.03%)
:arrow_down:

connaisseur/image.py
100.00% <0.00%> (ø)

connaisseur/crypto.py
100.00% <0.00%> (ø)

connaisseur/exceptions.py
100.00% <0.00%> (ø)

connaisseur/validators/interface.py
100.00% <0.00%> (ø)

connaisseur/validators/notaryv1/tuf_role.py
100.00% <0.00%> (ø)

connaisseur/validators/notaryv1/key_store.py
100.00% <0.00%> (ø)

connaisseur/validators/notaryv1/trust_data.py
100.00% <0.00%> (ø)

connaisseur/validators/cosign/cosign_validator.py
98.83% <0.00%> (ø)

... and 4 more

Continue to review full report at Codecov.

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


typos in shorthand definitions

I believe that in section 2.1
u<: Unsinged less than comparison.

u≤: Unsinged less than & equal comparison.

u>: Unsinged greater than comparison

should be
u<: Unsigned less than comparison.

u≤: Unsigned less than & equal comparison.

u>: Unsigned greater than comparison

I will fix this in the next release. Thanks!

Fixed in the v0.9.1 release. (976dbe7)

Fixed in the v0.9.1 release. (976dbe7)


Feature: Add "fit to width" scaling of viewport

First of all I want to thank you for this extension. I like the idea and implementation, and it helps me with prototyping fir side projects.
As I can see - size of browser preview affects viewport size that is rendered by headless chrome, which is expected but not ideal for my case.
I'm working on website where I should see full desktop version. At this moment I have to stack editors and preview vertically (unusual and uncomfortable to me, because of limited vertical space left for editors and total nightmare when terminal panel is open 😆 )
As possible solution for my case I can see:

Set fixed window size for headless chrome
Render output image scaled down, so it will fit to width.
Action to switch between regular and "fit to width" modes

Will you consider this feature or it is out of scope?

@IllusionMH You can now try this out by pull https://github.com/auchenberg/vscode-browser-preview/pull/79, and running from source.

Tried PR branch, but looks like it doesn't work on my machine 😭
When I use Launch Extension in master branch - it all works as expected, I can see any site (except example.com for some reason 0_o)
When I launch same task from PR branch (after npm i of course) - it is always "blank" page.

Debug log looks clear
► browserPage.send Page.enable
► browserPage.send Page.getNavigationHistory
► browserPage.send Page.navigate
◀ browserPage.received Page.frameStartedLoading
◀ browserPage.received Page.frameNavigated
◀ browserPage.received Page.frameAttached
◀ browserPage.received Page.frameStartedLoading
◀ browserPage.received Page.frameNavigated
◀ browserPage.received Page.domContentEventFired
◀ browserPage.received Page.frameStoppedLoading
◀ browserPage.received Page.loadEventFired
◀ browserPage.received Page.frameStoppedLoading
◀ browserPage.received null

Sometimes I receive an exception, but it looks like it is only when I close last Browser Preview tab (doubt that it is related)

Trace
◀ browserPage.received null
rejected promise not handled within 1 second: Error: Protocol error (Target.detachFromTarget): Target closed.
stack trace: Error: Protocol error (Target.detachFromTarget): Target closed.
at send.Promise (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Connection.js:73:56)
at new Promise ()
at Connection.send (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Connection.js:72:12)
at CDPSession.detach (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Connection.js:223:28)
at CDPSession. (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\helper.js:145:23)
at BrowserPage.dispose (c:\web\projects\vscode-browser-preview\build\ext-src\browserPage.js:16:21)
at BrowserViewWindow.dispose (c:\web\projects\vscode-browser-preview\build\ext-src\extension.js:199:30)
at launch._panel.onDidDispose (c:\web\projects\vscode-browser-preview\build\ext-src\extension.js:116:45)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at c.dispose (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:579:799)
at l.$onDidDisposeWebviewPanel (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:582:468)
at d._doInvokeHandler (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:622:11)
at d._invokeHandler (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:621:716)
at d._receiveRequest (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:620:394)
at d._receiveOneMessage (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:619:141)
at define.constructor._protocol.onMessage.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:617:400)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:40:460)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at a (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:467)
at e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:513)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at y._receiveMessage (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:181:276)
at define.constructor._socketDisposables.push._socketReader.onMessage.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:178:415)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at f.acceptChunk (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:175:35)
at define.constructor._register._socket.onData.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:174:410)
at Socket.t (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:182:689)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:279:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at Pipe.onread (net.js:636:20)
rejected promise not handled within 1 second: Error: Protocol error (Target.closeTarget): Target closed.
stack trace: Error: Protocol error (Target.closeTarget): Target closed.
at send.Promise (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Connection.js:73:56)
at new Promise ()
at Connection.send (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Connection.js:72:12)
at Page.close (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\Page.js:949:38)
at Page. (c:\web\projects\vscode-browser-preview\node_modules\puppeteer-core\lib\helper.js:145:23)
at BrowserPage.dispose (c:\web\projects\vscode-browser-preview\build\ext-src\browserPage.js:17:19)
at BrowserViewWindow.dispose (c:\web\projects\vscode-browser-preview\build\ext-src\extension.js:199:30)
at launch._panel.onDidDispose (c:\web\projects\vscode-browser-preview\build\ext-src\extension.js:116:45)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at c.dispose (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:579:799)
at l.$onDidDisposeWebviewPanel (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:582:468)
at d._doInvokeHandler (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:622:11)
at d._invokeHandler (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:621:716)
at d._receiveRequest (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:620:394)
at d._receiveOneMessage (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:619:141)
at define.constructor._protocol.onMessage.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:617:400)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:40:460)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at a (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:467)
at e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:172:513)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at y._receiveMessage (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:181:276)
at define.constructor._socketDisposables.push._socketReader.onMessage.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:178:415)
at u.fire (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:44:708)
at f.acceptChunk (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:175:35)
at define.constructor._register._socket.onData.e (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:174:410)
at Socket.t (c:\Users\Andrii\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:182:689)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:279:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at Pipe.onread (net.js:636:20)
► browserPage.send Page.enable
► browserPage.send Page.getNavigationHistory
► browserPage.send Page.navigate
◀ browserPage.received Page.frameStartedLoading
◀ browserPage.received Page.frameNavigated
◀ browserPage.received Page.frameAttached
◀ browserPage.received Page.frameStartedLoading
◀ browserPage.received Page.domContentEventFired
◀ browserPage.received Page.frameNavigated
◀ browserPage.received Page.frameStoppedLoading
◀ browserPage.received Page.loadEventFired
◀ browserPage.received Page.frameStoppedLoading

VS Code version: Code - Insiders 1.33.0-insider (4039ea871879ef8f654f27df5c32d209104b3a44, 2019-03-29T10:53:36.965Z)
Chrome version: 73.0.3683.86 (Official Build) (64-bit)
OS version: Windows_NT x64 10.0.18865

Interesting @IllusionMH. Never seen that icon before on the canvas there..
How do you start Browser Preview? From the icon on in the sidebar?

Yes, that's what I do.
May be that icon is on that background that is visible because page rendered as 0px x 0px (if top right corner info is true)
I've enabled verbose logging and logging and looks like there is infinite loop in my case.
CPU load goes high after launching Browser Preview tab (from icon in the sidebar) and fan became loud.
These four repeating lines appear from time to time (my guess is that DevTools have problems with logging in such kind of loop).
Sorry for big screenshot:

@IllusionMH Funky. If you start Browser Preview, and opens a new chrome instance, goes to chrome://inspect, and enables network targets for localhost:9222, does the tab show up? What happens if you try to open Chrome DevTools for that tab?

Looks like there are 2 tabs instead of one opened: aboit:blank and tab from preview.
And tab for preview seems normal (only exception is check if cookie policies were viewed).

Alright, so the Headless Chrome instance is running as expected. That's interesting. So this is a problem with the Browser Preview front-end that runs inside VS Code.

@IllusionMH Can you try this build?  (install from VSIX ) after you have unzipped.
vscode-browser-preview-0.5.0.vsix.zip

@auchenberg same problems as with extension host (checked on both latest insiders and stable versions)

Console log after launching Browser Preview for the first time
extensionHost.ts:215 Extension Host
extensionHost.ts:216 Debugger attached.

log.ts:167  WARN UNRESPONSIVE extension host, 'auchenberg.vscode-browser-preview' took 99% of 1029.304ms, saved PROFILE here: 'C:\Users\Andrii\AppData\Local\Temp\exthost-57614c.cpuprofile' (4) [{…}, {…}, {…}, {…}]
webviewElement.ts:392 [Embedded Page] [object Object]
console.ts:134 [Extension Host] ► browserPage.send Page.enable (at BrowserPage.send (c:\Users\Andrii\.vscode-insiders\extensions\auchenberg.vscode-browser-preview-0.5.0\build\ext-src\browserPage.js:20:17))
console.ts:134 [Extension Host] ► browserPage.send Page.getNavigationHistory (at BrowserPage.send (c:\Users\Andrii\.vscode-insiders\extensions\auchenberg.vscode-browser-preview-0.5.0\build\ext-src\browserPage.js:20:17))
webviewElement.ts:392 [Embedded Page] [object Object]
webviewElement.ts:392 [Embedded Page] viewport.calculateViewport
webviewElement.ts:392 [Embedded Page] app.onViewportChanged.size
webviewElement.ts:392 [Embedded Page] [object Object]
webviewElement.ts:392 [Embedded Page] viewport.calculateViewport
webviewElement.ts:392 [Embedded Page] app.onViewportChanged.size

<...and so on many times until I closed the tab...>

webviewElement.ts:392 [Embedded Page] [object Object]
webviewElement.ts:392 [Embedded Page] viewport.calculateViewport
webviewElement.ts:392 [Embedded Page] app.onViewportChanged.size
webviewElement.ts:392 [Embedded Page] [object Object]
<closed tab here>
console.ts:134 [Extension Host] ◀ browserPage.received null (at Function.launch.client.else (c:\Users\Andrii\.vscode-insiders\extensions\auchenberg.vscode-browser-preview-0.5.0\build\ext-src\browserPage.js:76:21))

Not sure what causes infinite loop.
Unfortunately I don't have enough knowledge of extension code and time to debug this issue locally, but will try when have time.

@IllusionMH Aha, I think I know what  it is. Stay tuned. Thanks for testing!

@IllusionMH Can you try to pull the branch and run a npm start followed by opening http://localhost:3000 in Chrome? Do you still have that infinite loop? Can't reproduce here, so so wondering what's going in

@auchenberg sorry for delay, only now had a chance to take look at this.
Unfortunately - looks like I still have problem even inside Chrome.

npm i
npm start
Opened https://localhost:3000

Console has a lot of logs that looks same:

Pause on uncaught exceptions revealed:
Invariant Violation: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

error.stack
Invariant Violation: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
    at invariant (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:57:19)
    at scheduleWork (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:19717:9)
    at Object.enqueueSetState (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:12936:9)
    at App.Component.setState (webpack-internal:///./node_modules/react/cjs/react.development.js:356:20)
    at App._callee2$ (webpack-internal:///./src/App.tsx:437:22)
    at tryCatch (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:62:40)
    at Generator.invoke [as _invoke] (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:288:22)
    at Generator.prototype.(anonymous function) [as next] (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:114:21)
    at asyncGeneratorStep (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:5:24)
    at _next (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:27:9)
    at eval (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:34:7)
    at new Promise (<anonymous>)
    at App.eval (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:23:12)
    at App.onViewportChanged (webpack-internal:///./src/App.tsx:453:35)
    at Viewport.emitViewportChanges (webpack-internal:///./src/components/viewport/viewport.tsx:277:18)
    at Viewport.calculateViewportSize (webpack-internal:///./src/components/viewport/viewport.tsx:231:14)
    at Viewport.calculateViewport (webpack-internal:///./src/components/viewport/viewport.tsx:171:12)
    at App.eval (webpack-internal:///./src/App.tsx:440:35)
    at callCallback (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:11743:16)
    at commitUpdateEffects (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:11783:11)
    at commitUpdateQueue (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:11771:7)
    at commitLifeCycles (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:17030:15)
    at commitAllLifeCycles (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:18512:11)
    at HTMLUnknownElement.callCallback (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:147:18)
    at Object.invokeGuardedCallbackDev (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:196:20)
    at invokeGuardedCallback (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:250:35)
    at commitRoot (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:18717:11)
    at completeRoot (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:20247:7)
    at performWorkOnRoot (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:20170:13)
    at performWork (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:20075:11)
    at performSyncWork (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:20049:7)
    at requestWork (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:19904:9)
    at scheduleWork (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:19711:9)
    at Object.enqueueSetState (webpack-internal:///./node_modules/react-dom/cjs/react-dom.development.js:12936:9)
    at App.Component.setState (webpack-internal:///./node_modules/react/cjs/react.development.js:356:20)
    at App._callee2$ (webpack-internal:///./src/App.tsx:437:22)
    at tryCatch (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:62:40)
    at Generator.invoke [as _invoke] (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:288:22)
    at Generator.prototype.(anonymous function) [as next] (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:114:21)
    at asyncGeneratorStep (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:5:24)
    at _next (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:27:9)
    at eval (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:34:7)
    at new Promise (<anonymous>)
    at App.eval (webpack-internal:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:23:12)
    at App.onViewportChanged (webpack-internal:///./src/App.tsx:453:35)
    at Viewport.emitViewportChanges (webpack-internal:///./src/components/viewport/viewport.tsx:277:18)
    at Viewport.calculateViewportSize (webpack-internal:///./src/components/viewport/viewport.tsx:231:14)
    at Viewport.calculateViewport (webpack-internal:///./src/components/viewport/viewport.tsx:171:12)
    at Viewport.handleViewportResize (webpack-internal:///./src/components/viewport/viewport.tsx:241:12)
    at invokeFunc (webpack-internal:///./node_modules/lodash/lodash.js:11017:23)

Will try to investigate further.

@IllusionMH Quite interesting you are getting sub pixel values back. Pushed a fix to master. If you pull the extension and launch from within VS Code you should be able to get a full browser preview. Running npm start only gives you the frontend, without the Chrome headless.


ceph & cinder integration

Don't need all eyes on this yet, just the Ceph team.

I've moved this here: https://github.com/blueboxgroup/ursula/pull/1140


Suggest using degit for starting out

Using degit clones without the git history and it is a better way to get started with an new library.

@Rich-Harris I'm going to leave this open for a week or so then just close it. It's fine if you don't want to use it, but my open PR queue is getting out of hand.


feat: Return apt packages with their installed versions

Change list to table and print package version corresponding to the tool.
This will allow to see which versions of apt tools are installed in current image.

/azp run ubuntu1604, ubuntu1804, ubuntu2004

/azp run ubuntu1604, ubuntu1804, ubuntu2004

Hi @catthehacker!
Thanks for your contribution! Is everything ready to merge, or would you like to add some changes?

@miketimofeev From my side it's everything. I haven't done a deep dive into SoftwareReport yet so I don't know if there is anything else that could be improved, only that apt section.

@catthehacker , Some package versions are missing:
U18 - https://github.visualstudio.com/virtual-environments/_build/results?buildId=102211&view=logs&j=011e1ec8-6569-5e69-4f06-baf193d1351e&t=72559e73-928c-58e0-b67e-e22d7a78faae
U20 - https://github.visualstudio.com/virtual-environments/_build/results?buildId=102212&view=logs&j=011e1ec8-6569-5e69-4f06-baf193d1351e&t=72559e73-928c-58e0-b67e-e22d7a78faae

@al-cheb checking that right now, apt-cache policy seems to report it properly
libc++-dev:
  Installed: 1:10.0-50~exp1
  Candidate: 1:10.0-50~exp1
  Version table:
 *** 1:10.0-50~exp1 500
        500 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
        100 /var/lib/dpkg/status

Seems like it happens when the name is virtual package that apt understands but dpkg doesn't.
cat@ubuntu-2004:~$ dpkg-query -W -f '${Version}' upx
cat@ubuntu-2004:~$ dpkg-query -W -f '${Version}' upx-ucl
3.95-2build1

Currently testing latest change locally but if that doesn't work other option could be to list all packages installed in the image instead of grabbing specific ones
cat@ubuntu-2004:/$ printf "$(dpkg-query -W -f '${Package}|${Version}\n')\n"
accountsservice|0.6.55-0ubuntu12~20.04.4
adduser|3.118ubuntu2
adwaita-icon-theme|3.36.1-2ubuntu<IP_ADDRESS>
...
libc++-10-dev|1:10.0.0-4ubuntu1
libc++-dev|1:10.0-50~exp1
libc++1-10|1:10.0.0-4ubuntu1
libc++abi-10-dev|1:10.0.0-4ubuntu1
libc++abi-dev|1:10.0-50~exp1
libc++abi1-10|1:10.0.0-4ubuntu1
libc-bin|2.31-0ubuntu9.2
...
update-notifier-common|<IP_ADDRESS>
upx-ucl|3.95-2build1
usb.ids|2020.03.19-1

Report works but it looks like while you try to install libc++abi-dev and other packages, they get removed afterwards: https://github.visualstudio.com/virtual-environments/_build/results?buildId=102551&view=logs&j=011e1ec8-6569-5e69-4f06-baf193d1351e&t=5431112d-2b61-5a5f-7042-ef698f761043&l=2537
2021-03-22T08:56:12.1972267Z     azure-arm: The following additional packages will be installed:
2021-03-22T08:56:12.1974768Z     azure-arm:   libc++abi1-11
2021-03-22T08:56:12.2457336Z     azure-arm: The following packages will be REMOVED:
2021-03-22T08:56:12.2474137Z     azure-arm:   libc++abi-10-dev libc++abi-dev libc++abi1-10
2021-03-22T08:56:12.2483616Z     azure-arm: The following NEW packages will be installed:
2021-03-22T08:56:12.2499069Z     azure-arm:   libc++abi-11-dev libc++abi1-11

log
2021-03-22T08:56:08.3861839Z     azure-arm: Install libc++abi-dev
2021-03-22T08:56:08.4382278Z     azure-arm: Reading package lists...
2021-03-22T08:56:08.6333860Z     azure-arm: Building dependency tree...
2021-03-22T08:56:08.6339095Z     azure-arm: Reading state information...
2021-03-22T08:56:08.7765808Z     azure-arm: The following additional packages will be installed:
2021-03-22T08:56:08.7776793Z     azure-arm:   libc++abi-10-dev libc++abi1-10
2021-03-22T08:56:08.8286646Z     azure-arm: The following NEW packages will be installed:
2021-03-22T08:56:08.8294846Z     azure-arm:   libc++abi-10-dev libc++abi-dev libc++abi1-10
2021-03-22T08:56:08.8517389Z     azure-arm: 0 upgraded, 3 newly installed, 0 to remove and 11 not upgraded.
2021-03-22T08:56:08.8520419Z     azure-arm: Need to get 128 kB of archives.
2021-03-22T08:56:08.8526058Z     azure-arm: After this operation, 760 kB of additional disk space will be used.
2021-03-22T08:56:08.8529899Z     azure-arm: Get:1 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++abi1-10 amd64 1:10.0.0-4ubuntu1 [59.4 kB]
2021-03-22T08:56:08.8541457Z     azure-arm: Get:2 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++abi-10-dev amd64 1:10.0.0-4ubuntu1 [65.8 kB]
2021-03-22T08:56:08.8573237Z     azure-arm: Get:3 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++abi-dev amd64 1:10.0-50~exp1 [2856 B]
2021-03-22T08:56:09.1240468Z     azure-arm: Fetched 128 kB in 0s (6668 kB/s)
2021-03-22T08:56:09.1866297Z     azure-arm: Selecting previously unselected package libc++abi1-10:amd64.
2021-03-22T08:56:09.2359282Z     azure-arm: (Reading database ... 117045 files and directories currently installed.)
2021-03-22T08:56:09.2399827Z     azure-arm: Preparing to unpack .../libc++abi1-10_1%3a10.0.0-4ubuntu1_amd64.deb ...
2021-03-22T08:56:09.2668183Z     azure-arm: Unpacking libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:09.3900064Z     azure-arm: Selecting previously unselected package libc++abi-10-dev:amd64.
2021-03-22T08:56:09.3994940Z     azure-arm: Preparing to unpack .../libc++abi-10-dev_1%3a10.0.0-4ubuntu1_amd64.deb ...
2021-03-22T08:56:09.4135273Z     azure-arm: Unpacking libc++abi-10-dev:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:09.5213355Z     azure-arm: Selecting previously unselected package libc++abi-dev:amd64.
2021-03-22T08:56:09.5311822Z     azure-arm: Preparing to unpack .../libc++abi-dev_1%3a10.0-50~exp1_amd64.deb ...
2021-03-22T08:56:09.5432481Z     azure-arm: Unpacking libc++abi-dev:amd64 (1:10.0-50~exp1) ...
2021-03-22T08:56:09.6795135Z     azure-arm: Setting up libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:09.7294724Z     azure-arm: Setting up libc++abi-10-dev:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:09.7871819Z     azure-arm: Setting up libc++abi-dev:amd64 (1:10.0-50~exp1) ...
2021-03-22T08:56:09.8539960Z     azure-arm: Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
2021-03-22T08:56:11.8059531Z     azure-arm: Install libc++abi-11-dev
2021-03-22T08:56:11.8583825Z     azure-arm: Reading package lists...
2021-03-22T08:56:12.0502124Z     azure-arm: Building dependency tree...
2021-03-22T08:56:12.0505387Z     azure-arm: Reading state information...
2021-03-22T08:56:12.1972267Z     azure-arm: The following additional packages will be installed:
2021-03-22T08:56:12.1974768Z     azure-arm:   libc++abi1-11
2021-03-22T08:56:12.2457336Z     azure-arm: The following packages will be REMOVED:
2021-03-22T08:56:12.2474137Z     azure-arm:   libc++abi-10-dev libc++abi-dev libc++abi1-10
2021-03-22T08:56:12.2483616Z     azure-arm: The following NEW packages will be installed:
2021-03-22T08:56:12.2499069Z     azure-arm:   libc++abi-11-dev libc++abi1-11
2021-03-22T08:56:12.4294691Z     azure-arm: 0 upgraded, 2 newly installed, 3 to remove and 11 not upgraded.
2021-03-22T08:56:12.4297487Z     azure-arm: Need to get 126 kB of archives.
2021-03-22T08:56:12.4301559Z     azure-arm: After this operation, 6144 B disk space will be freed.
2021-03-22T08:56:12.4310036Z     azure-arm: Get:1 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libc++abi1-11 amd64 1:11.0.0-2~ubuntu20.04.1 [59.6 kB]
2021-03-22T08:56:12.4338080Z     azure-arm: Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 libc++abi-11-dev amd64 1:11.0.0-2~ubuntu20.04.1 [66.6 kB]
2021-03-22T08:56:13.0287562Z     azure-arm: Fetched 126 kB in 0s (706 kB/s)
2021-03-22T08:56:13.1017424Z     azure-arm: (Reading database ... 117071 files and directories currently installed.)
2021-03-22T08:56:13.1057894Z     azure-arm: Removing libc++abi-dev:amd64 (1:10.0-50~exp1) ...
2021-03-22T08:56:13.2532888Z     azure-arm: Removing libc++abi-10-dev:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:13.4083893Z     azure-arm: Removing libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:13.6411128Z     azure-arm: Selecting previously unselected package libc++abi1-11:amd64.
2021-03-22T08:56:13.6891661Z     azure-arm: (Reading database ... 117045 files and directories currently installed.)
2021-03-22T08:56:13.6926760Z     azure-arm: Preparing to unpack .../libc++abi1-11_1%3a11.0.0-2~ubuntu20.04.1_amd64.deb ...
2021-03-22T08:56:13.7044810Z     azure-arm: Unpacking libc++abi1-11:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:13.8036005Z     azure-arm: Selecting previously unselected package libc++abi-11-dev:amd64.
2021-03-22T08:56:13.8134918Z     azure-arm: Preparing to unpack .../libc++abi-11-dev_1%3a11.0.0-2~ubuntu20.04.1_amd64.deb ...
2021-03-22T08:56:13.8280519Z     azure-arm: Unpacking libc++abi-11-dev:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:13.9583620Z     azure-arm: Setting up libc++abi1-11:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:14.0030247Z     azure-arm: Setting up libc++abi-11-dev:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:14.0376022Z     azure-arm: Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
2021-03-22T08:56:15.6820633Z     azure-arm: Install libc++-dev
2021-03-22T08:56:15.7337889Z     azure-arm: Reading package lists...
2021-03-22T08:56:15.9336443Z     azure-arm: Building dependency tree...
2021-03-22T08:56:15.9340724Z     azure-arm: Reading state information...
2021-03-22T08:56:16.0744494Z     azure-arm: The following additional packages will be installed:
2021-03-22T08:56:16.0748735Z     azure-arm:   libc++-10-dev libc++1-10 libc++abi1-10
2021-03-22T08:56:16.0754871Z     azure-arm: Suggested packages:
2021-03-22T08:56:16.0758207Z     azure-arm:   clang
2021-03-22T08:56:16.1233061Z     azure-arm: The following packages will be REMOVED:
2021-03-22T08:56:16.1250660Z     azure-arm:   libc++abi-11-dev libc++abi1-11
2021-03-22T08:56:16.1268779Z     azure-arm: The following NEW packages will be installed:
2021-03-22T08:56:16.1272350Z     azure-arm:   libc++-10-dev libc++-dev libc++1-10 libc++abi1-10
2021-03-22T08:56:16.1815116Z     azure-arm: 0 upgraded, 4 newly installed, 2 to remove and 11 not upgraded.
2021-03-22T08:56:16.1818734Z     azure-arm: Need to get 814 kB/874 kB of archives.
2021-03-22T08:56:16.1828297Z     azure-arm: After this operation, 6880 kB of additional disk space will be used.
2021-03-22T08:56:16.1842278Z     azure-arm: Get:1 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++1-10 amd64 1:10.0.0-4ubuntu1 [193 kB]
2021-03-22T08:56:16.1880924Z     azure-arm: Get:2 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++-10-dev amd64 1:10.0.0-4ubuntu1 [618 kB]
2021-03-22T08:56:16.1979408Z     azure-arm: Get:3 http://azure.archive.ubuntu.com/ubuntu focal/universe amd64 libc++-dev amd64 1:10.0-50~exp1 [2924 B]
2021-03-22T08:56:16.5301418Z     azure-arm: Fetched 814 kB in 0s (12.3 MB/s)
2021-03-22T08:56:16.6101195Z     azure-arm: (Reading database ... 117067 files and directories currently installed.)
2021-03-22T08:56:16.6141643Z     azure-arm: Removing libc++abi-11-dev:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:17.3359114Z     azure-arm: Removing libc++abi1-11:amd64 (1:11.0.0-2~ubuntu20.04.1) ...
2021-03-22T08:56:18.3807124Z     azure-arm: Selecting previously unselected package libc++abi1-10:amd64.
2021-03-22T08:56:18.4295496Z     azure-arm: (Reading database ... 117045 files and directories currently installed.)
2021-03-22T08:56:18.4337706Z     azure-arm: Preparing to unpack .../libc++abi1-10_1%3a10.0.0-4ubuntu1_amd64.deb ...
2021-03-22T08:56:18.4865361Z     azure-arm: Unpacking libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:18.9790375Z     azure-arm: Selecting previously unselected package libc++1-10:amd64.
2021-03-22T08:56:18.9895463Z     azure-arm: Preparing to unpack .../libc++1-10_1%3a10.0.0-4ubuntu1_amd64.deb ...
2021-03-22T08:56:19.0360894Z     azure-arm: Unpacking libc++1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:19.4077194Z     azure-arm: Selecting previously unselected package libc++-10-dev:amd64.
2021-03-22T08:56:19.4173763Z     azure-arm: Preparing to unpack .../libc++-10-dev_1%3a10.0.0-4ubuntu1_amd64.deb ...
2021-03-22T08:56:19.4297071Z     azure-arm: Unpacking libc++-10-dev:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:19.9313003Z     azure-arm: Selecting previously unselected package libc++-dev:amd64.
2021-03-22T08:56:19.9420021Z     azure-arm: Preparing to unpack .../libc++-dev_1%3a10.0-50~exp1_amd64.deb ...
2021-03-22T08:56:19.9541182Z     azure-arm: Unpacking libc++-dev:amd64 (1:10.0-50~exp1) ...
2021-03-22T08:56:20.0998897Z     azure-arm: Setting up libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:20.1421870Z     azure-arm: Setting up libc++1-10:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:20.1742868Z     azure-arm: Setting up libc++-10-dev:amd64 (1:10.0.0-4ubuntu1) ...
2021-03-22T08:56:20.2067696Z     azure-arm: Setting up libc++-dev:amd64 (1:10.0-50~exp1) ...
2021-03-22T08:56:20.2535810Z     azure-arm: Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
2021-03-22T08:56:21.8979640Z     azure-arm: Install libc++-11-dev
2021-03-22T08:56:21.9496489Z     azure-arm: Reading package lists...
2021-03-22T08:56:22.1331772Z     azure-arm: Building dependency tree...
2021-03-22T08:56:22.1335110Z     azure-arm: Reading state information...
2021-03-22T08:56:22.2657491Z     azure-arm: The following additional packages will be installed:
2021-03-22T08:56:22.2665411Z     azure-arm:   libc++1-11 libc++abi1-11

@catthehacker that's pretty weird, we'll take a look, thanks!

@catthehacker could you please pull the latest main with your changes for clang libraries?

Ready for merge 🎉

@catthehacker , thank you for your contribution!


Neo4j backend?

Is there a userbase and use-case for this?

I would expect Kuzu backend and/or Memgraph

This is great info, thanks @Benja1972 !


Won't work with Mac OS Yosemite Public Beta

I got these msgs:
warning: reattach-to-user-namespace: unsupported new OS, trying as if it were 10.6-10.9
warning: _vprocmgr_move_subset_to_user failed
warning: reattach-to-user-namespace: unable to reattach

Is there a quick fix to this issue?

@antwonlee Should use brew upgrade not brew update


Malformed XML ?

I'm experiencing a weird issue.
I have these public XML files https://sebgroup.com/large-corporates-and-institutions/mifid/rts27-execution-quality-reports.I've attached a subset (three first childelements) of the HFxxxx file
test.xml.zip
When im trying to explode an array structure I receive a malformed XML. However the xml doesnt seems malformed and I'm able to process it with native scala and python.
When processing with FAILFAST it breaks as malformed. With PERMISSIVE or DROPMALFORMED ill get an empty set
spark.sqlContext.read.format("com.databricks.spark.xml").option("rowTag","VenueInformation").option("mode","FAILFAST").load("data/SEB/test.xml")
df.select(explode($"FinancialInstruments.FinancialInstrument")).show()

This bug seems to appear when the document contains blank attributes
E.g
will fail -> malformed
<PriceInfoDaily SimpleAvgTxnPrice="" VolumeWeightedTxnPrice="" HighestExecutedPrice="" LowestExecutedPrice="" />
wil pass
<PriceInfoDaily />

solved by using option("nullvalue","")
This should be default behaviour


NanNewv8::String(char) compiler warning help

Hi,
I need some help understanding the warning AppVeyor/MSVC is complaining about:
..\src\node_snap7_client.cpp(909): warning C4344: behavior change: use of explicit template arguments results in call to 'v8::Local<T> NanNew<v8::String,char*>(A0)' [C:\projects\node-snap7\build\node_snap7.vcxproj]
          with
          [
              T=v8::String,
              A0=char *
          ]
          but the regular function 'v8::Local<T> NanNew(const char *)' is a better match
          with
          [
              T=v8::String
          ]
          if you expect 'v8::Local<T> NanNew(const char *)' to be called then you need to make it an explicit specialization
          with
          [
              T=v8::String
          ]

Line 909 is NanNew<v8::String>(BlockInfo->CodeDate)); where BlockInfo->CodeDate is a char[11] *.

Seems like a bug... Probably not in msvc, but in the NanNew rewrite. Are the convenience functions creating problems?
Summoning @agnat.

It is a bit strange. If I compile it on my Desktop with VS13 this warning is not thrown.

It also seems that similar warnings from msvc have been around since long before the rewrite. Could it be a compiler bug after all?

Due to this twitter post https://twitter.com/appveyor/status/534724949022224384 they are using VS13 Update 4 for their build workers, same version as on my PC. Where is the difference?

I get the warning with my trusty old VS2010, the last sane version. It seems only to apply to non-const char *.

Yes, BlockInfo is a Pointer of a struct and in the struct CodeDate is a char[11]. But why is AppVeyor throwing the warnings and my VS not?? Strange....

I am a C++ beginner, but I think I can ignore the warning. The compiler chooses the template function because of the explicit type, but advises that the convenience function would be a better match(Because the Factory only got functions with 2 arguments??). But the result is the same, because the convenience function calls the explicit one. Did I get this right?

I need some help understanding the warning [...] MSVC is complaining about

Hehe... you're not alone. I need that on a t-shirt.
I'd say the compiler does what the programmer intended and what any sane compiler would do. Not sure why it warns about it. The warning would make sense (kind of) if v8::String was an argument type. But it isn't. So in our case the warning doesn't make sense, is misleading and can safely be ignored.
We should probably just go ahead and disable it: smallest possible scope, push, pop... that sort of thing.

But why is AppVeyor throwing the warnings and my VS not?

Good question. I have no idea. Are you using the exact same commands on your desktop? Like: Opening the project file in VS might trigger different behavior than calling node-gyp on the command line. On the other hand this is a level 1 warning. So, no... no clue... :-/

The compiler chooses the template function because of the explicit type,

Right.

but advises that the convenience function would be a better match

I think it advises that without the explicit type it would have called the convenience function. In our case this is not surprising. It is so non-surprising that it is misleading. There simply is no way to call the ... uh... inconvenience function without an explicit type argument.

(Because the Factory only got functions with 2 arguments??).

Um, no. Let's contrive an example that makes sense of the warning:
struct foo {};

template <typename T> void bar(T t) {}  // [a]
void bar(foo f) {}                      // [b]

foo f;
bar(f);      // calls b
bar<foo>(f); // calls a!

In this case the presence of the explicit type argument changes the called function and the VS guys think it is worth a warning.

But the result is the same, because the convenience function calls the explicit one. Did I get this right?

Exactly.

I need some help understanding the warning [...] MSVC is complaining about

Hehe... you're not alone. I need that on a t-shirt.

:grin:

But why is AppVeyor throwing the warnings and my VS not?

Good question. I have no idea. Are you using the exact same commands on your desktop? Like: Opening the project file in VS might trigger different behavior than calling node-gyp on the command line. On the other hand this is a level 1 warning. So, no... no clue... :-/

Yes I triggered the build with node-gyp configure build in the command promt. True, this warning is level 1 and the compiler is set to /W3. So no idea where the difference comes from. Maybe the MsBuild version differs after all.
Thanks for your explanation!

I don't know if it will be possible to limit the scope of disabled warning from within nan.h. I think it will have to be all or nothing. Could probably go with all here, if _MSC_VER matches VS2010. I don't think this shows up by default in later versions.

Hm, yeah. It's a call site warning. So, the "smallest possible scope" is probably the whole CU. ;)

Here is an old webkit ticket: https://bugs.webkit.org/show_bug.cgi?id=22325
Similar issue, similar explanation, similar conclusion...

I don't mind if we don't bloat nan with global pragmas just to prevent older MSVC from printing senseless warnings.

It's not a question of bloat as much as that it leaks out to the entire compilation unit and can mask legitimate errors.
On January 19, 2015 4:04:22 PM EET, Mathias<EMAIL_ADDRESS>wrote:

I don't mind if we don't bloat nan with global pragmas just to prevent
older MSVC from printing senseless warnings.

Reply to this email directly or view it on GitHub:
https://github.com/rvagg/nan/issues/246#issuecomment-70496240

It's not a question of bloat as much as that it leaks out to the entire compilation unit and can mask legitimate errors.

Yes, therefore I think the best is to do nothing and if someone will ever get this warning he/she can read this issue and disable the warning on call site. Hopefully very unlikely, because it is already fixed in newer MSVC.

Workaround is to use the convenience function.

I figured out why appveyor and my VS13 printed different compiler warnings. AppVeyor has VS10/12/13 installed and the default toolset is VS10. I added "msbuild_toolset": "v120" in my binding.gyp under the windows condition and then appveyor selected VS13. I just wanted to share because this still was an open question.


gNMIc generate unknown path item

Hello,
I'm trying to use the gNMIc generate tool to generate the gNMI config values.
If I use gnmic path to get the paths, I get the following:
[test@arch-1 yang]$ gnmic path --file files/openconfig-interfaces.yang --config-only
/interfaces/interface[name=*]/config/description
/interfaces/interface[name=*]/config/enabled
/interfaces/interface[name=*]/config/loopback-mode
/interfaces/interface[name=*]/config/mtu
/interfaces/interface[name=*]/config/name
/interfaces/interface[name=*]/config/type
/interfaces/interface[name=*]/description
/interfaces/interface[name=*]/dhcpv4-snooping-trust/config/dhcpv4-snooping-trust
/interfaces/interface[name=*]/dhcpv6-snooping-trust/config/dhcpv6-snooping-trust
/interfaces/interface[name=*]/enabled
/interfaces/interface[name=*]/hold-time/config/down
/interfaces/interface[name=*]/hold-time/config/up
/interfaces/interface[name=*]/link-up-down-trap-enable
/interfaces/interface[name=*]/name
/interfaces/interface[name=*]/name
/interfaces/interface[name=*]/nat-zone/config/nat-zone
/interfaces/interface[name=*]/subinterfaces/subinterface[index=*]/config/description
/interfaces/interface[name=*]/subinterfaces/subinterface[index=*]/config/enabled
/interfaces/interface[name=*]/subinterfaces/subinterface[index=*]/config/index
/interfaces/interface[name=*]/subinterfaces/subinterface[index=*]/index
/interfaces/interface[name=*]/type
[test@arch-1 yang]$

If I then specify one of the interfaces and use gnmic generate, I get the following:
[test@arch-1 yang]$ gnmic generate --file files/ --dir modules/ --path /interfaces/interface[name=Ethernet0]/name
Error: unknown path item "name" in path "/interfaces/interface[name=Ethernet0]/name"
[test@arch-1 yang]$

Am I missing something?
Thanks.

This is a simple case of not including the name in the path:
[test@arch-1 yang]$ gnmic generate --file files/ --dir modules/ --path /interfaces/interface[name=Ethernet0]/
- statistics:
    discontinuity-time: []
    in-broadcast-pkts: []
    in-discards: []
    in-errors: []
    in-multicast-pkts: []
    in-octets: []
    in-unicast-pkts: []
    in-unknown-protos: []
    out-broadcast-pkts: []
    out-discards: []
    out-errors: []
    out-multicast-pkts: []
    out-octets: []
    out-unicast-pkts: []
[test@arch-1 yang]$

The same command will generate different results however:
[test@arch-1 yang]$ gnmic generate --file files/ --dir modules/ --path /interfaces/interface[name=Ethernet0]/
- aggregation:
    config:
      fallback: []
      fast-rate: []
      graceful-shutdown-mode: []
      lag-type: []
      min-links: []
      system-mac: []
    reason-events:
      reason-event:
      - state:
          event: []
          reason: []
          timestamp: []
    state:
      fallback: []
      fast-rate: []
      graceful-shutdown-mode: []
      lag-speed: []
      lag-type: []
      member: []
      min-links: []
      reason: []
      system-mac: []
    switched-vlan:
      config:
        access-vlan: []
        interface-mode: []
        native-vlan: []
        trunk-vlans: []
      state:
        access-vlan: []
        interface-mode: []
        native-vlan: []
        trunk-vlans: []
  config:
    description: []
    enabled:
    - "true"
    loopback-mode:
    - "false"
    mtu: []
    name: []
    tpid:
    - oc-vlan-types:TPID_0X8100
    type: []
  dhcpv4-snooping-trust:
    config:
      dhcpv4-snooping-trust: []
    state:
      dhcpv4-snooping-trust: []
  dhcpv6-snooping-trust:
    config:
      dhcpv6-snooping-trust: []
    state:
      dhcpv6-snooping-trust: []
  ethernet:
    config:
      advertised-speed: []
      aggregate-id: []
      auto-negotiate:
      - "true"
      diag-mode: []
      duplex-mode: []
      enable-flow-control:
      - "false"
      fec-mode: []
      high-wattage-optics-enable:
      - "true"
      mac-address: []
      port-fec: []
      port-speed: []
      standalone-link-training:
      - "false"
      unreliable-los: []
    debugcounter-drops:
      drop-counters:
      - state:
          counter0-name: []
          counter0-value: []
          counter1-name: []
          counter1-value: []
          counter2-name: []
          counter2-value: []
          counter3-name: []
          counter3-value: []
          counter4-name: []
          counter4-value: []
          counter5-name: []
          counter5-value: []
          counter6-name: []
          counter6-value: []
          counter7-name: []
          counter7-value: []
    phy-mon-counters:
      phy-counters:
      - state:
          last-change: []
          last-nz-count: []
          phy-counter: []
    phy-mon-status:
      phy-mon-fields:
      - state:
          last-change: []
          last-status: []
          phy-mon-field: []
    poe:
      config:
        detection-mode: []
        disconnect-type: []
        enabled:
        - "true"
        four-pair-mode: []
        high-power-mode: []
        power-classification-mode: []
        power-limit: []
        power-limit-type: []
        power-pairs: []
        powerup-mode: []
        priority: []
        use-spare-pair: []
      state:
        counters:
          absent-counter: []
          invalid-signature-counter: []
          overload-counter: []
          power-denied-counter: []
          short-counter: []
        detection-mode: []
        diagnostics:
          temperature: []
        disconnect-type: []
        enabled:
        - "true"
        fault-code: []
        four-pair-mode: []
        high-power-mode: []
        output-current: []
        output-voltage: []
        power-class: []
        power-class-requested: []
        power-classification-mode: []
        power-limit: []
        power-limit-type: []
        power-pairs: []
        power-used: []
        powerup-mode: []
        priority: []
        status: []
        use-spare-pair: []
    reason-events:
      reason-event:
      - state:
          event: []
          reason: []
          timestamp: []
    state:
      advertised-speed: []
      aggregate-id: []
      auto-negotiate:
      - "true"
      counters:
        in-crc-errors: []
        in-distribution:
          in-frames-64-octets: []
          in-frames-65-127-octets: []
          in-frames-128-255-octets: []
          in-frames-256-511-octets: []
          in-frames-512-1023-octets: []
          in-frames-1024-1518-octets: []
          in-frames-1519-2047-octets: []
          in-frames-2048-4095-octets: []
          in-frames-4096-9216-octets: []
          in-frames-9217-16383-octets: []
        in-fragment-frames: []
        in-jabber-frames: []
        in-oversize-frames: []
        in-undersize-frames: []
        out-distribution:
          out-frames-64-octets: []
          out-frames-65-127-octets: []
          out-frames-128-255-octets: []
          out-frames-256-511-octets: []
          out-frames-512-1023-octets: []
          out-frames-1024-1518-octets: []
          out-frames-1519-2047-octets: []
          out-frames-2048-4095-octets: []
          out-frames-4096-9216-octets: []
          out-frames-9217-16383-octets: []
        out-oversize-frames: []
      diag-mode: []
      duplex-mode: []
      fec-mode: []
      high-wattage-optics-enable:
      - "true"
      link-training-status: []
      negotiated-duplex-mode: []
      negotiated-port-speed: []
      oper-advertised-speed: []
      oper-fec: []
      oper-unreliable-los: []
      port-fec: []
      port-speed: []
      reason: []
      remote-advertised-speed: []
      standalone-link-training:
      - "false"
      supported-features: []
      unreliable-los: []
    storm-control:
      storm-control-list:
      - config:
          ifname: []
          kbps: []
          storm-type: []
        state:
          ifname: []
          kbps: []
          storm-type: []
    switched-vlan:
      config:
        access-vlan: []
        interface-mode: []
        trunk-vlans: []
      state:
        access-vlan: []
        interface-mode: []
        native-vlan: []
        trunk-vlans: []
  mapped-vlans:
    mapped-vlan:
    - config:
        vlan-id: []
      egress-mapping:
        config:
          mapped-vlan-priority: []
          vlan-stack-action: []
        state:
          mapped-vlan-priority: []
          vlan-stack-action: []
      ingress-mapping:
        config:
          mapped-vlan-priority: []
          vlan-stack-action: []
        state:
          mapped-vlan-priority: []
          vlan-stack-action: []
      match:
        double-tagged:
          config:
            inner-vlan-id: []
            outer-vlan-id: []
          state:
            inner-vlan-id: []
            outer-vlan-id: []
        single-tagged:
          config:
            vlan-ids: []
          state:
            vlan-ids: []
      state:
        vlan-id: []
  nat-zone:
    config:
      nat-zone: []
    state:
      nat-zone: []
  routed-vlan:
    config:
      vlan: []
    ipv4:
      addresses:
        address:
        - config:
            ip: []
            prefix-length: []
            secondary: []
          state:
            ip: []
            origin: []
            prefix-length: []
            secondary: []
          vrrp:
            vrrp-group:
            - config:
                advertisement-interval:
                - "100"
                preempt:
                - "true"
                priority:
                - "100"
                use-v2-checksum: []
                version: []
                virtual-address: []
                virtual-router-id: []
              state:
                advertisement-interval:
                - "100"
                current-priority: []
                preempt:
                - "true"
                priority:
                - "100"
                status: []
                use-v2-checksum: []
                version: []
                virtual-address: []
                virtual-router-id: []
              vrrp-track:
                vrrp-track-interface:
                - config:
                    priority-increment: []
                    track-intf: []
                  state:
                    priority-increment: []
                    track-intf: []
      config:
        dhcp-client:
        - "false"
        enabled:
        - "true"
        mtu: []
      neighbors:
        neighbor:
        - config:
            ip: []
            link-layer-address: []
          state:
            ip: []
            link-layer-address: []
            origin: []
            remote: []
      ospfv2:
        if-addresses:
        - config:
            address: []
            area-id: []
            authentication-key: []
            authentication-key-encrypted: []
            authentication-type: []
            dead-interval: []
            dead-interval-minimal: []
            hello-interval: []
            hello-multiplier: []
            metric: []
            mtu-ignore: []
            network-type: []
            priority: []
            retransmission-interval: []
            transmit-delay: []
          enable-bfd:
            config:
              bfd-profile: []
              enabled: []
            state:
              bfd-profile: []
              enabled: []
          md-authentications:
            md-authentication:
            - config:
                authentication-key-encrypted: []
                authentication-key-id: []
                authentication-md5-key: []
              state:
                authentication-key-encrypted: []
                authentication-key-id: []
                authentication-md5-key: []
          state:
            address: []
            area-id: []
            authentication-key: []
            authentication-key-encrypted: []
            authentication-type: []
            dead-interval: []
            dead-interval-minimal: []
            hello-interval: []
            hello-multiplier: []
            metric: []
            mtu-ignore: []
            network-type: []
            priority: []
            retransmission-interval: []
            transmit-delay: []
      proxy-arp:
        config:
          mode:
          - DISABLE
        state:
          mode:
          - DISABLE
      sag-ipv4:
        config:
          static-anycast-gateway: []
        state:
          static-anycast-gateway: []
      state:
        counters:
          in-bits-per-second: []
          in-discarded-pkts: []
          in-error-pkts: []
          in-forwarded-octets: []
          in-forwarded-pkts: []
          in-octets: []
          in-octets-per-second: []
          in-pkts: []
          in-pkts-per-second: []
          in-utilization: []
          out-bits-per-second: []
          out-discarded-pkts: []
          out-error-pkts: []
          out-forwarded-octets: []
          out-forwarded-pkts: []
          out-octets: []
          out-octets-per-second: []
          out-pkts: []
          out-pkts-per-second: []
          out-utilization: []
        dhcp-client:
        - "false"
        enabled:
        - "true"
        mtu: []
      unnumbered:
        config: {}
        interface-ref:
          config:
            interface: []
            subinterface: []
          state:
            interface: []
            subinterface: []
        state: {}
    ipv6:
      addresses:
        address:
        - config:
            ip: []
            prefix-length: []
          state:
            ip: []
            origin: []
            prefix-length: []
            status: []
          vrrp:
            vrrp-group:
            - config:
                advertisement-interval:
                - "100"
                preempt:
                - "true"
                priority:
                - "100"
                virtual-address: []
                virtual-router-id: []
              state:
                advertisement-interval:
                - "100"
                current-priority: []
                preempt:
                - "true"
                priority:
                - "100"
                status: []
                version: []
                virtual-address: []
                virtual-router-id: []
              vrrp-track:
                vrrp-track-interface:
                - config:
                    priority-increment: []
                    track-intf: []
                  state:
                    priority-increment: []
                    track-intf: []
      config:
        dhcp-client:
        - "false"
        dup-addr-detect-transmits:
        - "1"
        enabled:
        - "true"
        mtu: []
      neighbors:
        neighbor:
        - config:
            ip: []
            link-layer-address: []
          state:
            ip: []
            is-router: []
            link-layer-address: []
            neighbor-state: []
            origin: []
            remote: []
      router-advertisement:
        config:
          adv-interval-option: []
          home-agent-config: []
          home-agent-lifetime: []
          home-agent-preference: []
          interval: []
          lifetime: []
          managed-config: []
          mtu: []
          other-config: []
          ra-fast-retrans: []
          ra-hop-limit: []
          ra-interval-msec: []
          ra-retrans-interval: []
          reachable-time: []
          router-preference: []
          suppress: []
        dns-search-names:
          dns-search-name:
          - config:
              dnssl-name: []
              valid-lifetime: []
            state:
              dnssl-name: []
              valid-lifetime: []
        ra-prefixes:
          ra-prefix:
          - config:
              no-autoconfig: []
              off-link: []
              preferred-lifetime: []
              prefix: []
              router-address: []
              valid-lifetime: []
            state:
              no-autoconfig: []
              off-link: []
              preferred-lifetime: []
              prefix: []
              router-address: []
              valid-lifetime: []
        rdnss-addresses:
          rdnss-address:
          - config:
              address: []
              valid-lifetime: []
            state:
              address: []
              valid-lifetime: []
        state:
          adv-interval-option: []
          home-agent-config: []
          home-agent-lifetime: []
          home-agent-preference: []
          interval: []
          lifetime: []
          managed-config: []
          mtu: []
          other-config: []
          ra-fast-retrans: []
          ra-hop-limit: []
          ra-interval-msec: []
          ra-pkt-rcvd: []
          ra-pkt-sent: []
          ra-retrans-interval: []
          reachable-time: []
          router-preference: []
          suppress: []
      sag-ipv6:
        config:
          static-anycast-gateway: []
        state:
          static-anycast-gateway: []
      state:
        counters:
          in-bits-per-second: []
          in-discarded-pkts: []
          in-error-pkts: []
          in-forwarded-octets: []
          in-forwarded-pkts: []
          in-octets: []
          in-octets-per-second: []
          in-pkts: []
          in-pkts-per-second: []
          in-utilization: []
          out-bits-per-second: []
          out-discarded-pkts: []
          out-error-pkts: []
          out-forwarded-octets: []
          out-forwarded-pkts: []
          out-octets: []
          out-octets-per-second: []
          out-pkts: []
          out-pkts-per-second: []
          out-utilization: []
        dhcp-client:
        - "false"
        dup-addr-detect-transmits:
        - "1"
        enabled:
        - "true"
        mtu: []
      unnumbered:
        config:
          enabled:
          - "false"
        interface-ref:
          config:
            interface: []
            subinterface: []
          state:
            interface: []
            subinterface: []
        state:
          enabled:
          - "false"
    state:
      vlan: []
  state:
    admin-status: []
    counters:
      carrier-transitions: []
      in-bits-per-second: []
      in-broadcast-pkts: []
      in-discards: []
      in-errors: []
      in-fcs-errors: []
      in-multicast-pkts: []
      in-octets: []
      in-octets-per-second: []
      in-pkts: []
      in-pkts-per-second: []
      in-unicast-pkts: []
      in-unknown-protos: []
      in-utilization: []
      last-clear: []
      out-bits-per-second: []
      out-broadcast-pkts: []
      out-discards: []
      out-errors: []
      out-multicast-pkts: []
      out-octets: []
      out-octets-per-second: []
      out-pkts: []
      out-pkts-per-second: []
      out-unicast-pkts: []
      out-utilization: []
    description: []
    enabled:
    - "true"
    hardware-port: []
    last-change: []
    loopback-mode:
    - "false"
    mac-address: []
    mtu: []
    name: []
    oper-status: []
    physical-channel: []
    rate-interval: []
    tpid:
    - oc-vlan-types:TPID_0X8100
    transceiver: []
  subinterfaces:
    subinterface:
    - config:
        description: []
        enabled:
        - "true"
        index:
        - "0"
        mtu: []
      ipv4:
        addresses:
          address:
          - config:
              gw-addr: []
              ip: []
              prefix-length: []
              secondary: []
            state:
              gw-addr: []
              ip: []
              origin: []
              prefix-length: []
              secondary: []
            vrrp:
              vrrp-group:
              - config:
                  advertisement-interval:
                  - "100"
                  preempt:
                  - "true"
                  priority:
                  - "100"
                  use-v2-checksum: []
                  version: []
                  virtual-address: []
                  virtual-router-id: []
                state:
                  advertisement-interval:
                  - "100"
                  current-priority: []
                  preempt:
                  - "true"
                  priority:
                  - "100"
                  status: []
                  use-v2-checksum: []
                  version: []
                  virtual-address: []
                  virtual-router-id: []
                vrrp-track:
                  vrrp-track-interface:
                  - config:
                      priority-increment: []
                      track-intf: []
                    state:
                      priority-increment: []
                      track-intf: []
        igmp:
          config:
            enabled:
            - "false"
            interface-id: []
            last-member-query-count: []
            last-member-query-interval: []
            query-interval: []
            query-max-response-time: []
            version: []
          joins:
            join:
            - config:
                mcastgrpaddr: []
                srcaddr: []
              state:
                mcastgrpaddr: []
                srcaddr: []
          state:
            enabled:
            - "false"
            filter-prefixes: []
            interface-id: []
            last-member-query-count: []
            last-member-query-interval: []
            query-interval: []
            query-max-response-time: []
            version: []
        neighbors:
          neighbor:
          - config:
              ip: []
              link-layer-address: []
            state:
              ip: []
              link-layer-address: []
              origin: []
              remote: []
        ospfv2:
          if-addresses:
          - config:
              address: []
              area-id: []
              authentication-key: []
              authentication-key-encrypted: []
              authentication-type: []
              dead-interval: []
              dead-interval-minimal: []
              hello-interval: []
              hello-multiplier: []
              metric: []
              mtu-ignore: []
              network-type: []
              priority: []
              retransmission-interval: []
              transmit-delay: []
            enable-bfd:
              config:
                bfd-profile: []
                enabled: []
              state:
                bfd-profile: []
                enabled: []
            md-authentications:
              md-authentication:
              - config:
                  authentication-key-encrypted: []
                  authentication-key-id: []
                  authentication-md5-key: []
                state:
                  authentication-key-encrypted: []
                  authentication-key-id: []
                  authentication-md5-key: []
            state:
              address: []
              area-id: []
              authentication-key: []
              authentication-key-encrypted: []
              authentication-type: []
              dead-interval: []
              dead-interval-minimal: []
              hello-interval: []
              hello-multiplier: []
              metric: []
              mtu-ignore: []
              network-type: []
              priority: []
              retransmission-interval: []
              transmit-delay: []
        sag-ipv4:
          config:
            static-anycast-gateway: []
          state:
            static-anycast-gateway: []
        state:
          counters:
            in-bits-per-second: []
            in-discarded-pkts: []
            in-error-pkts: []
            in-forwarded-octets: []
            in-forwarded-pkts: []
            in-octets: []
            in-octets-per-second: []
            in-pkts: []
            in-pkts-per-second: []
            in-utilization: []
            out-bits-per-second: []
            out-discarded-pkts: []
            out-error-pkts: []
            out-forwarded-octets: []
            out-forwarded-pkts: []
            out-octets: []
            out-octets-per-second: []
            out-pkts: []
            out-pkts-per-second: []
            out-utilization: []
          dhcp-client:
          - "false"
          enabled:
          - "true"
          mtu: []
        unnumbered:
          config: {}
          interface-ref:
            config:
              interface: []
              subinterface: []
            state:
              interface: []
              subinterface: []
          state: {}
      ipv6:
        addresses:
          address:
          - config:
              gw-addr: []
              ip: []
              prefix-length: []
            state:
              gw-addr: []
              ip: []
              origin: []
              prefix-length: []
              status: []
            vrrp:
              vrrp-group:
              - config:
                  advertisement-interval:
                  - "100"
                  preempt:
                  - "true"
                  priority:
                  - "100"
                  virtual-address: []
                  virtual-router-id: []
                state:
                  advertisement-interval:
                  - "100"
                  current-priority: []
                  preempt:
                  - "true"
                  priority:
                  - "100"
                  status: []
                  version: []
                  virtual-address: []
                  virtual-router-id: []
                vrrp-track:
                  vrrp-track-interface:
                  - config:
                      priority-increment: []
                      track-intf: []
                    state:
                      priority-increment: []
                      track-intf: []
        config:
          enabled:
          - "false"
        neighbors:
          neighbor:
          - config:
              ip: []
              link-layer-address: []
            state:
              ip: []
              link-layer-address: []
              origin: []
              remote: []
        router-advertisement:
          config:
            adv-interval-option: []
            home-agent-config: []
            home-agent-lifetime: []
            home-agent-preference: []
            interval: []
            lifetime: []
            managed-config: []
            mtu: []
            other-config: []
            ra-fast-retrans: []
            ra-hop-limit: []
            ra-interval-msec: []
            ra-retrans-interval: []
            reachable-time: []
            router-preference: []
            suppress: []
          dns-search-names:
            dns-search-name:
            - config:
                dnssl-name: []
                valid-lifetime: []
              state:
                dnssl-name: []
                valid-lifetime: []
          ra-prefixes:
            ra-prefix:
            - config:
                no-autoconfig: []
                off-link: []
                preferred-lifetime: []
                prefix: []
                router-address: []
                valid-lifetime: []
              state:
                no-autoconfig: []
                off-link: []
                preferred-lifetime: []
                prefix: []
                router-address: []
                valid-lifetime: []
          rdnss-addresses:
            rdnss-address:
            - config:
                address: []
                valid-lifetime: []
              state:
                address: []
                valid-lifetime: []
          state:
            adv-interval-option: []
            home-agent-config: []
            home-agent-lifetime: []
            home-agent-preference: []
            interval: []
            lifetime: []
            managed-config: []
            mtu: []
            other-config: []
            ra-fast-retrans: []
            ra-hop-limit: []
            ra-interval-msec: []
            ra-pkt-rcvd: []
            ra-pkt-sent: []
            ra-retrans-interval: []
            reachable-time: []
            router-preference: []
            suppress: []
        sag-ipv6:
          config:
            static-anycast-gateway: []
          state:
            static-anycast-gateway: []
        state:
          counters:
            in-bits-per-second: []
            in-discarded-pkts: []
            in-error-pkts: []
            in-forwarded-octets: []
            in-forwarded-pkts: []
            in-octets: []
            in-octets-per-second: []
            in-pkts: []
            in-pkts-per-second: []
            in-utilization: []
            out-bits-per-second: []
            out-discarded-pkts: []
            out-error-pkts: []
            out-forwarded-octets: []
            out-forwarded-pkts: []
            out-octets: []
            out-octets-per-second: []
            out-pkts: []
            out-pkts-per-second: []
            out-utilization: []
          dhcp-client:
          - "false"
          dup-addr-detect-transmits:
          - "1"
          enabled:
          - "true"
          mtu: []
      state:
        admin-status: []
        counters:
          carrier-transitions: []
          in-broadcast-pkts: []
          in-discards: []
          in-errors: []
          in-fcs-errors: []
          in-multicast-pkts: []
          in-octets: []
          in-pkts: []
          in-unicast-pkts: []
          in-unknown-protos: []
          last-clear: []
          out-broadcast-pkts: []
          out-discards: []
          out-errors: []
          out-multicast-pkts: []
          out-octets: []
          out-pkts: []
          out-unicast-pkts: []
        description: []
        enabled:
        - "true"
        ifindex: []
        index:
        - "0"
        last-change: []
        logical: []
        mac-address: []
        mtu: []
        name: []
        oper-status: []
        rate-interval: []
      vlan:
        config:
          vlan-id: []
        state:
          vlan-id: []
  vxlan-if:
    config:
      dscp: []
      external-intf: []
      external-ip: []
      primary-intf: []
      primary-ip: []
      qos-mode: []
      source-vtep-intf: []
      source-vtep-ip: []
    state:
      dscp: []
      external-intf: []
      external-ip: []
      primary-intf: []
      primary-ip: []
      qos-mode: []
      source-vtep-intf: []
      source-vtep-ip: []
[test@arch-1 yang]$ gnmic generate --file files/ --dir modules/ --path /interfaces/interface[name=Ethernet0]/
- statistics:
    discontinuity-time: []
    in-broadcast-pkts: []
    in-discards: []
    in-errors: []
    in-multicast-pkts: []
    in-octets: []
    in-unicast-pkts: []
    in-unknown-protos: []
    out-broadcast-pkts: []
    out-discards: []
    out-errors: []
    out-multicast-pkts: []
    out-octets: []
    out-unicast-pkts: []
[test@arch-1 yang]$

The short output comes from ietf-interfaces here which also starts with /interfaces/interface/...and is imported by OC interfaces (but not implemented by the router).
Depending which modules gNMIc encounters first/second, you will get different results.
The way around it is to use the --exclude flag, add --exclude ietf-interfaces just like the example here: https://gnmic.openconfig.net/cmd/generate/#openconfig


Keybinding to open wireless GUIs

Fixed by https://github.com/raoulvdberge/refinedstorage/commit/cef892f19953a86ab5d8e189f1470a9d04ebd36f


Performance order of magnitude slower than native

For patterns like **/*.txt, node-glob seems to be an order of magnitude slower than native globbing.
Here is a script to demonstrate this (save it as node-glob/benchmark.sh): https://gist.github.com/joliss/7469304
Here are the timings from running this on my system:

Bash timing: 0m0.696s
Node statSync and readdirSync timing: 0m0.977s
Node glob.sync timing: 0m9.676s
Node glob async timing: 0m22.130s (fluctuating somewhat)

Based on the recursive statSync + readdirSync performance, it seems that it should be possible to make node-glob nearly as fast as native, at least for simple patterns.
This is an actual issue for me, with sets of only a few hundred files: In a JavaScript build tool I'm writing, the execution time of the most performance-critical code path is currently bottlenecked on node-glob. I know I could avoid using node-glob if I wanted to, but I'd love to expose globbing syntax in my tool's API.
I'm guessing that there are two possible sources for this slowness:

Duplicate stat or readdir calls (related: #76)
The pattern matching burns too many CPU cycles (perhaps minimatch is the culprit)

If someone wants to dig into this and figure out what's going on, you'd be my hero!
If it's technically hard to fix this, I'd also like to find out sooner rather than later, because it means that I maybe shouldn't rely on globbing in my tool's API.

Yay! Thanks @isaacs :)

This is some good reading how to implement fast file traversal in node.
@isaacs you wrote:

Except in extremely rare scenarios, async fs I/O will always be strictly slower than sync fs I/O. If you don't need to be doing many things in parallel, there is no benefit.

I am not sure I follow, isn't async always faster because you can process directories in parallel which is happening a lot when recursing down a file system structure? Using sync APIs might be faster per method call but will always pay the penalty of sequential processing.

This is some good reading how to implement fast file traversal in node.
@isaacs you wrote:

Except in extremely rare scenarios, async fs I/O will always be strictly slower than sync fs I/O. If you don't need to be doing many things in parallel, there is no benefit.

I am not sure I follow, isn't async always faster because you can process directories in parallel which is happening a lot when recursing down a file system structure? Using sync APIs might be faster per method call but will always pay the penalty of sequential processing.

@bpasero Even if you do the file actions asynchronously, there is usually a limit to just how async the fs can be, and there is a hard limit to how many threads node will use to perform async fs operations.  (Once upon a time that was 4, but I recall it being increased, maybe there's a cleverer heuristic involved since last I saw that code, which was a few years ago.  It might not be as "hard", but there is still definitely a limit.)
So, if you are parallelizing more fs ops than node allocates threads, it's going to back up, and be effectively serialized anyway.  (Of course, "serialized" with multiple parallel tracks, as each thread finishes what it's doing and then takes on a new job.)
However, all of this is ultimately limited by the file system itself!  Spinning disks can only be in one position, so if you're trying to read 2 files in parallel, the fs will either thrash (making both operations slower than they would've been), or make one operation wait for the other.
Stat and readdir calls are less thrashy and more cacheable by the fs, since they're only dealing with the file link table (at least, on most Unixy systems).  But in fact, if every bit of data is available in the operating system's fs cache, they'll be very fast, and adding the async thread management overhead will be relevant.
"Parallelizing" operations on a single machine (whether that's a single cpu or a single disk) is more like "multitasking" than "teamwork".  When you parallelize things across a network, of course, it's a whole different story, which is why things like Hadoop are so great for massively big data problems, compared with writing a simpler program for a single machine.  But when you parallelize a bunch of operations that are effectively throttled by a single bit of hardware, as a general rule, you're almost certainly not going to make things faster.
Lots of qualifiers there.  It's highly dependent on a lot of factors, like what specific type of disk is involved, the operating system, the file system type, as well as just whatever else the machine happens to be doing at the time.
If you are doing many things in parallel (for example, it's a web server, where you don't want to pause in replying to one user's HTTP request while you read a file for another user), then async is absolutely the way to go.  Node makes this the "default" path because it's designed for building network programs, where this usually matters.
If you're a web server, then providing users with a consistently fast connection pick-up, and a predictable first-byte time, is all that really matters.  The "average file read time" is 100% worthless as a metric, if you lost business because some unlucky user had to wait 2s for a web page to load, and decided to hit the back button.
But if you're a cli utility, especially one that doesn't make network requests, then the situation is completely reversed.  The better approach is to avoid thrashing the disk, and since you have exactly one user who is going to wait for every single task to be completed, reducing the average task time is the way to go, so sync isn't just easier, it's also better.

Yes, I also think it depends on the scenario and especially depends on what kind of complexity the code has that runs for each file node that is traversed. If all you do is just walking through the file system, I would not expect sync to be much slower than async. However, if for each node, there is some task happening that eats CPU cycles, being able to "offload" further traversing to other threads has a high performance impact.
I would assume node-glob would perform faster with async fs operations because for each path it needs to run its "glob" logic that potentially slows down the next fs call when done in sync.

If all you do is just walking through the file system, I would not expect sync to be much slower than async.

What I'm saying is that your expectation is wrong. You should expect sync to be faster than async.  Async is always slower, it just has less of an effect on slowing down other things (servers etc.)

@isaacs well that is not what I see when I give it a try.

node v4.2.3
MBP 10.11
test folder: https://github.com/Microsoft/TypeScript.git

traverse-async.js
var fs = require('fs');
var path = require('path');
var walk = function (dir, done) {
    var results = [];
    fs.readdir(dir, function (err, list) {
        if (err) return done(err);
        var pending = list.length;
        if (!pending) return done(null, results);
        list.forEach(function (file) {
            file = path.resolve(dir, file);
            fs.stat(file, function (err, stat) {
                if (stat && stat.isDirectory()) {
                    walk(file, function (err, res) {
                        results = results.concat(res);
                        if (!--pending) done(null, results);
                    });
                } else {
                    results.push(file);
                    if (!--pending) done(null, results);
                }
            });
        });
    });
};

walk('/Users/bpasero/Development/Microsoft/typescript', function (err, results) {
    if (err) throw err;
    console.log(results.length);
});

traverse-sync.js
var fs = require('fs');
var path = require('path');
var walk = function (dir, done) {
    var results = [];
    var list = fs.readdirSync(dir);
    var pending = list.length;
    if (!pending) return done(null, results);
    list.forEach(function (file) {
        file = path.resolve(dir, file);
        var stat = fs.statSync(file);
        if (stat && stat.isDirectory()) {
            walk(file, function (err, res) {
                results = results.concat(res);
                if (!--pending) done(null, results);
            });
        } else {
            results.push(file);
            if (!--pending) done(null, results);
        }
    });
};

walk('/Users/bpasero/Development/Microsoft/typescript', function (err, results) {
    if (err) throw err;
    console.log(results.length);
});

Results after a fresh OS restart:
~/Desktop/traverse-fs> time node traverse-async.js
29868

real	0m0.653s
user	0m0.401s
sys	0m0.790s

~/Desktop/traverse-fs> time node traverse-sync.js
29868

real	0m1.176s
user	0m0.340s
sys	0m0.505s

@bpasero These tests are hard to do well. Think like type of hardware (platter or ssd), has your OS cached the paths, etc. can give drastically different results. For example, here are my results using your scripts:
trevnorris:node (throw-mc-fix) $ \time ./out/node-latest /tmp/walk-sync.js
212765
3.36user 1.22system 0:04.55elapsed 100%CPU (0avgtext+0avgdata 111380maxresident)k

trevnorris:node (throw-mc-fix) $ ^C
trevnorris:node (throw-mc-fix) $ \time ./out/node-latest /tmp/walk-async.js
212765
9.04user 3.06system 0:08.26elapsed 146%CPU (0avgtext+0avgdata 514980maxresident)k

As you can see, much different than yours.

Right, I have seen varying results even after restarts too.
I do like the statement that using async fs methods will prevent blocking code from executing if there are computational things happening per node. That is my reason for sticking with async for now.
Btw I find it interesting that Python seems to care about file traversal performance enough that they added a function for it (os.scandir): https://www.python.org/dev/peps/pep-0471/


Removing proprietary names

E.g., EconCycle.
Are we supposed to include proprietary names?

I feel this is ok, given that its a subclass of something more generic

It was originally observed at EBU3B UCSD like CRAC_EconCycle_On_Off_Status. It's even not even Equipment. We do not know what EconCycle means for now, so I will leave it until we clarify what it is. Please open this again if anyone would like to clarify this issue.


Add lock routes

This PR contributes towards Issue #3326.
This PR adds the following routes to the Admin API:

/admin/lock : GET returns the number of documents in the collection that have the lock.locked property set to true.
/admin/lock/:id : POST takes a brew ID and a JSON lock object; updates the identified brew with the properties of the lock object.
[NYI] /admin/lock/:id : DELETE takes a brew ID; removes the lock from the identified brew
/admin/lock/reviews : GET returns a collection of documents that has the lock.locked set to true and lock.reviewRequested exists.
/admin/lock/review/request/:id : PUT updates the identified brew's lock object with a reviewRequested property (current date/time). NON-ADMIN ROUTE
/admin/lock/review/remove/:id : PUT updates the identified brew's lock object to remove the reviewRequested property without removing the entire lock.

We could use two columns in the lock tab there

Still working on functionality, visibility will come next.

I believe that these latest changes have finished the first pass at functionality.
My thinking for the process is roughly as follows, at this stage I've used the DMCA Takedown Request as the example inciting action.

There's still a ton of debugging commands that will need to be removed, and some tuning of the actual lock data functions - I believe that I can probably just rewrite the queries to look for the existence of the lock object itself, rather than the lock.locked property.

On opening a locked brew for editing:

On clicking "REQUEST REVIEW":

On the new "LOCKS" tab of the Admin page:

Lock Count:

Clicking "REFRESH" causes the lock count function to run and update the total.

Brews Awaiting Review:

Clicking the button causes the locks with review function to run and update the table. Clicking a row in the table causes the Share ID to be copied to the clipboard (NYI: words explaining this on the page).

Lock Brew:

The four fields are required, attempting to submit a lock with an empty field results in the following:

The information on the right are suggested codes (from this Github comment and information about the messages

Unlock Brew:

Entering the Share ID of a locked brew and clicking the button results in the lock being removed from that brew, if one exists.

Clear Review Request

Entering the Share ID of a locked brew and clicking the button results in the review request being removed from a locked brew. Possibly this should also have an option to update the editMessage to advise the user why their changes are insufficient to have the lock completely removed.

Still need to implement some feedback from the Lock Brew method, to indicate success or failure. Otherwise I think most of the functionality is in a good place, although the styling could probably still use some improvement.

I feel like this is a place we need tests.

I'm afraid to report the number of locks doesn't seem to work for me.
Also, is lock review request supposed to work yet?
Lock removal works fine, and i could set another lock, but doesn't seem to block in share page any longer.

It should work - the change to homebrew.api:getBrew should throw an error on any locked brew, the only exception being a valid edit attempt, in which case the lock notification prompt should fire.
I've updated to the latest master, I'll have a look soon.

Looks like it's getting back 503 Service Unavailable errors, possibly related to DB request timeouts.
Might be a case of pushing locks to it's own collection, rather than adding to the homebrews collection.

Have in mind the main brew count function in admin returns always a 503, you might be reading that one as well. Better to disable that automatic query on page load for the moment.

The addition of indexes on the database have greatly increased the speed of the lock functions.

Well, with that, the lock count works, and i can see lock review requests.

[x] /admin/lock : GET returns the number of documents in the collection that have the lock.locked property set to true.
[ ] /admin/lock/:id : POST takes a brew ID and a JSON lock object; updates the identified brew with the properties of the lock object.
[ ] /admin/unlock/:id : PUT takes a brew ID; removes the lock from the identified brew
[ ] /admin/lock/reviews : GET returns a collection of documents that has the lock.locked set to true and lock.reviewRequested exists.
[ ] /admin/lock/review/request/:id : PUT updates the identified brew's lock object with a reviewRequested property (current date/time). NON-ADMIN ROUTE
[ ] /admin/lock/review/remove/:id : PUT updates the identified brew's lock object to remove the reviewRequested property without removing the entire lock.