QUIC Server API: Updates to polling design document

Work on the https://github.com/openssl/project/issues/418 Polling Lite implementation led to some more detailed thought on how event types need to be defined.

Updated

It's not really clear to me how we're going to support applications that want to implement their own polling. Does that mean that for linux we'd have to add support for something like eventfd? I guess for Windows we'd have to add IOCP support, and so on?

I guess we currently have no proposal for that, while I think that's more important to have them providing our own kqueue-like API.

It's not really clear to me how we're going to support applications that want to implement their own polling. Does that mean that for linux we'd have to add support for something like eventfd and timerfd? I guess for Windows we'd have to add IOCP support, and so on?

If an application wants to do its own polling, it can do so. It would do so by determining the underlying network resources using SSL_get_[rw]poll_descriptor and registering them in its own reactor as per SSL_net_(read|write)_desired and SSL_get_event_timeout. After it wakes up, it can use either poller API with a timeout of zero in order to extract information on what objects are ready (search 'hierarchical polling' in this document).

Updated.

If an application wants to do its own polling, it can do so. It would do so by determining the underlying network resources using SSL_get_[rw]poll_descriptor and registering them in its own reactor as per SSL_net_(read|write)_desired and SSL_get_event_timeout. After it wakes up, it can use either poller API with a timeout of zero in order to extract information on what objects are ready (search 'hierarchical polling' in this document).

From the discussion in #23339, it seems to me that it's not possible to write a performant implementation with that, and that we're missing functionality to be able to do that.

If an application wants to do its own polling, it can do so. It would do so by determining the underlying network resources using SSL_get_[rw]poll_descriptor and registering them in its own reactor as per SSL_net_(read|write)_desired and SSL_get_event_timeout. After it wakes up, it can use either poller API with a timeout of zero in order to extract information on what objects are ready (search 'hierarchical polling' in this document).

From the discussion in #23339, it seems to me that it's not possible to write a performant implementation with that, and that we're missing functionality to be able to do that.

No? I don't believe that discussion has fully ingested the proposal here.
There are two different issues here:

Determining when the QUIC engine needs to have internal event processing done. This is addressed by the above.
Determining which of an arbitrarily large number of QUIC SSL objects are ready to do useful things after that.

But if I'm missing something here let me know. This document is quite thorough and discusses many of the relevant issues, so it is worth reading in full.

So I would imagine that an application would like to write it's main loop so that it calls a single function, and then gets a work item. A work item would be something like:

There is data available on a socket that can be read
A timer has expired
The state of the QUIC SSL object has changed and you can now read from it
The state of the QUIC SSL object has changed and you can now write to it
...

The "sketch B" API would probably provide support for that, but I currently don't see how we provide support for not using that API other than the timer. (The data on the socket is provided by the OS.)

So I would imagine that an application would like to write it's main loop so that it calls a single function, and then gets a work item. A work item would be something like:
* There is data available on a socket that can be read

* A timer has expired

* The state of the QUIC SSL object has changed and you can now read from it

* The state of the QUIC SSL object has changed and you can now write to it

* ...

The "sketch B" API would probably provide support for that, but I currently don't see how we provide support for doing that not using the "Sketch B" API other than the timer. (The data on the socket is provided by the OS.)

Essentially:
for (;;) {
    rdesc = SSL_get_rpoll_descriptor(conn);
    wdesc = SSL_get_wpoll_descriptor(conn);
    timeout = SSL_get_event_timeout(conn);

    pollset = {0};
    if (SSL_net_read_desired(conn))
      add rdesc to pollset;
    if (SSL_net_write_desired(conn))
      add wdesc to pollset;

    poll(pollset, timeout);
    SSL_handle_events(conn);

    /* Find out what is now ready using non-blocking poll operation (hierarchical polling) */
    SSL_POLL_ITEM items[...] = { conn, streamA, streamB };
    SSL_poll(items, SSL_POLL_FLAG_NO_HANDLE_EVENTS, timeout=0);
    /* examine items[...].revents to determine ready streams */
}

That seems suboptimal to me. I would expect some event mechanism, so just the correct stream(s) get activated, without having to go over all streams. That is, if data is available on the socket, a call should be made that has as effect that the data from the socket is read and processed, and maybe some event is set. It should then go back to fetch the next work item, which might be the event we just set, that could then be read from the stream.

That seems suboptimal to me.

Which is why the registered-mode API is proposed in this document. SSL_poll is just for simple and low-radix use cases.

I would expect some event mechanism, so just the correct stream(s) get activated, without having to go over all streams. That is, if data is available on the socket, a call should be made that has as effect that the data from the socket is read and processed, and maybe some event is set. It should then go back to fetch the next work item, which might be the event we just set, that could then be read from the stream.

Not entirely sure what you're proposing here. Parts of it sound like a callback mechanism, and others sound like some kind of notification queue that an application can pop from.

It's all about using the same queue as epoll already gives you.

It's all about using the same queue as epoll already gives you.

The registered-mode API will obviously have an epoll implementation on the backend for Linux.

I guess a callback mechanism is what I'm looking for, and then let the application deal with it how they want.

I am not sure a callback mechanism is better than the registered polling API that is planned in the design.

I think a callback will make it a lot easier for applications to adopt. Having to switch to an openssl API will most likely cause various problems, including performance.

I think a callback will make it a lot easier for applications to adopt.

Please elaborate.
It's an explicit objective of our QUIC API design efforts to minimise the changes needed for existing applications to adopt QUIC. Since the existing libssl API design does not use callbacks for I/O event handling (things like certificate verification callbacks are clearly something qualitatively quite different), it doesn't make sense that we would adopt a completely different approach based around I/O callbacks. That would mean existing libssl API users would have to make extremely invasive changes to their code, or completely rewrite it.
Callbacks moreover raise a lot of issues. They don't obviate the need for event handling to be performed when there is work to be done and therefore don't obviate the need for efficient waiting. Any callback-based asynchronous I/O system on *nix is just built on something like epoll anyway, so it doesn't make sense to claim it can be more efficient...
We currently support thread assisted mode in our client API. This means a client can do what it likes without having to worry about a connections's background processing being performed in a timely manner. This means that any callback API would also raise questions regarding a) what thread such an application callback is invoked on (e.g. if thread assisted mode is in use), b) when such a callback is invoked, and whether that invocation will occur in a timely fashion (e.g. if thread assisted mode is not in use and the application is not currently calling libssl), and c) potential reentrancy concerns if an application starts calling libssl APIs within a callback. Of course if an application blocks in such a callback everything falls apart also, but I think that's well understood.
Speaking more generally I don't like callback-intensive API designs because they take control away from the application, and because the application isn't in full control of when they occur and they could occur at "any" time. Any processing an application then does in that callback is also inevitably subject to a variety of caveats and restrictions. It also can't accommodate simpler applications that want to use a blocking-style API. For this reason I tend to avoid callback-driven APIs (in which call arrows go from lower layer to upper layer) and prefer explicit state machines (in which call arrows always go from upper layer to lower layer). These have the advantage of explicit and deterministic processing and synchronisation, explicit and deterministic transfer of control, and explicit and deterministic transfer of any asynchronous notifications that may have occurred to the application.
But that is just my personal design philosophy. It doesn't rule out us offering some kind of callback-style functionality if there are people explicitly saying it would make things easier for their own application architecture (see the curl discussion), and the design issues raised above can be resolved satisfactorily. But I absolutely see that as an optional alternative API, not the primary or initial offering.

Having to switch to an openssl API will most likely cause various problems, including performance.

Please elaborate. Where do you see the performance issues here?

