Race condition when closing popups

This is a second incarnation of #2432 -- the compositor crash I reported there was fixed by #2454 but now I'm seeing the client get an error in the same conditions.
Steps to reproduce:

Download the test program from here: https://github.com/dkondor/wlroots/blob/issue-2432/issue-2432/wlr-crasher.c
Compile it (a meson.build is in the same directory -- it can be compiled with meson independently of wlroots, by running everything inside in this dir)
Run the resulting wlrc program
Click on the blue popup (if there is no blue popup, just exit and try again -- it is not shown in some cases)

Expected behavior: the child process is focused and the popup is closed by the compositor
Actual behavior: the parent process exits with the following error: xdg_surface@16: error 3: xdg_surface has never been configured
Alternative, real-world case
My original problem with cairo-dock (from this branch) as described in #2432 -- instead of the compositor crashing, now only cairo-dock crashes when clicking on the magnifier. This does not always happen, but can be observed fairly regularly.
Notes
Tested on Wayfire master + wlroots master. The strange thing is that I was testing this originally when #2454 was merged and could not see this problem. Now I've tried again, using wlroots 9595f95452a1d7420bbb190dc29c3806c29ca41e + Wayfire a36b931 and I can see the problem in that case. So I'm confused if this is a regression or if I just missed this previously (although I'm quite certain it was working at that time).
Otherwise, this seems to be the same race condition as before. The error comes from here which tests that surface->configured is false. This is set to false by unmap_xdg_surface() here that is called from reset_xdg_surface() (here), that is called from here after sending the popup_done event to the client.

Relevant output from Wayfire with WAYLAND_DEBUG:
[3313911.522] wl_pointer@21.button(10448, 6220457, 272, 1)
[3313911.724]  -> wl_pointer@3.button(276, 6220457, 272, 1)
[3313911.837] wl_pointer@21.frame()
[3313911.858]  -> wl_pointer@3.frame()
[3313912.042] zwlr_foreign_toplevel_handle_v1@4278190081.activate(wl_seat@7)
[3313912.176]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.208]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.234]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.300]  -> xdg_toplevel@11.configure(0, 0, array)
[3313912.354]  -> xdg_surface@10.configure(277)
[3313912.386]  -> xdg_toplevel@10.configure(0, 0, array)
[3313912.442]  -> xdg_surface@9.configure(281)
[3313912.476]  -> zwlr_foreign_toplevel_handle_v1@4278190081.done()
[3313912.497]  -> xdg_popup@17.popup_done()
[3313912.602]  -> wl_pointer@3.leave(282, wl_surface@15)
[3313912.652]  -> wl_pointer@3.frame()
[3313912.673]  -> wl_pointer@3.enter(283, wl_surface@8, 231.421875, 213.140625)
[3313912.746]  -> wl_pointer@3.frame()
[3313912.798]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.828]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.856]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.918]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.947]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313912.976]  -> zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313913.083]  -> zwlr_foreign_toplevel_handle_v1@4278190081.done()
[3313914.227] xdg_surface@9.ack_configure(281)
[3313914.266] wl_shm@4.create_pool(new id wl_shm_pool@15, fd 32, 1920000)
[3313914.359] wl_shm_pool@15.create_buffer(new id wl_buffer@13, 0, 400, 300, 1600, 0)
[3313914.464] wl_shm_pool@15.destroy()
[3313914.484]  -> wl_display@1.delete_id(15)
[3313914.515] wl_surface@8.attach(wl_buffer@13, 0, 0)
[3313914.571] wl_surface@8.commit()
[3313915.724]  -> wl_buffer@13.release()
[3313915.960] wl_buffer@13.destroy()
[3313916.229]  -> wl_display@1.delete_id(13)
[3313918.100] wl_shm@4.create_pool(new id wl_shm_pool@19, fd 32, 1440000)
[3313918.202] wl_shm_pool@19.create_buffer(new id wl_buffer@14, 0, 300, 300, 1200, 0)
[3313918.288] wl_shm_pool@19.destroy()
[3313918.308]  -> wl_display@1.delete_id(19)
[3313918.336] wl_surface@15.attach(wl_buffer@14, 0, 0)
[3313918.391] wl_surface@15.commit()
[3313919.479]  -> wl_buffer@14.release()
[3313919.570]  -> wl_display@1.error(xdg_surface@16, 3, "xdg_surface has never been configured")
II 13-12-20 13:26:46.079 - [wayland] error in client communication (pid 5631)

Output from the client:
[3313911.938] wl_pointer@3.button(276, 6220457, 272, 1)

Sending activate, this should close the popup

[3313911.991]  -> zwlr_foreign_toplevel_handle_v1@4278190081.activate(wl_seat@7)

Commiting the popup

[3313917.152]  -> wl_shm@4.create_pool(new id wl_shm_pool@19, fd 5, 1440000)
[3313917.215]  -> wl_shm_pool@19.create_buffer(new id wl_buffer@14, 0, 300, 300, 1200, 0)
[3313917.324]  -> wl_shm_pool@19.destroy()
[3313917.886]  -> wl_surface@15.attach(wl_buffer@14, 0, 0)
[3313917.954]  -> wl_surface@15.commit()
[3313918.036] wl_pointer@3.frame()
[3313918.108] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313918.135] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313918.166] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313918.202] xdg_toplevel@11.configure(0, 0, array)
[3313918.252] xdg_surface@10.configure(277)
[3313918.282]  -> xdg_surface@10.ack_configure(277)
[3313918.341]  -> wl_shm@4.create_pool(new id wl_shm_pool@12, fd 5, 1920000)
[3313918.398]  -> wl_shm_pool@12.create_buffer(new id wl_buffer@18, 0, 400, 300, 1600, 0)
[3313918.509]  -> wl_shm_pool@12.destroy()
[3313919.598]  -> wl_surface@9.attach(wl_buffer@18, 0, 0)
[3313919.646]  -> wl_surface@9.commit()
[3313919.735] zwlr_foreign_toplevel_handle_v1@4278190081.done()
[3313919.774] xdg_popup@17.popup_done()

Destroying popup

[3313919.800]  -> xdg_popup@17.destroy()
[3313919.823] wl_pointer@3.leave(282, wl_surface@15)
[3313919.865] wl_pointer@3.frame()
[3313919.887] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313919.920] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313919.954] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313919.986] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313920.023] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313920.051] zwlr_foreign_toplevel_handle_v1@4278190081.state(array)
[3313920.083] zwlr_foreign_toplevel_handle_v1@4278190081.done()
[3313920.164] wl_display@1.delete_id(19)
[3313920.201] wl_display@1.error(xdg_surface@16, 3, "xdg_surface has never been configured")
xdg_surface@16: error 3: xdg_surface has never been configured


Do not update DB status on deprovision

This is similar to https://github.com/aptible/dashboard.aptible.com/pull/560. It's another case where an API client tries to set an attribute it should not have access to (more context in https://github.com/aptible/auth.aptible.com/pull/203).
Note: this doesn't need to be changed for us to be able to roll out privileged tokens (the attribute update will silently be ignored).
cc @fancyremarker

Thanks!


Why was use of HttpClient explicitly removed?

