OpenTelemetry metrics & Miner Index fix for document max-size limit & new deal-watcher

This PR includes multiple improvements:

The Miner Index was refactored, and new flags/envs can be tuned to: refresh the index on Powergate start, tune the level of parallelization to speed up rebuilding the index, and the frequency of index refresh.
Any go-datastore implementation is wrapped to a cusotmized go-ds-measure to publish Prometheus metrics of Get, Put, Query, Commit, and other usual operations of go-datastore. We forked the original repo to add Txn based metrics.
Opencensus was removed, and was replaced with Opentelemetry.
The miner index saving switched from being saved as a complete snapshot, to being saved per miner. This was to fix a limitation of MongoDB backed go-datastore not allowing to save documents bigger than 16MB.
A new DealWatcher component was created to provide an instant-based solution to detect deal state changes. The existing poll-style is kept because we aren't totally sure how reliable this new way is. In fact, this was done originally and we switched to poll-based since long-running websocket connections of go-jsonrpc for the Lotus client were unreliable. Keeping both allows to get the benefits of instant updating, but if for some reason that breaks, we still do polling once in a while. (Apart from trying to recover that broken watcher).

A new set of application metrics are exposed:

General metrics about the build:

Build date
Git summary
Git branch
Git commit
Datastore:
All mentioned operations of go-datastore latencies.

Deal watcher metrics:

How many deal updates we get from the chain
How many times the watcher got in bad health and had to be re-created. This helps to understand how reliable this new mechanism is.

Deal module:

A counter of how many deals are being actively tracked (in-progress)
Same as above but for retrievals
A counter of the number of finalized deals, tagged with success or error.
A counter of the number of bytes of finalized deals, tagged with success or error.

Cold-storage:

A gauge to understand the data pre-processing queue (deal size + CommP calculation), tagged with "waiting" and "in-progress". (Remember that we rate-limit by default to 2 "in-progress" since it's a heavy process to avoid killing the Lotus node)

Scheduler:

A counter to show the Jobs in final status, each tagged with "success", "failed", "canceled".
A gauge to show Jobs in "queued" and "executing" status.

Indices:

Ask and Miner index progress gauge. (0%/100%

Wallet module:

A counter of the number of created wallet addresses
A histogram of wallet transfer amounts.

I believe there's a lot of room to continue thinking if these are the right metrics or other ones that are useful to be gathered. The main point here was doing some kickoff and we can keep making some incremental improvements not that we have things wired.
Here's a quick screenshot of the Grafana dashboard. It has some rough edges, but we'll eventually also publish in Grafana dashboards:

While doing this work, some secondary repos were forked+edited and created:

https://github.com/textileio/go-ds-measure/: Forked from original and added txn related metrics.
https://github.com/textileio/go-metrics-opentelemetry: New repo that provides an implementation of http://github.com/ipfs/go-metrics-interface, which is the interface used in go-ds-measure (since it uses a generic interface for metrics collection).

Any go-datastore implementation is wrapped to a cusotmized go-ds-measure to publish Prometheus metrics of Get, Put, Query, Commit, and other usual operations of go-datastore. We forked the original repo to add Txn based metrics.

So good!
Curious if any of the refactoring here makes it easier to eventually add in some rolling averages stuff (textileio/textile#519).

Any go-datastore implementation is wrapped to a cusotmized go-ds-measure to publish Prometheus metrics of Get, Put, Query, Commit, and other usual operations of go-datastore. We forked the original repo to add Txn based metrics.

So good!
Curious if any of the refactoring here makes it easier to eventually add in some rolling averages stuff (textileio/textile#519).

The Hub Miner Index is built with mindexd daemon. This was done to allow the Hub to decide its own path on what the Hub Miner Index should look like. (Also, to gather deal-making information from all our hosted powergates, so it has more information than any powergate too. But this fact is unrelated to that feature).
That daemon is already querying Powergate on regular intervals about prices offered by miners, so it can already do further aggregations (being rolling averages, or other things) on its own. It would need to keep some short history of the last ask prices, and do more calculation on tops or similar.

Gotcha, that makes sense 👍🏻 (thanks!)


Fixes grammar and normalize path.

Checking sourceName equal to source.python should work for all Python-like grammars, such as langauage-python and MagicPython and any others.
Normalizing the file path using Atom's own fs-plus package allows users to specify ~ in their paths.

@lexicalunit these are great additions, thank you!!! It's people like you that make OpenSource worth it.


P2SH|P2WSH on change address only

A new inspection was created.

A new inspection was created.

The inspection completed: 5 new issues, 1 updated code elements

The inspection completed: 9 new issues, 1 updated code elements

A new inspection was created.

A new inspection was created.

A new inspection was created.

A new inspection was created.

A new inspection was created.

The inspection completed: 5 new issues, 1 updated code elements

The inspection completed: 1 updated code elements


Missing Functions to complete workflow

ConstructMultisigPayment only create a proposition it need after to be approved. This should be a function that Coinbase will need. It is also a more complex process that might not fit in their workflow from what I have seen.
Originally posted by @rllola in https://github.com/Zondax/rosetta-filecoin-lib/pull/5#discussion_r458166289

@qiwu7 I am still not sure if you will ever need support for approval, cancel, etc.

This was not the case. Closing for now.

This was not the case. Closing for now.


Why can't I add widgets to desktop?

Suggested new feature or improvement
Me and many others want to add these widgets to desktop. DUH. It's a no brainer. Are devs brainless these days? Wow. Just wow. No common sense? The point of widgets is add them to desktop so we don't have to open extra apps and have them always displayed. Is this rocket science? Wow. No one wants to install some weird app like "Dev Home" and only then inside of said app see widgets, that defeats the purpose of widgets, which is have them directly on the desktop to avoid opening more apps.
This is just dumb. I don't get it. Why would you not allow adding widgets to desktop? This way this app is totally useless and i will have to search for a 3rd party app that does what I need since you couldn't do your job properly.
Why are devs so bad in 2023? 10 years ago, hell, even 20 years ago we had the best programs on PC like Yahoo Messenger, MSN Messenger, fun, intuitive, amazing. Nothing like that exists today, only much inferior products. We went backwards even having more modern technology. You terminate all the best programs and only offer your users worse ones. Makes no sense.
The only explanation I can think of is devs are terrible nowadays and publishers as well.
Scenario
akjdfdh akdsfasd
Additional details
No response

What is this a forum? Lol. Thanks for proving my previous point right.
I chose the option in "Dev Home" useless app to send comments to devs, that's it, just trying to send them my feedback directly. I never wanted to create an account on some abusive reddit-like github or whatever, because I know these places like reddit are abusive, have immature censorship, don't respect free speech, like the ideology in Germany between 1941 and 1945. That's why I don't even bother anymore with forums without free speech.


proposal: path/filepath: add Resolve, replacing EvalSymlinks

This is a new proposal to replace #37113, which was closed for non-technical reasons.
Paraphrasing @rsc, the proposal is a new function in the path/filepath package:
// Resolve returns the path name as an absolute path that does not contain any symlinks.
// Resolve calls Clean on the result.
func Resolve(path string) string

The expectation is that on Unix systems this will be essentially filepath.Abs(filepath.EvalSymlinks(path)) and on Windows it will essentially acquire a handle for the path and call GetFinalPathNameByHandle.
Objections to this approach (in my own words, apologies if I misrepresent some position):

We should instead make EvalSymlinks work better on Windows, such that filepath.Abs(filepath.EvalSymlinks(path)) will suffice on both Unix and Windows systems.  This may involve changing EvalSymlinks to call GetFinalPathNameByHandle.  However, any such change to EvalSymlinks on Windows may break programs that currently work on Windows.
It will be tempting to think that the proposed Resolve function will return a canonical path, but it will not, neither on Unix nor Windows (on Unix it will not be canonical due to hard links and multiple mounts).  Therefore this function will mislead people into writing buggy programs.  In particular, os.SameFile can return true for two different paths returned by Resolve.

I have a couple of other reasons to vote against this proposal:

GetFinalPathNameByHandle has 4 different modes where it produces different "canonical pathnames". The previous proposal was originated from git-lfs so the author needed the Go function to do exactly what git happens to do (in fact, even on Linux, git calls realpath(3), which I think it should return mostly the same result as Abs(EvalSymlinks(path)), but if it doesn't, we're back to step one). I disagree that filepath.Resolve should have an implementation which is matched against what another project does; if somebody needs absolute compatibility with something else, they should probably reimplement it outside std.
Resolve and EvalSymlinks would basically be duplicates. It would be very hard to explain in the documentation why we need two similar functions, and it would confuse users. If Abs(EvalSymlinks(path)) on Windows is different from Resolve, we should document how and why, which would basically be an implementation detail with no real semantic meaning.

It would be very hard to explain in the documentation why we need two similar functions, and it would confuse users.

To me, this is probably the most important drawback of the proposal.

I can add to @rasky's comment that some modes do not produce any result, depending on the link type and mode used, e.g. see #39786.
I also have objections, which I have documented in #40180 and those objections carry over to this proposal for most part because EvalSymlinks is implemented with GetFinalPathNameByHandle. All links will be resolved using that for the implementation.
For these reasons I would like to see a proposal which allows application code to determine which links in a path get resolved, and for that to be ported to Unix instead of attempting to sort of port realpath(3) to Windows, such that go on Unix gains functionality that adheres to the objections listed in #40180, too.

We need a new API because EvalSymlinks is broken on Windows (how is described in #37113 & #40180), and cannot be fixed without breaking some existing callers. EvalSymlinks would be deprecated.
I agree with Eric that it's not correct to always resolve all symlinks in a path, but I also think we must rely on the WinApi to implement this on Windows. I don't see a way to do both. We should include in the Resolve docs Eric's suggestions from #40180 re best practices for handling paths not created by the application which resolves them.
As to the GetFinalPathNameByHandle mode, we'd use VOLUME_NAME_NT "Return the path with the volume device path" (since drive letters are mount points). This produces \\?\Device\device_name\path\file.ext (pls correct me if not).
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfinalpathnamebyhandlew
https://docs.microsoft.com/en-us/windows/win32/fileio/displaying-volume-paths

we must rely on the WinApi to implement this on Windows. I don't see a way to do both.

There are other ways besides GetFinalPathNameByHandle to resolve links, for example there is WNetGetUniversalName to translate paths with drive letters to UNC syntax. I'm sure research into the topic will yield similar API's for reparse points and the example above already hints at volume mount points. I don't think there are many other types of links at all, but I'm not sure.

This produces \\?\Device\device_name\path\file.ext (pls correct me if not).

I didn't get the prefix, but that doesn't mean they cannot appear. But such paths are useless or almost useless for applications, definitely without additional API's that accept such a path. Also the same file yields \Device\Mup\ComputerName\ShareName\file.ext when accessed over the SMB share \\ComputerName\ShareName, so it still doesn't canonicalize.

What code did you find that doesn't prepend \\? to \Device\...?
Are you saying that some WinApis can't accept paths starting \\?\Device? If not, why would they be useless?
I assume a Volume GUID prefix wouldn't be helpful since that differs on two hosts with otherwise identical configuration.
I think we've concluded that there's no such thing as a "canonical" path.

It would be very hard to explain in the documentation why we need two similar functions, and it would confuse users.

To me, this is probably the most important drawback of the proposal.

I note that this concern could be prevented if the proposal would also include a plan to eventually deprecate EvalSymlinks. I now notice that the issue title mentions "replacing EvalSymlinks", but there is no mention of "replacing" in the proposal text. @ianlancetaylor, can you please clarify this, by making the title and the description match one way or the other?

What code did you find that doesn't prepend \? to \Device...?
Are you saying that some WinApis can't accept paths starting \?\Device? If not, why would they be useless?

They are not filesystem paths in the first place. They work with the API's used in the example - volume management API's, perhaps they also work with other kernel API's that deal with devices or with namespaces, but you cannot use them with regular file system API's like Chdir and so forth. I ran the API and didn't get \\?\. I don't know whether they can ever appear.

I assume a Volume GUID prefix wouldn't be helpful since that differs on two hosts with otherwise identical configuration.

On GPT disks they are the unique identifier listed in the partition entry. They should be stable and unique unless we're talking about cloned disks. But there are paths for which asking for the volume GUID does not yield a result. The one case I am aware of is accessing files over SMB. I don't have a computer around that doesn't have/use UEFI/GPT and I haven't tested with external disks which are usually not GPT, or any disks formatted with the old school MBR partitioning scheme. If Windows offers a volume GUID at all, it'll be a constructed one which isn't unique and maybe not stable.

So are you suggesting VOLUME_NAME_GUID? It seems to me that VOLUME_NAME_DOS is more generally useful.

So are you suggesting VOLUME_NAME_GUID? It seems to me that VOLUME_NAME_DOS is more generally useful.

No, I agree with your previous statement.

I think we've concluded that there's no such thing as a "canonical" path.

None of the modes is guaranteed to not produce errors depending on the link type and none of them can be compared with each other. VOLUME_NAME_GUID is the most versatile on my GPT system, but still doesn't work for files on the network - not even if the host is localhost (I tested that).

Well if VOLUME_NAME_DOS returns an error, can't we fall back to VOLUME_NAME_GUID?

And if that returns an error too, we fall back to - what? WNetGetUniveralName?

Sure there will certainly be ways to make the implementation complex enough such that it can resolve any and all links that it can encounter. I would say write it down, see how it can be fitted in a universally useful API. I haven't seen anyone comment on how the Unix API's behave in the presence of Samba or other file systems - would be interesting to see a discussion about that. Whether to cater to the objections listed in #40180 is a mere choice imho. I am obviously in favour of doing that. Canonicalization will not be the end result either way however. Not on Windows.

Hm, can we use VOLUME_NAME_NT and either construct a \\?\UNC\... path for a network object, or look up the device to get a drive letter or volume GUID?
Again, we're not concerned with "canonical" names, there's no such thing.

I think it depends on the use case how links should be resolved. I get a different drive letter using VOLUME_NAME_DOS for some paths, for example. Drive letters are local to a session - or a desktop - such that already just if elevation is required for (part of) an app, they might in some situations first need to obtain a path without drive letter to be sure they can access the files their non-elevated copy refers to. Store apps can use this pattern of shipping a separate full-privilege executable which can do work that requires elevation, but they cannot themselves outright elevate and terminate the non-elevated copy like a desktop app can do. This is especially essential for SMB drive mappings. One more reason to make the API slightly less trivial in terms of formal declaration.

I don't think we'll get agreement here on a more sophisticated API, but feel free to suggest something. Otherwise...
Try VOLUME_NAME_GUID, then VOLUME_NAME_NT and construct UNC path.
If the app wants to separately lookup the volume GUID for a drive letter, so be it.

Well, without having done the research or testing for it, nor considering all situations where there might be different requirements for resolving links, I just make up these formal declarations as I go right now, with whatever names are descriptive, regardless of whether they are suitable or consistent:
type ShouldResolveFunc func(path string) bool/ResolveMode
func GetDeepestLinkPath(anyPath string): (string result, error err)
func ResolveExactLinkPath(exactLinkPath string, mode ResolveMode): (string result, error err)

These could be primitives upon which an easier API could be built, something like:
func Resolve(rootAtOrAboveNothingIsResolved, path string, mode ResolveMode, shouldResolve ShouldResolveFunc)

Obviously I just list stuff for which I am not sure where it should be declared everywhere it makes sense instead of making any choices. ResolveMode could be some enumeration of flags or discrete values, depending on what emerges as being required, at the very least with something resembling None which would be the default return value for ShouldResolveFunc if it doesn't return bool.
Can I count these as lines 62-65 of my lifetime go achievement?! Do they compile?!

No.

Can you add comments describing the behaviors of your API concept? And suggestions for implementing them on Windows?

It gets to be a bit wordy, but yeah, the world is a messy place. It doesn't give any ins and outs just yet even.
My earlier comment about performance applies here - strings don't carry (much) context or (any) proof of work done. Perhaps other types of arguments allow better performance and IDE's to help write code faster at the cost of (some) API 'complexity'. Types are good for both.
Suggestions for how to implement them are exact Windows API's to resolve links. FindFirstFile first of all to get the reparse point tag if any. I haven't done research into how to use that subsequently in the cases where this indicates the path is a symbolic link, junction, or other reparse point that should be supported for resolution here. If the path has a drive letter, GetDriveType would be needed, followed by API such as WNetGetUniversalame, GetVolumeNameForVolumeMountPoint, and similar functions for other types of links. The latter works for reparse points that are mounted folders and for mapping drive letters, volume paths or mounted folders to the volume path; the former yields the path in UNC syntax for paths that start with an SMB drive mapping.
The shouldResolve callback may use (new proposal) new public API to great effect that classifies links in a portable way but with enough detail that it can discriminate how to resolve them as well. What that looks like depends on how things work on *nix and how e.g. can be determined that a path refers to a remote file over SMB or in the cloud.
How precisely this all works would have to be written down in code and tested, preferably reviewed by Windows experts, before deciding what the API actually will exactly have to look like.

I would even say before it is actually included in any standard library, it'll have to be battle tested, especially the part that tries to summarize application scenario's for resolving links and makes the right choices for each of those.

The ShouldResolveFunc callback is an interesting idea! But I think the right place to prototype it is probably a more widely used language than Go (e.g. Python, Java, C#, C) where it would see more users and use cases, esp on Windows.
Re a simple filepath.Resolve API, what do you think of my last suggestion for VOLUME_NAME_x?

Good point about looking at other languages.
Python has os.path.realpath(path) (https://docs.python.org/2/library/os.path.html#os.path.realpath).
Java has os.File.getCanonicalPath() (https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath()).
C++ has std::filesystem::canonical (https://en.cppreference.com/w/cpp/filesystem/canonical).
What do those functions do on Windows?

I think those have ported from *nix, or in the case of C++ have taken POSIX semantics (hear say), without the considerations we are having here and will have the issues we identified.
Certainly the C++ version, which has been linked before, with the implementation actually here. It is pretty mangled code, but appears to use GetFinalPathNameByHandle and request VOLUME_NAME_DOS and if that fails VOLUME_NAME_NT, then strips both \\?\ and \\?\UNC\ prefixes and then adds the prefix \\?\GLOBALROOT if the result was obtained from VOLUME_NAME_DOS. I'm not exactly sure what the consequences are or what LR"(\\?\GLOBALROOT)"sv exactly does - correct me if I am wrong.

Re a simple filepath.Resolve API, what do you think of my last suggestion for VOLUME_NAME_x?

If any attempt at canonicalizing is deemed needed for code compatibility reasons, I would port this version of it. It won't work to canonicalize files accessed over SMB, nor will it yield afaik paths that can be used with other file system API's, but it might about always return some result that can at least be compared between local files and between remote files, but not the remote with the same file accessed locally.
PowerShell's Get-ChildItem aka dir shows link targets as well. It has the problem that it doesn't indicate in any way that hardlinks are links. The list in #40180 uses this to show what the result should be, but for hardlinks I believe I hardcoded it.

I think the right place to prototype it is probably a more widely used language than Go (e.g. Python, Java, C#, C)

Perhaps I would be able to create a C# version, even to propose such a thing to become part of .NET, which would be awesome because it'd have to be reviewed by Microsoft themselves. If such a proposal would be deemed useful or recommended to expose to the general public in the first place. And if it is accepted, the cadence is one release per year in November - it could take 1 or 2 years before they get to it.

Actually, it prepends \\?\GLOBALROOT to result of VOLUME_NAME_NT, and strips \\?\ otherwise, so the prefix is inconsistent. I guess long paths fail for *_NAME_DOS? From https://github.com/microsoft/STL/blob/master/stl/inc/filesystem#L3023
I believe we can yield a consistent, general-purpose result via \\?\GLOBALROOT\Device\device_name\path\file.ext -- which is most likely to be useful across hosts with identical configuration, unlike drive letters and volume GUIDs. An app can look up either of the latter from that value.
BTW hardlinks are not at issue here (but are one reason the term "canonical" isn't appropriate).

Yes, that is what I understood but didn't exactly write down. I understand it just prefers to return no prefix, but these are simple to add back. I don't think there are limitations, not with any of the flags, but maybe the caller has to know to include a prefix when necessary. We'd have to test that and see what happens.
I think it is pointless to try to make anything consistent across hosts. I don't know how device names are generated, but I'm sure \Device\HarddiskVolume15\Path\File.Ext isn't going to be more canonical than the volume GUID. Perhaps it doesn't persist across reboots, or it won't in certain ways configurations can change on a computer. The volume GUID path is globally unique for GPT partitions where this is an 128-bit Globally Unique ID (GUID) - only one host can (should be able to) mount a single volume. As far as I can tell, all disks will have a volume GUID, which may have been constructed from the simple 32- or 64-bit volume ID - same as what is used for SameFile - and just as what is documented for SameFile, it works for files accessed over SMB but remote files won't be guaranteed to be unique from local files if the volume ID is the same, hence in that case some way would be needed to uniquely identify the remote host, or the choice has to be to have 'optimistic uniqueness' and leave it to the caller to be more pesky about that.

(very meta)
Folks, I think there is a bit of irony? is hiding there somewhere - you are discussing things about internals of Microsoft's software on platform that belongs to Microsoft. Why won't we ask someone from Microsoft? Would it be possible to tag some @microsoft folks to pipe in? Like, I don't know, @markrussinovich who might know a bit about Windows internals, or @oldnewthing what "canonical" might mean on Windows and what is the best way to go forward? (Sorry Mark and Raymond, your names came first to my mind - if you know anyone who might help please direct them here.)

cc @jstarks who often comments here...

Eric, I believe the device name is configurable, and it would be ideal to get the same result for Resolve() when you move an application to a mirror or failover host with identical configuration. At the very least the device name is more readable than the volume GUID, and potentially more meaningful.
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setvolumelabela

To use \\?\ as a path prefix I think (but I might be wrong) an executable needs to pack a manifest file to indicate that it can handle long paths.
(Re: https://github.com/golang/go/issues/17835)

Well the STL strips it. It means 'do not parse' which means most API's shouldn't perform normalization or use forward slashes etc - which go is adept at ignoring, but it is what it is defined to mean. So unless the prefix is required it is prudent to remove them, such that a) go flakes less often and b) paths will be processed more smoothly and look nicer.

Eric, I believe

I just don't know. I would prefer volume GUID paths, technically and esthetically.
Wrt involving Microsoft... YEAH. Hire them if that's what it takes. Lots of work to be done.

Maybe of some help - https://github.com/golang/go/blob/master/src/os/path_windows.go#L131 has a very interesting function fixLongPath (that I had to reexport for our code using //go:linkname trickery...) that is kind of trying to do some (minor) long path normalization.

Eric and I looked at the MS C++ STL canonical() implementation, and he ran tests for a variety of paths with each of the VOLUME_NAME_* options. I expect he'll post them below.
We agree that returning a path starting with a drive letter isn't at all "canonical" as a storage volume may not be mapped to one, and if it is, that can change anytime. The other options are...

a volume GUID \\?\Volume{...}\path\... (not applicable to SMB paths)
a UNC path \\?\UNC\host\path\... (only applicable to SMB paths)
an NT device name \\?\GLOBALROOT\Device\device_name\path\... (applicable to anything)

Eric and I agree that the Volume GUID is the most "canonical" for resources that have one, and that a UNC path should be returned otherwise. The implementation entails first trying GetFinalPathNameByHandle with VOLUME_NAME_GUID, and if that fails with ERROR_PATH_NOT_FOUND (which it does for SMB paths), trying again with VOLUME_NAME_DOS.
He has also discovered that some path/filepath APIs choke on paths prefixed with \\?\ so the above results are incompatible with them, but that is a bug that should be resolved separately. That's not a problem with the os APIs.

He has also discovered that some path/filepath APIs choke on paths prefixed with \?\ so the above results are incompatible with them, but that is a bug that should be resolved separately. That's not a problem with the os APIs.

I'm happy to try to fix them, please ping me on that.

GetFinalPathNameByHandle modes
Resuls for plain calls to CreateFile to get a file handle (using OPEN_EXISTING and FILE_FLAG_BACKUP_SEMANTICS), then GetFinalPathNameByHandle using the flag specified in the tables below, without any processing before or after. FILE_NAME_NORMALIZED is implicit (0x0), i.e. not specifying FILE_NAME_OPENED (0x8) as this also shows - casing is consistency fixed against the names on disks or conventions for paths (uppercase drive letters).

S:\ - when present - is the drive letter assigned to \\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\
M:\ is the root of a volume on a virtual disk initialized with the MBR partitioning scheme (note the zeroes in the volume GUID).
N:\ is a mapping to SMB share \\Z68\UncShare which shares \\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\Source
(sharing S:\Source obviously doesn't work after I remove that mapping)

First without having a drive letter mounted to \\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\.

C:\Users\Eric\Source is a directory junction to \\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\Source

Path
Flag
Result

n:\SOURCE.ICO
VOLUME_NAME_DOS
\\?\UNC\Z68\UncShare\Source.ico

n:\SOURCE.ICO
VOLUME_NAME_GUID
The system cannot find the path specified. (0x80070003)

n:\SOURCE.ICO
VOLUME_NAME_NONE
\Z68\UncShare\Source.ico

n:\SOURCE.ICO
VOLUME_NAME_NT
\Device\Mup\Z68\UncShare\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_DOS
The system cannot find the path specified. (0x80070003)

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_GUID
\\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_NONE
\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_NT
\Device\HarddiskVolume15\Source\Source.ico

m:\PATH\FILE.EXT
VOLUME_NAME_DOS
\\?\M:\path\file.ext

m:\PATH\FILE.EXT
VOLUME_NAME_GUID
\\?\Volume{ac96f27a-0000-0000-0000-010000000000}\path\file.ext

m:\PATH\FILE.EXT
VOLUME_NAME_NONE
\path\file.ext

m:\PATH\FILE.EXT
VOLUME_NAME_NT
\Device\HarddiskVolume21\path\file.ext

Now I add S:\ to the volume.

Path
Flag
Result

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_DOS
\\?\S:\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_GUID
\\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_NONE
\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE.ICO
VOLUME_NAME_NT
\Device\HarddiskVolume15\Source\Source.ico

Using a mounted folder instead of a junction.

C:\Users\Eric\Source is a mounted folder to \\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\
Note the additional \SOURCE segment I now need since the mounted folder points to the root of the volume, not to the Source folder in the root of it.

Path
Flag
Result

c:\USERS\ERIC\SOURCE\SOURCE\SOURCE.ICO
VOLUME_NAME_DOS
\\?\C:\Users\Eric\Source\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE\SOURCE.ICO
VOLUME_NAME_GUID
\\?\Volume{607932d3-78af-41c0-9786-dd0177e78a39}\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE\SOURCE.ICO
VOLUME_NAME_NONE
\Source\Source.ico

c:\USERS\ERIC\SOURCE\SOURCE\SOURCE.ICO
VOLUME_NAME_NT
\Device\HarddiskVolume15\Source\Source.ico

A summary of our analysis in addition to @networkimprov's comment above and the list of results for each mode:

C++ canonicalize prefixes the NT device name with \\?\GLOBALROOT which counts as DOS to NT namespace prefix, such that the result is usable in place of normal file paths.
C++ canonicalize removes prefixes when they are not systematically required, unconditionally, so even for long paths that might usually need them and for paths that contain special or even invalid names that cannot work without prefix. That is, UNC paths are returned in UNC notation with just \\ before the server name and any DOS paths are returned without prefix.
Both Rust and some version of the Java OpenJDK use VOLUME_NAME_DOS only and unconditionally and perform no processing at all, so they introduce prefixes even for paths with drive letters that are short enough not to need them and will return only errors for a whole variety of paths.
Volume GUID's and paths count as familiar albeit lengthy and badly memoizable (but I find them recognizable), whereas NT device paths are considered alien and impractical to translate.
Volume GUID's are persisted on GPT volumes and hence independent of system configuration, whereas NT device names are not. Volume GUIDs are stable on multiboot systems, across normal Windows installations, Windows RE and Windows PE, or when disks travel between systems.
I tested whether volume GUID's are persistent with MBR disk M:\; two systems show the same volume GUID for the partition.
#42202 is about functionality with which applications can determine that path A and B are actually guaranteed to refer to the same thing if either one is a local path and the other a remote SMB path and the server name can be established to refer to the local system, or both are remote SMB paths and the server name matches, or the differing names can be established to refer to the same SMB server through other means.

Canonicalization will work just fine for files on the local machine and links pointing at the local machine, but for remote paths, there is as far as I have been able to determine, no way around getting just errors trying to translate paths that contain links. The only ways around this are:

Not translating remote paths any further if GetFinalPathNameByHandle returns errors.
Running an application service on the remote machine and talking to it to canonicalize paths local to it.
Running elevated and against a remote machine that has remote management enabled and use that to canonicalize paths.

In both latter cases, canonicalization will not yield a path usable with normal file API, but must either have a syntax that includes the machine name but also a volume GUID, or be a pair of values - a path and a machine name or even some unique, canonical machine identifier.
Since this conclusion is largely based on behavior of SMB, I don't think this is unique to Windows, but similar problems as described will also affect other operating systems that use SMB, or other remote file systems that are designed similarly.
Symlink evaluation policy
There is a global system policy in Windows called SymlinkEvaluation, described in fair detail in this StackOverflow question, which defaults to the following settings:
$P$G> fsutil behavior query SymlinkEvaluation
Local to local symbolic links are enabled.
Local to remote symbolic links are enabled.
Remote to local symbolic links are disabled.
Remote to remote symbolic links are disabled.

This means that for paths that resolve to a UNC location on a remote machine that contain links declared on the remote machine, GetFinalPathNameByHandle will return:

The symbolic link cannot be followed because its type is disabled. (0x800705B7)

I have found no mention of any way in which this policy can be circumvented by a particular process. The global policy should not be modified by any individual application, since that might break other apps. Good citizenship even mandates adhering to it. Even enabling the policy for all link types still doesn't quite offer canonicalization. Links might still not resolve with access denied or path not found, depending on the path declared as target in the reparse point:

a file or a directory and
a relative path or an absolute path which is
rooted at a drive letter, a volume GUID or a UNC location,
the latter of which might again be local or remote to the machine resolving the links.

Going around the Symlink evaluation policy
The only way around this policy as far as I know is to use DeviceIoControl with the control code FSCTL_GET_REPARSE_POINT, at least if the SMB server runs on Windows. But this returns remote paths as declared in the reparse point, meaning that they could be local, rooted paths with e.g. drive letters which are valid only for use on the remote machine.
This is one of the bugs with EvalSymlinks and is documented in #40180. It may return paths obtained with FSCTL_GET_REPARSE_POINT as if they are proper local paths, not even checking whether the reparse point is on a remote machine. EvalSymlinks should be broken further in order to not just adhere to the default SymlinkEvaluation policy, but to refuse to translate these paths either way because it forgets that they are not from the local machine. Hence, implementing the proposed API using FSCTL_GET_REPARSE_POINT must then return a result that may be canonical, but not usable with normal file API. Then Resolve is a really confusing name.
As far as I know, SMB does not provide a way to translate local paths on a remote machine to volume GUID's or to expose whether or not and which share on the remote machine might host the translated path. Obviously, such a translated path could not have been shared over SMB at all and be inaccessible completely from a remote machine, except through the path that was translated. I don't think this is any different on *nix with SMB. I have no idea whether alternatives like NFS are designed any different.
SMB server and share names are not normalized
Also, SMB server and share names are never normalized, but returned as opened (if present in the requested path), or in some random casing which appears to be stable but does not match the conventions for computer names (uppercase for NetBIOS names, lowercase for DNS) or the share name as it was defined on the remote machine (if the requested path is a drive mapping, for example), even if the FILE_NAME_OPENED flag is not specified in the call to GetFinalPathNameByHandle.

It seems like we are not really headed for a consensus. Maybe this would be better to do in an external package to start?

It seems clear there is no consensus here. This seems like a likely decline.

Let's put this on hold, as more ppl are likely to raise this, and the only answer at present is, "Sorry, filepath.EvalSymlinks is broken beyond repair on Windows; call it on unix, but call x/sys/windows.GetFinalPathNameByHandle on windows"

Yes, for local files. Combine that with #42202 for remote files. The hard part is determining IsSameSmbServer (non-existent API) in that case and figuring out which of the problems described in this thread also affect *nix and/or other remote file systems like NFS.

No change in consensus, so declined.


vscode.env.openExternal handles plus sign incorrectly

Issue Type: Bug
problem summary
I want to open a url with parameters including plus sign. But after the web is opened, plus sign is missing.
Reproduce steps:

in your browser, paste "https://www.google.com/search?q=1+%2B+1+<+3" into the address bar, press 'enter'. This should open Google and it searches "1 + 1 < 3" in the search bar.
in a webview of extension, addvscode.env.openExternal(vscode.Uri.parse("https://www.google.com/search?q=1+%2B+1+%3C+3"))

and run this code.
Expected:
When the code is executed, google is opened and "1 + 1 < 3" in the search bar.
Actual result:
Google is open but "1   1 < 3" in the search bar.
VS Code version: 1.50.2021051101
OS version: macOS Big Sur version 11.3.1 (20E241)

Our work is blocked by this issue and many users complain about it.
What I found is:  the vscode.Uri.parse(url) will convert all space to "+".  And vscode.env.openExternal() will interpret all "+" as space. So the real "+" will also be interpreted as a space.

@jrieken I investigated this but don't know how to fix it without potentially causing other regressions.
At first I thought extensions may be able to workaround this issue using Uri.from:
        const x = vscode.Uri.parse("https://www.google.com/search").with({ query: 'q=1+%2B+1+%3C+3' });

But this results in us opening https://www.google.com/search?q=1+%252B+1+%253C+3 (which is the query 1 %2B 1 %3C 3 on google)
Here's where the incorrect double encoding takes places:
https://github.com/microsoft/vscode/blob/a6f7aa5e4c5832c3d788ab9a8146ac69a6e5a77f/src/vs/editor/browser/services/openerService.ts#L228
This may fall under #85930. We could also consider allowing extensions call openExternal with a string that we don't try to modify

/duplicate of https://github.com/microsoft/vscode/issues/85930


undefined 'host' key when listing stats

I found this error again when the referer is not either null or empty but a not well-formed URL. I found some malicious code in the rerefer column of the canvas_views table which triggered this error. Provably, in the first place, we should avoid writing that code to the database. However, I will file a PR to avoid getting the host of a not well-formed URL.

This is it https://github.com/cnvs/canvas/pull/546

Fixed with https://github.com/cnvs/canvas/commit/1b3ad47c671d53bc18222d59a62266c3bcb57d00


Project references with path aliases

TypeScript Version<EMAIL_ADDRESS>Search Terms: TS2307 Project reference alias paths Cannot find module.
Code https://github.com/DataTables/project-references-demo .
The repo is cloned from https://github.com/RyanCavanaugh/project-references-demo and slightly modified to demonstrate the issue. It appears to be related to the fact that I am storing my source files in a src sub-directory for each component and using a path alias to reference between them. Running:
npm install
node node_modules/typescript/bin/tsc -p animals --traceResolution

Produces output that includes:
======== Resolving module '@core/utilities' from '/home/allan/Downloads/project-references-demo-master/animals/src/dog.ts'. ========
Explicitly specified module resolution kind: 'NodeJs'.
'baseUrl' option is set to '/home/allan/Downloads/project-references-demo-master/', using this value to resolve non-relative module name '@core/utilities'.
'paths' option is specified, looking for a pattern to match module name '@core/utilities'.
Module name '@core/utilities', matched pattern '@core/*'.
Trying substitution 'core/src/*', candidate module location: 'core/src/utilities'.
Loading module as file / folder, candidate module location '/home/allan/Downloads/project-references-demo-master/core/src/utilities', target file type 'TypeScript'.
File '/home/allan/Downloads/project-references-demo-master/core/src/utilities.ts' exist - use it as a name resolution result.

indicating that the file was correctly resolved. However, I get:
animals/src/dog.ts:2:32 - error TS2307: Cannot find module '@core/utilities'.

2 import { makeRandomName } from '@core/utilities'

from tsc. The reason I've filed this as a bug is that the two don't appear to align - it is correctly resolved, but then tsc says it can't be found.
Expected behavior:
No error. The aliased module is imported.
Actual behavior:
The TS2307 error is given. VS Code also shows the same error.
Related Issues:
#26823 Seems very similar, but there the module resolver does not resolve. Here it does, but it still ultimately showing as cannot be found.
#26819 might be related, but I'm not sure and the suggested resolution there doesn't work.

This is working as intended since core is not built as per your steps, because you aren't building using --build
tsc --build works correctly by first building core and then animals and thus making sure dependency is built and when module resolution matches to core/src/utilities.ts the corresponding output file is present. (you are getting error in your repro because the output file for core/src/utilities.ts does not exist)
May be we should give better error message here.
cc @DanielRosenwasser @RyanCavanaugh

Argh - thank you! Yup - completely user error. I even read that part of the documentation which said that it needs the dependencies to be built first, but I got myself all confused.
I'll leave open for you to decide what to do with this (error messages or not).


Resolve failing imports by moving classes #1218

Move from oeo-physical to oeo-shared:

portion of matter
origin

Part of #1218

As the next OEO dev meeting is only on 30/6, I suggest that we move now only these two classes.


Transfer of points to nearest frames

@hehefan
Can you please explain what does transfer of points to nearest frames mean?
how are they transferred? (I understand those anchor points are picked using Farthest point sampling)

Thanks in Advance.

Hi,
Anchor points are picked using Farthest point sampling from anchor frames and then transferred (copied) to the nearest frames.

@hehefan
Thanks for your reply.
Can you please elaborate a little more?
When we do Farthest Point Sampling (FPS) on anchor frames we know the indices in the array of 3D points.
Since points are unordered, how would copying to the nearest frames would help get FPSs points in those nearest frames?
or
By copying how do we know where the points are actually in 3D? (they could be anywhere in the next frame because they are unordered)
Thanks in advance.

Hi @sheshap,
The method is point-based. Point coordinates are always maintained and used for position. When transferring a point to the nearest frames, both the point coordinate and feature are copied.


About inputs to ModelNet

Hi,
Thanks for your great job! I have a question on the inputs to ModelNet. In the paper, you mentioned that for ModelNet, the input is 10k points without color. But in the code, the self.use_color = config.dataset.use_color in ModelNetTest is set to True, according to the config file. I wonder if it is a mistake or if I miss something. Thanks for your time!
Best,

Yes, we set use_color to True in config in order to unify the network input (6xn). The color of ModelNet shapes are set to a constant of 0.4.


Reference to Lottie.Android

Describe the bug
When trying to compile project an error appear:
Severity	Code	Description	Project	File	Line	Suppression State
Error		Can not resolve reference: Lottie.Android, referenced by XF.Material.Droid. Please add a NuGet package or assembly reference for Lottie.Android, or remove the reference to XF.Material.Droid.
I already referenced Com.Airbnb.Xamarin.Forms.Lottie and the error constinues.
To Reproduce
Compile project with XF-Material-Library added

Desktop (please complete the following information):

OS: android xamarin forms

Hi, maybe there are conflicting package referenced by other nuget packages that is lower than the version of the references of XF.Material library?
Is the error above from the nuget package manager?
Can you also provide the versions of each nuget packages that you used in the Android project, so I can cross-reference them and see if there are any conflicting references.

Hi, maybe there are conflicting package referenced by other nuget packages that is lower than the version of the references of XF.Material library?
Is the error above from the nuget package manager?
Can you also provide the versions of each nuget packages that you used in the Android project, so I can cross-reference them and see if there are any conflicting references.

Many thanks for your reply, here is my android.csproj file, which contains all references and respective versions:

Debug
AnyCPU
{24CE3C36-16B9-426D-AA0C-5961ECF8D88C}
{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
{9AA2D3C6-3393-45F1-8E7C-5A9901728795}
Library
CAVCMobU.Droid
CAVCMobU.Android
True
Resources\Resource.designer.cs
Resource
Properties\AndroidManifest.xml
Resources
Assets
false
v7.1
Xamarin.Android.Net.AndroidClientHandler

true
portable
false
bin\Debug
DEBUG;
prompt
4
None

true
pdbonly
true
bin\Release
prompt
4
true
false

7.0.1

2.6.3

11.0.2

<IP_ADDRESS>

1.5.231

3.2.0

<IP_ADDRESS>

1.1.1

{67f9d3a8-f71e-4428-913f-c37ae82cdb24}
Utils

{AC0CAD39-C91A-4083-89C7-4ADDA73754BC}
CAVCMobU

try to update your Xamarin.Android.Support.* packages to 27.0.2.* and see if it fixes the issue. Com.Airbnb.Xamarin.Forms.Lottie version 2.5.4 or above requires Xamarin.Android.Support.* at least 27.0.2.*. It turns out I have inconsistencies to the required referenced Nuget packages in my nuspec file.

Many thanks, that was it! I can compile now.


Support PHP 7.2

Implements #23.

I've changed config to test PHP 7.2 only on latest PHPUnit until we support PHP 5.


Cocoon 500 errors generated due to calls from unsupported repository

Type of Request
bug
Infrastructure Environment
Cocoon
What is happening?
We are triggering the "High rate of 500 http .status" alert due to errors being caused by requests from the flutter/assets-for-api-docs repo.
We do not support this repository for luci builds.
Likely we need to filter out unsupported repositories when making these calls.
See log for further details.
Steps to reproduce
No response
Expected results
No response

Need to disable these webhook calls on the github side since they are not relevant for this repo.

flutter/assets-for-api-docs got removed from the flutter-dashboard app.


Add Security policy

If someone finds some security vulnerability, how can they report? It would be nice to have short steps on a Security policy for this repository.

Check with the open source team what the usual practice is for the open source repositories; we should follow existing practice on this I think.


Added get option to pyez_scp plugin

The pyez_scp task plugin only supports the put operation and not getting a file from the device. An extra parameter has been added to the plugin and docs have been updated to reflect this.

Tested against vMX device running 20.2R3-S3.6 code


Added additional section and update previous section

Added an additional section for complex ternary operations and updated previous section to have csharp flavored code rendering.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Absolutely! I'll make the changes and re-commit. Thanks, Paul!

@marcusparsons Thank you for this contribution!


can't install python3.8 carla package on ubuntu 20.04 container

Problem you have experienced:
Not possible to install carla python package for python3.8 on docker container
What you expected to happen:
installation should work with: pip install carla
CARLA version: 9.12
Platform/OS: Ubuntu 20.04.3 LTS -> docker container -> ros:foxy-ros-base   IMAGE ID: 62ee1d4d17a9
docker run --name ros-bridge-container  -it ros:foxy-ros-base /bin/bash
Inside container
$user@ros-bridge-container: lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal

python version:
$user@ros-bridge-container:  python --version
Python 3.8.10
$user@ros-bridge-container: pip --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Steps to reproduce:
I do not understand why pip tries to download 0.9.5 and not 0.9.12 or 13
$user@ros-bridge-container: pip install carla
Collecting carla
  Using cached carla-0.9.5.tar.gz (3.9 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ves_t_7m/carla/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ves_t_7m/carla/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-ves_t_7m/carla/pip-egg-info
         cwd: /tmp/pip-install-ves_t_7m/carla/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-ves_t_7m/carla/setup.py", line 114, in <module>
        ext_modules=get_libcarla_extensions(),
      File "/tmp/pip-install-ves_t_7m/carla/setup.py", line 31, in get_libcarla_extensions
        linux_distro = platform.dist()[0]  # pylint: disable=W1505
    AttributeError: module 'platform' has no attribute 'dist'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Other information (documentation you consulted, workarounds you tried):
I've also downloaded wheel directly and tried:
$user@ros-bridge-container: pip install carla-0.9.12-cp38-cp38-manylinux_2_27_x86_64.whl
ERROR: carla-0.9.12-cp38-cp38-manylinux_2_27_x86_64.whl is not a supported wheel on this platform.

From host pc (linux ubuntu 20.04) installing carla is no problem:
k@os: pip show carla
Name: carla
Version: 0.9.13
Summary: Python API for communicating with the CARLA server.
Home-page: https://github.com/carla-simulator/carla
Author: The CARLA team
Author-email<EMAIL_ADDRESS>License: MIT License
Location: /home/ROS/carla/venv/lib/python3.8/site-packages
Requires:
Required-by:

Hi @PinkJohnOfUs,
You require pip version 20.3 or above to install the CARLA Python package. You can upgrade pip in the following way:
pip install --upgrade pip

If you want to install the python package for CARLA 0.9.12, you should specify the version (currently, the latest version of CARLA is 0.9.13):
pip install carla==0.9.12

Thank you that solved my issue.
For all who do have the same problem with ros:foxy-ros-base
you should do pip upgrade within dockerfile,  it wasn't possible for me to upgrade pip within running container.

pip install carla==0.9.12

ERROR: Could not find a version that satisfies the requirement carla==0.9.12 (from versions: 0.9.5)
ERROR: No matching distribution found for carla==0.9.12

pip install carla==0.9.12

ERROR: Could not find a version that satisfies the requirement carla==0.9.12 (from versions: 0.9.5)
ERROR: No matching distribution found for carla==0.9.12

I have the same problem. Have you got a solution yet?

I have the same version of ubuntu and python, and the error message. I solved it by this:
sudo apt install python=3.7
sudo gedit ~/.bashrc
Add this in the last line: alias python3='/usr/bin/python3.7'
source ~/.bashrc
Then try
pip install carla

Any fixes available for installing carla with python=3.8, in ubuntu 20.4 ?
Appreciate any response.


3D visualization

Support 3D visualization for points, temporarily disabled.

Hi @LucaMarconato, could you give some context here as to why it was disabled?

I disabled it because the 3D support at that time was not ready at the transformations level (but now it is). So it would be worth reenabling it and testing it.


removed forceDisableDonationPrompts checks, fixes #81

Sodium made changes to its donation buttons in order to prevent 'certain mod packs from shafting' them.
https://github.com/CaffeineMC/sodium-fabric/commit/94794ce
Removed the checks related to these, no longer crashes.
Fixes #81 , #80

LGTM!


Maze Puzzle Implementation

Due Date
February Monday, 5th 2024
Priority
High
Description
Implement the maze puzzle in unity
Associated Requirement*
P1-P7

Completed in commit id: 48cbb36803731c23b09b1658fa849d31bf677d5b


Downloading stash for Hardcore, details logged to DebugInfo.log, please open a ticket at https://github.com/Stickymaddness/Procurement/issues

I need to see what's in your debuginfo.log or I can't help

Procurement 1.9.8 has been released, please retest and open a new issue if you still have problems
https://github.com/Stickymaddness/Procurement/releases/tag/1.9.8


Add support to create multiple subvolume groups

in https://github.com/ceph/ceph-csi/pull/931 we have added support to have subvolumegroup configurable(which means we can have more than one subvolume group in cephcsi). with the current code base the subvolumegroup will be created once ie https://github.com/ceph/ceph-csi/blob/44da7ffb4e4d8861265f3ecd421cd06dfce9f34a/internal/cephfs/volume.go#L90 we need to make changes to support the creation of multiple subvolumegroups.

@Yuggupta27 would you like to give a  try for this one, I can help you out if you need anything

@Yuggupta27 would you like to give a try for this one, I can help you out if you need anything

Sure. Please Assign.

Something to think about would be, when a subvolumegroup and the cephx credentials for the same are pre-created, to restrict access just to that subvolume group, would the called out function still work?
IOW, we started out with creating the subvolume group in CSI, but it may so happen that for security reasons, these are pre-created and the credentials for CSI are restricted to this subvolumegroup. In such cases, it would help to understand if the create command above still works, or would error out.

we need to check what if the subvolume is already created, and the csi user doesn't have the permission to create it, how we can check this if the create subvolume group fails in this case and on what basis we need to continue with creating subvolumes etc.
we need to create a user who is having access to create subvolume, not the subvolume group and test this out,  the caps can be found in this comment https://github.com/ceph/ceph-csi/pull/437#issuecomment-511460712 need to modify the path according to our requirement.
can we have a user who is not having any read and write permission or only read permission to subvolume groups. if someone can provide the caps it would be useful to test it out.
cc @ShyamsundarR @kotreshhr @joscollin

can we have a user who is not having any read and write permission or only read permission to subvolume groups.

There is a --mode parameter for subvolumegroup create command.
From your description, I don't quiet understand what you are trying to achieve.

can we have a user who is not having any read and write permission or only read permission to subvolume groups.

There is a --mode parameter for subvolumegroup create command.
From your description, I don't quiet understand what you are trying to achieve.

Pasting from #437 on caps required to work with a subvolume group,
The auth IDs capabilities would be,

caps mon = "allow r"
caps mgr = "allow rw"
caps mds = "allow rw path=/volumes/csi"
caps osd = "allow rw tag cephfs data=cephfs "

assuming the ceph volume/filesystem name is cephfs.

I would assume as long as rw caps are provided for caps mds = "allow rw path=/volumes/csi" a ceph fs subvolumegroup create cephfs csi would return a success and is idempotent (this is how ceph-csi works at present)
The question is,

Can subvolume lifecycle operations work if caps are instead only "r" for the subvolumegroup, like so caps mds = "allow r path=/volumes/csi", with any additional caps for subvolume lifecycle operations within the subvolumegroup?
If the above is true then invoking ceph fs subvolumegroup create cephfs csi would most probably return an error as "w" caps are not provided for the subvolumegroup itself

The use-case for subvolumegroup to be redable only would be where, a tenant kubernetes cluster should not be able to modify the subvolumegroups quota or attributes, where the cephfs instance is shared across multiple such tenants, and hence break tenant allocated limits or attributes.


[Execute] Register SimulatorDevice with Toolchain information

This commit registers SimulatorDevice with Toolchain information.
It does not add device according to the DeviceSpec. All devices are
added to the DeviceManager directly.
ONE-vscode-DCO-1.0-Signed-off-by: Jiyoung Yun<EMAIL_ADDRESS>wait for #1660

This PR changes the Device view UI. It does not use HostPC parent node. Instead, it adds the device item directly to the local parent node. Other docker or target devices are also added directly to the local node.


Data production tools

This change is

Coverage decreased (-0.1%) to 74.486% when pulling 96f0ddcead63fc53ffb94db05f56cc926cce7a38 on data-production-tools into 455f9ff0b06b76bcb64c2fb2835207ab50135323 on master.


how i can wget v075 or v050 posenet?

when i use wget .py ,i can getposenet/mobilenet_v1_100/
but i want the version posenet/mobilenet_v1_075/ ,so i modified the wget.py .but i can not the download the MobilenetV1_partheat_1_biases , maybe the manifest.json need to modify too.
pls u give me the manifest.json of the v1_075 or v1_050 ,thank u very much.my email is<EMAIL_ADDRESS>

Hi.
Modified model v1_075.
I have not checked v1_050 yet but it probably works.
Thank.
commit: https://github.com/infocom-tpo/PoseNet-CoreML/commit/145e175175cc2b599827b5812869bacdc839288e

thank u ! i get it


Fix layout of LoginScreen for iPhone X.

This layout issue breaks the UI guideline for iPhone X.

I just wrapped the whole screen in a SafeAreaView.

B.T.W. How can I get a referral code?

Thanks for the PR, we'll take a look. In the meantime, I've emailed you a referral code :)

@asutula seems like a good one, what do you think?

Yea looks great.


LYWSD03MMC not updated after 60 sec

after turning on the air conditioner the room temperature dropped quickly by 2 degrees in 30 minutes but the sensor remained at the initial temperature.  Isn't it updated every 60 seconds?
Thanks

after turning on the air conditioner the room temperature dropped quickly by 2 degrees in 30 minutes but the sensor remained at the initial temperature. Isn't it updated every 60 seconds?
Thanks

Ok maybe the problem was a Bluetooth conflict problem because I leave open the mi home app with Bluetooth active. After closing app the sensor start to update every 4/5 minutes.


Make sure emails are being properly (en|de)-coded

E.g. emails like<EMAIL_ADDRESS>

It works out of the box.


Use az vmss update should support --custom-data

Related command

az vmss update
Is your feature request related to a problem? Please describe.

Once the Az Linux Vmss has been created, I want to update the cloud-init script, but now az vmss update not support.
Describe the solution you'd like

az vmss update should be support --custom-data same as az vmss create
Describe alternatives you've considered

N/A
Additional context

N/A

Thank you for opening this issue, we will look into it.


Add atlassian bitbucket chart

Is this a request for help?:
Yes
Is this a BUG REPORT or FEATURE REQUEST? (choose one):
FEATURE REQUEST
Anything else we need to know:
I want to suggest add atlassian bitbucket chart to helm repo. It might be useful for containerized deployments of BB and for all who're using it.

Yes it will be very helpfull


Re-structure VPN tracker db table

Task/Issue URL: https://app.asana.com/0/488551667048375/1203195823975934/f
Description
Change the vpn_tracker schema so that we don't need one entry per tracking attempt.
This should:

improve DB access performance
fix some bugs when we have more than 10,000 tracking attempts

Steps to test this PR
Test DB migration

[ ] install from develop
[ ] enable AppTP
[ ] open several apps that track
[ ] (alternatively you can follow the instructions down below to create tracking attempts)
[ ] In the vpn_tracker db table in vpn.db, modify the day part of the timestamp in some of the tracking attempts (eg. 1,2,3,4 days ago) so that the DB is more representative
[ ] (alternative/in addition you can change the termux script to go from 1..1000 to create more than 10,000 tracking attempts)
[ ] update from this branch
[ ] launch app and enable AppTP
[ ] ensure app doesn't crash (migration is done correctly)
[ ] open AppTP activity screen and ensure all counters are correct, ie. past 7 days general counter, recent activity counters
[ ] open AppTP "view all recent activity" and ensure all counters are correct–for this you may need to have tracking attempts from more than 5 apps and/or different days
[ ] open some apps that generate new tracking attempts or do so with Termux
[ ] verify AppTP accounts tracking attempts correctly

How to create tracking attempts

install Termux
execute the script below

for i in {1..10}
do
  curl -v https://api2.branch.io &
  sleep 0.5
done

Current dependencies on/for this PR:

develop

PR #2443

PR #2448   👈

This comment was auto-generated by Graphite.


test: add byte_math test

I don't think we're supposed to redistribute TALOS rules. Could you craft your own rules for a test case?


Set up Kanban board

Hellow Microverse,
This is our kanban board.
In our group we are 4 people:
@chumaachike
@VaneCode
@aron-helu
@Jeanbulambo

Hello @Meltrust
When we try on our side it is working. I did not understand why it gives you 404.

Hi @VaneCode,
While you made a great effort in this project, unfortunately, I cannot proceed to review your code.
Invalid Code Review Request
Possible solution: Kindly logout from Github and try to access it to see if it's been shared to public or not.  @aron-helu:  I've been reviewing 5+ kanban projects this morning, but I can't access yours.  Kindly fix the problem and resubmit.
Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Invalid Code Review Request does not count into the code reviews limit.

Hi @VaneCode
Good job so far!
There are some issues that you still need to work on to go to the next project but you are almost there!
To highlight:

All tasks have been pointed✔

Required Changes ♻

[ ] At least one of the tasks does not have a description:

Kindly add a description to the task.

[ ] Half of the members have 23 points and the other half 29.  The difference is 6 points.

Please, ensure no one has a difference of =>5 points.  This means the difference should be 4 at most.
Optional suggestions
Every comment with the [OPTIONAL] prefix is not crucial enough to stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

As described in the Code reviews limits policy you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.

Hi @VaneCode,
Great work on making the changes requested by a previous reviewer 👏
You've done well implementing some of the requested changes, but there are still some which aren't addressed yet.

Required Changes ♻

[ ] The points difference between half on the team and the other continues to be  6 points.  Please, update your points so there is a difference of no more than 5 points between each member of the team.  Look at the end of this paragraph:

If you need help, or you don't know how to balance the points, please contact me on Slack.
Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.

Hi @VaneCode,
Wow, you did it 🎉

Thank you for implementing the changes requested by the previous reviewer 💪 🥇 ㊗
Well done!
To highlight

Points have been re balanced to be more equal✔

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this PR. However, I strongly recommend you to take them into account as they can make your code better. Some of them were simply missed by the previous reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Fixes ApiSpec content syncing

closes INS-1394
To test this PR:

type into the code editor in the design tab and observe that it updates the swagger-ui preview as normal
import the example OpenAPI spec by clicking the "import from example"
import an existing OpenAPI spec from a URL, for example https://gist.githubusercontent.com/gschier/4e2278d5a50b4bbf1110755d9b48a9f9/raw/801c05266ae102bcb9288ab92c60f52d45557425/petstore-spec.yaml
import an existing OpenAPI spec from file (can use the above, if you like)

(and just to tie a bow on the conversation we had as a team: there are deeper problems at play here regarding how the applications accesses and stores information.  deeper problems than we're going to be able to solve in the context of onboarding flows.  we found that some of the issues we're seeing have been around for quite a long time, and we have experienced them in a number of different contexts.  we'll be looking more into this soon, we hope.  so.. until then.  this is a sort-of "is what it has to be" situation for the effects our troubles with the architecture has with the current project.)


V1Addon with<EMAIL_ADDRESS>does not work with App with<EMAIL_ADDRESS>

I think it's because addons are resolving their capabilities local to them rather than the host app.
because setComponentTemplate (used in the output of co-located components), is referenced as Ember._setComponentTemplate in the app, and in the addon, referenced as: _component.setComponentTemplate (an import from the module (and real modules don't exist until ember-source@3.27)).
shouldn't ember-cli-babel ignore whatever is going on in the addon, and determine ember-source version from the host app?

specifically, I think this works with app with<EMAIL_ADDRESS>but not with app with<EMAIL_ADDRESS>

I have the same problem on 3.25.3

I don't understand the thing being reported here, can you be more specific? Have a reproduction?

FWIW, we do use whatever the project has (ember-source wise)
https://github.com/babel/ember-cli-babel/blob/315df8af07bdc755c7529578dd48f5e25e2930d9/index.js#L88
https://github.com/babel/ember-cli-babel/blob/315df8af07bdc755c7529578dd48f5e25e2930d9/lib/get-babel-options.js#L55
https://github.com/babel/ember-cli-babel/blob/315df8af07bdc755c7529578dd48f5e25e2930d9/lib/babel-options-util.js#L165-L166
https://github.com/babel/ember-cli-babel/blob/315df8af07bdc755c7529578dd48f5e25e2930d9/lib/babel-options-util.js#L133-L141

The surface issue I'm trying to address is this error:
Could not find module @ember/component imported from (my module)

ok, so after a bunch of debugging, I've determined that in booting my app,

every useModulesVersion usage is false (expected)` except when ember-source itself is building

same for the including the transform modules api babel plugin
this is tied to this setting

which makes me thing this is intended behavior (and I gotta look elsewhere)

all invocations of emberVersionRequiresModulesAPIPolyfill return true (expected)

Odbservations:

@embroider/macros is involved pretty early on in the call stack, almost immediately after calling app.toTree() in the app's ember-cli-build.js
ember is building itself via buildEmberBundles
this ember version matches the expected version (in monorepo, app has 3.25.4, addon has 3.28.8)<app> on  <branch>
❯ cat <path-to-root>node_modules/ember-source/package.json | jq '.version'
"3.25.4"

<app> on  <branch>
❯ cat <path-to-root>/<addon-path>/node_modules/ember-source/package.json | jq '.version'
"3.28.8"

Observations

any time my conditional breakpoint(s) are hit (only thee times? (once for packages, dependencies, and headers)), I'm in the vendor tree (which makes sense, because ember-source is getting built)
all my breakpoints behave the same and have the same information in scope between a worktree that has a 3.28.8 addon in the monorepo and a worktree (upstream) that does not have 3.28.8

can you make a repro? would it be a monorepo with two ember-source versions?

Seems related to: https://github.com/emberjs/ember.js/issues/19700

can you make a repro? would it be a monorepo with two ember-source versions?

yup, can do! :tada:

yup, can do!

turns out, it's not so easy!
I'll have to compare my repro with whatever is going on with my work monorepo tomorrow

ooo, I did it. link here: https://github.com/NullVoxPopuli/repro-ember-pre-and-post-3-27-compat
@rwjblue ^

Seems related to: emberjs/ember.js#19700

I just discover this issue, exact same for me, not working when my addon is linked (via yarn), but it works when referring the published addon.

I'm facing this issue too, here's a repro https://github.com/prysmex/ember-eui/tree/update-3.24.0

yarn
cd site
ember s

If you downgrade packages/core from ~3.27.2 to 3.26.2 it should work.


[Alerts & Reports] Can't switch 'Message content' from a Chart to a Dashboard

When I configure an Alert or a Report from the new ALERT_REPORTS interface, I can change the chart that is sent ("Message content") but if I replace the chart by a dashboard, when saving, the alert/report switch back to the old chart.
Expected results
I can modify an alert/report and switch from any chart to any dashboard and vice versa.
Actual results
From what I've tested, the current state is:

from a dashboard to another one :heavy_check_mark:
from a dashboard to a chart :heavy_check_mark:
from a chart to another one :heavy_check_mark:
from a chart to a dashboard :heavy_multiplication_x:

Screenshots

How to reproduce the bug

Go to 'Settings' → 'Alerts & Reports'
Click on '+ Alert' to create a new one
Fill it and choose a 'Chart' as content
Save
Edit your alert, change content to a 'Dashboard'
Save
Edit your alert again, the content should be back to the old 'Chart'

Environment

superset version: 1.0.1
python version: 3.7.9
node.js version: doesn't apply, I run on Kubernetes, using gunicorn as server

Thank you for the bug report @vnourdin - we'll look into it!

this issue should be fixed. i will close this.


notebooks + zg

@bvarjavand did you see Travis is failing? Are tests passing for you locally? My guess is that you're failing because matplotlib is not listed as a dependency for our package setup.
Also, I think you have an '@' multiply which also breaks for python 3.4
May be worth addressing the import collections warning too


Add webpack hot module reloading

Codecov Report

Merging #75 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master    #75   +/-   ##
=====================================
  Coverage      49%    49%
=====================================
  Files          29     29
  Lines        1359   1359
  Branches      363    363
=====================================
  Hits          666    666
  Misses        693    693

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 7fcba2d...6259c9c. Read the comment docs.


Get all childs and change

Use case
It is not possible to access child widgets through the parent with key and GlobalKey.
Proposal
I want to get and change child widgets with a key that I gave to a parent widget.
For example, suppose there is a text in the Container. I want to change the text by getting the widget through the Container.
Sample code (This is a Pseudocode of the feature that is needed):
GlobalKey parentKey=GlobalKey();

Container(
  key: parentKey,
  child: Column(
    children: [
      Text("Test"),
      TextButton(onPressed: () {}, child: Text("Click"))
    ],
  ),
);

(parentKey.getChild[0][0] as Text).data="Test 2";

Not how flutter works

Not how flutter works, you are thinking imperatively. If you can rephrase your problem at a higher level, maybe I can suggest some way forward.
https://docs.flutter.dev/get-started/flutter-for/declarative

There must be a way to solve this issue. In some cases, injecting a new value is very necessary.
For example, let's assume that we have several widgets and a parent contains them, and we want to update some items of these child widgets with the parent's key.

@mbfakourii
Are you trying to update all child widgets state on parent's setState ?
Maybe take a look at below links to see if they help in your case or not:
https://api.flutter.dev/flutter/widgets/Element/updateChildren.html
https://stackoverflow.com/questions/71433122/flutter-update-child-state-from-parent

You should just rebuild the parent and return a new list of children

Maybe a real code example will make it clearer. You really can't mutate the Widget tree as you are thinking. Need to present a new tree with each build.

Since Flutter has actually three different trees. Widget/Element/RenderObject (https://www.youtube.com/watch?v=zmbmrw07qBc), mutating the tree imperatively makes no sense. In fact all Widgets are really supposed to be final/const classes. Where values never change. There isn't even Text.data to modify, it is read-only!
Instead I'm happy to help you solve the problem you have. Maybe the most helpful solution is that the Parent widget (with the GlobalKey) should rebuild itself with different children depending on the state. Not mutate the old children.

Instead I'm happy to help you solve the problem you have. Maybe the most helpful solution is that the Parent widget (with the GlobalKey) should rebuild itself with different children depending on the state. Not mutate the old children.

The issue here is that I don't know about parent's children! I have to have them to be able to change!

See if https://api.flutter.dev/flutter/widgets/ImplicitlyAnimatedWidgetState/didUpdateWidget.html would help. Also, not sure if you had chance to look at earlier links shared above.
@moffatman I am short of ideas on how to further help in this issue.

See if https://api.flutter.dev/flutter/widgets/ImplicitlyAnimatedWidgetState/didUpdateWidget.html would help. Also, not sure if you had chance to look at earlier links shared above.

I checked this item and I don't think it will help the problem

I should probably just close this issue. This feature will never be added. But I will keep answering to try to help you understand.
Only the parent should have control over its children. Maybe it can give up a little of that control with public methods in the State. Again please provide a real example of where you are trying to do this, and I can help to understand the "Flutter way" of doing it.

Maybe continuing the discussion in discord would be better, as here, the issue will be open without any labels.

Yes @mbfakourii please feel free we can discuss it in flutter discord


Support for minSdk 21

Hi,
Would it be feasible to support SDK levels 21 - 23?

oh ok. thanks for the quick update.
@awxkee pls help me clarify one thing: glide's avif integration library uses https://github.com/AOMediaCodec/libavif to load avif, while your library uses your own coder library.
is there any advantage (or supported features, etc) that your coder lib provides, that ao media's lib is missing?

My library also uses libavif, libavif itself is not a codec, only a avif file format parser. Glide libavif integration uses libgav1 for decoding, my integration libdav1d. libdav1d is the fastest AV1 decoder. My integration uses very fast YUV decoder, where glide integration uses slow YUV decoder. Also in my implementation ICC profiles and HDR images are supported, in glide implementation it is not.


Modify LSR

LSR means middle 32 bits of the 64-bit NTP timestamp of previous SR so it seems that it should be changed

Hi. I read your commit, and it looked correct to me. Thanks!
BR, Joni


[BUG] Original tree root differs from the tree root computed out of recovered data

Original tree root differs from the tree root computed out of recovered data is an error raised by the erasure coding module.
Seen in testnet when attempting to download an erasure-coded CID: zDvZRwzmD5h3fPNGiGCbyjfgoAzSUpdjUr2btFJpviWf443irXMX

AFAIK, this is a duplicate of an existing issue caused by the current threading implementation.

#854

I'm not sure it's the same issue. The issue in #854, was, as @dryajov pointed out, due to threading, but we have disabled threading, which makes me think we have a case of same symptom, different illnesses. But, then again, without proper triaging I can't really tell.


Handling Non-Linear Dialogue - Modifier Intents and Response Intents - WIP

WORK IN PROGRESS
I've been cooking for awhile now on a proposal for how to handle non-linear dialog. Right now our slot filling allows linear dialog. But take for instance an insurance chatbot, with a non-linear dialog, or tree based dialog: (italics are the bot, bold is the user)

Are you trying to update an existing policy or create a new one?

I need a new policy

Great, are you looking for an auto, home, or rental policy?

It's for my car

Can you tell me the VIN number of your car?

It's for my home or I just rented a new apartment

What is the property address of the home you are trying to insure?

I'm trying to update an existing policy

If you have your policy number, can I have it. Or we can look it up.

1123345908

Okay, let me look up that policy.

sorry, I don't know it

Please provide your first and last name.

To handle situations like this as well as #192 I would like to propose two new concepts: Modifier Intents and Follow-Up Intents.
Modifier Intents
The main purpose of modifier intents is to handle slot prompt responses. In the example above, when the bot asked the user whether or not they were trying to find an old policy or create a new one the user response could have been any of the following (and then some):

I need to create a new policy.
new
old
it's an existing one
I already have a policy
I need a home owners policy

These could possibly be trained as entities, but that doesn't feel right. They are intents, but not a high level intent like looking up a policy. These are intents meant for modifying a slot value: modifier intents.
Even our common pizza shop example has use for modifier intents. Let's say you offer both sandwiches and pizza, which have very similar toppings. Right now when the bot prompts for What toppings would you like on your pizza? and the user replies with hame and pepperoni that response has to be trained. And training it on both the orderSandwhich and orderPizza intents means that you can randomly be yanked from one intent to another. This is the case in #193 but if there was a modifier intent for the toppings slot, then it could be handled in a better way.
Given that we don't want modifier intents to factor into he main intent recognition of the bot the question is: where do they belong? The idea that I am proposing is that they belong to a separate model for the agent which contains all of the modifier intents. They belong to the agent, because they are operating at the same level as entities and often will be paired with entities. Here are a few facts about modifier intents:

They have slots, but their slots can't be required/have prompts.
They don't have any fulfillment.
They can't be accessed outside of a slot prompt.
By themselves they perform no actions. The actions that they perform are specified as part of the scenario where they are being used.

For a given slot the modifier intents can perform multiple actions:

SET - this action allows the user to set the slot value to a value determiner in the UI. It does not pull anything from the entities.
UNSET - this action allows the user to unset a particular slot value.
ADD - This action takes the entities from the modifier intent and adds them to the slot.
REMOVE - This action takes the entities from the modifier intent and removes them from the slot if they are present.

Affirmation/Negation are good examples of the SET action. Replying with just cheese is a good example of an ADD action for filling a pizza topping slot. And I didn't want pepperoni is a good example of a REMOVE action for the pizza topping slot.
This probably means that we've got a new threshold to consider: the modifier threshold. This is how high the confidence has to be in a modifier intent for us to use it. It may be possible to share it with the domain/intent thresholds. Have to think more on that.
Here is a proposal for the UI for modifier Intents, both defining them and using them in scenarios.
To address the needs of #192 I am thinking that there is a 5th kind of action, not directly tied to a modifier intent, but rather just a wildcard. Were almost any reply is taken as the value of that slot. Perhaps there is a way to combine that with the modifier thresholds to allow breakout.
Response Intents
The second piece to non-linear dialog is being able to take a slot value or response and moving the conversation in a particular direction with it. That is where response intents come in. Calling them intents feels a little bit wrong, but I haven't thought too much on the verbiage.
A response intent is a bit different in that it has no user examples. Just slots, prompts, modifier intents, and responses. And they are directly tied to the response of another intent.
For example main intent in the example above could be called insurancePolicyStart and it has a slot called policyAge which can be set to either new or old. Right now the user could use the agent response to generate the replied above:

{{if eq(slots.policyAge.value 'new')}}Great, are you looking for an auto, home, or rental policy?{{/if}}
{{if eq(slots.policyAge.value 'old')}}If you have your policy number, can I have it. Or we can look it up.{{/if}}

and given how we handle dialog we would reply with the correct one because one of them would be an empty string.
So response intents are tied to these. For example in the case where policyAge is new, we could select the newPolicy response intent. This would automatically dump the user directly into that intent. That intent has a slow for policyType and based on the value of that slot we would guide the user to a new intent. until the reach the end...
Granted that there is certainly value in responses being able to be linked to any intent. allowing conversations to converge from multiple starting places. Maybe I need a better name for this. still WIP.

Hey, is there any example visible to work out from it. As im not sure how to start using Modifier Intents. Example would really show me how to start with my own project. Thank you guys.


postgresql-setup.sh: only dump public schema

since all db-sync object are in public this avoid dumping
objects from other applications using separate schemas.

Rebased and pushed.


Fix folder permissions

Fixes #48

According to Docker docs, it should copy the folder permissions from the local file system, so it appears that the folder permissions on the build system are incorrect.

So the image should be rebuilt on a system with a proper umask in fact. That's not a Dockerfile issue, is it ?

I'm honestly not sure, but it would appear so. I don't have much experience with Docker :-)


Add missing virtual destructor

Add missing virtual destructor

This is not the first time we've received this pull request. See https://github.com/abseil/abseil-cpp/pull/928. I believe it still does not work.

Interesting case: class CommandLineFlag is leaking its destructor via friend class and that's why we get warning about missing virtual destructor.
I added -Wnon-virtual-dtor flag and pragmas to suppress the warning. Could you please take a look? @derekmauro


No such file or directory - mrbc

Tried building a ruby script and got the following error:
ruby-wasm build /Users/nburns/notion/app/models/date_generator/schedule_date_generator.rb
/usr/local/lib/ruby/gems/2.3.0/gems/wasm-0.0.2/bin/ruby-wasm:40:in ``': No such file or directory - mrbc (Errno::ENOENT)
	from /usr/local/lib/ruby/gems/2.3.0/gems/wasm-0.0.2/bin/ruby-wasm:40:in `build'
	from /usr/local/lib/ruby/gems/2.3.0/gems/wasm-0.0.2/bin/ruby-wasm:136:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.3.0/bin/ruby-wasm:24:in `load'
	from /usr/local/lib/ruby/gems/2.3.0/bin/ruby-wasm:24:in `<main>'

Ruby version: ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-darwin17]
OS: macOS 10.13.6 (17G65)
Do I need to install something else as a part of ruby-wasm?

You need to have mruby installed and available in your PATH. In his blog post corresponding to this repo, Tom recommends using this command: brew install mruby. After that, the mrbc command should be present globally in your system.

After installing mruby got another error:
/Users/sashar/sites/ruby-wasm/bin/ruby-wasm:49:in ``': No such file or directory - emcc (Errno::ENOENT)
	from /Users/sashar/sites/ruby-wasm/bin/ruby-wasm:49:in `build'
	from /Users/sashar/sites/ruby-wasm/bin/ruby-wasm:137:in `<top (required)>'
	from /Users/sashar/.rvm/gems/ruby-2.3.5/bin/ruby-wasm:23:in `load'
	from /Users/sashar/.rvm/gems/ruby-2.3.5/bin/ruby-wasm:23:in `<main>'
	from /Users/sashar/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
	from /Users/sashar/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<main>'

As stated in the README, you need to have the emscripten toolchain installed and activated, as the ruby-wasm command only works by using its compiler. See http://webassembly.org/getting-started/developers-guide for information about installing the emcc command.

@sasharevzin

$ git clone https://github.com/juj/emsdk.git
$ cd emsdk
$ ./emsdk install latest
$ ./emsdk activate latest

then add alias wasm_init="source ~/Developer/emsdk/emsdk_env.sh" to your bash profile so you can run wasm_init when you get that error.


fix: fix Runtime::new and Runtime::from_code_with.

Runtime creation was either panicking or getting killed by the system because it was creating as many threads as the heap size, instead of reading the thread count variable.

Thanks!


[neon-cli]: Add cluster SSH commands

The old neonHIVE neon-cli used to have commands allowing folks to easily SSH/SCP cluster nodes via PuTTY and WinSCP.  We removed these for neonKUBE because we removed the integrated cluster OpenVPN.
We've extended IHostingManager to support adding/removing SSH NAT rules on demand.  These rules provide public SSH access (with optional source address white/black listing), so we should bring these commands back:

[ ] neon ssh <node-name>
[ ] neon scp <node-name>

neonKUBE node have SSH configured with a very strong password (the same one for all nodes) and needs to be configured with a SSH server certificate as well (also the same across nodes).  We then need to:

[ ] Generate a SSH client certificate, save it in the cluster definition and then use it for authenticating the commands above.

and add these commands to manage the NAT rules:

[ ] neon cluster connect
[ ] neon cluster disconnect
[ ] neon cluster status

These commands are currently relying on the local context extension for information on the cluster nodes. This won't work in the future when nodes may be added or removed from the cluster after deployment.
We need to query the Kubernetes API server to gather this this information (kind of like we did for the old Docker Swarm implementation).

I'm going to go ahead and remove these commands.  Here's the logic:
These commands assume that the user is on the same network as the cluster nodes.  In the old neonHIVE days, we integrated OpenVPN into the cluster and had code to automatically connect client workstations to the VPN for SSH/SCP as well as for other operations like cluster setup and workload management.
We dropped OpenVPN when we switched to Kubernetes and neonKUBE a couple years ago and we really don't want to encourage folks to SSH directly into nodes or be VPNed into the cluster network by default.  I can see bringing OpenVPN back in the future as an optional feature, but I suspect that will be more about connecting clusters and/or on-premise networks rather than being an end-user feature.
The plan for end-user Kubernetes access is to tunnel Kubernetes commands and dashboards through standard cluster ingress.


Edge / IE console error: Function Expected

I'm seeing this error on Edge, IE11 and IE10.
Seeing 'Function Expected' in the console.
The CSS is implemented with the following:
.image {
  object-fit: cover;
  object-position: center;
  font-family: 'object-fit: cover; object-position: center;'
}

Calling Object Fit in JQuery as follows:
jQuery(function($) {
  objectFitImages();
});

The demo works for me in IE 11. Can you post the full error you're seeing?

The full error in Edge is:
SCRIPT5002: Function Expected
main-min.js (68,5882)
SCRIPT5007: Unable to get property 'length' of undefined or null reference
main-min.js (69,3342)

I don't think the error is caused by OFI. Post the website that you're seeing this issue on so I can take a look.
Make sure you're loading OFI correctly. Are you using browserify? Webpack? How are you loading OFI?

I'm currently seeing the issue while testing a local build.
OFI is being prepended using CodeKit and being called within JQuery with
objectFitImages();

Try running
jQuery(function() {
    console.log(typeof objectFitImages);
});

What's its output in the console?
Which OFI file are you prepending? ofi.min.js?

I've just downloaded the latest release from GitHub and am prepending ofi.min.js and it seems to be working fine now.
I'm not sure what version we had previously as it was added by one of our other devs.
This issue can be closed. Thanks for your help on this.

confirmed, upgrading from 2.5.3 to 3.1.0 resolved the issue for me.


Horizontal layout does not take into account padding

Widgets with padding are not properly centered on the Y-axis when using a horizontal layout. Removing the padding fixes this.

Area::new("ui_area")
    .anchor(Align2::LEFT_TOP, [16.0, 16.0])
    .show(&self.egui_ctx, |ui| {
        ui.horizontal(|ui| {
            ui.checkbox(should_display_ui, "Toggle UI");

            ui.scope(|ui| {
                ui.spacing_mut().button_padding = Vec2::new(18.0, 14.0);

                if ui.button("foo").clicked() {
                    // ...
                }
            }
        });
    });

Not sure if this actually a bug, or a limitation of immediate mode layout.

This is a limitation - egui can't know how tall future widgets will be when adding the first widget. You can call ui.set_min_height(expected_height); before adding the first widget to work around this.


Swift.Toolchain: Add release 5.10

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Note for reviewers: Swift 5.10 contains a major change to the installer, which is now user-scoped and allow parallel installation of multiple versions. Updating some fields for this.