I have a new idea that might work. (Maybe that was yours too, if so that wasn't clear.)
I suggest we have a queue of events per quic connection. So after calling a function that did something, you just check the queue for events, but only for that connection.
We probably want a new function for processing incoming data from the socket. SSL_read is not what you want most of the time, there might not be any user data, and quic probably makes it even more confusing with acks and streams.
Possibly we might want to have our queue of events also directly return a pointer and size of the data that's available.

I suggest we have a queue of events per quic connection. So after calling a function that did something, you just check the queue for events, but only for that connection. We probably want a new function for processing incoming data from the socket. SSL_read is not what you want most of the time, there might not be any user data, and quic probably makes it even more confusing with acks and streams.
Possibly we might want to have our queue of events also directly return a pointer and size of the data that's available.

Yeah. The idea of some kind of "notification queue" is something I've considered and we may end up with something like that at some point. A significant piece of prior art here is the extensions to the Berkeley sockets API for SCTP — see https://www.rfc-editor.org/rfc/rfc6458, section 6.
Even if we stick to a poll()/read()-like approach for consuming streams, the reality is there's probably going to be "interesting" events on a QUIC connection which an application might need to be notified of (e.g. connection migration).
Whether notifications are issued to an application by a callback, or by an application calling some "pop notification" function, is a fairly minor detail (we could offer both).

@kroeckx This is a valuable discussion so I've moved it to a separate issue: https://github.com/openssl/openssl/issues/24125
I think this PR is ready. Rebased and updated.

This pull request is ready to merge

Merged to the feature branch. Thank you.


Install Nomad module is installing awscli

Greetings:
The install-nomad module is installing the awscli package as part of it's install_dependencies function.  Is there a reason for this?  Or is this just a left over from converting this from an AWS module?

Closed by #18


Make logging more ergonomic and flexible

What was wrong?
Configuring the individual loggers is cumbersome (see https://github.com/ethereum/trinity/pull/659#discussion_r287093201)
How was it fixed?
Let's go though a bunch of examples:

Run trinity -> stderr prints exactly the same logging output as current master (INFO only)

Run trinity -l p2p.discovery=DEBUG2 -> stderr prints only INFO logs except for p2p.discovery where DEBUG2 or higher is shown

Run trinity -l ERROR -l p2p.discovery=DEBUG2 -> stderr prints only ERROR logs except for p2p.discovery where DEBUG2 or higher is shown

Run trinity -l DEBUG2 --stderr-log-level INFO -> stderr prints only INFO logs but file log prints DEBUG2 or higher logs

(^--This combination of CLI flags was previously illegal but I think  you were still able to get the same result using different CLI flags?)

Run trinity -l DEBUG2 --file-log-level INFO -> stderr prints DEBUG2 or higher logs but file log prints only INFO logs

(The reverse of 4)
Additional notes

The sqlalchemy library prints lots of logs directly on INFO which is why I silenced it manually. I'm wondering why we don't see these logs on current master? We do see logs from lahja which just happens to be another 3rd party library that we use. I don't see the difference here.

As @pipermerriam pointed out in #659 this approach may lead us to show more DEBUG logs from 3rd party libraries when we run Trinity with -l DEBUG but kinda related to my previous point: How do we differentiate between a 3rd party library like lahja where we do want to see the logs from another one where we don't? From a technical standpoint these just happen to be equal 3rd party libraries.

Previously the --log-level and --stderr-log-level flags had overlapping responsibilities but the --log-level and the --file-log-level flags did not. I found that really confusing and this PR treats them entirely the same way.

At least this PR gives us a way to configure the noise on a per module basis.
To-Do

[ ] Clean up commit history
[ ] write tests to proof all the claims this PR makes

[ ] Add entry to the release notes PR

Cute Animal Picture

I am :-1: on this approach.  It feels far too heavy handed to require enumeration of a module's loggers and set all of their levels, especially when I'm pretty sure we have a path to do this much more simply.
I'm also not convinced that this won't have un-expected side effects.

I just wanted to put this together to have something that I know works so I can compare it against your proposed approach. I'll check that one next.

This seems to do exactly what we want (except that I didn't fix the logfile level stuff...)
https://github.com/ethereum/trinity/pull/665

This does in fact look a whole lot simpler! Do you plan to clean this up and send a PR or do you want me to do that? Either way is fine.

If you have capacity it is all yours
Sent from ProtonMail mobile
-------- Original Message --------
On May 24, 2019, 5:15 PM, Christoph Burgdorf wrote:

This does in fact look a whole lot simpler! Do you plan to clean this up and send a PR or do you want me to do that? Either way is fine.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Sure, I get it in on Monday!
Am Fr., 24. Mai 2019 um 17:54 Uhr schrieb Piper Merriam <
<EMAIL_ADDRESS>
If you have capacity it is all yours
Sent from ProtonMail mobile
-------- Original Message --------
On May 24, 2019, 5:15 PM, Christoph Burgdorf wrote:

This does in fact look a whole lot simpler! Do you plan to clean this up
and send a PR or do you want me to do that? Either way is fine.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub,
or mute the thread.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ethereum/trinity/pull/664?email_source=notifications&email_token=AAD7HFOBPI646LWNLOB5LTLPXAFRRA5CNFSM4HPPPOCKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWFZI3I#issuecomment-495686765,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAD7HFNFERRB74OIAPFJURDPXAFRRANCNFSM4HPPPOCA
.


Error executing Install.ps1

I created new library project targeting .NET Framework 4.5.1 and referenced several 4.0.0 libraries. Then I run Install-Package BuildPackage and get following errors:
Executing script file 'C:\Users\Sample Company\documents\visual studio 2015\Projects\SampleLibrariesCoreNuget\packages\BuildPackage.2.3.0\tools\Install.ps1'
Cannot index into a null array.
At C:\Users\Sample Company\documents\visual studio 2015\Projects\SampleLibrariesCoreNuget\packages\BuildPackage.2.3.0\tools\Install.ps1:3 char:1
+ $fullPath = $configFile.Properties["FullPath"].Value
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

Get-Content : Cannot bind argument to parameter 'Path' because it is null.
At C:\Users\Sample Company\documents\visual studio 2015\Projects\SampleLibrariesCoreNuget\packages\BuildPackage.2.3.0\tools\Install.ps1:4 char:28
+ [xml]$config = Get-Content $fullPath
+                            ~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-Content], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentCommand

Select-Xml : Cannot validate argument on parameter 'Xml'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At C:\Users\Sample Company\documents\visual studio 2015\Projects\SampleLibrariesCoreNuget\packages\BuildPackage.2.3.0\tools\Install.ps1:5 char:19
+ $nuget = $config |select-xml<EMAIL_ADDRESS>+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Select-Xml], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.SelectXmlCommand
Successfully installed 'BuildPackage 2.3.0' to SampleLibrariesCoreNuget
Executing nuget actions took 720,6 ms
Time Elapsed: 00:00:01.5435979

Package is installed. Build fails, but package is being created successfully (but nupkg is only some kB big, source libararies are circa 50 MB in total).
Cannot evaluate the item metadata "%(FileName)". The item metadata "%(FileName)" cannot be applied to the path "Truing to compile package from "SampleLibrariesCoreNuget.csproj".". Illegal characters in path.
I guess that's not the expected output?

I see two issues here

Install.ps1 is buggy but does not block the installation
Pack command does not include references

For the first issue: does your project contain a packages.json file?
For the second issue: have you created a nuspec file for your project?


Water fountain mode

I was on a run and parched. I thought I could use this, but for water fountains. There is a tag for it here:
https://wiki.openstreetmap.org/wiki/Tag:amenity%3Ddrinking_water

Looks like this entry can be parameterized: https://github.com/free2pee/free2pee/blob/a1aef71551b980e9c5e08faf43939e1a489ba88f/src/main.rs#L213


[Feature Request] Extend readme contents about exception from activity

Is your feature request related to a problem? Please describe.
In here, the project describes how the exception from workflows are handled.
Recently, I discovered many exceptions (such as httpx timeout) from activity create start_to_close timeout. I wish we have better documentation about the exception from activity side
Describe the solution you'd like
Additional description about exceptions from the activity (worker) side. Which exception can we raise to mark it failed activity run and retry? what are not allowed exceptions?

Can you clarify the suggestion a bit?

I discovered many exceptions (such as httpx timeout) from activity create start_to_close timeout

All exceptions from activities are treated equally (except for some special exceptions concerning cancellation and complete async). Not sure what you mean by "create start to close timeout" but the relation of timeouts/retries to errors are explained at https://docs.temporal.io/activities.

Which exception can we raise to mark it failed activity run and retry?

All

What are not allowed exceptions?

All exceptions are allowed. Can you clarify the question?
(also feel free to contact us on Slack at https://temporal.io/slack or the forum at https://community.temporal.io to get quicker answers)

Let me work on my side if I can reproduce the behavior I saw the last couple of weeks.

All exceptions are allowed. Can you clarify the question?

In the current README,
it says

Exceptions
Workflows can raise exceptions to fail the workflow
Using temporalio.exceptions.ApplicationError, exceptions can be marked as non-retryable or include details

I wanted to know what exceptions we can raise to mark the activity failed because I've seen activities left "stale" with the exception cases and Workflow has ApplicationError to officially mark it as failed workflow. Can we use this exception in activity too? or any exceptions are treated as failures?
So I thought maybe an exception explanation for the activities is "missing" by mistake. So I created this ticket.
Also, thank you for giving me the reference to the slack and community channel. I'll write questions on those channels.

because I've seen activities left "stale" with the exception cases

There is no such thing as a "stale" activity. Are you sure it's not continually retrying? What does the UI show?

Can we use this exception in activity too?

Yes, you can use the exception in activities too (it's good for passing details, setting type, and marking exceptions as not retryable)

or any exceptions are treated as failures?

For activities, they are

For activities, what's the exception that marks it "retryable" and what's the one that marks it "non-retryable"?

All are retryable by default except for 1) if you create ApplicationError with non_retryable=True, 2) the retry_policy set when you invoke the activity has a non_retryable_error_types that includes the unqualified name of the exception class (or application error type), or 3) the retry policy permits no more retries (i.e. max attempts has been reached; set it to 1 to disable retries).

So I thought maybe an exception explanation for the activities is "missing" by mistake

:+1: I can make this section. Note, the README is not the canonical source of documentation, it's just there while the https://docs.temporal.io/application-development/ gets up to speed. The concept of activity failures/errors is not Python specific (though there are of course Python-specific parts). I will also submit a request to improve https://docs.temporal.io/application-development/foundations?lang=python#activity-execution and https://docs.temporal.io/activities/#activity-execution with regards to activity exceptions.

Thank you very much @cretz. In the UI, we had numerous activities reaching the max timeouts when the code raised an error (based on log), which looked like it didn't catch the exception as a failure but lost the activity worker.
I tried to reproduce the error but it seems like I can't with the minimal configuration. Seems like the issue was actually on our codebase side not on temporalio sides.
Also appreciate your consideration of adding readme section and guiding me to the resources.
Please feel free to close this ticket. Many thanks!

:+1: I have communicated with documentation to document errors properly for workflows and activities.