In this commit: https://github.com/2muchcoffeecom/ngx-restangular/commit/67871acc4317927757339c7059870df91f53e6d6 ngx-restangular was changed from using HttpClient's request method to the handle method of HttpBackend which bypasses the ability to use Angular's HTTP interceptors.
I looked around in issues, but didn't see a reason why this was done.
Unfortunately, for us, ngx-restangular's own interceptors aren't good enough for our use case, as they don't intercept every request (i.e. anything made with allUrl or oneUrl) and you can't abort the request (i.e. in the event that you want to return a cached response).  Plus, extra config is necessary in order to take advantage of other Angular modules that do provide Angular interceptors (like the loading bar plugin that's mentioned in #144).
I forked the repo and just replaced a couple instances of HttpBackend and changed the handle method to request and plugged the built files into an app that we're migrating to ngx-restangular from restangular, and all seems to function the same, except now we can use native Angular interceptors (ngx-restangular interceptors still work though), and can just plug in the loading bar mentioned above without having to add custom code since all requests that ngx-restangular makes are going through HttpClient now.
Here's the fork: https://github.com/jaydiablo/ngx-restangular
And the specific commit where I've changed back to HttpClient: https://github.com/jaydiablo/ngx-restangular/commit/9c09c3edb20224e5dee3159de062bdafda326915
This has the ability to fix #144, #95, #182 and perhaps others.
That said, I'm not sure why this support was removed (when both Angular interceptors and ngx-restangular interceptors appear to work fine) so just wanted to get some clarification on that before proposing the change from my fork as a PR.
Also, is there any sort of test suite? I've tested in our app, but that probably doesn't touch all of ngx-restangular's surface area. I see there's some karma config, but no specs. Is the "demo" app the best way to test changes?
Thanks!

Hey there,
I'm in the middle of a migration from AngularJS and was wondering why the interceptors didn't work as before. As stated by @jaydiablo, there are many cases where the restangular's own interceptors dont fit.
I would like to know if there's any reason whatsoever or any update on this. Could it be a setting for the user if it's really needed? I think i'm going to use @jaydiablo 's fork for now, but since it's not on npm repo it also has its caveats.

Hey there,
I'm in the middle of a migration from AngularJS and was wondering why the interceptors didn't work as before. As stated by @jaydiablo, there are many cases where the restangular's own interceptors dont fit.
I would like to know if there's any reason whatsoever or any update on this. Could it be a setting for the user if it's really needed? I think i'm going to use @jaydiablo 's fork for now, but since it's not on npm repo it also has its caveats.

Hi Folks, any comment on this one?
It's really important to let people have interceptors to work.
Bunch of compatibility issues come out with disability of interceptors, and it discourages people for applying this module into their angular apps. Even for users have been using this dependency since the Angularjs era, i.e., myself.


Enhance xenorchestra_vm to provide a method for graceful termination

This is a continuation of #212.
I discovered that #220 needed to be addressed to avoid a race condition that existed when the XO client inside the provide tried to shutdown Vms. In addition to this, I decided that this was better to provide as an opt in rather than the default behavior.
Testing

[x] make testacc passes
[x] New tests pass
[x] New tests fail with previous xenorchestra_vm delete behavior

# Verify it is using previous destroy behavior
$ git diff
diff --git a/xoa/resource_xenorchestra_vm.go b/xoa/resource_xenorchestra_vm.go
index 74a86ec..71c97da 100644
--- a/xoa/resource_xenorchestra_vm.go
+++ b/xoa/resource_xenorchestra_vm.go
@@ -837,22 +837,22 @@ func resourceVmUpdate(d *schema.ResourceData, m interface{}) error {

 func resourceVmDelete(d *schema.ResourceData, m interface{}) error {
        c := m.(client.XOClient)
-       gracefulTermination := d.Get("use_graceful_termination").(bool)
+       // gracefulTermination := d.Get("use_graceful_termination").(bool)
        vmId := d.Id()

-       if gracefulTermination {
-               vm, err := c.GetVm(client.Vm{Id: vmId})
-               if err != nil {
-                       return err
-               }
-
-               if vm.PowerState == "Running" {
-                       err = c.HaltVm(vmId)
-                       if err != nil {
-                               return err
-                       }
-               }
-       }
+       // if gracefulTermination {
+       //      vm, err := c.GetVm(client.Vm{Id: vmId})
+       //      if err != nil {
+       //              return err
+       //      }
+
+       //      if vm.PowerState == "Running" {
+       //              err = c.HaltVm(vmId)
+       //              if err != nil {
+       //                      return err
+       //              }
+       //      }
+       // }

$ TEST=TestAccXenorchestraVm_gracefulTermination make testacc

=== RUN   TestAccXenorchestraVm_gracefulTermination
=== PAUSE TestAccXenorchestraVm_gracefulTermination
=== RUN   TestAccXenorchestraVm_gracefulTerminationForShutdownVm
=== PAUSE TestAccXenorchestraVm_gracefulTerminationForShutdownVm
=== CONT  TestAccXenorchestraVm_gracefulTermination
=== CONT  TestAccXenorchestraVm_gracefulTerminationForShutdownVm
=== CONT  TestAccXenorchestraVm_gracefulTermination
    resource_xenorchestra_vm_test.go:966: Step 2/2 error: Error running destroy: exit status 1

        Error: mock client did not receive a stopped Vm. Graceful termination was bypassed!

    testing_new.go:63: Error running post-test destroy, there may be dangling resources: exit status 1

        Error: mock client did not receive a stopped Vm. Graceful termination was bypassed!

--- FAIL: TestAccXenorchestraVm_gracefulTermination (42.79s)
--- PASS: TestAccXenorchestraVm_gracefulTerminationForShutdownVm (109.80s)
FAIL

@4censord please review this to verify it will work for you use cause. The only functional difference should be that this functionality must be opted into with a new xenorchestra_vm resource argument -- use_graceful_termination.
After discovering #220, setting this to the default has the potential to significantly slow down the tests and the general case. From running the test suite a few times against #212, the default 2 min timeout for validating PV drivers are present causes more flakiness in the build and longer test times.
I think it should be expected that if terraform is to destroy resources that it may not be graceful. Therefore I think making this opt in is the best solution.

This would work for me.
I would argue that it should be the default behavior.
Most other providers also seem to work this way.
When attempting to shutdown a vm without the management agent installed, this now times out.
xenorchestra_vm.vm: Still destroying... [id=361d045e-c9cf-661d-4863-1d9f5d38681e, 2m0s elapsed]
╷
│ Error: failed to gracefully halt the vm with id: 361d045e-c9cf-661d-4863-1d9f5d38681e and error: timeout while waiting for state to become 'true' (last state: 'false', timeout: 2m0s)
│
│
╵

Changing the use_graceful_termination attribute takes almost 30s:
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # xenorchestra_vm.vm will be updated in-place
  ~ resource "xenorchestra_vm" "vm" {
        id                       = "361d045e-c9cf-661d-4863-1d9f5d38681e"
        tags                     = [
            "dev",
        ]
      ~ use_graceful_termination = true -> false
        # (20 unchanged attributes hidden)

        # (3 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.
xenorchestra_vm.vm: Modifying... [id=361d045e-c9cf-661d-4863-1d9f5d38681e]
xenorchestra_vm.vm: Still modifying... [id=361d045e-c9cf-661d-4863-1d9f5d38681e, 10s elapsed]
xenorchestra_vm.vm: Still modifying... [id=361d045e-c9cf-661d-4863-1d9f5d38681e, 20s elapsed]
xenorchestra_vm.vm: Modifications complete after 26s [id=361d045e-c9cf-661d-4863-1d9f5d38681e]

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

#223 will address the regression with requiring the management agent and will properly detect PV drivers

I think I'd like to take another pass at this and implement things closer to how hyperv works:

Has the ability to configure a shutdown timeout
Has a configuration setting for forceful shutdown (something the XO provider doesn't have yet) which is used after the shutdown timeout expires

Having forceful shutdown should prevent the test suite flakiness that I experienced when setting the graceful shutdown as the default.


App/Service: Update MainService to use pre-loaded model files

This patch updates MainService and MainActivity to use pre-loaded model files by ModelFileProvider. These are temporary changes before revising ModelRepository APIs.
Signed-off-by: Wook Song<EMAIL_ADDRESS>

I had a question while testing MainService.
https://github.com/nnstreamer/nnstreamer-android/blob/d2450ec62502712fd3b30fb6b581a228d0d9ddb5/ml_inference_offloading/src/main/java/ai/nnstreamer/ml/inference/offloading/data/Model.kt#L41
This part can only handles,
{
  "single" : {
    "model" : ["mobilenet_v1_1.0_224_quant.tflite"],
...
}

and not
{
  "single" : {
    "model" : "mobilenet_v1_1.0_224_quant.tflite",
...
}

Is it okay to not consider the conf file below?

I had a question while testing MainService.
https://github.com/nnstreamer/nnstreamer-android/blob/d2450ec62502712fd3b30fb6b581a228d0d9ddb5/ml_inference_offloading/src/main/java/ai/nnstreamer/ml/inference/offloading/data/Model.kt#L41
This part can only handles,
{
  "single" : {
    "model" : ["mobilenet_v1_1.0_224_quant.tflite"],
...
}

and not
{
  "single" : {
    "model" : "mobilenet_v1_1.0_224_quant.tflite",
...
}

Is it okay to not consider the conf file below?

Well, I missed such case. According to _ml_extension_conf_parse_single() in API, JSON array is not the only value for the model. I will fix it.


Add requested buyer email domains to whitelist

For the following email domains:

eoni.org.uk
fyldecoastymca.org
lakesideymca.co.uk
library.wales
llgc.org.uk
llyfrgell.cymru
scotland-excel.org.uk
ymcahousing.org.uk
ymcayactive.org

👍


Add PyDict_ContainsString() function

Wait until the PR is added upstream: https://github.com/python/cpython/pull/108323


countExtendedCharacters not counted properly

if you set countExtendedCharacters to true, and set max: 10.
It allow you to enter non-english (Chinese) content greater than max 10 specified.

Hi @tank-007,
There was an error with the maximum text condition address in pull request #34 and merged into version 0.6.4. If, after updating, this error persists could you provide a https://jsfiddle.net/ (or similar) demo that I can test?


updating dependencies

IBM Cloud toolchain: Delivery Pipeline deployed long-way-home-callforcode to chatbotSpace, including commit ee738efb3f3662956bedc55218d3204c37f485fb


Fixed in 0.3.2.


Start a content repository

Some content types to consider:

[ ] offices
[ ] bios
[ ] blog posts
[ ] photos (see USDA and others on Flickr)
[ ] faq
[ ] search results
[ ] news
[ ] podcasts and videos (embeds, for track list template)
[ ] services
[ ] account info (users)
[ ] tweets

For this first cycle, just want to get a few different examples going.

Super neat! These look great so far. I'm assuming this is content we'll be able to pull into our page templates?

Yes, we can pull into page templates, and Figma files as well. Obviously still a lot to do here, but the main goal for this cycle was just to get this repo started in some kind of organized way. We'll continue to add to it and iterate on the presentation as we go.
Just added in pages for the images and products that we used for templates and prototyping this cycle so they're accessible for reuse.
Closing for now.


Queries and  update animals table

Hi Code Reviewer👋
In this PR:
-⭐Use transactions to update and delete records.
-⭐Use aggregate functions and GROUP BY to answer analytical questions.
-⭐Add a column species of type string to the animals table:

-⭐Insert the new data:

- ⭐Transactions:

⭐Update the animals table by setting the species column to unspecified, Verify, then roll back:

⭐Update the animals table by setting the species column to Digimon and Pokemon and verify that changes, then commit:

⭐ delete all records in the animal's table, then roll back the transaction, then verify:

⭐Delete all animals and create SAVEPOINT:

- ⭐Quries:

⭐How many animals are there?

⭐How many animals have never tried to escape?

⭐What is the average weight of animals?

⭐Who escapes the most, neutered or not neutered animals?

⭐What is the minimum and maximum weight of each type of animal?

⭐What is the average number of escape attempts per animal type of those born between 1990 and 2000?

Hey @ShadyShawkat 👋,
Thanks a lot 💯 for your efforts, in reviewing my code, I really appreciate it 😄 .


Tapping dropdown blocks scrolling

As seen on try.giteo.io.
Description
When I try to scroll through issues section (for example) on mobile device, I accidentally can't miss touching these dropdowns ("Sort by", "Assigned to", etc.) leading to stop scrolling at any cost, which is not good UX.
Screenshots

Animated snapshot: TBD

still an issue
bump


Random Battle: Fix levels for unreleased Uber Megas and Power Construct Zygarde

You're apparently bad at this whole merging thing.
For future reference, rebasing is much nicer than mergine.

Ok, that was clearly wrong. Let me remake this.


[BUG] OpenSearch Reporting CLI Lambda always prepends "tmp" to email attachments

What is the bug?
When using the OpenSearch Reporting CLI Lambda function, the filename for email attachments always has "tmp" prepended to the filename.
How can one reproduce the bug?
Follow the instructions here (https://opensearch.org/docs/latest/dashboards/reporting-cli/rep-cli-lambda/).
What is the expected behavior?
Attachment filename should look something like this: opensearch-report-2023-03-31T12-00-51.433Z instead of tmpopensearch-report-2023-03-31T12-00-51.433Z.
What is your host/environment?
N/A
Do you have any screenshots?
See description for observed behavior.
Do you have any additional context?
It appears the following code which defines where to temporarily save the file is being propagated to the email function that attaches the file to the email and incorporating the folder name "tmp" in the value:
https://github.com/opensearch-project/reporting-cli/blob/6feb950bff484e6c6ee3b75552c50c12c4a3f1a8/src/run.js#L13
https://github.com/opensearch-project/reporting-cli/blob/6feb950bff484e6c6ee3b75552c50c12c4a3f1a8/src/email-helpers.js#L111
Potentially easy fix by wrapping the value on line 111 above with path.basename()?

i feel this was a workaround for current directory not writable but user can write to /tmp dir? @rupal-bq

i feel this was a workaround for current directory not writable but user can write to /tmp dir? @rupal-bq

Yes. In Lambda we can write only to the /tmp.
https://repost.aws/questions/QUoCCNNS59RryAKeEBezXFcg/how-to-work-around-directory-permissions-in-aws-lambda


Leaderboard GUI Features

@ mention of reviewers
@Didayolo
A brief description of the purpose of the changes contained in this PR.
Additional GUI features for leaderboard are implemented

Entries
Date of last entry

Issues this PR resolves
https://github.com/codalab/codabench/issues/375
Screenshots

Checklist

[x] Code review by me
[x] Hand tested by me
[x] I'm proud of my work
[ ] Code review by reviewer
[ ] Hand tested by reviewer
[ ] CircleCi tests are passing
[ ] Ready to merge

@ihsaan-ullah I think only the date should be included, without the exact time. This way the interface will be lighter, and it is not necessary to give that level of precision for the time.

@ihsaan-ullah Thank you for the quick update! I'll test this PR soon.

When fact sheets are enabled, the interface looks like this (at least before making a submission):

I confirm that "fact sheets answer" is not in the right place, here it should be above "method name":

Also the number of entries is wrong, here I made only 1 submission.

Now Entries = all submissions of this user for this phase of competition
This user submitted one submission

Entries = 1

Now factsheet answers will not disturb the UI


Support setting kyuubi hive jdbc client protocol version

Why are the changes needed?
When using Kyuubi Hive JDBC to Hive Server2, TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V10 is used and can not be changed.
When we connected to Hive Server2 with version lower than 2.2.0, we got the following error:
org.apache.kyuubi.shade.org.apache.thrift.TApplicationException:
Required field 'client_protocol' is unset!
Struct:TOpenSessionReq(client_protocol:null, configuration:{kyuubi.client.version=1.7.3, set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000, kyuubi.client.ipAddress=<IP_ADDRESS>, use:database=default})

In this PR, we introduced a session conf clientProtocolVersion.
By adding clientProtocolVersion=8 to jdbc url, the error got fixed.
Changes of kyuubi_jdbc.rst

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[x] Manual tests against Hive Server2 version 2.1.1-cdh6.3.0

[x] Run test locally before make a pull request

Was this patch authored or co-authored using generative AI tooling?
No.

Please update the docs as well, also, I suppose we can set the default protocol to 6 to make the Kyuubi JDBC driver compatible with more versions of HiveServer.

Docs updated

Codecov Report

Merging #5480 (c99fc48) into master (48bdc7d) will not change coverage.
Report is 1 commits behind head on master.
The diff coverage is 0.00%.

:exclamation: Current head c99fc48 differs from pull request most recent head dc16a05. Consider uploading reports for the commit dc16a05 to get more accurate results

@@          Coverage Diff           @@
##           master   #5480   +/-   ##
======================================
  Coverage    0.00%   0.00%
======================================
  Files         588     588
  Lines       33466   33479   +13
  Branches     4401    4404    +3
======================================
- Misses      33466   33479   +13

Files
Coverage Δ

.../apache/kyuubi/jdbc/hive/JdbcConnectionParams.java
0.00% <ø> (ø)

...c/main/java/org/apache/kyuubi/jdbc/hive/Utils.java
0.00% <0.00%> (ø)

.../org/apache/kyuubi/jdbc/hive/KyuubiConnection.java
0.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@pan3793 @cxzl25 Restore client protocol version backup V10 so the default behavior won't change.

Restore client protocol version backup V10 so the default behavior won't change

SGTM


Add support for (toColumn/toRow).separator

Would it be possible to add a separator builder, so we can do something like:
[
   Text(),
   Text(),
].toColumn(separator: ()=>SizedBox(height: 8))

I will keep this open for now until i have investigated the possibilities!

Its easy to implement
children: spacer == null
  ? children
  : children.expand((child) => [child, seperator]).toList(),

Will add it in the next release!

Oh nice, that's way cleaner than my implementation! Thanks!
(Only thing is, we don't really want it on the end, easy enough to add padding to the start/end as needed)

Do you mean:
Widget(),
Seperator(),
Widget(),
Seperator (), // remove this

That should be added. Easy to just pop the last element with .removeLast().

Yes exactly, from usage, that is almost always what I want to do. We can easily tack on some padding to the start and end with .padding() and it's more readable as well.

added in v. 0.2.1


NYSE ARCA quotes not working

quotes for NYSE ARCA tickers give "Status":"Failure|APP_SPECIFIC_ERROR".
The name for the security shows up correctly, but all other data are 0 or null.

I'd imagine this is just a limitation of the data we're allowed to freely distribute from the few providers that power these demo APIs. Feel free to reopen if you have some example tickers that you feel should be covered by DataScope/BATS.


Editor integration?

Hi again,
Do you plan to integrate hound into editors? Currently you have to leave my editor, visit a web page, and when you click a hit, you are taken to a github page. It would be nice if users could harness hound in their editor of choice: vim/emacs/eclipse/whatever.
I am a vim user, so I imagine a use case where I can type :hound <search_term>, then a pane would show hits, which I could select from a list to open them as buffers. The ack vim plugin (which is what I currently use) works like this.
I'm not sure how you would account for local edits though.
Quite an ambitious proposal I know, but have you thought about it? Maybe it is too much effort...
Thanks

There is already a Sublime Text plugin: https://github.com/bgreenlee/SublimeHound
Feel free to make plugins for other editors as well. We might get to it at some point, but it's not high on the list. If you make one we would be happy to link to it in the README.

I'm actually going to close this, since I think editor extensions/plugins should live in their own repo and will likely be created/supported by other people.


--offline option does not work for javascript

(or I don't understand it correctly).
The python code says that if "--offline" is passed in, instead of CDN URL, the local URL is used for JS libraries, yet no JS libraries are contained in the repository?..
Should we choose to package some (reasonable?) version of jQuery/etc together with benchexec?

The intention of this flag is to create an HTML file that you can package together with the JavaScript libraries in a archive such that for example reviewers are able to view it offline. It is not intended to actually package it together. If there is enough interest, we could bundle a script that downloads the necessary files, but I wouldn't add them to the repository.


SVG export

Implement two different SVG exports:

[x] Block export
[x] Canvas export

Completed with #118


Adding convenience API functions

Hi all,
I would welcome a few more convenience functions in terms of the Python API. For example, an object-oriented representation of an antibody chain that would provide methods for getting CDR regions, printing, aligning with other chains, etc.
If I implement these, should I create and publish my own utility package wrapping ANARCI (as a bioconda dependency), or would you consider adding these directly to ANARCI?
def Chain:

    @classmethod
    def from_str(cls, seq_str, scheme='imgt', allowed_species=None):
        # Allowed species: ['human', 'mouse','rat','rabbit','rhesus','pig','alpaca']
        all_numbered, all_ali, all_hits = anarci([('id', seq_str)], scheme=scheme, allowed_species=allowed_species)
        # We only have one sequence
        numbered = all_numbered[0]
        ali = all_ali[0]
        hits = all_hits[0]
        if numbered is None:
            raise ValueError(f'No alignment found for sequence: "{seq_str}"')
        if len(numbered) != 1:
            raise NotImplementedError(f'Unsupported: Multiple ANARCI domains found in sequence: "{seq_str}"')
        positions, start, end = numbered[0]
        position_dict = {f'{num}{letter}'.strip(): aa for (num, letter), aa in positions if aa != '-'}
        return cls(position_dict)
...

And then the usage:
chain = Chain.from_str('ELVMTQSPSSLSASVGDRVNIACRASQGISSALAWYQQKPGKAPRLLIYDASNLESGVPSRFSGSGSGTDFTLTISSLQPEDFAIYYCQQFNSYPLTFGGGTKVEIKRTV')

print(chain)
# ELVMTQSPSSLSASVGDRVNIACRASQGISSALAWYQQKPGKAPRLLIYDASNLESGVPSRFSGSGSGTDFTLTISSLQPEDFAIYYCQQFNSYPLTFGGGTKVEIK
#                           ^^^^^^                 ^^^                                    ^^^^^^^^^

chain.cdr3
# OrderedDict([('105', 'Q'), ('106', 'Q'), ('107', 'F'), ('108', 'N'), ('109', 'S'), ('114', 'Y'), ('115', 'P'), ('116', 'L'), ('117', 'T')])

chain.cdr3_seq
# QQFNSYPLT

Cheers,
David

@claire-marks @kovaltsuk1

Hi all, I implemented a package for this called AbNumber, you can check out the docs here: https://abnumber.readthedocs.io/en/latest/


Secrets Frontend

Motivation
This pr defines the FunctionConfig part of secrets implementation. It defines how users can define secrets in their function/source/sink configs and how they get translated to FunctionDetails.
Follow up prs to actually implement secrets will follow this one.
Modifications
Describe the modifications you've done.
Result
After your change, what will change.

@cckellogg Please take a look. Thanks!

rerun java8 tests

rerun java8 tests

rerun java8 tests

rerun java8 tests


[Feature] Java agent for couchbase db transaction monitoring

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
Our skywalking java agent is monitoring multiple java applications and these applications has db interactions. Agent is able to collect metrics for other db transactions but its not collecting any info wrt couchbase db. Is this not available with skywalking? Any help in achieving this?
Use case
From java application we want to monitor couchbase db transactions as well.
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

@wu-sheng Can you please point out the issue which is the original one?


1.3.0 NullPointerException in PhotoViewAttacher.getScaleType()

my app use ViewPager + PhotoView, to see a few picture, the app crash.
version 1.2.6 not
java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.ImageView$ScaleType uk.co.senab.photoview.PhotoViewAttacher.getScaleType()' on a null object reference
at uk.co.senab.photoview.PhotoView.getScaleType(PhotoView.java:115)

I compile PhotoView.class in version 1.2.6 and 1.3.0,
    @Override     protected void onDetachedFromWindow()     {         mAttacher.cleanup(); // Annotate this line of code to solve the problem //        mAttacher = null;         super.onDetachedFromWindow();     }

Sounds like you are using the attacher after the view has been detached, so it is an issue in your code and not with the library

shaodong618 thanks

how to resolve this problem?


dockerfile for node-red container image from source

dockerfile to create node-red container image from source. built from node:20.11.1-alpine3.19

discussion required

When running it with axios it was gicing errors, Axios needs to be installed inside the /data folder, image created with the updated docker file is working locally

Ok. Great!


Bump jackson.core and jackson.databind...

To match versions pulled in by aws-java-sdk-s3.
Fixes #45. See also https://github.com/boot-clj/boot/pull/679.

I can confirm this works with the latest master of boot, and @lsnape 's branch. Great work @lsnape !


Enhancement - Instance Grouping

We do 3rd party work for a data center where the customers may have servers named the same thing (SQL1, SQL2, etc.).  It would be nice to be able to create groups in the GUI and be able to add instances into them, so they are visually grouped on the left column.  This would be similar to the concept in place for SSMS Registered Servers.  I imagine the Primary Key could be changed to include the group so that the instance would still be unique in the database, etc.

Hi.  At the moment two SQL instances with the name SQL1 would be treated as the same SQL instance.  When the agent collects data from a SQL instance is assigns a "ConnectionID" which is based on the machine name and instance name.  This is used to uniquely identify the instance.  A lookup on the ConnectionID is used to find the InstanceID identity column.
The plan was to have the option to override the connection id value in situations where the machine name was the same. This is something I haven't needed myself and it never got implemented.  The connection id did get used as a quick way to support AzureDB - As each AzureDB needs to be treated more like a SQL Instance than a database.  In this case I automatically add the database name to the connection id.
An option to override the Connection ID might be a way to support collecting from SQL instances that share the same name.  There might also need to be some changes to the GUI to get them to display correctly.  This might not be too big a deal - I'll take a look at when I get chance.
There isn't a way to group connections in the GUI, but there is a tagging feature that could be useful.  You could add a Tag for customer for example and you can use the Tag filter drop down to identify all the servers associated with a customer.  By default there are some system tags created.  If you go to Configuration in the tree under the server - then click the "Tags" tab, you can add custom tags.
It's not high priority for me, but at some point I might add the option to group the tree by a tag which would provide a way to organize the servers.
Thanks

Hi. One possible enhancement along the same lines as above...
I just installed DBADash and I am monitoring exclusively RDS instances (and probably Azure SQL Managed Instances in the near future). At least for RDSs, we cannot change the machine names and they show up as EC2AMAZ-whatever-meaningless in the UI. I know about the tags, but these doesn't help. One possible enhancement could be that if a certain tag is present (say PreferredDisplayName or DisplayName etc) to show that in the UI.
Could this be more easily implemented than the grouping?

Thanks.,

The changes discussed in my last comment will make it into the next release.  There is no grouping of instances in the UI but you will be able to set the display name.  Also, the ConnectionID can be configured if you need to support instances with the same name.

Custom instance aliases are included in the latest release

I have updated and it looks to be working well, thank you!  I tried just setting the names in the config tool and updating the visual name in the GUI, but it seems to have kept both the old and new Instance records, so I just dropped the database and redeployed and added the connections back in (not a big deal).

Hi, the ConnectionID which you set in service config tool is used to identify the instance in the repository.  If you change the ConnectionID you will have a new instance appear unless you coordinate an update like this:

Stop the service
Update the ConnectionID in the Instances table in the repository DB
Update the ConnectionID in the service config tool.

If you didn't want to keep history you could also go to Options\Manage Instances and mark the old instance as deleted.  It's still there to restore if you need to.
I don't think many people will need to use the ConnectionID - it's only really needed if you have conflicting instance names.
If you just want to change the display name, there is a much easier way:

Click Options\Configure Display Name in the GUI.
Edit the display name as required.

Hope this helps

The option has been added to group instances by tag which will be available in the next release.

Included in 2.25.0 🚀


Added support for React.memo

This is based on and fixes #1875.

When I used the code directly from https://github.com/airbnb/enzyme/issues/1875 (that you have ported to enzyme) it works, but only for top level memo'd components. If there are nested components   that are wrapped in memo(), they still display in the DOM as [object Object]. Does this code address that?

@alexgurr Yes. It handles nested memoized components as well.

@ljharb Thanks so much for the quick response and taking time to review. I have made the changes.
REACT_MEMO_TYPE was coming as undefined. So, I added a null check also. Not sure if I am doing that in the right way. Please check and let me know

ahhhhh i see that REACT_MEMO_TYPE isn't even exported :-/<EMAIL_ADDRESS>That means we'll have to temporarily hardcode it with var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;, which is a shame.

@ljharb  I will then wait for the PR in react to be merged, and will update this PR.

@jintoppy looks like you're clear to update this PR

@koragan the PR is merged, but react-is still hasn't been updated.

When can we expect this patch to be published? A few of the production project that we're working on depend on it.

@phenax first we have to wait until react-is v16 gets updated.

react-is seems to have support for React Memo: https://github.com/facebook/react/blob/master/packages/react-is/src/ReactIs.js#L120
What exactly is pending? 🤔

@amite yes, it's been merged, but not yet released to npm by the react team.

Update: latest react-is version 16.6.3 was published to npm 2 days ago

@jintoppy My mistake! Thank you for the correction

react-is 16.7.0 was finally released 🎉

I've updated react-is in master and rebased this branch. I'm not sure what's up with the test failures; it might be an issue in enzyme's overall test setup. I'll look into it.

The underlying problem has been fixed and this branch rebased.

No update yet. I've rebased this; I'll give it another pass tomorrow.

Btw, there appear to be two React memo tags, not just one: MemoComponent (currently tag 14) and SimpleMemoComponent (currently tag 15). I just got bitten by this on our in-house custom-patched enzyme where we were only coping with tag 15, and I suddenly hit a 14 tag.
I'm not at all sure of the exact details as I only got hit by this a few minutes ago, but it looks like React.memo(fn) gets you a simple component (tag 15) and React.memo(class) gets you a non-simple component (tag 14).
I think the PR at present would only cope with tag 15.

I've done a bit more digging, and it is the case that there's one tag type for React.memo(FunctionalComponent) and a different tag type for React.memo(ClassComponent)
Details: https://codesandbox.io/s/kwvx4qwxyo  (tags are output to the console)

I've rebased and updated this to have tests for both class-based and SFC components.
https://github.com/facebook/react/issues/14807 may be a blocker.

Btw, React are trying to move away from the term 'SFC':
https://twitter.com/dan_abramov/status/1057625147216220162

Per https://github.com/facebook/react/issues/14807#issuecomment-462147431, the shallow renderer will need to be updated before this can go in as is.

Any update ?
If it's not easy / possible to make it works for class component, can not we go incrementally ?
Actually it does not work for both functional component and class component. A first implementation working only for functional component is still better.

@VincentLanglet no, it'd be better to have zero support than partial support, and either way this is blocked on react's shallow renderer change.

Support for the case that 99% of people actually want to use memo for (functional components) seems to be a pretty good reason to merge partial support to me. Usage with classes, while supported by React, isn't actually documented anywhere, and I would say it's an edge case or at least very niche.
The failing test is only related to class components so far as I can tell, so if support for that was moved to a separate PR this would be mergeable, we're not waiting on any dependencies for functional components, right?

OK, that's a reasonable argument. I suppose it'll just "start working" once react-test-renderer fixes https://github.com/facebook/react/issues/14807#issuecomment-462147431, at which point we can update the tests here.


RBAC Migrations SQL Server: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value 'auth_item_child' to data type int.

Hello  new update for file m200409_110543_rbac_update_mssql_trigger.php there was an error, but not accured before update
php yii migrate --migrationPath=@yii/rbac/migrations/
error:
Exception 'yii\db\Exception' with message 'SQLSTATE[22018]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting the nvarchar value 'auth_item_child' to data type int.                                                                      The SQL being executed was: SELECT OBJECT_NAME(fkc.constraint_object_id) FROM [sys].[foreign_key_columns] [fkc] INNER JOIN [sys].[columns] [c] ON fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id INNER JOIN [sys].[columns] [r] ON fkc.referenced_ob ject_id = r.object_id AND fkc.referenced_column_id = r.column_id WHERE ([fkc].[parent_object_id]='auth_item_child') AND ([fkc].[referenced_object_id]='auth_item') AND ([c].[name]='child') AND ([r].[name]='name')'

Q
A

Yii version
2.0.35

PHP version
5.6.30

Operating system
Windows 10

@bambangsaputro would you please do https://git-scm.com/docs/git-bisect to find out commit that breaks it?


Restore debug and start work on its improvement

Uses node-debug module. If config option is set to true, enables
all output. Altertanively, DEBUG env variable can be used. For now,
there are following logging namespaces:

gemini:browser:<id> to display log for particluar browser (does not
include webdriver commands, for now shows only session id).
gemini:webdirver:<id> to display webdriver logs for a browser (same
as <0.13 logs).

Wildcards can be used instead of browser id.

@scf2k @j0tunn

FYI: https://github.com/visionmedia/debug

Вроде ок


Fix typos in README.md

closes #95

line 16: Correct typo in package name nfs-kernel-server
line 102: Correct spelling error 'failes' to 'fails'

Looks great, thanks for the fixes ✨.


OIDC User and Account management during login

This PR adds the following:

Update User details on every login.
If oidc_oauth_account_name_property and oidc_oauth_account_description_property are set, automatically create or update an Account during login, and add the User to it.
Allows setting of oidc_oauth_logout_url to automatically redirect the user to an IdP logout URL, for single logoff .

Our use case
We store all our user information in an IdP, and can match a User to an Account using just the information returned from the userinfo response. For instance:
{
  "given_name": "Mary",
  "family_name": "Lamb",
...
  "my-customer-id": "customer123",
  "my-customer-name": "Customer 123"
}

Setting oidc_oauth_account_name_property and oidc_oauth_account_description_property to 'my-customer-id' and 'my-customer-name' respectively will make sure that an Account is created (or updated) during login. This allows domains to automatically be mapped to this Account during the next domain sync.

LGTM. Merging.  Thank you for your contribution.
It sounds like we need the docs as OIDC config fields keep increasing now :)


Lazy Load DF rows in entity_to_data and entity_to_cutoff dicts

trane.utils.df_group_by_entity_id returns a dictionary where the entity id is the key, and the value is dataframe of rows with only that entity id.
This dict is then used by trane.utils.CutoffTimeBase.generate_cutoffs to create a similar dictionary with the entity id as a key, and a value with a tuple: (DF_OF_ROWS, entity_training_cutoff, entity_label_cutoff)
These methods are currently the most significant bottlenecks in running Trane. A significant portion of the slowdown is because trane is copying the DF_OF_ROWS into the dictionary. There's no reason for this. Trane should instead index the dataframe by entity_id and use the key to access the dataframe. Then the cutoff_dict can be a dictionary in format  {entity_id_1: ( entity_training_cutoff, entity_label_cutoff), entity_id_1: ...} and won't have to hold a dataframe.
The trane.utils.df_group_by_entity_id method could then be eliminated entirely.
This will require searching through the code to refactor everything making use of the entity_to_data dict and entity_to_data_cutoff_dict. Then, there will need to be some mechanism for making sure that the DF is indexed by entity_id.

Ideally, this would allow for a custom entities_and_cutoff time object, which would allow storage of a cutoff time data structure, a natural language description of cutoff times, and possibly some other data.

This is resolved in #20 . It doesn't use lazy loading, but is still much more efficient.


Fix VFS I/O from PR #188

Context
https://github.com/TileDB-Inc/TileDB-Cloud-Py/pull/188 / sc-10506
Test upload
import sys
import tiledb.cloud

tiledb.cloud.login(
    host="https://api.dev.tiledb.io/v1",
    username="********",
    password="*****************",
)

ipynb_file_name = "./foo.ipynb"
namespace = "johnkerl"
array_name = "testing-upload-041"
storage_path = "s3://tiledb-johnkerl"
storage_credential_name = "my-sandbox-creds"

tiledb_uri = tiledb.cloud.upload_notebook_from_file(
    ipynb_file_name,
    namespace,
    array_name,
    storage_path,
    storage_credential_name,
)

print("tiledb_uri=" + tiledb_uri)

Test download
import sys
import tiledb.cloud

config = tiledb.Config()
config["rest.username"] = "********"
config["rest.password"] = "****************"
# API endpoint used by https://console.dev.tiledb.io:
config["rest.server_address"] = "api.dev.tiledb.io"

# This is the array-URI format in TileDB Cloud:
tiledb_uri = "tiledb://seth/Voila-Covid-Demo"
ipynb_file_name = "./foo.ipynb"

tiledb.cloud.download_notebook_to_file(
    tiledb_uri,
    ipynb_file_name,
)

print("Wrote " + ipynb_file_name)

Is it feasible to add the test snippet to the tests?

@ihnorton not sure; looking. i'm not particularly familiar with this repo; also the tests in the description are more end-to-end than unit-test ...


Sanic crashes when other asyncio tasks are running

Sanic version: 0.4.1
Python: 3.6.0
OS: Fedora Linux 25
I have an app were I have to start serving requests before the database (in this case MongoDB) connection fully started, replying with an adequate error message on requests. The problem is that sanic stops listening for tcp connections (the port closes), I don't know exactly what is causing it, but here is an example code that causes the problem:
import asyncio
import uvloop
from sanic import Sanic
from sanic.response import json
from motor.motor_asyncio import AsyncIOMotorClient
from pymongo.errors import CollectionInvalid, ServerSelectionTimeoutError

DB_NAME = 'testdb'
COLLECTION_NAME = 'testcoll'

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

loop = asyncio.get_event_loop()
conn = AsyncIOMotorClient(
    host='<IP_ADDRESS>',
    port=27017,
    connectTimeoutMS=2000,
    serverSelectionTimeoutMS=5000,
)
db = conn['testdb']
collection = db['testcoll']

app = Sanic()

async def start_db():
    print('connecting to mongodb!')
    try:
        await db.create_collection(COLLECTION_NAME)
    except CollectionInvalid:
        pass
    except ServerSelectionTimeoutError:
        await asyncio.sleep(0.5)
        print('trying to connect to mongodb again...')
        loop.create_task(start_db())
        return

    # Indexes are supposed to be created here

    print('connected to mongodb!')

@app.route('/')
async def handler(request):
    data = await collection.find().to_list(None)
    return json(data)

def main():
    server = app.create_server(
        host='<IP_ADDRESS>',
        port=5000,
        debug=True,
        loop=loop,
    )
    loop.create_task(start_db())
    asyncio.ensure_future(server, loop=loop)

    # Start other asyncio things here
    loop.run_forever()

if __name__ == '__main__':
    main()

with sanic debug enabled, a warning about tcp server resource unclosed appear on the terminal:
connecting to mongodb!
~/.local/lib/python3.6/site-packages/sanic/app.py:524: DeprecationWarning: Passing a loop will be deprecated in version 0.4.0 https://github.com/channelcat/sanic/pull/335 has more information.
  DeprecationWarning)
2017-03-06 16:15:19,518: DEBUG:
sanic drawing here
2017-03-06 16:15:19,518: INFO: Goin' Fast @ http://<IP_ADDRESS>:5000
trying to connect to mongodb again...
/usr/lib64/python3.6/traceback.py:352: ResourceWarning: unclosed resource <TCPServer closed=False 0x7f7dcbf4b448>; object created at (most recent call last):
  File "example_sanic.py", line 64, in <module>
    main()
  File "example_sanic.py", line 60, in main
    loop.run_forever()
  File "~/.local/lib/python3.6/site-packages/sanic/app.py", line 509, in create_server
    return await serve(**server_settings)
  filename, lineno, name, lookup_line=False, locals=f_locals))
connecting to mongodb!
trying to connect to mongodb again...

EDIT: Forgot to mention, this error happens after the first mongo connection retry

I think your issue is similar too https://github.com/channelcat/sanic/issues/435, try using the 'before_server_start' hook to initialize your mongo client. An example shown with aiocache here https://github.com/channelcat/sanic/blob/master/examples/cache_example.py

I should have explained it better, this is not exactly my use case, I just created it as a minimal example that causes the same problem.
My use case is that I'm starting a amqp listener (and writer) in the same process as sanic. I don't need multiple workers, I want everything in one thread, I manage workers using docker swarm mode (I have load balancing on nginx).
The problem with the before_server_start hook is that it requires sanic to start everything. I think it's not very practical to do this, for example, if another framework takes the same approach as sanic and requires everything asyncio related to be started in it's hooks, how would I start both sanic and this framework on the same event loop?

You'd start Sanic first and then use get_event_loop to get the currently running event loop? Is there a big issue with doing that? Also the hook only exists as a nice way for people to establish all the things there app needs. You don't necessarily have to use it since (with Python 3.6) get_event_loop gets the already running event loop.

It should'nt make any difference if you get the event loop before sanic start, but anyway, the error still happens because app.create_server does not execute anything before the loop starts (it is a coroutine). I changed the code to do what you said:
import asyncio
import uvloop
from sanic import Sanic
from sanic.response import json
from motor.motor_asyncio import AsyncIOMotorClient
from pymongo.errors import CollectionInvalid, ServerSelectionTimeoutError

DB_NAME = 'testdb'
COLLECTION_NAME = 'testcoll'

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

conn = AsyncIOMotorClient(
    host='<IP_ADDRESS>',
    port=27017,
    connectTimeoutMS=2000,
    serverSelectionTimeoutMS=5000,
)
db = conn['testdb']
collection = db['testcoll']

app = Sanic()

async def start_db(loop):
    print('connecting to mongodb!')
    try:
        await db.create_collection(COLLECTION_NAME)
    except CollectionInvalid:
        pass
    except ServerSelectionTimeoutError:
        await asyncio.sleep(0.5)
        print('trying to connect to mongodb again...')
        loop.create_task(start_db(loop))
        return

    # Indexes are supposed to be created here

    print('connected to mongodb!')

@app.route('/')
async def handler(request):
    data = await collection.find().to_list(None)
    return json(data)

def main():
    server = app.create_server(
        host='<IP_ADDRESS>',
        port=5000,
        debug=True,
    )

    asyncio.ensure_future(server)
    loop = asyncio.get_event_loop()
    loop.create_task(start_db(loop))

    # Start other asyncio things here
    loop.run_forever()

if __name__ == '__main__':
    main()

The other option would be to run the app.run method, but this method is blocking, it runs the loop.run_forever method, so I can't get the event loop after that.

I'm still not entirely sure if this is what your looking for but there is some trickery with creating an event loop and using app.run() as app.run() always creates a It always creates a new loop here: https://github.com/channelcat/sanic/blob/master/sanic/server.py#L343 .  I've constructed a minimal bug with the following
from sanic import Sanic
from sanic.response import text
import uvloop
import asyncio
class ChattyPolicy(uvloop.EventLoopPolicy):
    def get_event_loop(self):
        loop = super().get_event_loop()
        print('getting event loop {}'.format(id(loop)))
        return loop

    def set_event_loop(self, loop):
        super().set_event_loop(loop)
        print('setting event loop {}'.format(id(loop)))

    def new_event_loop(self):
        loop = super().new_event_loop()
        print('new event loop {}'.format(id(loop)))
        return loop

asyncio.set_event_loop_policy(ChattyPolicy())
app = Sanic()
loop = asyncio.get_event_loop()

async def initalizer():
    return 'initalized'

f = asyncio.ensure_future(initalizer())

@app.route('/')
async def root(request):
    print(await f)
    return text('hello world')

if __name__ == '__main__':
    app.run(host="<IP_ADDRESS>", port=8000, loop=loop)

try using the ChattyPolicy to see if that shows you more than one id. For example I get the following output
new event loop 12603544
setting event loop 12603544
getting event loop 12603544
getting event loop 12603544
getting event loop 12603544
2017-03-07 13:12:57,593: INFO: Goin' Fast @ http://<IP_ADDRESS>:8000
setting event loop 12869464
2017-03-07 13:12:57,596: INFO: Starting worker [3451]
2017-03-07 13:13:00,328: ERROR: Traceback (most recent call last):
  File "path/to/sanic.py", line 329, in handle_request
    response = await response
  File "i_test.py", line 34, in root
    print(await f)
  File "uvloop/future.pyx", line 241, in __await__ (uvloop/loop.c:104128)
RuntimeError: Task <Task pending coro=<Sanic.handle_request() running at /path/to/sanic.py:329>> got Future <Task pending coro=<initalizer() running at i_test.py:27>> attached to a different loop

2017-03-07 13:14:00,328: ERROR: NoneType

Yes, I'm aware that using app.run always create a new event loop, that is why I'm using the app.create_server method. The problem is that after the ResourceWarning error message sanic stops listening on the port, this only happens when there are other tasks running in the same event loop.
Running the last example I gave with @abuckenheimer custom event loop policy, it seems that only one event loop is being created. I got the following log running it:
new event loop<PHONE_NUMBER>1896
setting event loop<PHONE_NUMBER>1896
getting event loop<PHONE_NUMBER>1896
getting event loop<PHONE_NUMBER>1896
getting event loop<PHONE_NUMBER>1896
~/.local/lib/python3.6/site-packages/sanic/app.py:524: DeprecationWarning: Passing a loop will be deprecated in version 0.4.0 https://github.com/channelcat/sanic/pull/335 has more information.
  DeprecationWarning)
2017-03-07 15:24:34,720: DEBUG:
sanic logo
2017-03-07 15:24:34,720: INFO: Goin' Fast @ http://<IP_ADDRESS>:5000
connecting to mongodb!
~/.local/lib/python3.6/tokenize.py:381: ResourceWarning: unclosed resource <TCPServer closed=False 0x7fefeb0e24c8>; object created at (most recent call last):
  File "example_sanic.py", line 83, in <module>
    main()
  File "example_sanic.py", line 79, in main
    loop.run_forever()
  File "~/.local/lib/python3.6/site-packages/sanic/app.py", line 509, in create_server
    return await serve(**server_settings)
  return readline()
trying to connect to mongodb again...
connecting to mongodb!
trying to connect to mongodb again...
connecting to mongodb!

 I'm debugging the wrong problem. will look into this

I suggest you give my approach a shot and please give me feedback.
My method does not allow for multiprocessing but this is no problem for production purposes as you will want to start multiple independent Python interpreter instances using a supervisor such as supervisord anyway
https://gist.github.com/nszceta/087a14d8896e47bc6e7e441fd60b6ff4

After some testing, I discovered that the problem is not related to sanic code, the same problem happened with a similar code using aiohttp. The one causing this bug is the uvloop module, removing the line below fixes the problem (it makes the process run with the default python event loop).
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

I created an issue on the uvloop project to track this error MagicStack/uvloop#81

@r0fls can we close this issue?

Thanks @nszceta. Closing, will reopen if needed.


RN Web support?

Appears to break on RN Web, any plans for support? Or documenting a workaround? Cheers!

Hi @samburgers,
I just published a new version with web support (v0.2.0), can you give it a try?

Nice one! just tested, doesn't seem to be quite there

Just tested, works well, thanks so much!


Training time and Data format support

Hi dude, nice code base!
I have a few questions regarding the training time and want to double check with you.
I'm training the llama-3.2-vision-instruct-11B model on a customized dataset with full-finetuning scripts.
Devices: 8A800 (equivalent speed with A100)
Batch size: 88
Num samples: 200k
Avg length of samples: 252 tokens
It takes me~10 hours to finish training. I'm wondering if it's normal.
As usual, it takes 3 hours to train a 7-8B MLLM. I assume that inference llama-3.2 takes more compute but I'm not quite sure about it.
 Cuz llama3.2-vision dosen't support flash-attention for now.
For the text-only data, I'll make a update for it. Thanks for the feedback.

Need to fix the attention code in the model code directly or do a monkey patch. But it's a bit hard job for it.

@LeslieTrue I've updated the code to support text-only data too.


Fix microsoft/vscode-pull-request-github#612. Allow fetching with limited depths

Add a new option for fetch api: depth?: number | undefined to allow us to fetch a branch with limited history and speed up branch switching.
However I'm not sure what I should do to allow pull --unshallow. It seems that we don't support any option for pull and we add --tags ourselves, so I follow the same logic by adding --unshallow. @joaomoreno probably has better ideas of whether I should just add a parameter for options.

It's probably a bad idea to add unshallow by default since the user might've intentionally cloned a shallow repo. We might need some options in there.


upload vcpkg buid logs as GitHub Actions artifacts

This would make it convenient to debug build failures of vcpkg ports.

The build logs are already dumped in the ordinary output log of the workflow, see the logCollectionRegExps input. It is extremely useful as it allows you to use RegExp and identify any file path, and contextually dump it into the output log.
I see that you may want to have an archive attached to the workflow as an generated artifact. That is easy to accomplish, by looking into the current source code for the above mentioned input. Contributions are welcome!

This can easily be done with another action but it would be nice to have it done automatically by run-vcpkg.

    - name: Upload GitHub Actions artifact of vcpkg build logs
      if: always()
      uses: actions/upload-artifact@v2
      with:
        name: logs-${{ matrix.os }}
        path: ${{ github.workspace }}/vcpkg/buildtrees/**/*.log

While the idea is good, and it is implemented already although in a different way, my opinion is that having an action per task is better than having an action that does lot of tasks.

This tip would be great to mention in the readme or a sample workflow -  it definitely solved a pain point for me.

@vadi2 if you could, let's contribute back to the readme.md sharing your experience.

Done, see https://github.com/lukka/run-vcpkg/pull/98

Please take a look to run-vcpkg@v10 and see if suites your needs. Feel free to reopen this or a new ticket about any problem you may see.


orNot still not entirely consistent

Hey, sorry for being so annoying :D @richardstartin
now orNot sometimes truncates and sometimes doesn't. Probably an inconsistency between different containers.
Code to reproduce:
RoaringBitmap one = new RoaringBitmap();
one.add(0);
one.add(10);

RoaringBitmap other = new RoaringBitmap();
<initialize other>

one.orNot(other, 7);
Assert.assertTrue(one.contains(10));

This fails or succeeds depending on how other is initialized:

Succeeds: No init at all (other is empty)
Fails: other.add(2) (single number)
Succeeds: other.add(2L, 5L) (range)
Fails: other.add(3L, 5L) (smaller range)
Succeeds: other.add(1L, 10L); other.remove(2L, 10L); (single number, but probably represented as a run)
Fails: for (int i : Arrays.asList(0, 1, 2, 3, 4, 5, 6)) { other.add(i); } (range added one-by-one)

Sorry this is a remnant of what was there before. Will add a generative test to get more container-wise coverage. Thanks.

This should be fixed now. Closing.
Please keep on finding bugs!

I hadn’t realised that there was a buffer implementation too, so the changes will need to be ported.

+1


Add new Category Address

In EntityCategory

I tried a few combinations but couldn't get this category. We might need to ask the service team for an example

Example from service team: "330 Independence Ave SW, Washington, DC 20237"


Add apartment cration form - Do not merge before #100

This PR is depended on #100 !!!
Do not merge this before #100
Added url and view too.
Added some tests for the form and the view.
Right now the page looks very ugly, but we can fix it later 😄
Fix #103

Please rebase so we won't see the user's form changes on this PR

Please rebase so we won't see the user's form changes on this PR

rabsed 🧙

@simzacks @Omeramsc I've changed the code according to your requests


Can't use route's params in head.

If I use param with route in head, it works, but it won't change if I change to another param .
head: {
            title() {
                return {
                    inner: `${this.$route.params.type}file`
                }
            }
        }

I did not understand well @SidKwok

I mean vue-head is not reactive.
This is my router:
...
'/apps/:type': {
    component:  Apps,
}
...

Now I have two urls: /apps/crash and /apps/block.
And I set in the component Apps:
head: {
            title() {
                return {
                    inner: `${this.$route.params.type}file`
                }
            }
        }

this.$route.params.type is reactive, but the head is not.
How can I make it reactive? Or it just can't?
Sorry for my poor English.......

That same @SidKwok to the current version of vue-head it only builds the head tags when the component is mounted.
Take a look at this increasing discussion Issue 13
Thank you for using the plugin and the feedback.

Thanks! Good plugin! But when will the feature come out? Can't wait! LOL!


Migrate article: Preparing for high load #1076

Fix #1076
What changed, and why it matters

Hi @sluhur Thanks for this. The screenshots are showing an old version of our UI, could you please check if:

They are really neeed
if yes, you can create an updated version of them
We're trying to minimise screenshots since our UI is always evolving and keeping them up to date can become a huge task.
Furthemore, there's a warning in the build, can you check?

I've checked the screenshots and they're not really needed. I've removed them all.

Hi @sluhur, thanks for this, please re-check the PR description. I had to change it to add
Fix #issue_number

If you don't prefix with Fix, merging the PR will not close the related issue

Hey, I was taking a look in this PR and it seems to have mixed content between HowTo and Concepts. The section is "Prepare for high load" so seems to fit in "HowTo" like "How to Prepare for High Load". However, under this section there are things like Plans etc which are not a HowTo topic. So I'd suggest to go over the topics and place it where they are more appropriate.

@sluhur There's some good work here, could you take a look at the requested changes, or let us know if you aren't available to work on this?

@laysauchoa @lornajane: I took the great work that @sluhur already did and changed a bit the style by:

referencing to existing other pages when needed
adding sections as Tips/Warnings
I believe it's ready for review


CAA record fail for subdomain (such as 'www') when defined for domain as a whole?

Version: 1.2.1
It looks like the DNS CAA should be enabled test does not climb the DNS tree, as is specified in the spec;

The search for a CAA RRset climbs the DNS name tree from the specified label up to, but not including, the DNS root "." until a CAA RRset is found.

https://datatracker.ietf.org/doc/html/rfc8659#section-3-3
This means that, if the test is run for a subdomain while CAA records are present for the domain itself, it registers as a FAIL, even though, if I am reading the spec correctly, it should pass?
Example: when testing 'www.ur.nl', it fails like this;
[FAIL] DNS CAA should be enabled (['ur.nl.', '0 issue "digicert.com"', '0 issue "letsencrypt.org"', '0 issue "sectigo.com"'])

Thank you for calling this out.
I've resolved this by filtering the records that are checked to only the CAA records. Testing on www.ul.nl (and www.brntn.me) is working for me:
> python3 -m ready.ready www.ur.nl --check-filter=caa --request-filter=caa
Domain: www.ur.nl, Domain (no path): www.ur.nl, First Level Domain: ur.nl
[ OK ] DNS CAA should be enabled (['0 issue "digicert.com"', '0 issue "letsencrypt.org"', '0 issue "sectigo.com"'])


API-624: Add accept-encoding: gzip header

https://jira.bigcommerce.com/browse/API-642
In relation to: https://github.com/bigcommerce/api-proxy-java/pull/60
@ICarpenter @zvuki

👍

@mattolson @saurabh-g


Does it also support GPU version models?

For the ResNet18 model, we confirmed that the CPU version of tensorflow, keras works well
But GPU version fails and does not work.
Can we fix the problem on GPU version?

OS: Ubuntu 16.04
Python : 3.6.7
Pytorch: 1.0.0
Tensorflow: 1.12

Hello @pride0723.
You can always move your GPU model to CPU memory and then convert it. The resulting Keras / Tensorflow model is device-agnostic.


use core.subset (by xclim)

With this PR clisops.ops.subset is using the clisops.core.subset module from xclim.
Changes:

moved xclim subset to core package
replaced default subset implemetation
updated tests ... also for utils package
using pytest.xfail for missing tests
cleaned up headers ... only clisops.__init__.py has version etc ...
updated core.subset with latest from xclim.subset

... this PR is a first step using the xclim subset module. utils package is not used ... clisops.ops.subset interface probably needs to be adapted.

... this PR is a first step using the xclim subset module. utils package is not used ... clisops.ops.subset interface probably needs to be adapted. Should xclim library stay in core package?

@cehbrecht : I think it is fine to keep the xclim stuff in the core package. I am accepting this PR. Thanks


Error when transferring data from micro::bit

Hello,
I have created a simple script that creates binary files from an incrementing value.
Each of these files should have a length of 100bytes holding 50 16-bit numbers.
For some of the files, i.e. the first one that contains values 0 to 49 when I try ufs get file the file is not transferred and the corresponding ascii characters of the binary values are dumped.
For other files the file transfer completes succesfully.
My micro::bit
Interface Version: 0253
Any ideas?
Thanks.

Hmm... not sure. What OS are you using..?

Windows 19

@alexandros769 it might help if you could provide the full script you are running, the command-line that you invoke to get the files, and what the output is of the failed command.  That way someone can try to reproduce the problem and work out how to fix it.

The simplest thing to try this is the following:
test.log
Use the attached binary file and do a:
ufs put test.log
rename the file locally and then do a:
ufs get test.log
This is what I get and the file is not downloaded:
.\Test>ufs put test.log
.\Test>ufs get test.log
║ ═
?       ! " # $ % & ' ( ) * + , - . / 0 1 ╝
.\Test>
Thank you

Thanks @alexandros769 for the test, I can reproduce the problem.
The issue is that test.log has control characters in it (ctrl-C and ctrl-D) which interfere with the file download process.  So these would need to be escaped by the download code for it to work.  Here is a quick patch I made that seems to fix the issue:
--- a/microfs.py
+++ b/microfs.py
@@ -273,13 +273,16 @@ def get(filename, target=None, serial=None):
         "f = open('{}', 'rb')".format(filename),
         "r = f.read",
         "result = True",
-        "while result:\n result = r(32)\n if result:\n  u.write(result)\n",
+        "while result:\n result = r(32)\n if result:\n  u.write(repr(result))\n",
         "f.close()",
     ]
     out, err = execute(commands, serial)
     if err:
         raise IOError(clean_error(err))
     # Recombine the bytes while removing "b'" from start and "'" from end.
+    assert out.startswith(b"b'")
+    assert out.endswith(b"'")
+    out = eval(b"".join(out.split(b"'b'")))
     with open(target, 'wb') as f:
         f.write(out)
     return True

@ntoll sorry it's not a proper PR!

An alternative solution to the above would be to write the length of result before writing it, and then in the reading code on the PC side read this length first then read that many bytes.  The issue is that it currently reads until ctrl-D which appears in the stream of data in the file, so reading ends prematurely.

Thanks,
I tried this modification you posted and it works for me. I have also checked that the content of the file I uploaded is binary same to the one I downloaded.

Hi folks... just pushed this fix with updates to the test suite. Thanks for the contributions..!
I've also updated the package on PyPi and ReadTheDocs (https://microfs.readthedocs.io/en/latest/#id1).
:+1:

Hi folks... just pushed this fix with updates to the test suite. Thanks for the contributions..!
I've also updated the package on PyPi and ReadTheDocs (https://microfs.readthedocs.io/en/latest/#id1).
👍

Thanks, could it be that you forgot the commas in join command? I get a syntax error and if I add the commas it works.

@alexandros769 you're going to have to let me know exactly what you're on about here, otherwise I'm guessing. Please paste in the error message you see and describe precisely what it is you did to rectify it.

It's the same test I described before:
(venv) C:\Repos\fdtt_investigation\Test>ufs put test.file
(venv) C:\Repos\fdtt_investigation\Test>ufs get test.file
SyntaxError: invalid syntax

@alexandros769 aha... I see what you mean. Just pushed a fix and updated on PyPI. :+1:


Documentation Update

Pull Request Test Coverage Report for Build 836

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

Totals

Change from base Build 835:
0.0%

Covered Lines:
2973

Relevant Lines:
3608

💛  - Coveralls


[TF2.2] Loading a Saved Model from tensorflow_hub failed with AttributeError: '_UserObject' object has no attribute 'summary'

System info:
Python: 3.6.9
Tensorflow: 2.2.0 CPU package from pip
The issue:
I got https://tfhub.dev/google/imagenet/resnet_v2_50/classification/4?tf-hub-format=compressed from tf-hub and then uncompressed in a new directory.
with following code:
print(tf.__version__)

resnet50v2_save_path = os.path.join('.', "test2/imagenet_resnet_v2_50_feature_vector_4/")

loaded1 = tf.keras.models.load_model(resnet50v2_save_path)
print(loaded1.summary())

I get:
2.2.0
2020-06-11 21:51:49.413961: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2020-06-11 21:51:49.414437: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x57d3130 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-06-11 21:51:49.414460: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
Traceback (most recent call last):
  File "./test2.py", line 43, in <module>
    print(loaded1.summary())
AttributeError: '_UserObject' object has no attribute 'summary'

However, if I create my own model and then save into .pb format and then load in the same way it works.
Why? Thx

@kinos9
Can you please refer to these issues with similar error:
link
link1
link2
Please share simple standalone code for us to replicate the issue in case the above issues are not helpful.

I have already found and tried those solution without success.
This is what I do to get the error:
wget https://storage.googleapis.com/tfhub-modules/google/imagenet/resnet_v2_50/feature_vector/4.tar.gz
mkdir test_pb
mv 4.tar.gz test_pb
cd test_pb
tar -xvf 4.tar.gz
rm 4.tar.gz
cd ..
./test.py

test.py is the Python script, and this following is the standalone code:
#!/usr/bin/env python3
from __future__ import absolute_import, division, print_function, unicode_literals

import os
import tensorflow as tf

print(tf.__version__)

resnet50v2_save_path = os.path.join('.', "./test_pb/")

loaded1 = tf.keras.models.load_model(resnet50v2_save_path)
print("Load done")

print("Signatures: ", loaded1.signatures)

print("Type: ", type(loaded1))

print(loaded1.summary())

that give this output:
2.2.0
2020-06-12 20:29:07.677555: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2020-06-12 20:29:07.678219: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x59eb130 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-06-12 20:29:07.678241: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
Load done
Signatures:  _SignatureMap({})
Type:  <class 'tensorflow.python.saved_model.load.Loader._recreate_base_user_object.<locals>._UserObject'>
Traceback (most recent call last):
  File "./test.py", line 18, in <module>
    print(loaded1.summary())
AttributeError: '_UserObject' object has no attribute 'summary'

that is the mentioned error.
Thx

@kinos9
Can you please refer to these issues with similar error:
link
link1
link2
Please share simple standalone code for us to replicate the issue in case the above issues are not helpful.

If you run print(loaded1.tensorflow_version) it prints 1.14.0.
May .pb version is incompatible with 2.2.0 one?

Yes. Looks like it.

@kinos9 Can you please respond to the above comment so that we can take the discussion forward. Thanks!

Yes. Looks like it. Instead of downloading the model, can you load the model as a Keras Layer using hub.KerasLayer() and then use the model? Thanks!

Sorry, I miss this answer.
Yes of course and in that way work, but when I export the graph as protobuf for inference with C++ APIs it looks for a KerasLayer object.

So, Did you try using tf.keras.applications.ResNet50V2 instead of loading from a hub?

Hi, having the same issue, can this be reopened?

please reopen this Issue

I had this issue after converting a pytorch model to .onnx, to .pb
How top get something like a summary:
https://github.com/onnx/onnx-tensorflow/issues/855#issuecomment-765028398
How to use the .pb file:
https://github.com/onnx/onnx-tensorflow/issues/901#issuecomment-821686852


Machine cache is refreshed too often during api_execute

I think https://github.com/jplana/python-etcd/commit/dd38063e371eec384907c8220366fc836bde6a00#diff-919ba333781467b5a5d83ef686c677e3R834 moved the logic triggered by
if some_requested_failed
    ....

inside the loop that runs until it gets the successful response or exhaust all candidates (called from api_execute or api_execute_json) by mistake.
At least the some_request_failed flag is never cleaned up in the aforementioned loop, leading to updating the machines cache one extra time if the successful request follows the unsuccessful ones, and removing the perfectly valid url afterwards.
Since self.machines will walk through the list of candidates inside the self._machines_cache recursively until it finds the first suitable one, there is no reason to call it in each iteration of the loop.

Actually, after some discussions here, the check in the loop still makes sense, in order to avoid throwing an exception because of machine cache reload failure after the successful api_execute call, but some_requested_failed should be cleaned up on each iteration of the loop.


Final update release key expiration date

Change the expiration to 2024. The key is no longer being used for new releases, but letting it expire now would be inconvenient because there may still be another 0.21.x release, and, people may still want to verify older releases. I've also pushed this key to the keys.openpgp.org keyserver.
This should be enough for all releases signed with it to be EOL. After that, it can be removed from the site completely.

Concept ACK
$ gpg --list-keys 01EA5486DE18A882D4C2684590C8019E36C2E964
pub   rsa4096 2015-06-24 [SC] [expires: 2024-02-09]
      01EA5486DE18A882D4C2684590C8019E36C2E964
uid           [ unknown] Wladimir J. van der Laan (Bitcoin Core binary release signing key<EMAIL_ADDRESS>

Concept ACK ca7a649c50ed244682b4e3b3237ec13d6a148640
$ gpg --import keys/laanwj-releases.asc
$ gpg --list-keys 01EA5486DE18A882D4C2684590C8019E36C2E964
pub   rsa4096 2015-06-24 [SC] [expires: 2024-02-09]
      01EA5486DE18A882D4C2684590C8019E36C2E964
uid           [ unknown] Wladimir J. van der Laan (Bitcoin Core binary release signing key<EMAIL_ADDRESS>


Clip the blocks going into the bot's head

For long blocks:
https://user-images.githubusercontent.com/2205926/114967613-a12f2000-9e29-11eb-847a-8310cc38f3a4.mov
And short ones:
https://user-images.githubusercontent.com/2205926/114967594-98d6e500-9e29-11eb-8db4-15219154cba8.mov

Looks great!
Not sure if we care about this, but it looks like the order of the label and features get mixed up.
https://user-images.githubusercontent.com/40412372/115063630-a9767200-9ea0-11eb-9342-eb289797a3c8.mov


Differentiating People Picker results from different providers

Hi @Yvand
We are using an extended web application with the original web/app using On-Prem AD and AzureCP configured to return users from Azure AD for the extension. The problem we have is that when you are looking to add users it returns the same user from both AD. We are trying to figure out a way that distinguish AD user from AAD user so that end users dont get confused about which one to choose. We have played with the idea of setting the "Display of user identifier results" as Mail but this impacts the displayed user name when the user is added.
Do you have some suggestion how to differentiate the same users returned from different IDP
Thanks,
Shane

@Getoffmypatch you can set a prefix for all AAD results. It can be done only through PowerShell, by setting property EntityDisplayTextPrefix:
Add-Type -AssemblyName "AzureCP, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=65dc6b5903b51636"
$config = [azurecp.AzureCPConfig]::GetConfiguration("AzureCPConfig")
$config.EntityDisplayTextPrefix = "(SomePrefix) "
$config.Update()

Thanks but that would impact the display name also. Is there a way that it only differentiates the lookup?

@Getoffmypatch it is true but it cannot be avoided, because SharePoint uses the same property for both.
But eventually, the display name will be updated by the job which syncs data from the User Profile Service


Update main.js

Copied egens' change to DoB calculation.  Fingers crossed.

Crud - accident.  Sorry about that.

No worries at all! Let me know if you want any guidance on how to contribute. The docs could be much better than they are.


Can't use --priviliged flag: any workaround?

Hi,
I'm trying to set up a "docker factory" on Bluemix Containers. My upload bandwith is pretty low and it takes ages to upload my images from the laptop...
Bleumix, however, does not allow privileged containers:
# docker run hello-world
Post http:///var/run/docker.sock/v1.19/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

Is there any workaround you may suggest?
Thanks

Unfortunately, if you can't run privileged containers, you won't be able to run Docker-in-Docker.
You might be able to work around the issue if you have access to capabilities, though.


Reach out to Darby Wong and see how Clerky is doing

why haven't they done investment agreements, "coming soon" for years?
https://www.linkedin.com/profile/view?id=1848548&authType=NAME_SEARCH&authToken=8t52&locale=en_US&srchid=16928181431323245278&srchindex=1&srchtotal=4&trk=vsrp_people_res_name&trkInfo=VSRPsearchId%3A16928181431323245278%2CVSRPtargetId%3A1848548%2CVSRPcmpt%3Aprimary%2CVSRPnm%3Atrue

clerky has a convertible note in private beta.


New data from PDMR

Description
As a developer, I want to pull the most recent data from PDMR for the next release.
PDMR data is release quarterly.
Acceptance criteria

[x] done

done, working on joining organoids table.


DG_Interface_FECollection implementation

Hello,
In my project, in order to use mfem's hybridization in 4D, I might need to implement a 4d version of DG_Interface_FECollection.
I would be grateful if someone explains me several things about the 2D/3D implementation:
The main routine seems to be RT_FECollection::InitFaces() which uses some protected data members. What are they: RT_Elements, RT_dof, TriDofOrd and how they are set?
Thanks,
Kirill

Hi Kirill,
We haven't dived into the 4d implementation yet, so maybe @marneum is the best person to help you with this. RT_FECollection are just the regular Raviart-Thomas H(div)-conforming elements.
Tzanio


Trouble building instantsearch.js from source

🐛 Current behavior
When trying to build instantsearch.js from source, I get a different and broken result compared to the one located at https://cdn.jsdelivr.net/npm/instantsearch.js@4

(diff produced with delta)
🔍 Steps to reproduce
git clone git@github.com:algolia/instantsearch.git
cd instantsearch/
yarn install
cd packages/instantsearch.js
yarn build:umd

wget https://cdn.jsdelivr.net/npm/instantsearch.js@4
diff instantsearch.js@4 dist/instantsearch.production.min.js

(the reproduction link is empty* because it shouldn't be relevant for this bug)
Live reproduction
https://example.com/
💭 Expected behavior
I'd expect to get the same output, or at least a working version.
I also tried building with the latest instantsearch.js tag, but that produced the same non working result.
Package version
gituhub.com/algolia/instantsearch.git/master
Operating system
Linux-NixOS 24.05
Browser
Mozilla Firefox 128.0.2
Code of Conduct

[X] I agree to follow this project's Code of Conduct

I can't retry this locally, when you did your install, did it build instantsearch-ui-components as well? normally the install should trigger that. There's been a release since your issue and it also worked fine (no require of instantsearch-ui-components). Have you made any changes before you built?


Immutable.js like Records

I'd like to be able to use this library to approximate Immutable.js Records: https://facebook.github.io/immutable-js/docs/#/Record
The benefits I see from this are helper functions (e.g. calculated fields on a data object- getName() on an Immutable({firsName: ..., lastName: ...}), defaulting fields, and validation.
From #25, I can see you've chosen not to support object prototypes by default, but I was wondering if there was a way to opt into its use. Looking at the code, I couldn't find a simple solution for this.
Do you have suggestions on how this type of functionality could be added, or potential hooks to enable the usecases above (defaulting might be the trickiest, but the others I feel could be handled by methods on the object)?
Thanks!

We talked about adding a way to support opting in but it's very low on my priority list at the moment. :smiley:
If you wanted to make a Pull Request for that, though, I would definitely be open to it!

I'm likely going to try this approach this weekend, but there's some weirdness in that multiple arguments to Immutable() are considered an Array and I'd rather not break existing consumers. Another option I'm thinking about is a special method that does this on Immutable like isMutable, but that's also not ideal.
Because my options for implementation of this feature are subpar, what do you think about supporting the original intent of #25, but logging a warning when encountering a prototype in development? I'm guessing there are probably a lot of folks that rely on this not happening at the moment? If so, changing that behavior would be breaking, so this probably isn't feasible either, but thought I'd ask.

Yeah, I don't like the idea of breaking current invariants for this.
However, I could see adding a method like this:
// Takes an array of allowed prototypes, and returns a new version of `Immutable`
// which will preserve those prototypes when it encounters them.
Immutable.withPreservedPrototypes

Then you could just go:
var Immutable = require("seamless-immutable").withPreservedPrototypes([ ... ]);

My main issues with that approach are:

If someone created a project specific version of seamless-immutable with this approach, they'd have to keep that list up to date
If someone was encapsulating the creation of these objects, it gets tricky if another component creates other Immutable objects where these are nested children. (This is probably unavoidable)

How would you feel about something like:
// Similar to Immutable(), but during clone of objects, attaches a __immutable_preserve_prototype
// tag to the cloned object. The application of this tag is used elsewhere in the library to ensure
// the prototype is preserved on clones.
Immutable.withPreservedPrototype(obj) // could be better named

If the entire library recognized this tag and acted appropriately, you could use Immutable normally, wrap objects in arrays, and get the expected result. This handles #1, and mostly #2 (having to have factories to create Immutable objects of a specific type is required in either case).
Anyways, let me know what you think of that. I'm not completely sold on it, but feels easiest to consume and implement. Happy to hear out other options. Will try to implement one of these in the next day.

Hm...what would a code example look like with this in action?

Sorry for the late response. I just tried out something similar to what I'm thinking: https://github.com/virajsanghvi/seamless-immutable/commit/5e2b065f757a8747ef6a61528782f72393d0741d
Just wanted to be on the same page before cleaning this up/adding tests for PR. See the test for a general idea of how it would be used.
Basically the idea is a custom constructor method used explicitly for the purpose of preserving the prototype. We can use the invariant that all existing Immutable objects have Object.prototype to determine when we've encountered an object created from this custom constructor, and preserve its prototype during cloning.
There are three main points of contention that I can see:

Is the performance implication of Object.getPrototypeOf ok in the common case? I imagine it just returns __proto__, but not sure.
What is the relation of ImmutableWithPrototype to Immutable? Should they share a common constructor, so you could pass Arrays, dates, etc to ImmutableWithPrototype, or should it just take in Objects and throw otherwise? (The current implementation of copying Immutable was just to try this out)
The name ImmutableWithPrototype kind of sucks- I'm open to suggestions.

Anyways, let me know what you think. Also, if you have a benchmark suite I could use, I'd like to see the overall perf implications of Object.getPrototypeOf and Object.create.

I think a cleaner approach would be:

Have Immutable accept a second argument for options, like merge does (this would be a breaking change, as currently it assumes if it gets multiple arguments you want an array; I'm fine with that breaking hange)
If it gets a second argument of {prototype: foo} then use foo as the prototype for the resulting object.
Add a method instantiateEmptyObject() (in the same way the other custom methods are added) and have it either return {} if no prototype was specified, and Object.create(options.prototype) if one was specified.
Have the various methods call this.instantiateEmptyObject() instead of just using {}

Thoughts?

I'm a fan. This was preferable, but I thought you were against changing the interface for Immutable per a previous comment (I may have described it unclearly). Anyways, I'll get this up in the next few days when I have a free hour.

To clarify, what I meant by not wanting to break current invariants is just that there'd be no chance any existing uses of Immutable would suddenly "play by different rules" and possibly introduce surprising bugs.
I'm okay with a breaking API change, though, especially for something that I suspect is not used very often. :smiley:

Is this a priority? I would love to have this, could make a PR.

Forgot to link here, but submitted #51 a couple days ago which handles what we talked about above.

Thanks! I saw it but haven't had time to take a proper look because it's crunch time at work and I'm swamped.
I'll definitely try to take a look this week!

Closing as the functionality to support this is now available in 3.0.0


Support service settings without models

@bquinn do you think this covers the features you wanted?

@ushkarev yes I've tested it and it's great, that solves my problem better than I did! Thanks very much :-)


Add codified way to include external dependencies for modules

Currently there is no single best way for contributors to include external dependencies for their modules.
This makes it difficult to produce modules, as well as share them.

Commit a06a5ab adds new requirements for adding a CMakeLists.txt to each module.
Users can include any libraries there