lol, a follow up question from year 2024, i think for latest version 1.8.0 (i may have an example), can you please take a look at this issue (https://github.com/temporalio/sdk-python/issues/679)? @cretz thanks!
I found no matter how I write, the activity are still being retried, no sure if it's our codebase problem.


Options to customize classes (Closes #23) + Access to directive object & element

Custom classes can be passed in via the options object
Access to directive object via vueForm and vueFormCtrl makes it possible to use vue-form without having to add v-model's to every input element!

Example usage:
    // within your main.js

    Vue.use(require('vendor/vue-form'), {invalidClass: 'is-danger'})

    // within a .vue component


Document how to use netrc with container deployments

We have netrc support since https://github.com/aboutcode-org/scancode.io/issues/620
We should document how to use netrc with container-based deployments.

@JonoYang I see you've added some documentation. Can we close this one?

Yes. Closing now.


Fix cookie date parsing, close #6016

Motivation:

RFC6265 defines its own parser which is different from RFC1123 (it accepts RFC1123 format but also other ones). Basically, it's very lax on delimiters, ignores day of week and timezone. Currently, ClientCookieDecoder uses HttpHeaderDateFormat underneath, and can't parse valid cookies such as Github ones whose expires attribute looks like "Sun, 27 Nov 2016 19:37:15 -0000"
ServerSideCookieEncoder currently uses HttpHeaderDateFormat underneath for formatting expires field, and it's slow.

Modifications:

Introduce CookieDateFormatter that correctly implement RFC6265
Use CookieDateFormatter in ClientCookieDecoder and ServerCookieEncoder

Result:

Proper RFC6265 dates support
Faster ServerCookieEncoder and ClientCookieDecoder

Side comment: I'd be in favor of deprecating HttpHeaderDateFormat, renaming CookieDateFormatter and promoting it as a replacement:

HttpHeaderDateFormat is slow. For Java 8 users, java.time is faster than SimpleDateFormat. CookieDateFormatter is way faster, both on parsing and formatting sides.
CookieDateFormatter supports parsing RFC2311 dates, such as Expires and Date headers and formats in RFC2311.

@slandelle deprecation sound fine to me.

@normanmaurer Should I rename CookieDateFormatter into HttpHeaderDateFormatter and move it to parent io.netty.handler.codec.http package so it sits next to deprecated HttpHeaderDateFormat?

Yes

Am 14.11.2016 um 14:10 schrieb Stephane Landelle<EMAIL_ADDRESS>@normanmaurer Should I rename CookieDateFormatter into HttpHeaderDateFormatter and move it to parent io.netty.handler.codec.http package so it sits next to deprecated HttpHeaderDateFormat?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

All requested changes done

@slandelle as you said its faster can you "prove" this with a jmh benchmark ?

as you said its faster can you "prove" this with a jmh benchmark ?

On its way

benchmarks added.
results on my computer:
Benchmark                                  Mode  Cnt         Score        Error  Units
formatHttpHeaderDateFormat                thrpt   20   4526329,072 ± 469456,711  ops/s
formatHttpHeaderDateFormatter             thrpt   20  16355066,044 ± 943954,410  ops/s
parseHttpHeaderDateFormat                 thrpt   20    386189,902 ±  15081,814  ops/s
parseHttpHeaderDateFormatter              thrpt   20   5328386,627 ± 135844,563  ops/s
decodeCookieWithRfc1123ExpiresField(old)  thrpt   20    315294,657 ±  14478,838  ops/s
decodeCookieWithRfc1123ExpiresField(new)  thrpt   20   2523366,444 ±  70711,820  ops/s

@normanmaurer I've already addressed most Sonar comments by the time CI completed. There's still some left, like do you really want Yoda style comparison, eg "Jan".equalsIgnoreCase(tokenString)?

@slandelle I don't care about the equals style..

@nmittler @Scottmitch PTAL as well

I don't care about the equals style..

Argggg, just pushed after Sonar spammed me for the last 2 hrs...

LGTM... Waiting for @Scottmitch to take a pass as well.

@slandelle - finished first pass. let me know if you have questions.

@Scottmitch Comments addressed. Please have a look at my comments.

Note: failing test is Http2ConnectionRoundtripTest.flowControlProperlyChunksLargeMessage which is not related to this PR.

@Scottmitch last comments addressed. PTAL

@Scottmitch Thanks a lot for the great review!

Cherry-picked this into 4.1 as edc4842309ad0491b7f2088c8116318b3d680db8.
@slandelle if you also want to have this in 4.0 please create another PR against 4.0 :)

@normanmaurer No need to. My plan is to drop my own cookie stuff and upgrade to Netty 4.1. Thanks!

Ok Sounds good

Am 18.11.2016 um 18:15 schrieb Stephane Landelle<EMAIL_ADDRESS>@normanmaurer No need to. My plan is to drop my own cookie stuff and upgrade to Netty 4.1. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


Add custom operators as alternatives to overloaded operators

This PR aims to solve the issue of slow type-checking performance due to operator overloading (see #83).
To solve this, I've added new custom operators that provide the same functionality as the overloaded operators. Essentially, users can opt in by surrounding the overloaded operators in a "box of shame" (thanks, Zev):

Operator
New Alternative

==
~|==|~ (changed to /==/)

<=
~|<=|~ (changed to /<=/)

>=
~|>=|~ (changed to />=/)

This has a few benefits:

By using a custom operator rather than overloading existing operators, we reduce the amount of overhead accrued.
The existing operator overloads now fall back on the new operator alternatives, which prevents duplicated code and makes this PR non-breaking.

Here's a build timing summary for an app that makes heavy use of Anchorage:
Build Timing Summary

CompileC (799 tasks) | 1121.137 seconds
CompileSwiftSources (49 tasks) | 723.882 seconds
CompileAssetCatalog (7 tasks) | 329.057 seconds
CompileXIB (3 tasks) | 263.134 seconds
Ld (74 tasks) | 89.242 seconds
CompileStoryboard (4 tasks) | 59.476 seconds
CopyPNGFile (60 tasks) | 51.361 seconds
PhaseScriptExecution (4 tasks) | 10.858 seconds
ValidateEmbeddedBinary (5 tasks) | 8.584 seconds
IntentDefinitionCompile (3 tasks) | 6.932 seconds
Ditto (367 tasks) | 6.898 seconds
CodeSign (6 tasks) | 6.889 seconds
IntentDefinitionCodegen (3 tasks) | 6.850 seconds
CreateUniversalBinary (35 tasks) | 4.496 seconds
Touch (36 tasks) | 4.284 seconds
LinkStoryboards (3 tasks) | 0.042 seconds
Libtool (2 tasks) | 0.021 seconds

Here's the build timing summary after switching to this branch using my new operators:
Build Timing Summary

CompileC (799 tasks) | 1005.547 seconds
CompileSwiftSources (49 tasks) | 682.290 seconds
Ld (74 tasks) | 128.364 seconds
CompileAssetCatalog (7 tasks) | 16.995 seconds
CompileXIB (3 tasks) | 13.545 seconds
ValidateEmbeddedBinary (5 tasks) | 12.560 seconds
CopyPNGFile (60 tasks) | 10.077 seconds
Ditto (367 tasks) | 8.374 seconds
PhaseScriptExecution (4 tasks) | 7.390 seconds
CompileStoryboard (4 tasks) | 7.034 seconds
CreateUniversalBinary (35 tasks) | 5.416 seconds
IntentDefinitionCompile (3 tasks) | 4.970 seconds
IntentDefinitionCodegen (3 tasks) | 4.910 seconds
CodeSign (6 tasks) | 2.332 seconds
Touch (36 tasks) | 0.860 seconds
LinkStoryboards (3 tasks) | 0.024 seconds
Libtool (2 tasks) | 0.021 seconds

Overall, the build time went from 4:55 to 3:22.

It's a hassle, but it would be good to add these to the tests. Or maybe just convert the tests over to the new operators, since they all forward?

Also, in the spirit of the Swift Evolution process, I'd love to see some samples of the new operators in action, so we can see how it actually looks, rather than having to imagine it. If we go @chrisballinger's route, we'll be able to see it in the sample app.

@ZevEisenberg should I just replace the old operators with the new ones in the sample app?

Would love to get @jvisenti's opinion on this, too.

Changing to custom operators is something that's been discussed for a long time. I think it's good they're finally implemented, even though I've had reservations in the past. I'm not so sure about deprecating the old operators though, because Anchorage has always been about convenience and typing |==| is less convenient than typing == (I also find it a bit less readable). I personally would use a fork or earlier version if the old operators were deprecated, but I'm also not optimizing how I write code for reduced compile times.

This is kind of how I felt about it too. I think the tech debt isn't a significant issue if your compile times are reasonable. If you start getting warnings that your functions are taking a very long time to compile, the new operators provide you a way out (just put the operators you already wrote "in jail").
You're also right that it's a pain to type. If you have any ideas for a better syntax I'm all ears. Maybe brackets would be easier to type out?

Ah, brackets aren't allowed in operator names. I guess the real goal is to reduce the amount of cognitive overhead it takes to type out the operators, and my thought was to reduce the need to press/release the Shift key a lot.

@ZevEisenberg The old operators are internally leaning on the new operators. I'm hesitant to update the tests with the new operators, as we could run into a future situation where a regression is introduced for the overloaded operators and our tests wouldn't catch it.

On the topic of testing, I defer to the old adage, "the only code you need to test is code you want to work." Test both? Too much work to code-gen the tests for both operators? It's not like this is an unbounded problem. You're probably five minutes of find-and-replace away from doubling up the tests.

I've updated the tests to cover overloads and custom operators independently. I've also added performance tests, since I was worried that making the overload invoke the custom operator would hurt runtime performance (however negligibly). Turns out the custom operators are about 4% faster.

I think this is ready for another round of review (@ZevEisenberg @chrisballinger @jvisenti). To summarize:

The operators are now surrounded with / instead of | to make them easier to type.
Documentation has been added to the README that includes an example.
Tests have been updated to cover operator overloads and custom operators. I've also added performance testing for both sets of operators.
For now, we're preserving the operator overloads, and the new custom operators are intended as a fix if a user encounters long compile times. The discussion for deprecating the overloads and reworking the documentation should be done in another issue or PR, in my opinion.

It's just italic! 😂
I agree with everything here as well. Nice work, @colejd

Although I'd usually save the version bump for a separate PR. Separation of concerns 😉


Enhancing the Contact Us section

Is your feature request related to a problem? Please describe.
-We have a section for email entry only, there should also be a text-area for the users to write messages they wish to send.
Describe the solution you'd like
-Making a text-box for users to write their messages, and also displaying an alert whenever the user clicks the 'Contact Us' button.
I wish to contribute to this issue. Please assign me the same under GSSOC'21.

already raised issue @somya51p


Thermal maps obtained by different methods vary greatly

Is this phenomenon correct?
I used usage_examples/vit_example.py to test the thermal maps for different methods. The results are as follows

This this can happen.
For transformers I noticed that generally gradient free methods: "ScoreCAM", "AblationCAM" perform well.

Could you please explain why the gradient method does not perform well?

This may be the reason(quote from "Ablation-CAM: Visual translation for Deep Convolutional Network via gradient-free Localization"), transformer has many full connect layers, resulting in poor performance of gradient-based methods


how it use in angular app?

i want to use it in component. but canvas creating in the end of html document, not in component.
How i can move canvas in some container?

DrawerJs was never tested with Angular, or some other front-end framework which aggressively changing DOM.


Specter Patch Not applying

here is the latest config
[2020-12-20 20:38:06.111] [info] Game version 1.5
[2020-12-20 20:38:06.149] [info] 	AMD SMT Patch: success
[2020-12-20 20:38:06.149] [warning] 	Spectre patch: failed, unknown version
[2020-12-20 20:38:06.163] [warning] 	Virtual Input Patch: failed
[2020-12-20 20:38:06.212] [info] 	Start screen patch: success
[2020-12-20 20:38:06.215] [info] 	Disable intro movies patch: success
[2020-12-20 20:38:06.250] [info] 	Hook mouse clip function!
[2020-12-20 20:38:06.277] [info] 	Log function hook complete!
[2020-12-20 20:38:06.903] [info] 	D3D12 hook complete

Same problem here
[2020-12-20 12:36:08.614] [info] Game version 1.5
[2020-12-20 12:36:08.648] [info] 	AMD SMT Patch: success
[2020-12-20 12:36:08.648] [warning] 	Spectre patch: failed, unknown version
[2020-12-20 12:36:08.661] [warning] 	Virtual Input Patch: failed
[2020-12-20 12:36:08.706] [info] 	Start screen patch: success
[2020-12-20 12:36:08.707] [info] 	Hidden options patch: success
[2020-12-20 12:36:08.710] [info] 	Disable intro movies patch: success
[2020-12-20 12:36:08.728] [info] 	Hook mouse clip function!
[2020-12-20 12:36:08.738] [info] 	Log function hook complete!
[2020-12-20 12:36:09.034] [info] 	D3D12 hook complete
R5 3600 and GTX 970

Me too, I have the same issue.
[2020-12-20 11:01:52.818] [info] Game version 1.5
[2020-12-20 11:01:52.924] [info] 	AMD SMT Patch: success
[2020-12-20 11:01:52.924] [warning] 	Spectre patch: failed, unknown version
[2020-12-20 11:01:52.940] [warning] 	Virtual Input Patch: failed
[2020-12-20 11:01:53.008] [info] 	Start screen patch: success
[2020-12-20 11:01:53.010] [info] 	Hidden options patch: success
[2020-12-20 11:01:53.013] [info] 	Disable intro movies patch: success

1.3.0
1800x gtx 1080ti
[2020-12-20 15:30:08.358] [info] Game version 1.5
[2020-12-20 15:30:08.399] [info] 	AMD SMT Patch: success
[2020-12-20 15:30:08.399] [warning] 	Spectre patch: failed, unknown version
[2020-12-20 15:30:08.414] [warning] 	Virtual Input Patch: failed
[2020-12-20 15:30:08.464] [info] 	Start screen patch: success
[2020-12-20 15:30:08.466] [info] 	Hidden options patch: success
[2020-12-20 15:30:08.469] [info] 	Disable intro movies patch: success
[2020-12-20 15:30:08.508] [info] 	Hook mouse clip function!
[2020-12-20 15:30:08.541] [info] 	Log function hook complete!
[2020-12-20 15:30:08.881] [info] 	D3D12 hook complete

Same here
[2020-12-20 13:13:34.300] [info] Game version 1.5
[2020-12-20 13:13:34.373] [info] 	AMD SMT Patch: success
[2020-12-20 13:13:34.373] [warning] 	Spectre patch: failed, unknown version
[2020-12-20 13:13:34.416] [warning] 	Virtual Input Patch: failed
[2020-12-20 13:13:34.486] [info] 	Start screen patch: success
[2020-12-20 13:13:34.491] [info] 	Disable intro movies patch: success

Same on AMD Ryzen 7 3700x

This is expected until I find time to update the addresses


 It might have started occurring after I created a ROS planning workspace that contains 700+ MB.

Modifying -Xmx512m in eclipse.ini seems to have solved it for now.
https://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F


Add fuzzing testing in liquidity pools

Fixes https://github.com/oceanprotocol/multi-repo-issue/issues/131 .
Changes proposed in this PR:

Add fuzzing tests to test liquidity pools creation with random values
Add fuzzing tests to test swaps with random values
Update Bpool python interface with missing functions and fixes

@md0x @DMats I do not understand, what is the status of this? There's a commit called "tmp commit" from 18 days ago. What is happening? If it's abandoned due to other priorities, please leave a comment explaining this, or have someone else take it.

@md0x @DMats I do not understand, what is the status of this? There's a commit called "tmp commit" from 18 days ago. What is happening? If it's abandoned due to other priorities, please leave a comment explaining this, or have someone else take it.

@calina-c sorry, I had to put the task aside to dedicate myself to migration, I am taking it up again now.


Rendering Another Component when the user is already logged in?

Hi, I am really enjoying this package, But I'm little stuck, I have made a Register page, I'm wondering if it's possible to render another component like a Modal that say's "Note, you are already logged in, you may continue to dashboard or logout" maybe.
I have tried,
export default withAuthUser({
  whenAuthed: AuthAction.SHOW_LOADER,
  LoaderComponent: alreadyLoggedModal,
})(register);

that using SHOW_LOADER instead to show the modal component as a loader, but this doesn't seem to work, maybe because I'm doing the wrong way.
Just wondering if there's any other way I could achieve this. I have read the documentation, but didn't find any another other way to render a component for whenAuthed. (except loaderComponent)
Here's my full code:
import React from "react";
import { Col, Row, Container, ModalDialog, Modal } from "react-bootstrap";
import { PersonCheckFill, CloudArrowUpFill } from "react-bootstrap-icons";
import FirebaseAuth from "../components/elements/FirebaseAuth";
import { AuthAction, useAuthUser, withAuthUser } from "next-firebase-auth";

const alreadyLoggedModal = () => {
  const AuthUser = useAuthUser();
  return (
    <Modal show backdrop="static" keyboard={false}>
      <Modal.Header closeButton>
        <Modal.Title>You are already Logged In!</Modal.Title>
      </Modal.Header>
      <Modal.Body>
        Note: You already logged in with{" "}
        {AuthUser.email || AuthUser.firebaseUser?.phoneNumber}. To Register or
        Login with new account, you must first Logout. If you want to continue
        with you current account, click on Dashboard to view your Account.{" "}
      </Modal.Body>
      <Modal.Footer>
        <Button variant="info" onClick={AuthUser.signOut}>
          Logout
        </Button>

        <Link href="/dashboard">
          <Button variant="success">Dashboard</Button>
        </Link>
      </Modal.Footer>
    </Modal>
  );
};
const register = () => {
  return (

      <Row
        style={{ height: "90vh" }}
        className="d-flex align-items-md-center justify-content-center"
      >
        <Col md={4} className="p-5 text-center">

 Register as a Host

            <CloudArrowUpFill /> Host you own Virtaul Queues and Allow people to
            get token for them.

        </Col>
        <Col md={4} className="border shadow rounded-3 p-3">

            <PersonCheckFill /> Get Started

            Setup your queue within few seconds. Choose one of the following
            methods:{" "}

          <FirebaseAuth />

            Note: Kindly choose only one of the above methods
            and you must use the same method everytime you login.

        </Col>
      </Row>

  );
};

export default withAuthUser({
  whenAuthed: AuthAction.SHOW_LOADER,
  LoaderComponent: alreadyLoggedModal,
})(register);```

Right now, there's no built-in way to render a component when the user is authenticated. The AuthAction.SHOW_LOADER option is only for unauthenticated states. You can handle this manually with useAuthUser and modifying your page as needed.
What's your use case for showing something when the user is authenticated? I assumed the typical behavior would be to either render or redirect to the app.


[BUG] Differents dependencies between Gradle and Maven for same version 3.5.0

I use azure-spring-boot-starter-active-directory-b2c:3.5.0.
My project failed to run with Gradle, but it starts well with Maven.
The probleme comes from gradle dependencies of azure-spring-boot-starter-active-directory-b2c:3.5.0
For this same version, the dependencies are differents between Maven and Gradle.
I have this error, because version is not correct of spring-security-oauth2-client-5.3.6.RELEASE.jar :
An attempt was made to call a method that does not exist. The attempt was made from the following location:  com.azure.spring.autoconfigure.b2c.AADB2COAuth2ClientConfiguration.buildUserFlowClientRegistration(AADB2COAuth2ClientConfiguration.java:77)
Maven use the right version spring-security-oauth2-client-5.5.0.RELEASE.jar

AADB2COAuth2ClientConfiguration Class :

It was because of the Spring boot version, I migrate from 2.2.5.RELEASE to 2.5.0 and it's working fine now.


key_file should be created automatically

Otherwise, it leads to 5xx error on /keys/ page right after install.

fixed in 0.12.1


Document our testing plan

To do

[x] Update google sheets we are going to use for testing
[x] Include a couple of examplar suites in the google sheets
[x] Document our manual testing plan in the documentation repo

Note
We use the following google sheets:
Admin: https://docs.google.com/spreadsheets/d/1BAyEPjLIOQcVFfSCRTsBzDL-lKeQscuFkTAWLJelcvU/edit#gid=0
Apply: https://docs.google.com/spreadsheets/d/1ui5XkroLH1UHUgahLuaVrFLQr6afIuAXo1r9cQZRgeE/edit#gid=0
Assessments: https://docs.google.com/spreadsheets/d/155ATAY-f0UOntsbmsy4ngX6KlA2EEcxuh3o9FAaY3KU/edit#gid=0

I am closing this task, as the majority of work was done on the sprint. The proposed work was done on the sprint. If something is needed or to tide up some of the texts. it should create another task for another sprintl


Fix of $search-related methods that are supposed to produce a BSON element but instead produce a BSON document

If you are wondering about a test that fails without this change, look at the SearchOperatorTest.of test, which was modified with a new scenario that requires the changes in this PR.
This is a prerequisite for JAVA-4394, which is almost done, but needs this change.
JAVA-4190

@jyemin, I combined the new constructible BSON element class with the one we had originally as you proposed. So now we only have only AbstractConstructibleBsonElement, just like before this PR.


Standalone Docker image

Surely we have a docker version - so this can just be closed?

Yeah, but still, let's keep this open as publishing a Docker image for FOSSBilling was being talked.

We should start working on this.

We now have a standalone docker image officially published, closing


End city chunk not loading

Issue description
When trying to get into the end city, chunk loading stops and saving the world becomes broken. Attempts to teleport and travel to city on foot lead to the same result.
Steps to reproduce

Generate new world
Teleport to end
Locate end city
Teleport/Travel to end city

Minecraft version
1.21.1 (Latest)
Fabric loader version
0.16.7
Fabric API version
0.106.0+1.21.1
Oritech version
0.10.1
Other relevant versions
Mods:
athena-fabric-1.21-4.0.1
fabric-api-0.106.0+1.21.1
geckolib-fabric-1.21.1-4.6.6
lavender-0.1.13+1.21
oritech-0.10.1
owo-lib-0.12.15+1.21
NB - not reproduce on Oritech version 0.9.1
If a (crash)log is relevant for this issue, link it here: (It's almost always relevant)
No response

Fixed with 38023fe270ec32b92ed6e4dc320b993cb95a6a4e. thanks


Error localization / translation feature request

Hey, I would like to help refactor the errors in a way that will enable easy translation.
We can return error code with parmeters instead of string, or use microsoft localization methods.

Hi @idan-h,
I already have a library called EfCore.GenericServices.AspNetCore that can convert the errors in a IStatusGeneric return into the ASP.NET Core Model or a ASP.NET Core Web API - see this article on how it works.
Also note that the GenericServices.StatusGeneric library, which the IStatusGeneric comes from, holds errors in the ValidationResult class, which can contain the parameter(s) linked to the error text.
In AuthP I use the IStatusGeneric on nearly every method, and for any error that is linked to a parameter I set the MemberNames parameter in the ValidationResult class . For instance, look for the code snippet status.AddError( in the AuthP code, e.g.  look at AuthRolesAdminService and you will see me setting the parameter linked to various errors.
What I haven't done is to used the EfCore.GenericServices.AspNetCore library the AuthP examples. There is so much code in the repo I take the easy way out and just list all the error messages.
So, the "return error code with parameters instead of string" is already been handled. I would be interested of how you would "enable easy translation" because I thought that would be done in the ASP.NET Core part, not inside the AuthP library.

Hi @idan-h,
I tried the static class for translation but I didn't like it at all, especially when the error message had dynamic parts. So, no I don't want that added to the AuthP library.
If you really want to do something, then creating an example of using the AuthP library with a Blazor frontend is people are asking for. @akema-trebla was looking at this (see issue #38), but think @akema-trebla is too busy to work on it.
I suggested that a Web API backend + Blazor WASM frontend version of the Example3's multi-tenant project would be great, but its not trivial and its a LOT of work.

I might do that in the future as I am working on blazor wasm project.
I didn't see any implementation of status code of some kind.. Maybe I'm missing something?
Maybe we can add an optional parmeter to the error objects in IStatusGeneric which accepts an Enum or an Integer, which will contain the error code. This way translation will still be easier than looking at the code to find every possible error string and then translating it.

I might do that in the future as I am working on blazor wasm project.

That would be great!

... use microsoft localization methods.

You have a point, but its not trivial to create a easy-to-use localization . I'm busy at the moment but I will look at this later.

Hi @JonPSmith
Pardon my tardiness. Yes, I've been quite busy and not been able to deliver as quickly as I'd like. I however have the API implemented and should probably push that.
I made an adjustment to the way we add query filters though, to allow for multiple filters on an entity. Probably should make this a separate issue.
@idan-h how far have you gone with the Blazor sample? Maybe you could pickup from where I left off?

Hi @JonPSmith
Pardon my tardiness. Yes, I've been quite busy and not been able to deliver as quickly as I'd like. I however have the API implemented and should probably push that.
I made an adjustment to the way we add query filters though, to allow for multiple filters on an entity. Probably should make this a separate issue.
@idan-h how far have you gone with the Blazor sample? Maybe you could pickup from where I left off?

I didn't start yet, where did you left off?

I might do that in the future as I am working on blazor wasm project.

That would be great!

... use microsoft localization methods.

You have a point, but its not trivial to create a easy-to-use localization . I'm busy at the moment but I will look at this later.

Its not very complicated tbh, pretty straight forward with IStringLocalizer and resx files

Hi @akema-trebla,
Glad to hear from you. No problem on taking some time on this as no one is getting paid for this. It would be nice if you could add a comment on the original #38 issue on your progress. Also, if you have questions, then use the #38 issue and not this issue.

I made an adjustment to the way we add query filters though, to allow for multiple filters on an entity. Probably should make this a separate issue.

If the multiple filters feature is only in your Web API backend project, then that's fine but it mustn't change any of the AuthP library. I work hard to not to change a feature used in previous versions as that effects people who started on a older version. Also keeping the documentation takes a LOT of time.

Hi @idan-h,

Its not very complicated tbh, pretty straight forward with IStringLocalizer and resx files

I said "its not trivial to create a easy-to-use localization".

easy-to-use

How do you define easy to use?
Does the resx solution combined with dependency injection (IStringLocalizer) suits you?

Version 4.1.0 contains localization service - see this document for an overview.

You might like the feedback on whether adding locational to the AuthP was needed by users - click this to see the Twitter vote on AuthP localization.

You might like the feedback on whether adding locational to the AuthP was needed by users - click this to see the Twitter vote on AuthP localization.

This is great Jon, thank you! I'm looking forward using it, very much needed.


shutil which not reliable on Windows for testing installation

Thanks a lot for the beautiful generator for the notes. I think it is really a missing link in the ecosystem - too many editors, to few open free presenatations of notes, in my opinion.
I spotted a problem which prevents me from running slipbox: the dependency check:
Q:\slipbox
λ slipbox
pandoc not found

Q:\slipbox
λ python -c"from shutil import which; print(which('pandoc'))"
C:\Users\epogr\Anaconda3\Scripts\pandoc.EXE

pandoc is available on the system, but fails the check by slipbox, wonder why that happens. Maybe aoid dependecy check at all and allow to fail when called and not found?

Aha, I am missing dot, but this is not exactly the error message:
Q:\slipbox
λ python -c"from shutil import which; print(which('dot'))"
None

So it appears https://github.com/lggruspe/slipbox/blob/f6b1871b01cd5ba78f23b6577ad537b32623ef8a/slipbox/__main__.py#L30-L31 checks for both pandoc  and dot, but the error message will be pandoc not found even if pandoc is present and dot is missing.
I can split the check into two functions and add extra error message if you'd advise me to.
My initial problem is solved by installing graphviz, and I'm looking forward to experimenting with slipbox, very excited about it.

https://github.com/lggruspe/slipbox/blob/f6b1871b01cd5ba78f23b6577ad537b32623ef8a/slipbox/dependencies.py#L8-L14

Probably even a more simple fix for a PR is adding more verbose error message, eg "Either pandoc or graphviz not found, aborting..."

I would go with the second option, so the error messages can be more specific.

fixed in c15afe0a751e8df78a98d2432ee583a0c801c7a1

Thank you for following up on this @lggruspe !


[ru] Update stale StatefulSet with Cassandra example

resolve https://github.com/kubernetes/website/pull/47087/files

/retitle [ru] Update stale StatefulSet with Cassandra example

LGTM

Thanks!
/lgtm
/approve


make PDF links respect offset setting of PDFoundry

PDFoundry internally adds the offset.    By adding it again, we are getting double offset.  At least that is what happened when I included this code.
Do you have a testcase where it isn't respecting the PDF offset?

that's weird, I could swear it was not doing it when I tested it before, but now that I test it again, it does indeed add the offset.


Doc links are incorrect

Links are to (internal?) review site - e.g. https://review.docs.microsoft.com/en-gb/python/api/azureml-core/azureml.core.run.run?view=azure-ml-py&branch=master#register-model-model-name--model-path-none--tags-none--properties-none--model-framework-none--model-framework-version-none--description-none--datasets-none----kwargs-

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 38e267fb-efa2-dab5-aa83-4a4addc39ee8
Version Independent ID: e1d506d0-c6bf-47ed-a12c-7bb50416c865
Content: How and where to deploy models - Azure Machine Learning
Content Source: articles/machine-learning/how-to-deploy-and-where.md
Service: machine-learning
Sub-service: core
GitHub Login: @jpe316
Microsoft Alias: jordane

@djpugh thanks for reaching out. We will look into this issue and get back to you shortly.

@djpugh which section in the document are you referring to? Where is it referenced? Thanks.

@GiftA-MSFT - from a view source and find "review.docs"  there seem to be two

When you use the SDK to train a model, you can receive either a Run

where Run is incorrectly linked
and

For more information, see the Run.register_model documentation.

where Run.register_model is incorrectly linked

zzs appears in the middle of the page

@djpugh thanks for your feedback. We have updated the doc and changes will be in effect soon.


Optimized index raises RuntimeError on load when saved with negdotprod space

Basically, this is what I am trying to do
import nmslib

space = 'negdotprod'

vectors = [[1, 2], [3, 4], [5, 6]]

index = nmslib.init(space=space, method='hnsw')
index.addDataPointBatch(vectors)
index.createIndex(
    {'M': 15, 'efConstruction': 200, 'skip_optimized_index': 0, 'post': 0}
)
index.saveIndex('test.index')

new_index = nmslib.init(space=space, method='hnsw')
new_index.loadIndex('test.index')

and it raises
Check failed: totalElementsStored_ == this->data_.size() The number of stored elements 3 doesn't match the number of data points ! Did you forget to re-load data?
Traceback (most recent call last):
  File "8.py", line 15, in <module>
    new_index.loadIndex('test.index')
RuntimeError: Check failed: The number of stored elements 3 doesn't match the number of data points ! Did you forget to re-load data?

If I change space variable to cosinesimil, it works just fine. It seems that data points are not stored, even though hnsw method with skip_optimized_index=0 is used.

Optimized index doesn't work with anything except l2 and cosine sorry.

Is there another way to save and load indexes in other spaces? Or do you have any pointers where the development would need to happen for this to work?

@earboxer we will have to change a lot of stuff under the hood. Like restructuring all the library to fix a bunch of issues. If anybody is really serious about helping with this, this can be sped up. But, again, it is going to be a lot of changes.

@earboxer on a second thought, we can a quick fix for data loading too. I think it is actually worth doing. Will you be able to help?

Depends on what needs to be done, I should be able to help! (though I haven't gotten myself too familiar with the code base).

@earboxer we need some generic code to save/load data, which can be invoked when the method doesn't save data on its own. Plus, helping me to ship this (including testing, etc.).

How easy is it to support this for the cosinesimil_sparse space ?

@ibeltagy it's not difficult, this must be done ASAP, but I have a pile of deadlines till the beginning of May.

@searchivarius, I am not familiar with the code, but I can give it a shot if it is easy enough and you provide more details on what needs to be done.

@ibeltagy if you are willing to help, please, drop me a line in a couple of weeks (leo at boytsov dot info). For now, I won't be able to do anything (even giving instructions). Thank you!

Looking at the code, my first guess is we need to modify index.h to define SaveIndex and LoadIndex to be good, then allow the specific index types to call the function from their parent...
Possible references:

pivot_neighb_invindx.cc
hnsw.cc --  this is the one that doesn't work, as OP noted.

Is there any recommended way to understand the class inheritance structure (Doxygen or similar tools). It's quite intimidating as a developer.

@earboxer let's maybe take it offline<EMAIL_ADDRESS>But basically, we need some generic saveData function that is being called every time there's need to save the index. Then, we can call loadData each time there's need to load the index.

Hi @earboxer @ibeltagy @chomechome I am going to address this issue ASAP. I would have done this over this weekend, but I have some doubts about what's the best way to fix this. Historically, these indices  were meta-indices except for L2 and cosine.
So, I have two options

Embed a data loading/saving call into Load/SaveIndex and *always load store data.
Somehow make loading data optional, because for L2 and HNSW there's mostly no need to load this data (except if you want to recompute distances between arbitrary points). This entails two possibilities:
2.2 Having a separate couple of calls LoadData and SaveData.
2.3 Have a flag loadData, saveData in the loadIndex call, which might be True or False by default.

I understand that this is less than ideal, but until the major big-time refactoring it's not possible to fix.

Hello! If it's not decided yet, I suggest using a flag (option 2.3) since it's backwards compatible and is easier to use than separate save/load calls.

@chomechome this makes sense: so the default False (not loading the data) is probably Ok? The reason I want to keep by default is that many people are using HNSW and just query data, i.e., they don't compute distances between arbitrary points. HNSW, for these common cases, does save the data on its own. So, for these people, saving/loading an additional copy of the data doesn't make sense.

I would also go with option 2.3 with False being the default. As you mentioned, I don't need to compute the distance and don't want to save the data, especially that reducing the index/data size is important for my application.

This issue should be tested in 1.8. I appreciate if you could test. I have also reorganized the docs. I believe they should be more accessible now:
https://github.com/nmslib/nmslib/tree/master/manual

@searchivarius Has this issue been resolved? I tried the python snippet in the description with v2.0.6 but the error persists.

@chenqi0805 it was resolved with a crutch :-) one needs to specify save_data=True and load_data=True:
index.saveIndex('test.index', save_data=True)

then you can load it:
new_index = nmslib.init(space=space, method='hnsw')
new_index.loadIndex('test.index')

@searchivarius Thank you!

@searchivarius I am tackling a similar issue in Java native interface c++ code of a related project depends on nmslib as we also need to support spaces other than l2 and cosine. Do you know how much impact saving and loading data for ObjectVector has on the performance of saving and loading index?

@chenqi0805 not off the top of my head, sorry.


Add french responses

Thanks!

Yes, we have the same issue with device name too because every word in french has a gender 🥲

Wouldn't it be cleaner to delete this "de" and replace it with a stop list?

Can you provide some examples? 😀

I was thinking of something like :
Luminosité de {{ slots.area }}
Luminosité {{ list.determinant[slots.area] }} {{ slots.area }}
with {{ list.determinant }} which contain {"de la", "du", "dans la"} selected according the gender of slots.area

The problem is that area can be every word and there is no gender on Home Assistant entity and area 😔
I tested with Siri and I think they have the gender of every word... 😅

I think there is no choice to link gender with different words. Would it be possible to create an external dictionary linking each word to its gender? I don't see any other solution.

It should be possible to automate this with a dictionary such as https://fr.wiktionary.org/


fix: avoid expensive globwalk in examples

Description
Q: how long would a turbo lint call would take in our repository?
A: 13 minutes
12 minutes of that is collecting inputs for turborepo-examples:lint-prettier which it inherits from the root definition.

This PR overrides that input list and now it only takes ~200ms to do nothing.
Testing Instructions

Closes TURBO-2231

But the profile doesn't contain turborepo-examples

Very interesting, turborepo-examples#lint:prettier should still be getting a task hash even if there isn't a script definition.
Mind sharing your profile?

Is it possible that when you gathered your profile you were somehow getting opted into it because of a local git-ignored change?

I do have node_modules present in the examples from when I was testing them.

After git clean -f -x -d which deleted all of the node_modules we it dropped the calc file hash for turborepo-examples#lint:prettier to just 4s, but I still think it makes sense to drop this.


tracker-miners: 3.1.1 -> 3.2.0.alpha.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for tracker-miners is: "Desktop-neutral user information store, search tool and indexer"
meta.homepage for tracker-miners is: "https://wiki.gnome.org/Projects/Tracker"
meta.changelog for tracker-miners is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 3.2.0.alpha.1 with grep in /nix/store/lrhprwhz7g5xnj02c2axpby9nr899cpc-tracker-miners-3.2.0.alpha.1

found 3.2.0.alpha.1 in filename of file in /nix/store/lrhprwhz7g5xnj02c2axpby9nr899cpc-tracker-miners-3.2.0.alpha.1

directory tree listing: https://gist.github.com/90b3497ff86a1c3bb28014d3c65e9419

du listing: https://gist.github.com/40927d7b3daac8e66c0f7d85c3143a90

Rebuild report (if merged into master) (click to expand)

57 total rebuild path(s)

19 package rebuild(s)

19 x86_64-linux rebuild(s)
19 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
18 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
dropbox-cli
gnome-photos
gnome.file-roller
gnome.gnome-books
gnome.gnome-boxes
gnome.gnome-control-center
gnome.gnome-documents
gnome.gnome-photos
gnome.gnome-terminal
gnome.gnome-user-share
gnome.gnome_control_center
gnome.gnome_terminal
gnome.nautilus
gnome.nautilus-python
gnome.tracker-miners
kgx
pantheon.extra-elementary-contracts
phosh
tracker-miners

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/lrhprwhz7g5xnj02c2axpby9nr899cpc-tracker-miners-3.2.0.alpha.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A tracker-miners https://github.com/r-ryantm/nixpkgs/archive/daa0462afde537bf4ae1e7196ac00b80f5b3142b.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/lrhprwhz7g5xnj02c2axpby9nr899cpc-tracker-miners-3.2.0.alpha.1
ls -la /nix/store/lrhprwhz7g5xnj02c2axpby9nr899cpc-tracker-miners-3.2.0.alpha.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package marked as broken and skipped:

gnome.gnome-documents

14 packages built:

dropbox-cli
gnome.file-roller
gnome.gnome-books
gnome.gnome-boxes
gnome.gnome-control-center
gnome.gnome-photos
gnome.gnome-terminal
gnome.gnome-user-share
gnome.nautilus
gnome.nautilus-python
gnome.tracker-miners
kgx
pantheon.extra-elementary-contracts
phosh

Maintainer pings
cc @hedning @jtojnar @dasj19 @maxeaubrey for testing.

We definitely do not want this one yet 😅
I guess the update script caught this because it's .alpha instead of -alpha?

Result of nixpkgs-review pr 134540 run on x86_64-linux 1

1 package marked as broken and skipped:

gnome.gnome-documents

14 packages built:

dropbox-cli
gnome-photos (gnome.gnome-photos)
gnome.file-roller
gnome.gnome-books
gnome.gnome-boxes
gnome.gnome-control-center (gnome.gnome_control_center)
gnome.gnome-terminal (gnome.gnome_terminal)
gnome.gnome-user-share
gnome.nautilus
gnome.nautilus-python
tracker-miners (gnome.tracker-miners)
kgx
pantheon.extra-elementary-contracts
phosh

We need to switch from none version policy to tagged. Probably same for tracker.

Result of nixpkgs-review pr 134540 at daa0462a run on x86_64-linux 1

1 package failed to build:

gnome.gnome-documents

14 packages built successfully:

dropbox-cli
gnome-photos (gnome.gnome-photos)
gnome.file-roller
gnome.gnome-books
gnome.gnome-boxes
gnome.gnome-control-center (gnome.gnome_control_center)
gnome.gnome-terminal (gnome.gnome_terminal)
gnome.gnome-user-share
gnome.nautilus
gnome.nautilus-python
tracker-miners (gnome.tracker-miners)
kgx
pantheon.extra-elementary-contracts
phosh

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.


Strange interaction between reshaping and type casting in Numba

Reporting a bug

[x] I have tried using the latest released version of Numba (most recent is
visible in the release notes
(https://numba.readthedocs.io/en/stable/release-notes-overview.html).
[x] I have included a self contained code sample to reproduce the problem.
i.e. it's possible to run as 'python bug.py'.

I have noticed that when I pass a 2d array of 0s and 1s into a Numba njit function, reshape it, and then cast it to np.int32 or numba.int32, the resulting array when printed is different.
Here is example code:
import numpy as np
from numba import njit

array_2d = np.array([[0, 1, 0, 1, 1, 0, 0, 1],
                     [0, 1, 1, 0, 1, 1, 0, 0],
                     [0, 1, 1, 0, 1, 1, 0, 0]]).T

num_cols = array_2d.shape[1]
num_rows = array_2d.shape[0]

@njit
def f(array, num_rows, num_cols):
    pairs = array.reshape(num_rows // 2, 2, num_cols)

    pairs_cast = pairs.astype(numba.int32)

    return pairs, pairs_cast

pairs, pairs_cast = f(array_2d, num_rows, num_cols)

print("Pairs:")
print(pairs)
print("\nPairs cast to int32:")
print(pairs_cast)

The output is:
Pairs:
[[[0 0 0]
  [1 1 1]]

 [[0 1 1]
  [1 0 0]]

 [[1 1 1]
  [0 1 1]]

 [[0 0 0]
  [1 0 0]]]

Pairs cast to int32:
[[[0 0 0]
  [1 1 1]]

 [[1 1 1]
  [0 1 1]]

 [[0 1 1]
  [0 0 0]]

 [[1 0 0]
  [1 0 0]]]

This appears to have the same cause as #5829 (thanks to @stuartarchibald for pointing to this). The fix from that issue:
diff --git a/numba/core/typing/arraydecl.py b/numba/core/typing/arraydecl.py
index 4bf1b9564..f44f7c5b9 100644
--- a/numba/core/typing/arraydecl.py
+++ b/numba/core/typing/arraydecl.py
@@ -465,7 +465,7 @@ class ArrayAttribute(AttributeTemplate):
                 raise TypeError("reshape({0}) is not supported".format(
                     ', '.join(map(str, args))))

-            retty = ary.copy(ndim=len(args))
+            retty = ary.copy(ndim=len(args), layout="A")
             return signature(retty, *args)

     @bound_function("array.sort")

makes the reproducer in this example execute correctly too.

From the triage discussion:

We should return with the same layout as the source array if the reshaped array has the same number of dimensions as the source array.
We should return with the "A" layout otherwise.


[pylint] Add more path to sys.path in .pylintrc

Add web, web/client and web/server directories to the sys.path in the .pylintrc file.

What is the use of adding these paths to the sys.path?

@bruntib Pylint will be unable to import modules from these directories. E.g.:
from codechecker_web.shared import database_status  # Error: Unable to import codechecker_web.shared

So it will give you a warning message if you run it for example through VSCode.

But why are these special? Because the 3rd parties, like thrift libs and plist_to_html are understandable. But why don't we have to list all CodeChecker modules then?

@bruntib During the repository split up (https://github.com/Ericsson/codechecker/issues/1830) as we discussed with @gyorb we created the following main modules:

codechecker_common
codechecker_analyzer
codechecker_web
codechecker_client
codechecker_server

If you would like to import something from these modules you will use the following format:
<main_module_name>.<module_name>.
E.g.:
from codechecker_analyzer.buildlog import log_parser

One more important thing that for example codechecker_analyzer and codechecker_client both contain a package called cmd. This way we cannot list these modules in this file because the cmd package will not be unique.


Update private-endpoint-overview.md

Docs Build status updates of commit 0b79487:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/private-link/private-endpoint-overview.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@asudbring
Can you review the proposed changes? IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@asudbring - Can you review this old PR and determine whether it needs to be closed or merged?
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.

#sign-off


Array3D shape given in different format to numpy/scipy

We currently return shape as (x, y, z), however it's standard in python science stack to give in (z, y, x) - i.e. from outer most to inner most axis.
May be useful to keep it consistent to what users may be expecting?

I thought the way I had it was consistent with how a Numpy ndarray would work, which seemed the most logical to me?
(As we're planning to replace Array3D with a tensor from RLST anyway, this might not be worth fixing but instead we should get it right when implementing these tensors.)

Yeah absolutely 👍

Closing this now that we're using RLST everywhere


PP (prototype): small change to 'add contact details'

Hi @sanjaypoyzer
could you change it to allow the user enter multiple means for being contacted, not just one.
https://verify-local-patterns.herokuapp.com/service-patterns/parking-permit/example-service/add_contact_details

@EUzkuraityte Could you explain more about why the user would need to enter multiple means for contact?

they might prefer to be contacted by email, but in case something is urgent they may allow to be contacted via email. Phone and email combo is pretty standard anyway so probs shouldn't be an issue. Plus from the service point of view, in case one of the contact details are mistyped or invalid they'll always have a back up option.

What urgent messages might the council send about parking permits?
The problem with a backup is that the user will then get the notification twice, which previous research has shown to be something users don't like. This is why our current pattern is radio buttons rather than check boxes. (Some more info about this pattern here.)

@sanjaypoyzer the user wouldn't get the message twice. Most councils have email notifications as default method for contact and only use telephone if the emails bounce back (it all comes down to cost in the end...).
Good link btw, happy to follow their suggestion and ask for one primary contact method but would also like to give the users an opportunity to enter a back up if they wish.

This came up in the Con Travel research but I want to talk to the Notify team a bit more about it.

Duplicate of #186


[Fix/stacks] Optimistic operation disappears for long running transactions

✅ Checklist

[ ] npx changeset was attached.
[ ] Covered by automatic tests.
[ ] Impact of the changes:

...

📝 Description
The optimistics transaction disappears when transactions on stacks network takes long time. The pending operations are now added to accounts object during sync to fix the problem.

❓ Context

JIRA or GitHub link: https://ledgerhq.atlassian.net/browse/LIVE-10510

🧐 Checklist for the PR Reviewers

The code aligns with the requirements described in the linked JIRA or GitHub issue.
The PR description clearly documents the changes made and explains any technical trade-offs or design decisions.
There are no undocumented trade-offs, technical debt, or maintainability issues.
The PR has been tested thoroughly, and any potential edge cases have been considered and handled.
Any new dependencies have been justified and documented.
Performance considerations have been taken into account. (changes have been profiled or benchmarked if necessary)

@hzheng-ledger Thanks for the review.

whether the balance return from /extended/v1/address/${addr}/stx includes the pending transactions(mempool transactions)

Only sent transactions are part of the mempool txns object https://github.com/Zondax/ledger-live/blob/develop/libs/ledger-live-common/src/families/stacks/bridge/utils/api.ts#L142-L147 so we substract the fee and amount from the balance.

Thanks a lot. I've approved the PR


Test failures

I'm currently working on using your circuits for my own purposes.
I'm trying to run your test suite to ensure that I have the dependencies set up correctly, but I'm getting a variety of errors (e.g. TypeError: compiler is not a function, TypeError: Cannot read property 'prime' of undefined).
Should the test suite run successfully, as-is?

The issue was that I had simply run npm i, which preferred the version of circom specified in dependencies (the official one). Forcefully installing the version specified in devDependencies fixes things.


USE_OFFLOAD_ARCH=1 to force smoke to use --offload-arch=

Code says USE_OFFLOAD_ARCH, comment says USE_OFFLOAD_HOST. Otherwise looks good

[AMD Official Use Only]
Thx fixing it
I have had offload host weighing on the brain lately
Get Outlook for iOShttps://aka.ms/o0ukef

From: Jon Chesterfield @.>
Sent: Saturday, May 29, 2021 4:43:26 PM
To: ROCm-Developer-Tools/aomp @.>
Cc: Lieberman, Ron @.>; Author @.>
Subject: Re: [ROCm-Developer-Tools/aomp] USE_OFFLOAD_HOST=1 to force smoke to use --offload-arch= (#218)
[CAUTION: External Email]
Code says USE_OFFLOAD_ARCH, comment says USE_OFFLOAD_HOST. Otherwise looks good
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FROCm-Developer-Tools%2Faomp%2Fpull%2F218%23issuecomment-850896027&data=04|01|ron.lieberman%40amd.com|a7e806e0dff2459adf3e08d922e26992|3dd8961fe4884e608e11a82d994e183d|0|0|637579178093178876|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=fQiNNBzzHo9Hxfip%2BgN%2FDfOpGxuwrzvrFiM%2B%2BnyxGCA%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAD3EYZZ5VP26UM2L7Y6DHADTQFGW5ANCNFSM45XTTSFA&data=04|01|ron.lieberman%40amd.com|a7e806e0dff2459adf3e08d922e26992|3dd8961fe4884e608e11a82d994e183d|0|0|637579178093188870|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2FFuInVPh9RfS5XNbBuu4EVxvc3ZlCdF8n66%2Fr7jIqgU%3D&reserved=0.

fixed typo, pushed to aomp-dev directly


fix renew-kubeconfig annotation

How to categorize this PR?

/area robustness
/kind enhancement
What this PR does / why we need it:
This is a fix for #5988.
It fixes:

wrong client being used for updating the ManagedSeed resource
gardenlet not allowing kubeconfig renewal for the annotation

Release note:

Fixed a bug with the `gardener.cloud/operation: renew-kubeconfig` annotation for `ManagedSeed` resources, which caused the corresponding gardenlet to break when the annotation was set.

cc @rfranzke

/assign

/cherry-pick release-v1.48


add lock to avoid duplicated sender msgNum & fix messageSeqReset bug

Thanks for showing interest in this project. Please submit the pull request so that we can merge it.


[FR]: Ability to add to PYTHONPATH globally.

What is the current behavior?
We have an src directory which contains all of our main python packages. It doesn't seem like there is a good way to add src globally to the PYTHONPATH in order to import src/company as from company import module.
Describe the feature
I would like some mechanism to add src to the PYTHONPATH. I tried to set the imports attribute in py_binary etc., but this seems to only support relative paths.

Looks like this may work as a workaround.
Implement a wrapper py_rules.bzl
load("@aspect_rules_py//py:defs.bzl", base_py_binary = "py_binary", base_py_library = "py_library", base_py_test = "py_test")

def py_binary(name, srcs, deps, **kwargs):
    base_py_binary(
        name = name,
        srcs = srcs,
        deps = deps + ["//src"],
        **kwargs
    )

def py_library(name, srcs, deps, **kwargs):
    base_py_library(
        name = name,
        srcs = srcs,
        deps = deps + ["//src"],
        **kwargs
    )

def py_test(name, srcs, deps, **kwargs):
    base_py_test(
        name = name,
        srcs = srcs,
        deps = deps + ["//src"],
        **kwargs
    )

and then define a rule in the root
load("@aspect_rules_py//py:defs.bzl", "py_library")

package(default_visibility = ["//visibility:public"])

py_library(
    name = "src",
    imports = ["."],
)

and then use the wrapper everywhere in the repository.


Update README.md

Add a small section about interop with SQLBrite regarding compiled statements.

i definitely agree there should be documentation - would it be better on SQLBrite though as a more general how-to for compiled statements, since people might also not know how to use compiled statements without SQLDelight
cc @JakeWharton

I even wrote myself these little helpers for statements:
internal fun BriteDatabase.executeInsert(statement: SqlDelightCompiledStatement): Long {
  return this.executeInsert(statement.table, statement.program)
}

internal fun BriteDatabase.executeUpdateDelete(statement: SqlDelightCompiledStatement): Int {
  return this.executeUpdateDelete(statement.table, statement.program)
}


Update SwapStatus

Hey, I am looking into SwapInfo interface with  breez-sdk-swift v0.3.8.
Following the swift interface , SwapStatus enum defines only initial andexpired status.
On the other hand, in the udl specification there are 6 states.
Could you add these states? Not sure if the change is about this repo or the main brees-sdk repo.
Thanks

That is correct, the SDK version 0.3.9 doesn't have those states yet: https://github.com/breez/breez-sdk/blob/0.3.9/libs/sdk-bindings/src/breez_sdk.udl#L489-L492
We'll be releasing these changes as part of a 0.4.x release, which should be coming shortly. If you want to get started with testing it right away, you could build the swift bindings from the SDK's main branch yourself.

fixed in the last rc version, thanks


Dedicated Play/Pause Switch

Hey, it would be great to have a dedicated play/pause switch, so Siri can play/pause your tv.
At the moment it only works via the iPhone remote app, but unfortunately Siri does not support this.

Could also be used for automations, so the TV can be paused when a doorbell is pressed


Got lost on this page trying to create the Container App Environment

"In the Create Container App environment field, select Create new."
How do you get to the screen with this field? A step is missing.
When I go search for 'Container App Environments' I get a screen that has "Manage View, Refresh, Export to CSV, OPenQuery and Assign Tags" so I got lost.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0194e0b0-31f5-85ad-3c1e-08fe2f8519fa
Version Independent ID: a6ebb408-94fe-31c1-5d08-544a26a93a50
Content: Quickstart: Deploy your first container app using the Azure portal
Content Source: articles/container-apps/quickstart-portal.md
Service: container-apps
GitHub Login: @cebundy
Microsoft Alias: v-bcatherine

Hello @edgreenberg-mri , when you go to Container App, select the first option Create, it will take you to the creation section for container apps. I hope this answers your question.

If you have any queries, feel free to reach back.

It’s the container-app-environment that I was having trouble with. I was reporting that the documentation seems to skip a step.  I got the environment created from the command line, so I’m OK, but when I got confused in the portal, thought you guys should read it over again and maybe try following the instructions for yourselves.
From: SreejaBhattacharya-MSFT @.>
Sent: Tuesday, May 10, 2022 11:01 AM
To: MicrosoftDocs/azure-docs @.>
Cc: Ed Greenberg @.>; Mention @.>
Subject: Re: [MicrosoftDocs/azure-docs] Got lost on this page trying to create the Container App Environment (Issue #92692)
Hello @edgreenberg-mrihttps://github.com/edgreenberg-mri , when you go to Container App, select the first option Create, it will take you to the creation section for container apps. I hope this answers your question.
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/issues/92692#issuecomment-1122512403, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AYZROAPC53EKLHNYKHA7IGDVJJ22TANCNFSM5VREJSCA.
You are receiving this because you were mentioned.Message ID: @.***>
This electronic message transmission contains information from MRI Software LLC which is (i) confidential; or (ii) otherwise the exclusive property of the intended recipient or MRI Software LLC (neither of which is waived nor lost by mistaken delivery). This information is intended for the use of the individual or entity that is the intended recipient. If you are not the designated recipient, please be aware that any dissemination, distribution or copying of this communication is strictly prohibited. Please notify us if you have received this message in error, and remove both emails from your system. Any unauthorized use is expressly prohibited. Thank you for your assistance.

Hi @edgreenberg-mri , thanks for reaching back. I tried following the documentation step by step and implemented it via Portal. It seems correct to me. Create new option is available below the Container Apps Environment. Please do correct me if my understanding is wrong here, or if I am unable to get the exact query.

Since I made the report on Tuesday,  I’ve lost the link to the page I reported.
From: SreejaBhattacharya-MSFT @.>
Sent: Tuesday, May 10, 2022 3:17 PM
To: MicrosoftDocs/azure-docs @.>
Cc: Ed Greenberg @.>; Mention @.>
Subject: Re: [MicrosoftDocs/azure-docs] Got lost on this page trying to create the Container App Environment (Issue #92692)
Hi @edgreenberg-mrihttps://github.com/edgreenberg-mri , thanks for reaching back. I tried following the documentation step by step and implemented it via Portal. It seems correct to me. Create new option is available below the Container Apps Environment. Please do correct me if my understanding is wrong here, or if I am unable to get the exact query.
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/issues/92692#issuecomment-1122770043, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AYZROAJ635HS5TBKEMTAUK3VJKYZDANCNFSM5VREJSCA.
You are receiving this because you were mentioned.Message ID: @.***>
This electronic message transmission contains information from MRI Software LLC which is (i) confidential; or (ii) otherwise the exclusive property of the intended recipient or MRI Software LLC (neither of which is waived nor lost by mistaken delivery). This information is intended for the use of the individual or entity that is the intended recipient. If you are not the designated recipient, please be aware that any dissemination, distribution or copying of this communication is strictly prohibited. Please notify us if you have received this message in error, and remove both emails from your system. Any unauthorized use is expressly prohibited. Thank you for your assistance.

@edgreenberg-mri , Oh that is okay. In future, if you want to raise any issues regarding documentation, you can go ahead and raise it from that very page itself. If you scroll down to the bottom of each page, you will see a section to "submit and view feedback" for "This page". Select on "This page" and it shall open an issue for you, wherein you can provide your comments on that very documentation that the issue is referencing.

Ok sure, thanks @edgreenberg-mri


Reactive Search

Change behaviour of search to be more reactive using Alpine.js, removes page reload.

Implemented in upcoming v1.1.0-beta


Swift Package Manager support. Xcode 12 update.

Added a simple manifest file to support Swift Package Manager.
Along with that resolved warnings that were displayed in Xcode 12. Unfortunately, it included increase of deployment target to 9.0.

Hello, does this
support SPM now?
just tried
https://github.com/suzuki-0000/SKPhotoBrowser
but gave me a failure.
thank you.

@jaelee1993 The pull request has not been reviewed by @suzuki-0000  yet, so there is no SPM support in the original repo. If you want to try my implementation, you can use https://github.com/BookerSoftwareInc/SKPhotoBrowser and specify "SwiftPM" branch.


Buildkite steps occuring on different hosts / difference in execution environments

We're in the process of adding Amazon Linux 2 testing to our CI along with Debian.  However, the CI system is misconfigured and running steps randomly across different hosts right now, meaning that dependencies between steps are not captured properly and some environmental differences are showing up and causing failures.
This is impacting https://github.com/firecracker-microvm/firecracker-go-sdk/pull/166.

[x] Constrain builds to only run in our existing Debian environment
[x] Constrain builds to always run on the same host
[ ] ~Set up new pipeline for Amazon Linux 2 duplicating the Debian pipeline~
[ ] ~Fix issues caused by environmental differences (install(1) has a different version with different behavior in the -D option)~

The difference in install(1) seems to be introduced somewhere between coreutils 8.22 (in Amazon Linux 2) and 8.28 (in Ubuntu 18.04) (Debian Buster has 8.30, but I can see the different description in Ubuntu 18.04 already).
Amazon Linux 2:

-D     create all leading components of DEST except the last, then copy
       SOURCE to DEST

Debian Buster:

-D     create  all  leading  components of DEST except the last, or all
       components of --target-directory, then copy SOURCE to DEST

Closing since the immediate issue is fixed.  @xibz is going to follow up and finalize setting up an Amazon Linux 2 test environment (and chase down the environmental differences).


error 429

Link to the environment that reproduces this issue or a replay of the bug
No response
To Reproduce
not sure why always happened
Current vs. Expected behavior
2/3/2024, 2:33:33 PM Start translating with gpt-4...
Error: Error: Request failed with status code 429
Notice: If the status code is 400, the file exceeds token limit without line breaks.
Please open one line as appropriate.
Notice: If the status code is 404, you do not have right access to the model.
Provide environment information
using gpt-4

after topping up to my openapi , the situation still happened
How do you run translations?
By Command
Additional context
No response

Perhaps the reason is that OpenAI frequently changes the token limits by model.
Can you try again with one of the models gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-4-vision-preview?

@yuessir
The reason may be that OpenAI frequently changes the token limits by model.
Can you try again with one of the models gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-4-vision-preview?

I have used the gpt-4-0125-preview  model. Now it seems that there is no error 429. But this model did not translate all the documents I entered. It only translated less than 10% and then proceeded with the PR.

@yuessir
The reason may be that OpenAI frequently changes the token limits by model.
Can you try again with one of the models gpt-4-0125-preview,gpt-4-turbo-preview,gpt-4-1106-preview,gpt-4-vision-preview?

I have used the gpt-4-0125-preview model. Now it seems that there is no error 429. But this model did not translate all the documents I entered. It only translated less than 10% and then proceeded with the PR.

it seems that was the unstable case, now it is fine


Ionic 2 Keyboard hides the input field

Coming across this issue with an ion-input in the ion-footer of my app. when I click on the input to start typing the iphone keyboard goes up over it essentially hiding it. Exact same issue highlighted here https://github.com/driftyco/ionic/issues/5432 and I have a temporary fix with this snippet  https://gist.github.com/Manduro/bc121fd39f21558df2a952b39e907754 however if you have a submit button in the footer you have to click it twice in order to post the forms data so its not perfect but stil pretty good any idea when an official fix will be out ?

Hello, thanks for using Ionic! Unfortunately we do not have a fix for this at the moment as it is an issue in UiWebView itself. We are currently working on a workaround. I am going to close this issue as a duplicate of https://github.com/driftyco/ionic/issues/5432.


ESP32S3 usb_host_cdc_acm Bad transfer status: CHECK_FULL_DEV_DESC (IDFGH-9036)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.0
Operating System used.
Windows
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
None
Development Kit.
ESP32-S3-DevKitC-1 v1.1
Power Supply used.
USB
What is the expected behavior?
Enumerate cdc acm device (pico rp2040) of pid:vid 0x000A:0x2E8A as per the example.
Device correctly enumerates and communicates on windows 11.
USB connection between the esp32 and the device seems to be fine because msc on the same device is working (and running another example).
What is the actual behavior?
Currently not finding the cdc acm device.
I (345) USB-CDC: Opening CDC ACM device 0x2E8A:0x000A
E (715) HUB: Bad transfer status: CHECK_FULL_DEV_DESC
E (715) HUB: Stage failed: CHECK_FULL_DEV_DESC
ESP_ERROR_CHECK failed: esp_err_t 0x105 (ESP_ERR_NOT_FOUND) at 0x4200844d

Steps to reproduce.
Flash example
Connect esp32s3 dp and dm to rp2040 (running the cdc acm stdio example) dp and dm.
Debug Logs.
I (0) cpu_start: App cpu up.
I (209) cpu_start: Pro cpu start user code
I (209) cpu_start: cpu freq: 160000000 Hz
I (209) cpu_start: Application information:
I (212) cpu_start: Project name:     usb-host
I (217) cpu_start: App version:      f8f7a4b-dirty
I (222) cpu_start: Compile time:     Dec 26 2022 18:39:43
I (228) cpu_start: ELF file SHA256:  fed41d198db243ff...
I (234) cpu_start: ESP-IDF:          v5.0-dirty
I (240) heap_init: Initializing. RAM available for dynamic allocation:
I (247) heap_init: At 3FC955C0 len 00054150 (336 KiB): D/IRAM
I (253) heap_init: At 3FCE9710 len 00005724 (21 KiB): STACK/DRAM
I (260) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (266) heap_init: At 600FE010 len 00001FF0 (7 KiB): RTCRAM
I (273) spi_flash: detected chip: generic
I (277) spi_flash: flash io: dio
W (281) spi_flash: Detected size(8192k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (295) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (315) USB-CDC: Installing USB Host
I (345) USB-CDC: Installing CDC-ACM driver
I (345) USB-CDC: Opening CDC ACM device 0x2E8A:0x000A
E (715) HUB: Bad transfer status: CHECK_FULL_DEV_DESC
E (715) HUB: Stage failed: CHECK_FULL_DEV_DESC
E (5345) cdc_acm: cdc_acm_host_open(719): USB device with VID: 0x2E8A, PID: 0x000A not found
ESP_ERROR_CHECK failed: esp_err_t 0x105 (ESP_ERR_NOT_FOUND) at 0x4200844d
0x4200844d: app_main at /main/cdc.c:66 (discriminator 1)

file: "./main/cdc.c" line 66
func: app_main
expression: cdc_acm_host_open(EXAMPLE_USB_DEVICE_VID, EXAMPLE_USB_DEVICE_PID, 0, &dev_config, &cdc_dev)

abort() was called at PC 0x40379ceb on core 0
0x40379ceb: _esp_error_check_failed at C:/esp/esp-idf/components/esp_system/esp_err.c:47
Backtrace: 0x40375d3e:0x3fcf39d0 0x40379cf5:0x3fcf39f0 0x4038001a:0x3fcf3a10 0x40379ceb:0x3fcf3a80 0x4200844d:0x3fcf3ab0 0x42022793:0x3fcf3b00 0x4037ce8d:0x3fcf3b30
0x40375d3e: panic_abort at C:/esp/esp-idf/components/esp_system/panic.c:412
0x40379cf5: esp_system_abort at C:/esp/esp-idf/components/esp_system/esp_system.c:135
0x4038001a: abort at C:/esp/esp-idf/components/newlib/abort.c:38
0x40379ceb: _esp_error_check_failed at C:/esp/esp-idf/components/esp_system/esp_err.c:47
0x4200844d: app_main at C:/main/cdc.c:66 (discriminator 1)
0x42022793: main_task at C:/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/port_common.c:131 (discriminator 2)
0x4037ce8d: vPortTaskWrapper at C:/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:151

ELF file SHA256: fed41d198db243ff
Rebooting...

More Information.
No response

Saleae logic analyzer capture attached if it helps.
usb enum.zip

@barbiani Thanks for the logic analyzer capture. From the capture, it looks your device is not acknowledge the setup packets of the "Get Device Descriptor" control transfer However, the previous "Set Address" control transfer was successful.
On the "Get Device Descriptor" control transfer, the Host is sending the setup packet, but the device not acknowledge this packet. The Host retries the setup packet 3 times before reporting back that the transfer has failed.

Maybe the device needs more time after the "Set Address" request before it starts responding to control transfers on its newly assigned address. Could you try adding a short delay before the  "Get Device Descriptor"  stage as follows and see if that resolves the issue (link to code).
// In hcd.c
#include "freertos/task.h"

...

        case ENUM_STAGE_GET_FULL_DEV_DESC: {
            // Add a short delay here
            vTaskDelay(pdMS_TO_TICKS(500));
            USB_SETUP_PACKET_INIT_GET_DEVICE_DESC((usb_setup_packet_t *)transfer->data_buffer);
            ....
        }

I have exactly the same scenario and had exactly the same issue. I can't assess if the suggested delay is to be classified as workaround or as fix. Anyhow, it solves the issue for me.

@oliverschmidt @barbiani We just double checked the USB2.0 specification. The delay is actually required (thus the lack of delay turns out to be a bug).
Quoting from section <IP_ADDRESS> Set Address Processing

After successful completion of the Status stage, the device is allowed a SetAddress() recovery interval of 2 ms. At the end of this interval, the device must be able to accept Setup packets addressed to the new address.

We'll add a fix for this.

Thanks :-)


Change to column name on Data Access Dashboard

Depends on ALS-1099

Deleting.  We are running off the ALS-1141_REFACTOR branch