New functions to pre-provision VolumeSnapshot and VolumeSnapshotContent

Change Overview
This PR adds two new functions to manage CSI volume snapshots and snapshot contents:

CreateCSISnapshotStatic - create a pre-provisioned VolumeSnapshot/VolumeSnapshotContent resource pairs
DeleteCSISnapshotContent -  delete VolumeSnapshotContent resources.

For more information on how the pre-provisioned snapshots are different from those created with PVCs, see the Kubernetes documentation here.
This PR is a follow-up on https://github.com/kanisterio/kanister/pull/1246, where we had decided not to extend the existing KubeOps function to delete cluster-scoped resources like VolumeSnapshotContent, to avoid misuses.
Pull request type
Please check the type of change your PR introduces:

[ ] :construction: Work in Progress
[ ] :rainbow: Refactoring (no functional changes, no api changes)
[ ] :hamster: Trivial/Minor
[ ] :bug: Bugfix
[x] :sunflower: Feature
[x] :world_map: Documentation
[ ] :robot: Test

Issues
See https://github.com/kanisterio/kanister/pull/1246#issuecomment-1061589030.
Test Plan
These test steps require the following 3rd party components to be installed on the Kubernetes cluster:

external-snapshotter
csi-driver-host-path

Create the following blueprint:
$ cat <<EOF | kubectl apply -f -
apiVersion: cr.kanister.io/v1alpha1
kind: Blueprint
metadata:
  name: manage-static-snapshots
  namespace: kanister
actions:
  # new function - create a pair of static VolumeSnapshot and VolumeSnapshotContent
  createStaticSnapshots:
    phases:
    - func: CreateCSISnapshotStatic
      name: create
      args:
        name: "{{ .ArtifactsIn.params.KeyValue.name }}"
        namespace: "{{ .ArtifactsIn.params.KeyValue.namespace }}"   # namespace must exist
        snapshotClass: "{{ .ArtifactsIn.params.KeyValue.class }}"
        driver: "{{ .ArtifactsIn.params.KeyValue.csiDriver }}"
        snapshotHandle: "{{ .ArtifactsIn.params.KeyValue.handle }}"
  # existing function - delete VolumeSnapshot
  deleteVolumeSnapshot:
    inputArtifactNames:
    - volumeSnapshotName
    - volumeSnapshotNameSpace
    phases:
    - func: DeleteCSISnapshot
      name: delete
      args:
        name: "{{ .ArtifactsIn.params.KeyValue.volumeSnapshotName }}"
        namespace: "{{ .ArtifactsIn.params.KeyValue.volumeSnapshotNamespace }}"
  # new function - delete VolumeSnapshotContent
  deleteVolumeSnapshotContent:
    inputArtifactNames:
    - volumeSnapshotContentName
    phases:
    - func: DeleteCSISnapshotContent
      name: delete
      args:
        name: "{{ .ArtifactsIn.params.KeyValue.volumeSnapshotContentName }}"
EOF

Use this ActionSet resource to create the static resources:
$ cat <<EOF | kubectl create -f -
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
metadata:
  generateName: create-static-snapshot-
  namespace: kanister
spec:
  actions:
  - name: createStaticSnapshots
    blueprint: manage-static-snapshots
    object:
       kind: Namespace
       name: kanister
    artifacts:
      params:
        keyValue:
          name: test-snapshot-content
          namespace: default
          class: csi-hostpath-snapclass
          csiDriver: hostpath.csi.k8s.io
          handle: 7bdd0de3-aaeb-11e8-9aae-0242ac110002
EOF

Confirm that the resources are created:
$ kubectl get vs,vsc
NAME                                                           READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT                                                RESTORESIZE   SNAPSHOTCLASS                   SNAPSHOTCONTENT                                                      CREATIONTIME   AGE
volumesnapshot.snapshot.storage.k8s.io/test-snapshot-content   false                    test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6                 csi-hostpath-snapclass-retain   test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6                  11s

NAME                                                                                READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                VOLUMESNAPSHOTCLASS             VOLUMESNAPSHOT          VOLUMESNAPSHOTNAMESPACE   AGE
volumesnapshotcontent.snapshot.storage.k8s.io/test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6   false                      Retain           hostpath.csi.k8s.io   csi-hostpath-snapclass-retain   test-snapshot-content   default                   11s

The resource deletion behaviour is defined by the deletionPolicy of the snapshotClass of the snapshot.
Since by default, the csi-hostpath-snapclass snapshot class uses the Delete policy, deleting the VolumeSnapshot will also delete the VolumeSnapshotContent:
$ cat <<EOF | kubectl create -f -
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
metadata:
  generateName: delete-vs-
  namespace: kanister
spec:
  actions:
  - name: deleteVolumeSnapshot
    blueprint: manage-static-snapshots
    object:
      apiVersion: v1
      group: snapshot.storage.k8s.io
      resource: volumesnapshots
      name: test-snapshot-content
      namespace: default
    artifacts:
      params:
        keyValue:
          volumeSnapshotName: test-snapshot-content
          volumeSnapshotNamespace: default
EOF

$ kubectl get vs,vsc
No resources found

Change the deletionPolicy of the snapshot class to Retain:
kubectl patch volumesnapshotclass csi-hostpath-snapclass --type='json' -p '[{"op":"replace","path":"/deletionPolicy","value":"Retain"}]'

Recreate the VolumeSnapshot and VolumeSnapshotContent resources.
With the Retain policy, deleting the VolumeSnapshot will not delete the VolumeSnapshotContent:
$ cat <<EOF | kubectl create -f -
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
metadata:
  generateName: delete-vs-
  namespace: kanister
spec:
  actions:
  - name: deleteVolumeSnapshot
    blueprint: manage-static-snapshots
    object:
      apiVersion: v1
      group: snapshot.storage.k8s.io
      resource: volumesnapshots
      name: test-snapshot-content
      namespace: default
    artifacts:
      params:
        keyValue:
          volumeSnapshotName: test-snapshot-content
          volumeSnapshotNamespace: default
EOF

$ kubectl get vs,vsc
NAME                                                                                READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                VOLUMESNAPSHOTCLASS             VOLUMESNAPSHOT          VOLUMESNAPSHOTNAMESPACE   AGE
volumesnapshotcontent.snapshot.storage.k8s.io/test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6   false                      Retain           hostpath.csi.k8s.io   csi-hostpath-snapclass-retain   test-snapshot-content   default                   4m52s

To delete the unbounded VolumeSnapshotContent, create an ActionSet to invoke the new DeleteCSISnapshotContent function:
$ cat <<EOF | kubectl create -f -
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
metadata:
  generateName: delete-vsc-
  namespace: kanister
spec:
  actions:
  - name: deleteVolumeSnapshotContent
    blueprint: manage-static-snapshots
    object:
      apiVersion: v1
      group: snapshot.storage.k8s.io
      resource: volumesnapshotcontents
      name: test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6
    artifacts:
      params:
        keyValue:
          volumeSnapshotContentName: test-snapshot-content-content-9503c7b0-32d2-46e2-ad6e-ee8f3fa949b6
EOF

$ kubectl get vs,vsc
No resources found

Deleting a bounded VolumeSnapshotContent has no effects, as the resource would be protected by the CSI controller:
$ kubectl get vs,vsc
NAME                                                           READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT                                                RESTORESIZE   SNAPSHOTCLASS            SNAPSHOTCONTENT                                                      CREATIONTIME   AGE
volumesnapshot.snapshot.storage.k8s.io/test-snapshot-content   false                    test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c                 csi-hostpath-snapclass   test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c                  3s

NAME                                                                                READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                VOLUMESNAPSHOTCLASS      VOLUMESNAPSHOT          VOLUMESNAPSHOTNAMESPACE   AGE
volumesnapshotcontent.snapshot.storage.k8s.io/test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c   false                      Delete           hostpath.csi.k8s.io   csi-hostpath-snapclass   test-snapshot-content   default                   3s

$ cat <<EOF | kubectl create -f -
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
metadata:
  generateName: delete-vsc-
  namespace: kanister
spec:
  actions:
  - name: deleteVolumeSnapshotContent
    blueprint: manage-static-snapshots
    object:
      apiVersion: v1
      group: snapshot.storage.k8s.io
      resource: volumesnapshotcontents
      name: test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c
    artifacts:
      params:
        keyValue:
          volumeSnapshotContentName: test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c
EOF

$ kubectl get vs,vsc
NAME                                                           READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT                                                RESTORESIZE   SNAPSHOTCLASS
     SNAPSHOTCONTENT                                                      CREATIONTIME   AGE
volumesnapshot.snapshot.storage.k8s.io/test-snapshot-content   false                    test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c                 csi-hostpath-snapcla
ss   test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c                  2m17s

NAME                                                                                READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                VOLUMESNAPSHOTCLASS      VOLUMESNAPSHOT          VOLUMESNAPSHOTNAMESPACE   AGE
volumesnapshotcontent.snapshot.storage.k8s.io/test-snapshot-content-content-ff80129c-23dd-437d-b02e-2bb886db325c   false                      Delete           hostpath.csi.k8s.io   csi-hostpath-snapclass   test-snapshot-content   default                   2m17s

@pavannd1 @viveksinghggits While writing my test ActionSet, I am a bit confused by the action's required object field. It looks like the original intention was to use this field to identify the resource that the function should operate on. There are some validation logic to ensure these resources exist, which doesn't make sense for Create functions.
Also, some existing functions defined their own required arguments that duplicate these resource metadata, and their code don't read from the object template parameter. I think for this PR, I'm going to follow the existing code pattern in the {Create|Delete}CSISnapshot functions which use their own function arguments, instead of the object template parameter.

@ihcsim does that mean the object field that you have specified while creating the actionset is of no use in this case? Also do you think we should add an example of how to use this in examples directory or docs are enough.

snapshotClass should be non-mandantory. Kubernetes picks the default is nothing is specified.

After building a docker image of this branch, I get the error described in #1288. I'm not quite sure if it's only in this branch.

snapshotClass should be non-mandantory.

Yeah, we have some existing code that check for the existence of the snapshotClass. Since they go all the way back to v1alpha1 of the CRD, I am a bit hesitant to refactor them in this PR. AIUI, a default snapshot class is only set if one of the classes is annotated with snapshot.storage.kubernetes.io/is-default-class: "true", implying that on some clusters, there may not be a default class. WDYT?


Support for ZCL flow measurement cluster (TZ-548)

Is your feature request related to a problem?
ZCL defines a cluster for flow measurement (0x0404). This cluster does not appear to be currently supported.
Describe the solution you'd like.
Implement the cluster and associated attributes for flow measurement.
Describe alternatives you've considered.
Currently I am using a generic analog input cluster, which largely works but is not what the standard says I should use.
Additional context.
No response

@Bobstin ,
Noted. We will add cluster support in the future; however, it may require some time, and we appreciate your patience.

Bobstin can you send your code in here because I am trying to figure out how to make the analog input cluster work, but I cannot find any examples on how to get this to work.

This is more of a demo that I have been building than anything else, but the analog input cluster does work with it: https://github.com/Bobstin/AutomatedBrewery/blob/master/ESPZigbeeDemo/zigbee_cluster_demo/main/esp_zb_light.c

This is more of a demo that I have been building than anything else, but the analog input cluster does work with it: https://github.com/Bobstin/AutomatedBrewery/blob/master/ESPZigbeeDemo/zigbee_cluster_demo/main/esp_zb_light.c

What GPIO pin are you using to get the analog input results?

This is more of a demo that I have been building than anything else, but the analog input cluster does work with it: https://github.com/Bobstin/AutomatedBrewery/blob/master/ESPZigbeeDemo/zigbee_cluster_demo/main/esp_zb_light.c

What GPIO pin are you using to get the analog input results?

Or how can I set which GPIO pin the data is being read from?

@Bobstin ,
The flow measurement cluster has been supported in the esp-zigbee-sdk v1.2.3. Could you please test it on your side? If it works as expected, please consider closing this issue.


Fixed indentation in template file.

Issue #, if available:
#13 #14
Description of changes:
Fixed indentation in template file. (line152 ,162)
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Kindly merge this : )

I hit this one also; please commit this change to save other people the hassle.

+1 to merging this @john-aws @antpas please
the indent error makes the lambda fail

Approved but I'm unable to merge. Requesting assistance from someone who has merge permission. Thanks.


Snorkel.DB Issues / Queries

I am working on a project that requires generation of automatic labels for structured datasets. We are working with data that is well defined in columns.
Our main challenge so far has been trying to get data in the format understood by Snorkel (i.e. the Candidate / Context / Span structure).
Snorkel.db is already loaded with a lot of data before the workshop example even commences.
Do I need to have the entire schema ready and populated in a db by writing my own code for this since the workshop example assumes a populated db ?
In this regard, I had a few queries relating to the tables that have been created and populated.

Context Table - How is the Stable_ID generated ?
Stable-label Table - What do context-stable-ids refer to ?
Spouse Table - person1_cid, person2_cid - What do these two fields refer to ?
Feature Table - What does key_id, value refer to ?
Marginal Table - The values are already popluated in this db. Shouldn't this table get popoulated after the generative model is run ?

It would really appreciate it if you could find some time to answer our queries.

Hi @skk123123,
These are some good questions. You're correct, the spouse tutorial included a database where preprocessing had already occurred. The good news, the new v0.9 that will be pushed in August will come with a bunch of new tutorials that are more transparent about dataset preprocessing. We're also making the entire system more modular (e.g., no db backend), so it should be much simpler to get your data into an appropriate format to work with all the snorkel tools. Stay tuned for that release!

 This sounds like it will suit your usecase much better. Take a look at our new intro tutorial for some ideas.


Async support?

Hey 👋 Is there any way to make the price fetch methods work in an asynchronous setting? I couldn't find anything in the code/documentation.

#172

Thanks!


Can't install in Windows10

If you're having an issue installing Electron, this is the place to report it.
If you're having an issue using Electron, please report it at https://github.com/electron/electron/issues

Electron version: 1.4.15
Operating system: Windows 10

npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\nodejieba):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
npm ERR! Windows_NT 10.0.14393
npm ERR! argv "E:\Program Files\nodejs\node.exe" "E:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
npm ERR! node v7.0.0
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>postinstall: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'node install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the electron package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs electron
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls electron
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     D:\project\electronic-wechat\npm-debug.log

https://github.com/electron/electron/blob/master/docs/faq.md#why-am-i-having-trouble-installing-electron


add gitaction to verifies each build - linux

first out linux

fixed in https://github.com/KjellKod/Q/pull/18


Implement better default avatars

Note: This issue is part of the greater Implement Our New Branding in NewDot project.
What is it:

Add a wider variety of default avatars in the app for users
Use the first initial/number from the workspace name as the default workspace title along with a random color pairing

Does it require a mini design doc:
Yes
Design finished:
Yes
cc @GabiHExpensify

Just a heads up that I updated the original comment with a new mockup. Rather than build an avatar picker, we can just use random avatars instead as the v1 implementation of this.

For users, we'll use one of 24 random avatars
For workspaces, we'll use the first initial or number from the workspace name, and use that in one of our 16 colorways

Woo! Thanks Shawn. ❤

Do we have the files ready for this?

The characters, yes. For the default workspace avatars, how do you think we should handle those? We could essentially just create an avatar for each starting letter of the alphabet/numbers, or we could do it dynamically via text. If we go the dynamic route, we'd need to wait until New Kansas is available though.

Yeah, I was thinking that instead of doing all color combinations with each starting letter, we would just assign one color combo for A, one color combo for B, one color combo for C, etc etc... this way we'd only end up with like 26 alphabetical workspace avatars and then 10 numerical ones?
Agree that I don't think we support SVGs as avatars right now, @NikkiWines looked into this briefly and we ended up going with a PNG instead.

That makes it easy! Although looking at it right now I think the current workspace icon might be an SVG

Oh sweet, that would be rad.

Could I get the files for the default avatars? And then after that, if you want to send the workspace files along with an example letter SVG I could test out the random color idea :)

For sure! For the workspace files, what exactly are you looking for there? Do you want SVGs that are like black/white with just black for the BG and white for the letter? I could give you those for A-Z/0-9 and then maybe you can just change the colors programmatically? Or were you thinking to just have pre-colored SVGs, where A just gets one color pairing, B gets a different one, etc etc?

One more thing - do you prefer that the default avatars are served up as circles or full bleed squares? I assume we can crop these appropriately everywhere in the app via styles, and that will give us the cleanest edge... so I'm leaning towards full bleed squares.

Full square! And for the workspace, I want to try out the programmatically, so I'd need A-Z/0-9 black/white SVG. Otherwise, the 26 for that one as well.

Here are the new default random user avatars: Random User Icon.zip
Signing off for the night soon but will try to get the other ones finished tomorrow or Friday.

Here are the default workspace avatars: Default Workspace Avatars.zip
Note that they are also square full-bleeders. I suppose we can follow up with a separate issue to make them use a rounded square shape rather than a circle crop?

Thanks, Shawn! Could I get the random user icons as 400x400 png as well?

Sure thing, here ya go: Random User Avatar PNG.zip

Update: User Avatars were uploaded to CloudFront so I should be able to get started on implementation today/tomorrow.

Wow that's exciting!

Update: my PRs are working using the old system (CloudFront), but since we want to use local SVGS files, I'm going to hold on refactoring until the last few core-branding bugs are done (dark mode/fonts). I think I should be able to get working on it by EOW.

👋 Hey @grgia, just copying over from a linked issue. In the QA tests for the PR when you have it, can you make sure to cover uploading and removing the custom avatar, so reverting back to the default avatar works as expected (i.e doesn't change colours etc like in the OP vid here). Thanks!

Can someone remind me why we decided to make this issue a monthly? I'm having trouble recalling why that's the case. Is this currently held on WAQ?

We paused this to clean up core branding bugs. I finished an implementation using our current method for avatars, so now I just need to refactor using svgs. Now that most of the bugs have been pinpointed and fixed and we're down to a few polish issues, I'll make this weekly (or even daily?) and prioritize it again

Spoiler: they look incredible in-app :)

Oh now we're talking! Thanks for the update @grgia, I can't wait.

@shawnborton could I get circular svgs too?

Hey Georgia - happy to make circular SVGs, but before I begin, just curious why the square versions won't work? Mostly thinking that all user uploaded images are squares, and we handle the round cropping in the UI via styles. Lemme know what you think!

We mostly use Icon/Image components for the avatars depending on if it's an SVG or a PNG/JPEG/etc. With using the Icon component to serve the SVGs, I don't think we can apply borderRadius to the SVG itself (or at least I haven't gotten it working). There are a few ways to serve SVGs that we can normally style (such as how we handle our wordmark by importing the logo as Logo and then using it as a component i.e <Logo height={80} width={80} /> ) so I'm still exploring that. I was thinking that I'd test out following the current pattern of how we handle workspace/admin SVG avatars for now, but I am still going to look into alternative solutions for getting styling to work on the square SVGs :)
Here's some testing I did: all the square icons are an SVG (+ the circular admin/workspace icons) and any other circular icon is a CloudFront PNG avatar

Okay cool, thanks for explaining! Is there a way we can just wrap the svg inside of a small view and then give that a perfectly round border radius?

Yes!

Wow you can really see the difference on the edge between the PNG concierge and the SVG default avatars here

Nice they are looking good!

Default avatars was just merged! Which means I can move onto workspace avatars now :)

Which means I can move onto workspace avatars now :)

Looking forward to it.

Here's a brief preview/update for the new workspace icons:
https://user-images.githubusercontent.com/38015950/216723491-87a83500-8845-4700-ae22-def0d880004f.mov

Nice, nice! Just had a thought, will this update the workspace chat (policyExpenseChat) avatars as well, or do we need to do something else to ensure they do also get updated? I believe that the workspace avatar overlaid in the bottom right corner for the admin view needs to be a square like so:

.. and for the member who's workspace chat it is, that's now a square:

@shawnborton
I opened a conversation here about the edge case where workspaces can be named "___" with no A-Z/0-9 characters. Since this is an edge case not covered by the current set of avatars, what should the workspace avatar look like? Perhaps we should make an underscore SVG?

That works for me! Let me know if this works: default-avatar_underscore.svg.zip

@grgia @shawnborton Is underscore the only special character we allow? Do we have any other such characters?
Instead of _, should we you know replace it with some other character like ⭐  ?

Good question. We could always use a generic building icon like we currently are for any other special characters, but I'm not sure if we allow any others?

We could always use a generic building icon like we currently are

Yes this makes sense too. Underscore looks too weird as an avatar.

Well it might look weird but it matches the workspace name, which is the goal.

@shawnborton @grgia Looks like we do allow other special characters as the first letter in the workspace name.

Do we have a list of all of the special characters we allow? We could either make an avatar for each one to be consistent, or just use a generic fallback.

I personally liked the suggestion, either above or in Slack, of always using the E for this case (or honestly even the Q because that font/letter is so cool).

I think it would be weird to see an E or a Q though if the workspace didn't start with either of those letters. I would rather just fall back to a default building icon or something.
If we do need the building icon, here is one we can use: default-avatar_building.svg.zip

@JmillsExpensify for this one PR 1, is already in production with regression period passed. Can we do the payout one PR at a time? Or it’ll be done for both the PRs together?
Also I would like to request a raise for the first PR, as it was very intensive to review and touching every part of the app. We’ve had 20+ conversations and 3+ iterations on the PR.  @grgia if you agree.

Job added to Upwork: https://www.upwork.com/jobs/~01136d72ed85b4e6cf

Current assignee @mananjadhav is eligible for the Internal assigner, not assigning anyone new.

@trjExpensify I just saw that you've assigned yourself to this issue. Can you please help me with this comment

Yeah, will do. I'll revert back once the Georgia and the team on the west coast come online.

Hey @mananjadhav, internal PRs are typically set at $1k, but we discussed it internally and doubled it in this instance. I've sent you an offer in Upwork. We can settle that one up now, and then create a new job for the workspace avatars secondary PR. 👍

Thanks for the consideration @trjExpensify

Cool, that's settled. @grgia are you keeping this issue open for the workspace avatars PR?

Oh nice, thanks @trjExpensify!

@mananjadhav Sorry about that! In those cases you're welcome to reach out to me via Slack and I guarantee I'll be more responsive.

Reviewing label has been removed, please complete the "BugZero Checklist".

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.2.79-0 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/15280

If no regressions arise, payment will be issued on 2023-03-14. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

@trjExpensify Would you be able to help with the payout here?Just checking if it's possible considering everyone is at the conference.

Yep, I can help with that. I presume this was for the internal review of the follow-up PR, so $1k yeah?

presume this was for the internal review of the follow-up PR, so $1k yeah?

Yes this was an internal PR review.

Great! I've sent you an offer for $1,000.

Cool, settled!


fix: Use BodyLarge typography for TextBox Placholder

related https://github.com/unoplatform/Uno.Themes/issues/1379
PR Type
What kind of change does this PR introduce?

Bugfix

The PlaceholderText should be using the BodyLarge typography values, same as the TextBox's Content element. For now, until https://github.com/unoplatform/Uno.Themes/pull/1014 is merged, we will also keep those typorgaphy values when the PlaceholderElement is translated to serve as the "header"/"label" of the TextBox and keep it scaled down to the same size as BodySmall

@Mergifyio backport release/stable/5.0


When use another value instead of Development as ASPNETCORE_ENV..., not working HMR

https://github.com/aspnet/JavaScriptServices/blob/a40adab38dba34458b25ecc2b3884278a8b2394c/src/Microsoft.AspNetCore.NodeServices/Configuration/NodeServicesOptions.cs#L39-L45
Context
When i develop in local, actually i used Local environment value as ASPNETCORE_ENVIRONMENT instead of Development
So i configure several codes in Startup.cs as below
if (env.IsDevelopment() || env.EnvironmentName == "Local")
{
    app.UseDeveloperExceptionPage();
    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
    {
        HotModuleReplacement = true
    });
}

and change my system environment value ASPNETCORE_ENV... to Local
finally dotnet run and i checked [HMR] connected in chrome console.
Problem
when i edit my client component but HMR was not working with warning log need full reload

Just all ok when ASPNETCORE_ENVIRONMENT value was Development.
Solution
i checked this file NodeServicesOptions.cs in repository.
The code is setting NODE_ENV to development when environment value was Development
In my case or someones want to use another values instead Development.
So how do you add the following code in WebpackDevMiddleware.cs?
// In WebpackDevMiddleware.cs
if(options.HotModuleReplacement && !options.EnvironmentVariables.ContainsKey("NODE_ENV")) {
    optinos.EnvironmentVariables["NODE_ENV"] = "development";
}

I'm sorry I did not speak English well. :joy: :joy:

The environment name Development has a special meaning in ASP.NET. It determines the value of IHostingEnvironment's IsDevelopment() result. So if you want your app to behave correctly in development mode, that's the environment name you should use. I'm afraid this is the only way to control the NODE_ENV environment variable used for WebpackDevMiddleware.

If I'm reading the question correctly, you should be able to pass in the NODE_ENV value via the WebpackDevMiddlewareOptions.
The following worked for us when changing the environment name on workstations from Development to Local.
if (env.IsEnvironment("Local"))
{
    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
    {
        HotModuleReplacement = true,
        EnvironmentVariables = new Dictionary<string,string>
        {
            {"NODE_ENV", "Local"}
        }
    });
}


Bugfix: Auto Mark not functioning

-Removed @Alpha from config items
-autoMark tiles is now overridden in the evaluator, fixing issue of always returning false

Merging due to urgency


[Bug] The GitHub runner does not have enough space to build all the Docker images

Is there an existing issue for this?

[X] I have searched the existing issues

What projects are you seeing the problem on?
No response
Current behavior
TODO
     [creator]           ghcr.io/sage-bionetworks/openchallenges-challenge-service-base:local - loading image "ghcr.io/sage-bionetworks/openchallenges-challenge-service-base:local". first error: embedded daemon response: Error processing tar file(exit status 1): write /d92e53e9ebcf932d6ad7fa4b50397e1dfbcccd47622faec47d37bdc3706f618d.tar: no space left on device

Expected behavior
No response
Anything else?
No response
Commit ID
main
Are you developing inside the dev container?

[X] I am using the dev container

Code of Conduct

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

This has no longer been an issue lately.


Fix annotation

Fix the following error
Warning: Failed prop type: Invalid prop `annotationLayers[0].value` of type `number` supplied to `NVD3`, expected `string`.
    in NVD3 (created by LoadableComponent)
    in LoadableComponent (created by SuperChart)
    in div (created by SuperChart)
    in SuperChart (created by Chart)
    in div (created by Chart)
    in ErrorBoundary (created by Chart)
    in Chart (created by Connect(Chart))
    in Connect(Chart) (created by ParentSize)
    in div (created by ParentSize)
    in ParentSize (created by ExploreChartPanel)
    in div (created by Panel)
    in div (created by Panel)
    in Panel (created by ExploreChartPanel)
    in div (created by ExploreChartPanel)
    in ExploreChartPanel (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in ExploreViewContainer (created by Connect(ExploreViewContainer))
    in Connect(ExploreViewContainer) (created by App)
    in div (created by App)
    in Provider (created by App)
    in App (created by HotExportedApp)
    in AppContainer (created by HotExportedApp)
    in HotExportedApp
printWarning @ checkPropTypes.js?a15c:19
checkPropTypes @ checkPropTypes.js?a15c:82
validatePropTypes @ react.development.js?72d0:1552
createElementWithValidation @ react.development.js?72d0:1641
React$$1.createElement @ react-hot-loader.development.js?c2cb:975
renderChart @ SuperChart.jsx?6329:94
startTimer @ react-hot-loader.development.js?c2cb:580
render @ index.js?0a70:241
hotComponentRender @ react-hot-loader.development.js?c2cb:620
proxiedRender @ react-hot-loader.development.js?c2cb:635
finishClassComponent @ react-dom.development.js?61bb:13538
updateClassComponent @ react-dom.development.js?61bb:13501
beginWork @ react-dom.development.js?61bb:14090
performUnitOfWork @ react-dom.development.js?61bb:16416
workLoop @ react-dom.development.js?61bb:16454
renderRoot @ react-dom.development.js?61bb:16533
performWorkOnRoot @ react-dom.development.js?61bb:17387
performWork @ react-dom.development.js?61bb:17295
performSyncWork @ react-dom.development.js?61bb:17267
requestWork @ react-dom.development.js?61bb:17155
scheduleWork @ react-dom.development.js?61bb:16949
enqueueSetState @ react-dom.development.js?61bb:11623
Component.setState @ react.development.js?72d0:413
update @ index.js?0a70:205
(anonymous) @ index.js?0a70:215
Promise.then (async)
_loadModule @ index.js?0a70:214
startTimer @ react-hot-loader.development.js?c2cb:580
componentWillMount @ index.js?0a70:168
callComponentWillMount @ react-dom.development.js?61bb:11829
mountClassInstance @ react-dom.development.js?61bb:11917
updateClassComponent @ react-dom.development.js?61bb:13492
beginWork @ react-dom.development.js?61bb:14090
performUnitOfWork @ react-dom.development.js?61bb:16416
workLoop @ react-dom.development.js?61bb:16454
renderRoot @ react-dom.development.js?61bb:16533
performWorkOnRoot @ react-dom.development.js?61bb:17387
performWork @ react-dom.development.js?61bb:17295
performSyncWork @ react-dom.development.js?61bb:17267
requestWork @ react-dom.development.js?61bb:17155
scheduleWork @ react-dom.development.js?61bb:16949
enqueueSetState @ react-dom.development.js?61bb:11623
Component.setState @ react.development.js?72d0:413
onStateChange @ connectAdvanced.js?fe33:205
startTimer @ react-hot-loader.development.js?c2cb:580
dispatch @ createStore.js?61ed:173
(anonymous) @ index.js?b083:11
dispatch @ applyMiddleware.js?05f2:35
(anonymous) @ chartAction.js?2410:173
Promise.then (async)
(anonymous) @ chartAction.js?2410:155
(anonymous) @ index.js?b083:8
(anonymous) @ bindActionCreators.js?f901:3
componentDidMount @ Chart.jsx?70bb:63
componentDidMount @ react-hot-loader.development.js?c2cb:570
commitLifeCycles @ react-dom.development.js?61bb:14685
commitAllLifeCycles @ react-dom.development.js?61bb:15905
callCallback @ react-dom.development.js?61bb:145
invokeGuardedCallbackDev @ react-dom.development.js?61bb:195
invokeGuardedCallback @ react-dom.development.js?61bb:248
commitRoot @ react-dom.development.js?61bb:16075
completeRoot @ react-dom.development.js?61bb:17463
performWorkOnRoot @ react-dom.development.js?61bb:17391
performWork @ react-dom.development.js?61bb:17295
performSyncWork @ react-dom.development.js?61bb:17267
requestWork @ react-dom.development.js?61bb:17155
scheduleWork @ react-dom.development.js?61bb:16949
enqueueSetState @ react-dom.development.js?61bb:11623
Component.setState @ react.development.js?72d0:413
resize @ vx-responsive.es.js?d25d:653
startTimer @ react-hot-loader.development.js?c2cb:580
invokeFunc @ vx-responsive.es.js?d25d:415
trailingEdge @ vx-responsive.es.js?d25d:464
timerExpired @ vx-responsive.es.js?d25d:452
setTimeout (async)
leadingEdge @ vx-responsive.es.js?d25d:423
debounced @ vx-responsive.es.js?d25d:492
(anonymous) @ vx-responsive.es.js?d25d:603
requestAnimationFrame (async)
_loop @ vx-responsive.es.js?d25d:602
(anonymous) @ vx-responsive.es.js?d25d:620
checkPropTypes.js?a15c:19 Warning: Failed prop type: Invalid prop `showBrush` of value `yes` supplied to `NVD3`, expected one of [true,false,"auto"].
    in NVD3 (created by LoadableComponent)
    in LoadableComponent (created by SuperChart)
    in div (created by SuperChart)
    in SuperChart (created by Chart)
    in div (created by Chart)
    in ErrorBoundary (created by Chart)
    in Chart (created by Connect(Chart))
    in Connect(Chart) (created by ParentSize)
    in div (created by ParentSize)
    in ParentSize (created by ExploreChartPanel)
    in div (created by Panel)
    in div (created by Panel)
    in Panel (created by ExploreChartPanel)
    in div (created by ExploreChartPanel)
    in ExploreChartPanel (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in div (created by ExploreViewContainer)
    in ExploreViewContainer (created by Connect(ExploreViewContainer))
    in Connect(ExploreViewContainer) (created by App)
    in div (created by App)
    in Provider (created by App)
    in App (created by HotExportedApp)
    in AppContainer (created by HotExportedApp)
    in HotExportedApp

Codecov Report

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

@@           Coverage Diff           @@
##           master    #6457   +/-   ##
=======================================
  Coverage   73.31%   73.31%
=======================================
  Files          67       67
  Lines        9589     9589
=======================================
  Hits         7030     7030
  Misses       2559     2559

Continue to review full report at Codecov.

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


Add subtitle prop to DialogHeader

Closes #3800

Added an optional subtitle prop to DialogHeader, the subtitle renders directly below the header text.
Updated the dialog docs, storybook, and tests.

Thanks for the contribution @liamsms. We're still looking into the requirements for this feature, but we'll keep this PR open

Thanks for the contribution @liamsms. We're still looking into the requirements for this feature, but we'll keep this PR open.

Hi @liamsms, Since then, we've decided to build a new component to accommodate feedback and other design changes for Dialog and similar structured components. Therefore, we won't be adding subtitle to the DialogHeader component. Currently, the subtitle is technically possible with composition using DialogHeader.
Thank you for your work.


Sun set and Sun rise to be used directly in the time control

Is your feature request related to a problem? Please describe.
I would like to address sunset and sunrise directly in my programs, so that I can say e.g. 2.5h before sunrise and 1.15h after sunrise
Currently I can merely use astro-day and astro-night, which do not provide me the flexibility which I could find from aforementioned proposal
Describe the solution you'd like
As above
Describe alternatives you've considered
n.a.
Additional context
n.a.

Duplicate of #221


Removed the extra Kitware and OmicronLab folder, which already has been moved to the right location.

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

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


[Error: DEVELOPER_ERROR]    framesToPop: 1, code: '10',

How can i configure correctly the google signin with firebase. I get this error:
[Error: DEVELOPER_ERROR] framesToPop: 1 code: '10',

Hi there! Sorry you're having an issue. As the issue template explains, we require that you provide a runnable example (please try reproducing the bug with our example app) that reproduces the bug in a github repository. Please try to minimize the superfluous code and focus only on reproducing the bug.
You might wonder, why are we strict about this? The reason is that there are only a small number of maintainers on this project and we volunteer our free time to fix issues and add new features. If it takes us 20 mins to reproduce a bug, that means there is 20 minutes less time for us to make actual improvements to the library, without even beginning to investigate solution to the bug. Compare that to 20 minutes for each person who reports an issue.
please create a new issue with this and we'll be happy to review it!


Add ScopeSwitchTile

While working on adjusting the visibility of docs nav bar entries based
on scope (https://github.com/gravitational/teleport/issues/11383), I
realized that some nav bar sections are filled with irrelevant pages,
but a user might want to read the introduction of that section.
For example, the Enterprise section is irrelevant to OSS users, but
these users may still be interested in learning more about Teleport
Enterprise.
One possibility would be to leave these section as-is for readers with
an unintend scope. However, these readers would see edition warnings in
the pages within a section unless they changed the value of the scope
picker.
As an alternative, we can hide scope-irrelevant content from the nav
bar menu and section introduction pages, but include those pages, and
add a prominent link that enables the reader to change scope.
I've suggested the ScopeSwitchTile as a way of doing this. When a user
clicks the ScopeSwitchTile, the current scope changes to a caller-
configured value.
We would use a ScopedBlock to hide menu items in section introduction
pages from users with scopes that are not related to the section. We
would then use a ScopeSwitchTile to enable the user to switch scopes
and see the related content.

The related docs PR is here: https://github.com/gravitational/teleport/pull/11784

A more elegant approach might be to:

Leave links on section introduction pages fully visible for all scopes
When someone with the wrong scope clicks on a link and visits a page, they see an edition warning (we usually add these to the top of scope-irrelevant pages, e.g., a Notice that says a guide is not relevant for Cloud users)
Within the edition warning at the top of a page, we include some kind of inline link component that switches the scope (similar to the ScopeSwitchTile, but not as obtrusive). E.g., See this guide as a <ScopeLink scope="cloud">Teleport Cloud user.</ScopeLink>.

Demo video:
https://user-images.githubusercontent.com/25250668/162257809-1e75fb73-e8da-4476-aa73-69683079b6f8.mp4


Fix for --use-subdomain in azure storage extensions

There's a mistake in the 2018-07-01 arm schema, and there is a bug in the account.py overwriting the wrong parameter, the later is fixed in azure-cli.
This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

If this PR is for a new extension or change to an existing extension, use the following to try out the changes in this PR:
docker run -it microsoft/azure-cli:latest
export EXT=<NAME>
pip install --upgrade --target ~/.azure/cliextensions/$EXT "git+https://github.com/sjkp/azure-cli-extensions.git@master#subdirectory=src/$EXT&egg=$EXT"


will you maintain the previous open source pro ？

so you have join in Google kotlin team，but will you maintain the open source projects all the same？

Yes


Add support for PropertyValue

PropertyValues that are set on a BeanDefinition are not written back so they are not honored. This is a blocking problem for Spring Data as it sets a number of infrastructure beans this way.
Property values are processed after autowiring.

If the property values are written back in the bean definition, the context will use them and invoke the setter method. We need to track the method so that we can generate the proper reflection entries.

Closed by eff883503da0


⚠ HawkeUno has degraded performance

In e728cab, HawkeUno ($UNO) experienced degraded performance:

HTTP code: 403
Response time: 2276 ms

Resolved: HawkeUno performance has improved in 70d62fa after 12 minutes.


API: add v1

Add v1 API. The v1 API is v1alpha1 with the deprecated DisablePodsFingerprinting removed, and NodeGroupConfig cleaned up accordingly.
We add preparation for webhook, including conversion functions, but this PR does NOT wire them, intentionally.
Deploying conversion webhooks would require changes in the CSV, which would in turn break the upgrade flow (upgrades will still be possible, but they will require manual fixes), and would make the backport even harder.
The consequence of no conversion hooks is the conversion is unidirectional v1alpha1 -> v1.
The operator will accept both v1alpha1 and v1, but it will only serve v1. Deploying manifests won't be affected, but code interacting with the operator needs to be prepared to handle v1 objects as response.
This means we need to update all our testsuite, and that the serial suite is no longer backward compatible down to release-4.10 branch.
All the above is very very similar to what we did in https://github.com/openshift-kni/performance-addon-operators/pull/305
depends on #504

/retest

/cherry-pick release-4.12
not with high hopes, but still

/lgtm /approve
Thanks for addressing all the review comments!

thank you for the review!

/cherry-pick release-4.12


Use Path module

Type of change

[x] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library

Description
pathlib offers a high-level API for path manipulation, as compared to
the lower-level API offered by os. When possible, using Path object
methods such as Path.joinpath() or the / operator can improve
readability over the os module's counterparts (e.g., os.path.join()).
References

Python documentation: PurePath.joinpath
Python documentation: os.path.join
PEP 428
Correspondence between os and pathlib
Why you should be using pathlib
No really, pathlib is great

Related Tickets & Documents

Related Issue #OLS-83

Checklist before requesting a review

[x] I have performed a self-review of my code.
[x] PR has passed all pre-merge test jobs.
[ ] If it is a core feature, I have added thorough tests.

Testing

To be done on CI

/lgtm

/assign @bparees

/approve


Observed "Failed to close connection for host "errors when one of the server is down in a cluster

hi
I build dynomite cluster and if one of the node is get down  I observed below mentioned errors in my log file . please give solution
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:25:27 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:25:27 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_dist_jobs-dist_jobs_worker_0 12/Apr/2019 10:30:00 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_dist_jobs-dist_jobs_worker-23-thread-1 12/Apr/2019 10:30:00 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] Unexpected end of stream.
ERROR Consumer_dist_jobs-dist_jobs_worker_0 12/Apr/2019 10:30:00 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:30:28 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:30:28 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:35:29 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] Unexpected end of stream.
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:35:29 com.netflix.dyno.connectionpool.impl.HostConnectionPoolImpl - Failed to close connection for host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null] java.net.SocketException: Broken pipe (Write failed)
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:40:30 com.netflix.dyno.connectionpool.impl.health.ConnectionPoolHealthTracker - FAIL: Attempting to reconnect pool due to exceptions =>FatalConnectionException: [host=Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null], latency=0(0), attempts=1]redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
ERROR Consumer_metric_data-cassandra_metric_worker_0 12/Apr/2019 10:40:30 com.netflix.dyno.connectionpool.impl.health.ConnectionPoolHealthTracker - Enqueueing host cp for recycling due to too many errors: HostConnectionPool: [Host: Host [hostname=RedisMaster, ipAddress=<IP_ADDRESS>, port=8102, rack: dc1a, datacenter: dc1, status: Up, hashtag=null, password=null], Pool active: true]

More information in #166
To prevent things from blowing up (not sure if this is the best way), I added the allowFallback param to the retrypolicyfactory on my connectionpoolconfig. If there is another host/node in the pool, it will fallback to a different one as opposed to exploding.
        ConnectionPoolConfigurationImpl cp = new ConnectionPoolConfigurationImpl("bbs")                 .setFailOnStartupIfNoHosts(true)                 .setRetryPolicyFactory(new RetryNTimes.RetryFactory(2, true))                 .setLocalRack(localRack)                 .withTokenSupplier(tokenMapSupplier);

@chrisbendel  I also using same properties
new DynoJedisClient.Builder()
.withApplicationName(clientName)
.withDynomiteClusterName(clusterName)
.withCPConfig(new ConnectionPoolConfiguration(clientName)
.withTokenSupplier(TokenMapSupplierHelper.toTokenMapSupplier(nodes))
.setMaxConnsPerHost(maxConnections)
.setConnectTimeout(maxTimeOut)
.setRetryPolicyFactory(new    RetryNTimes.RetryFactory(retryCount,true))
.setMaxTimeoutWhenExhausted(maxTimeOutExhausted)
.setLocalRack(localRack)
.setLocalDataCenter(localDc)
.setMaxFailoverCount(maxFailOverCount)
)
.withHostSupplier(TokenMapSupplierHelper.toHostSupplier(nodes))
.build();

@chrisbendel  but I am getting issue. when one of the node in cluster is stopped

I observed a similar issue when setting the localDataCenter on the connection pool.
Can you please provide the code you have for your hostsupplier and tokenmapsupplier?
In the future, you can also use triple backticks around your code to format it properly.

@chrisbendel sorry for the late response
public static TokenMapSupplier toTokenMapSupplier(List nodes){
StringBuilder jsonSB = new StringBuilder("[");
int count = 0;
for(DynomiteNodeInfo node: nodes){
jsonSB.append(" {"token":""+ node.getTokens()
+ "","hostname":"" + node.getHostname()
+ "","ip":"" + node.getIpaddress()
+ "","zone":"" +  node.getRack()
+ "","rack":"" +  node.getRack()
+ "","dc":"" +  node.getDc()
+ ""} ");
count++;
if (count < nodes.size())
jsonSB.append(" , ");
}
jsonSB.append(" ]"");
   final String json = jsonSB.toString();
   TokenMapSupplier testTokenMapSupplier = new AbstractTokenMapSupplier(8102) {
		    @Override
		    public String getTopologyJsonPayload(String hostname) {
		        return json;
		    }
			@Override
			public String getTopologyJsonPayload(java.util.Set<Host> activeHosts) {
				return json;
			}
	};
	return testTokenMapSupplier;
}

public static HostSupplier toHostSupplier(List<DynomiteNodeInfo> nodes){
	final Collection<Host> hosts = new ArrayList<Host>();

	for(DynomiteNodeInfo node: nodes){
		hosts.add(buildHost(node));
	}

	final HostSupplier customHostSupplier = new HostSupplier() {
	 @Override
	   public List<Host> getHosts() {
		   return (List<Host>) hosts;
	   }
	};
	return customHostSupplier;
}


New CircleCI images.

Closing this until https://github.com/CircleCI-Public/cimg-python/issues/91 is resolved.


Right-Clicking multiple times on a marker creates duplicate menu entries

Minor UI glitch

This is fixed by upgrading to the latest version of Leaflet.contextmenu. Verified on my private instance. Preparing a PR here.
(What is a "good first issue" ?)

This is fixed by upgrading to the latest version of Leaflet.contextmenu. Verified on my private instance. Preparing a PR here.

Nice

(What is a "good first issue" ?)

Issues for potential newcomers, so that they see how they could get started easily. But expert contributors are of course also welcome :) !


Race condition between startup auto scroll and manual scroll

Describe the bug
Make sure you have enough tabs/windows open so that it requires scroll to see the focused/active tab.
Open the extension and try to scroll immediately, you will see the extension tries to scroll to active tab and your scroll will interrupt each other.

https://codepen.io/askd/pen/jZZEeG We can use the scrollIntoView to replace rebound implementation.

Fixed in #2300


demo Faber agent not issuing credentials

i'm trying to issue a credential in Faber agent demo, but it's not issuing even though i established a connection.

@AnasAlamin can you please provide more details?

i'm following the demo provided in the link below,
https://www.youtube.com/watch?v=AomoHvw4lgc
i was able to issue credentials and it was all working great, but for the latest version it stopped issuing credentials.
i tried different mediators, different test genesis files and even different RNMA versions but it's not working.

Are you testing with BiFold or a different mobile agent?
I haven't tried BiFold but the demo was working recently (last week) with other mobile apps (esatus and trinsic).

any news...?

Pretty sure the issue is on the Bifold side.  AFAIK, a change occurred there and recent releases (from late last week) were affected.

pretty sure something has changed from this side as well.
after your comment i got to make it work with the old version of BiFold, but now i can't even establish a connection neither from the old version of BiFold, nor the latest version

Hopefully things have evolved since then. Closing this...please reopen if appropriate.


Support Dynamic Margin Requirements [Oanda]

I'm having issues with free margin calls, this only happens if there are already open positions when the algo starts.. looks like a sync issue to me. Is this implemented ? I mean , the sync of already open positions in the account?. I'm using setHoldings function to open new tardes.
At the same time, each forex symbol in OANDA has it own margin requirements. I wonder if it would make sense to add this to symbol-properties-database.csv and use it to set the leverage instead of the default 50:1.
Thanks.

Hi
I'v made an  attempt to  implement the  minimum margin requirement  here . The initial value comes from  symbol-properties-database.csv and it can be overwritten using the SetLeverage() function.   I created a new  MarginModel to handle the change but I'm not sure if it's a better idea to just modify the  SecurityMarginModel class.  I also added a few test cases.. Please share your thoughts.

Thank you @benjaminthedonkey - its pretty good! I've given it a quick review and my only concern might be that the GetDefault currently defaults to 50x leverage. Anywhere we create securities this has to be carefully reviewed to make sure it won't impact statistics.
It also might make sense to put the MinimumMarginRequirement updates on the SecurityMarginModel rather than making another class which replicates lots of the previous code.
Long term we planned on making the margin loaded from a file/data-source - as for most providers the margin requirement changes over time based on environmental risk. Given this it would be worth thinking - how can we engineer this in a way where we could migrate this code in steps? Start with a fixed number like this and moving to a variable we set as it changes?
Given it needs to change; perhaps not putting it in the symbol properties database but re-using the SetLeverage method is the best call - so securities can be updated with meta-data as time passes.
I'm brain storming so welcome feedback from you & community. Where should we store margin requirements files, how should they be formatted, and how can we select the defaults (your work does the defaults nicely).

Happy to help @jaredbroad .  I agree on putting MinimumMarginRequirement  on the SecurityMarginModel and not creating a new class with lots of duplicate code.
Regarding GetDefault method, from what I saw it's only used when the symbol is missing from the database. I'd argue the necessity of such a mechanism, I personally would prefer to get an error than to assume potentiality incorrect values in that case.

This is a feature that could possibly be implemented in the future with Oanda/Forex historical margin data files.
We have something similar done for Futures in FutureMarginModel using CSV margin files:
https://github.com/QuantConnect/Lean/tree/master/Data/future/usa/margins

The margin requirements from oanda can be taken from their API when in live mode.
Check their documentation: http://developer.oanda.com/rest-live-v20/account-ep/
about their API: https://api-fxtrade.oanda.com/v3/accounts//instruments
Here is an example. You can take the margin from the marginRate field
{   "instruments": [     {       "displayName": "USD/THB",        "displayPrecision": 3,        "marginRate": "0.05",        "maximumOrderUnits": "100000000",        "maximumPositionSize": "0",        "maximumTrailingStopDistance": "100.000",        "minimumTradeSize": "1",        "minimumTrailingStopDistance": "0.050",        "name": "USD_THB",        "pipLocation": -2,        "tradeUnitsPrecision": 0,        "type": "CURRENCY"     },      {       "displayName": "GBP/CHF",        "displayPrecision": 5,        "marginRate": "0.05",        "maximumOrderUnits": "100000000",        "maximumPositionSize": "0",        "maximumTrailingStopDistance": "1.00000",        "minimumTradeSize": "1",        "minimumTrailingStopDistance": "0.00050",        "name": "GBP_CHF",        "pipLocation": -4,        "tradeUnitsPrecision": 0,        "type": "CURRENCY"     }, ...

Closing just because it impacts so few; and only when people are maxing out their total available leverage to the point of getting margin calls; and only on one brokerage.


Combination Puzzle Implementation

Due Date
February 5th, 2024
Priority
High
Description
Implement the combination puzzle
Associated Requirement*
P1-P7

Resolved with commit 17228c6447d096c5c9cd6ff3df8e417ac7b27a6c


Latest version get heavy tasks

*Detailed description of the issue:
When I use jobs, a task to "get the lore" of the item I'm using is heavy (I think it's related to 'boosters items')
Jobs version:
<IP_ADDRESS>
Server Type (Spigot/Paper/etc):
Airplane 1.16.5
Server Version (using /ver):
'Airplane-Purpur version git-Airplane-4 (MC 1.16.5)
Relevant plugins (Delete if this isn't needed):
Heavy Task :
https://cdn.discordapp.com/attachments/526402919826849804/865630848160890890/Screenshot_5099.png
Spark :
https://spark.lucko.me/sHSPqzLQ37

edit :
I know my server isn't "lagging", or plugin isn't taking 50% of server ticks, but with only 1 player, this tasks is quiet heavy, also I DON'T use "boosters items" and I don't have any boster items setup.

Edit :
I updated my paiement to 30s, so paiement are fine, but the interact event takes 80% of plugin's usage :/
https://prnt.sc/1g6o424
It's soo heavy, I don't use this event (I don't get custom items/boosters items), so I really want to disable thoses checks

Jobs get really a lot of performances issues :/
for example on this spark :
https://spark.lucko.me/h8or2uqOfD
1.17% for jobs, just when 1 single player was mining, 0.21% for the bossbar things, seems a lot high.
Questcreator is using the same bossbar system (and it was refreshing as often as jobs) but it's less than 0.1% for the whole plugin on this spark.
and onLimitedItemInteract is still 0.56% :/

Sorry for long delay. Made few changes relating to handling of limited items which was made made in efficient way, new way should introduce up to 100x better performance
c18916bd567b162d290cf2b3922871492ef41b6f


Bacterial Genera

Does the current version work to detect bacterial recipients?

In principle yes, there is nothing in the algorithms that prevents it from working. However, this line of code does:
https://github.com/Arcadia-Science/prehgt/blob/main/Snakefile#L56
ncbi-genome-download vertebrate_mammalian,vertebrate_other,invertebrate,plant,fungi,protozoa --output-folder {params.outdir} --flat-output --genera {wildcards.genus} -F gff,cds-fasta -s $section --retries 3

You can see the sets that ncbi-genome-download downloads from does NOT include bacteria at the moment. I was concerned about collisions in genus names that would lead to bacteria + e.g. fungi being downloaded and leading to very weird results.
if you want to run it on bacteria, I can provide instructions for what to change from your own fork if you let me know if you're running the snakemake or nextflow pipeline.

Thanks for the quick response. I am running the nextflow pipeline.

Hi Taylor,
Thought of writing a detailed explanation of our current requirement.
That makes sense - re: potential conflict in genus names. Yes, I’d like to run the pipeline on bacteria (I have already tried it out with yeast and we are interested in testing on a couple specific genera of bacteria as well that are relevant).
I have been using the Nextflow pipeline, and am happy to fork the repo and modify code if you are willing to provide instructions - however I’m a little unfamiliar with Nextflow and wondering how I would then point to my forked repo to run correct version? (It makes more sense to me in the context of snakemake where github repo is directly specified).
One other idea (that may be to much work on your end - so if that is the case I understand!) - would be if you are able to add a flag (-domain or similar… )  that allows user to specific target as euks or bacteria? Thinking this might be useful to others who are interested in running it across both.
Thanks again for your help!
Nimshika

Hi @Nimshika, sorry for the delay.

One other idea (that may be to much work on your end - so if that is the case I understand!) - would be if you are able to add a flag (-domain or similar… ) that allows user to specific target as euks or bacteria? Thinking this might be useful to others who are interested in running it across both.

This is a great idea of the long run. When I revisit prehgt development, I'll add this in!
in the mean time, the only thing you need to change is line 48 and line 56 of the snakefile:
https://github.com/Arcadia-Science/prehgt/blob/main/Snakefile#L48
https://github.com/Arcadia-Science/prehgt/blob/main/Snakefile#L56
You need to replace vertebrate_mammalian,vertebrate_other,invertebrate,plant,fungi,protozoa with bacteria
For example, line 56 currently reads:
ncbi-genome-download vertebrate_mammalian,vertebrate_other,invertebrate,plant,fungi,protozoa --output-folder {params.outdir} --flat-output --genera {wildcards.genus} -F gff,cds-fasta -s $section --retries 3

and should instead read:
ncbi-genome-download bacteria --output-folder {params.outdir} --flat-output --genera {wildcards.genus} -F gff,cds-fasta -s $section --retries 3

Similarly, if you were to change to the nextflow workflow, you could change line 36 and line 44 of the modules/download_reference_genomes.nf file:
https://github.com/Arcadia-Science/prehgt/blob/main/modules/download_reference_genomes.nf#L36
https://github.com/Arcadia-Science/prehgt/blob/main/modules/download_reference_genomes.nf#L44
in both places, the string vertebrate_mammalian,vertebrate_other,invertebrate,plant,fungi,protozoa needs to be replaced with bacteria.
To run the nextflow pipeline, you can clone your fork locally, cd into the directory, and use nextflow run . with all of the other pipeline parameters you would usually use and it should work.

Hey Tailor,
Thanks for your reply and helpful information on the edits.


Generic modals and manage with query params instead of state

there is a lot of edit\delete\add modals that are the same.
1 - change all of them to use the new generic modal.
2 - make the modals work using query params instead of state for better navigation

@IdoPeled8 Can I work on this?

hey @IdoPeled8
No one got back to me about getting the project running

Hey
@IdoPeled8 I have a question?
Do I just create the modal with placeholder data that shows it works or do I need to go further and add one of the available features as an example

Hi,
We have a GenericEditingModal component that currently only the workspaces are using.
You need to make all the other places use this component instead of creating a new modal for each component that needs it. This is particularly for simple modals like edit, add, delete with only one input.
For a start, add it in one place where it's needed and create a pull request so the maintainers can review it. Once confirmed, we can proceed to implement it everywhere.
I have added a photo of the generic component and a photo of the component that is currently using the modal.
Thanks,

To clarify, I don't need to create another modal from scratch right(which I did initially before asking). I just need to implement this for other usecases?

To clarify, I don't need to create another modal from scratch right(which I did initially before asking). I just need to implement this for other usecases?

Yes use the existing one,
But if you think you made a better modal than the existing one you can use him

I'll be using the existing one, the modal is created is quite similar and the existing one is a touch more better. I


Add authentication to DIG and SUGAR

Authenticate DIG and SUGAR with the SessionWebAgent.
In DIG and SUGAR add a PrintWriter to the context if not provided.
In SessionWebAgent add the HttpParameters to the Session context passed to delegate WebAgents.  The HttpParameters is executed by the servlet before SessionWebAgent, but SessionWebAgent builds its own context to pass to the delegates, but the delegates WebAgents are expecting a HttpParameters in the context.

LGTM


Eureka peer to peer server not replicating applications registered

I have peer1 and peer 2 configuration. Both Eureka instances starts and have not able to replicate applications registered. I am not sure why client applications can not be replicated. Both eureka instances are configured to run on same server and the client is located on another server. I see the following message on the Eureka (8761) instance and as you see the the last line indicates replication=false. I an not sure why replication set to false and also notice in the screen shots the registered replicas information displayed. Also at the same time it says it is unavailable as shown in screenshot. How do I enable replication?
I have seen many threads and reviewed documents, other shared knowledge and could not get them working.
Has anyone come across this issue and how did you trouble shoot.
2016-02-19 09:56:56.362 WARN 2548 --- [nio-8761-exec-9] c.n.e.registry.Abstract
InstanceRegistry : DS: Registry: lease doesn't exist, registering resource: EMP
LOYEETO-SERVICE - <IP_ADDRESS>:ca8070c6e0344822b0eec204d67799d2
2016-02-19 09:56:56.362 WARN 2548 --- [nio-8761-exec-9] c.n.eureka.resources.In
stanceResource : Not Found (Renew): EMPLOYEETO-SERVICE - <IP_ADDRESS>:ca8070c6
e0344822b0eec204d67799d2
2016-02-19 09:56:56.378 INFO 2548 --- [nio-8761-exec-5] c.n.e.registry.Abstract
InstanceRegistry : Registered instance EMPLOYEETO-SERVICE/<IP_ADDRESS> with stat
us UP (replication=false)

Thank you

Can you link to a sample project that reproduces the issue please?

Please see the following configurations.
The following are peer1 and peer2 confogurations
server:
port: 8761
spring:
profile: peer1
eureka:
instance:
hostname: peer1
metadataMap:
instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
registryFetchIntervalSeconds: 30
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 5
client:
registerWithEureka: true
fetchRegistry: true
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://elm.VERIZON.COM:8762/eureka/
server:
renewalPercentThreshold: 0.0
enableSelfPreservation: false
waitTimeInMsWhenSyncEmpty: 0

server:
port: 8761
spring:
profile: peer1
eureka:
instance:
hostname: peer1
metadataMap:
instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
registryFetchIntervalSeconds: 30
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 5
client:
registerWithEureka: true
fetchRegistry: true
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://elm.VERIZON.COM:8762/eureka/
server:
renewalPercentThreshold: 0.0
enableSelfPreservation: false
waitTimeInMsWhenSyncEmpty: 0
server:
port: 8762
spring:
profile: peer2
eureka:
instance:
hostname: peer2
metadataMap:
instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
registryFetchIntervalSeconds: 30
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 5
client:
registerWithEureka: true
fetchRegistry: true
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://elm.VERIZON.COM:8761/eureka/
server:
renewalPercentThreshold: 0.0
enableSelfPreservation: false
waitTimeInMsWhenSyncEmpty: 0

The following is the application configuration
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://<IP_ADDRESS>:8761/eureka/,http://<IP_ADDRESS>:8762/eureka/
producer:
ribbon:
ServerListRefreshInterval: 5000
ribbon:
IsSecure: false

HI Dave,
Also I downloaded eureka-master project and changed application.yml file. I have already posted peer1, peer2 and application configuration. Thanks

Thanks. I edited your configs to add markdown formatting (please check that I didn't change anything). Please use markdown to format code snippets and logs.

serviceUrl:
      defaultZone: http://elm.VERIZON.COM:8762/eureka/

As far as I remember the port is not enough. You need different hostnames for 2 eureka instances running on the same machine on different ports.
My Windows workaround was to add two hostnames in the hosts file that point to localhost. Then you use these virtual hosts to in Eureka cluster setup.
Same here:
defaultZone: http://<IP_ADDRESS>:8761/eureka/,http://<IP_ADDRESS>:8762/eureka/

Thank you for taking time to look into the issue.
I have following entries in the hosts file located at c:\windows\system32\drivers\etc. Also in the eureka cluster configuration I am using  elm.VERIZON.COM as part of defaultZone. Please advise me if I misunderstood your comments.
<IP_ADDRESS>	peer1
<IP_ADDRESS>	peer2
localhost	peer1
localhost	peer2
localhost	elm.VERIZON.COM

@aivans I don't think that's relevant if you have a unique eureka.instance.metadataMap.instanceId (and anyway the hostnames are different).
@ubalaji I think you need spring.profiles (with an "s") otherwise those apps are not going to be running as you expect. Plus I have found that I need a non-zero value for eureka.server.registry-sync-retries (the default is 0, which I think is a regression from Angel, so I might fix that here).

@dsyer When I initially evaluated Eureka for our case, I tried to run a bunch of services and a cluster of 2 Eureka servers on my laptop.
The Eureka Servers did not behave properly until I gave them different hostnames via hosts file.
Now if @ubalaji has a different usa case here, my findings do not apply.

Thanks Dave, I am going to update yml file with profiles and also add registry-sync-retries: 3 and give a try.

@ubalaji
This is my config when I tested months ago:
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/

---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/

This is what you configure for the services also:
http://peer1:8761/eureka/,http://peer2:8762/eureka/

Hope it helps, I spent a couple of days on it back than.

@aivans I think that will work, but I don't think you need a distinct hostname now (ad long as the instanceId is provided).

Ok, that would be even better

Thanks Adrian for sharing configuration.
Dave, I tried with Profiles and registry-sync-retries: 3 and still can't see services under registered services in peer2. Howeer, peer1 shows the services under the registered services. I have attached both screen shots.
peer1 screenshot:

Peer2 screenshot

Thank you

Also I see following in the peer1 log.As you see the last line has replication=false. I am wondering if this is indicating anything and curious to know why is it false?
2016-02-22 10:13:07.688  WARN 5896 --- [nio-8761-exec-1] c.n.e.registry.Abstract
InstanceRegistry  : DS: Registry: lease doesn't exist, registering resource: EMP
LOYEETO-SERVICE - <IP_ADDRESS>:318bef9fc65e45cc949fb55599901d0a
2016-02-22 10:13:07.688  WARN 5896 --- [nio-8761-exec-1] c.n.eureka.resources.In
stanceResource    : Not Found (Renew): EMPLOYEETO-SERVICE - <IP_ADDRESS>:318bef9f
c65e45cc949fb55599901d0a
2016-02-22 10:13:07.704  INFO 5896 --- [nio-8761-exec-2] c.n.e.registry.Abstract
InstanceRegistry  : Registered instance EMPLOYEETO-SERVICE/<IP_ADDRESS> with stat
us UP (replication=false)

Also I noticed the following behavior.
First I started peer1 and everything looks good and then started peer2. After peer 2 is up I see services replicating and after some time services are deleted from peer2. Please see the following log. Something causing to cancel instance and setting replication to false.
2016-02-22 10:52:47.183  WARN 5992 --- [tbeatExecutor-0] c.n.d.s.t.d.RetryableEu
rekaHttpClient    : Request execution failure
2016-02-22 10:52:47.198  INFO 5992 --- [tbeatExecutor-0] c.n.d.s.t.d.RetryableEu
rekaHttpClient    : Request execution succeeded on retry #1
2016-02-22 10:52:47.198  INFO 5992 --- [tbeatExecutor-0] com.netflix.discovery.D
iscoveryClient    : DiscoveryClient_PEER2/scsbwin-293416.ITTPA.EBIZ.VERIZON.COM:
peer2:8762 - Re-registering apps/PEER2
2016-02-22 10:52:47.198  INFO 5992 --- [tbeatExecutor-0] com.netflix.discovery.D
iscoveryClient    : DiscoveryClient_PEER2/scsbwin-293416.ITTPA.EBIZ.VERIZON.COM:
peer2:8762: registering service...
2016-02-22 10:52:47.261  INFO 5992 --- [tbeatExecutor-0] com.netflix.discovery.D
iscoveryClient    : DiscoveryClient_PEER2/scsbwin-293416.ITTPA.EBIZ.VERIZON.COM:
peer2:8762 - registration status: 204
2016-02-22 10:52:47.261  INFO 5992 --- [           main] s.b.c.e.t.TomcatEmbedde
dServletContainer : Tomcat started on port(s): 8762 (http)
2016-02-22 10:52:47.261  INFO 5992 --- [           main] c.n.e.EurekaDiscoveryCl
ientConfiguration : Updating port to 8762
2016-02-22 10:52:47.261  INFO 5992 --- [           main] eurekademo.EurekaApplic
ation             : Started EurekaApplication in 21.441 seconds (JVM running for
29.528)
2016-02-22 10:52:47.667  INFO 5992 --- [nio-8762-exec-1] o.a.c.c.C.[Tomcat].[loc
alhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2016-02-22 10:52:47.667  INFO 5992 --- [nio-8762-exec-1] o.s.web.servlet.Dispatc
herServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2016-02-22 10:52:47.683  INFO 5992 --- [nio-8762-exec-1] o.s.web.servlet.Dispatc
herServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms
2016-02-22 10:52:47.745  INFO 5992 --- [nio-8762-exec-1] c.n.e.registry.Abstract
InstanceRegistry  : Registered instance PEER2/scsbwin-293416.ITTPA.EBIZ.VERIZON.
COM:peer2:8762 with status UP (replication=false)
2016-02-22 10:52:47.761  INFO 5992 --- [nfoReplicator-0] com.netflix.discovery.D
iscoveryClient    : DiscoveryClient_PEER2/scsbwin-293416.ITTPA.EBIZ.VERIZON.COM:
peer2:8762 - registration status: 204
2016-02-22 10:54:47.148  INFO 5992 --- [a-EvictionTimer] c.n.e.registry.Abstract
InstanceRegistry  : Evicting 1 items (expired=1, evictionLimit=3)
2016-02-22 10:54:47.148  WARN 5992 --- [a-EvictionTimer] c.n.e.registry.Abstract
InstanceRegistry  : DS: Registry: expired lease for EMPLOYEETO-SERVICE/<IP_ADDRESS>
42
2016-02-22 10:54:47.195  INFO 5992 --- [a-EvictionTimer] c.n.e.registry.Abstract
InstanceRegistry  : Cancelled instance EMPLOYEETO-SERVICE/<IP_ADDRESS> (replicati
on=false)

I looked at "last 1000 canceled leases" and "last 1000 newly registered leases" via web UI. It seems like for some reason peer1 canceling lease for the service and it got propagated to peer2. While doing so both peer1 and peer2 replication set to false.
Later Peer1 newly registered same service and did not propagated to peer2.
The behavior is interesting and I am puzzled.
Thank you

I think I tracked the missing registration down to a method that we override unnecessarily in Spring Cloud (https://github.com/spring-cloud/spring-cloud-netflix/blob/8957a40/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java#L79). Since we override this method the super isn't called and it is in that superclass method that the peer registration of non-eureka nodes occurs. It happens on a heartbeat, so everything is probably fine if we just do not override that method. Probably this is a change from 1.0.x (different Eureka dependency).
Bouncing registrations on startup is a separate issue (not sure if that's a problem or not really, but we do that in case the configuration changes the ports and paths).

Thanks Dave, I will give a try.

I have tested and see both peers are communicating and updating. However I noticed interesting behavior. I have client with two instances running. I see client trying to send both instances hearbeat. However I see Eureka server showing only one instance registered and showing. I have attached both client log and also screen shots of Eureka Server.
Mon Feb 29 2016 08:29:16 GMT-0800 (Pacific Standard Time) [App/0] OUT 2016-02-29 16:29:16.585 INFO 33 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:43b5f6bc05874e11b3c91344e6fc5b90 - Re-registering apps/EMPLOYEETO-SERVICE
Mon Feb 29 2016 08:29:16 GMT-0800 (Pacific Standard Time) [App/0] OUT 2016-02-29 16:29:16.586 INFO 33 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:43b5f6bc05874e11b3c91344e6fc5b90: registering service...
Mon Feb 29 2016 08:29:16 GMT-0800 (Pacific Standard Time) [App/0] OUT 2016-02-29 16:29:16.602 INFO 33 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:43b5f6bc05874e11b3c91344e6fc5b90 - registration status: 204
Mon Feb 29 2016 08:29:25 GMT-0800 (Pacific Standard Time) [App/1] OUT 2016-02-29 16:29:25.714 INFO 34 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:1895f037363c47cdabe53ea98b4b95fc - Re-registering apps/EMPLOYEETO-SERVICE
Mon Feb 29 2016 08:29:25 GMT-0800 (Pacific Standard Time) [App/1] OUT 2016-02-29 16:29:25.715 INFO 34 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:1895f037363c47cdabe53ea98b4b95fc: registering service...
Mon Feb 29 2016 08:29:25 GMT-0800 (Pacific Standard Time) [App/1] OUT 2016-02-29 16:29:25.729 INFO 34 --- [pool-2-thread-1] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EMPLOYEETO-SERVICE/employeeto-service.cfsandbox.verizon.com:1895f037363c47cdabe53ea98b4b95fc - registration status: 204

I'm not sure what that's supposed to show. Why is it interesting? Is it related to this issue (which is closed)?

He opened #862.

@dsyer @aivans I'm trying to understand the relationship among the following, and how these affect Eureka clustering and failover. Is this documented someplace or should I open a ticket for this question?
eureka.instance.metadataMap.instanceId
eureka.instance.hostname
spring.application.name

@asarkar please open a new issue

@ryanjbaxter Done 1627

My finding is that, with these properties set up, peers can see each other as available-replicas:

spring.profiles
eureka.instance.hostname
eureka.client.register-with-eureka=true
eureka.client.serviceUrl.defaultZone

leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 5
Set too small？？


:test_tube: Test: Add wagmi test

Description
Concise description of proposed changes
Testing
Explain the quality checks that have been done on the code changes
Additional Information

[ ] I read the contributing docs (if this is your first contribution)

Your ENS/address:

#1166  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @roninjin10 and the rest of your teammates on  Graphite


INC-1009 Remove all references in Prison API to Prisoners Incentives (except V1 apis)

LGTM, but how can you know nobody is using this data?

@andymarke the only endpoint where the data is still surfaced is in the /offenders/{noms} endpoint.  It would mean that systems would be reading the IEP from Prison API still - looking at github there are some mappings in other projects so I'll hold off on this.  I might actually be they are not actually using the field.  See https://github.com/search?p=4&q=org%3Aministryofjustice+privilegeSummary&type=Code


Write out to S3 on a thread

Since we don't need to use the response from S3 during the POST to /api/contents, the write to S3 doesn't need to block the tornado server.

Done in #20


GenericProvider does nothing with "verify = false" option.

Hi everyone.
With my code, as in your exemple.
The fact to use "verify" => false doesn't work
I've got an error
cURL error 60: Peer's certificate has an invalid signature
Your example shows verify = false. but no way. It doesn't care. It's like verify = true.
$provider = new \League\OAuth2\Client\Provider\GenericProvider([     'clientId'                => 'XXXXXX',    // The client ID assigned to you by the provider     'clientSecret'            => 'XXXXXX',    // The client password assigned to you by the provider     'redirectUri'             => 'https://my.example.com/your-redirect-url/',     'urlAuthorize'            => 'https://service.example.com/authorize',     'urlAccessToken'          => 'https://service.example.com/token',     'urlResourceOwnerDetails' => 'https://service.example.com/resource',     'proxy'                   => '<IP_ADDRESS>:8888',     'verify'                  => false ]);
Any idea?
Franck

Hmmm I think I found where the issue comes from.
Need to use a proxy.
Without proxy, that means verify is not set.
That will be interesting to set this option without proxy.
For any reason, we could use it without proxy.


ui-calendar ~0.9.0 does not handle recerrent events.

Dear team!
I have used 3 different angular-ui-calendar versions:

0.8.1 (current bower version)
0.9.0-beta.1 (latest bower version)
source from this repository

Version 0.8.1 does not handle language. In demo example if I change to Hungarian, calendar disappears and I need to refresh the page. If I change date for recurrent event, it works well.
Versions 0.9.0-beta.1 and src/calendar.js both work with language, but if I change first recurrent event, secound is not changed. So, it is bossible to change recrrent events independently.
In both cases I have used demo example from this repository.
Could you fix recurrent events processing, please.

this PR needs to be fixed up some, but it should fix this issue https://github.com/angular-ui/ui-calendar/pull/171


Graph "Training/Test" flag & global_flags

I am not sure if this has been proposed yet, but I would like the ability in the .RUN() op to flag "test" rather than "train".  The motivation is around "Dropout".  When I am training a batch I would like the dropout in my graph, but when I am running a "test" I would like the Dropout to simply pass the tensor (0% dropout if you will).  I am sure I can pass the "dropout" as a param through the feeder but they need to be set and reset each time and could get cumbersome for larger and complex graphs.  It would be nice to have an internal feature in "Dropout" and other Training specific features such that they will adjust their behavior if "Not-Training".
Right now I have a graph that has 2 paths, one for training with the Dropouts Ops in-line and one that does note and I call the proper 'Output' based upon my Test/Training desire.  This complicated the graph.
Maybe this function can be extended to pass "Flags" into the graph so other features can be added that are based upon run-time demand.  This "flag_dict" could be global to the entire graph so Ops' could check their status upon a run.
sess.run([cost,optimizer,merged],                                                                   feed_dict={X: Xbatch,                                                                  Y: YDesired}, flag_dict={Training: True})
I can think of another request where this would be useful.  As I search solution space, I would like to setup a Genetic Algorithm to assist.  One of the things I would like to change in each graph iteration might be the "activation", "Cost" and/or "optimizer" functions.  So a generic Activation Op or Optimizer op could be written (are maybe a simple "Case" Op based upon the flag)?
eg. flag_dict={Training: True, Activation: Relu, Optimizer: AdagradOptimizer}
Not sure how to deal with the parameters if they differ from Op to Op.  But maybe "custom global flags" could be passed as well.
eg.  layer2out    = tf.nn.genericActivation(layer1out,ActivationFlag=Activation)   #Activation=Relu from above
Just a thought to help explore during training/testing.

@Mazecreator: The way to express this in TensorFlow is to make two different pieces of graph that share variables (either explicitly or using variable scopes).  You then run one part of the graph for training and one part for testing.


Imports and resources should live in different namespaces

There are some ambiguity issues if they don't live in the same namespace


The fishing line is not on the fishing bar when moving from left to right

It's not working properly, when the bar moves from left to right it stays just outside the yellow bar, but when it moves from right to left it works perfectly. Any ideia why this is happening?

Record a video showing both the game and the tool while fishing

Idk why but it's not even workin rn, I'm trying to use on my smaller monitor 1366x768. When I use on my monitor 1920x1080 it works just fine.
Video: https://youtu.be/GTsnkHV3vcc

It is definitely the resolution. The more pixels that tool can see, the better.
Glad you found a solution.
Closing as solved


More fixes about running tests on JDK11

Motivation
When you are running tests on JDK11 you encounter a lot of issues.
This patch includes a list of minor fixes that can be grouped.
Master issue #9578
Modifications

Upgrade Mockito to latest version
Add  "--add-opens java.base/jdk.internal.loader=ALL-UNNAMED" in order to allow PowerMock to work
add JAXB into jcloud provider (we already have it on the classpath in production, it is only in order to let tests run)
Upgrade HDFS minicluster to 3.3.0
Pin netty-codec-http dependency to the same version of netty (inherited from HDFS client)
Use the same version of Jetty for hdfs-offload (old version does not work with JDK11)

Verifying this change
Tests must still run successfully on JDK8.
Once all tests are known to run on JDK11 we will switch CI tests runner to JDK11, this cannot be done in this PR.

/pulsarbot run-failure-checks

@merlimat I have addressed your comments PTAL
thanks for your quick review

Hi, I just pull the latest master and when I ran a test with Intellij Idea, it failed to start with following error message
Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

I think it may be caused by this PR.
    <profile>
      <id>jdk11-tests</id>
      <activation>
        <jdk>[11,)</jdk>
      </activation>
      <properties>
        <test.additional.args> --add-opens java.base/jdk.internal.loader=ALL-UNNAMED </test.additional.args>
      </properties>
    </profile>

But even after I removed these lines from pom.xml, it still failed. Could you give some advice for JDK8 environment?

In IntelliJ check if it automatically enabled this profile. If so then simply unselect it.
That was my case

Thanks for you advice. I found the real cause just now, which is not related to this profile. The error may be caused by some Maven plugins, see https://youtrack.jetbrains.com/issue/IDEA-258574
I just fixed it by disabling the argLine option.


Bump hail

Update hail to the latest version.
@vivbak @jmarshall  did I do this right?

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

Project coverage is 26.43%. Comparing base (e3be5d4) to head (49dcbaa).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #968   +/-   ##
=======================================
  Coverage   26.43%   26.43%
=======================================
  Files           9        9
  Lines        1687     1687
=======================================
  Hits          446      446
  Misses       1241     1241

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Yes, this looks fine — thanks. Usually we make this a patch-level bump rather than minor, as there are no actual prod-pipes changes. However this does affect compatibility with other packages, so there's an argument that minor-level as you have done is a better choice.
Usually we do the bump2version as an afterthought as the last commit, not the first one. So when you squash-merge this, please be sure to edit the commit message so “Update pinning to Hail 0.2.133” (with the number rather than “latest”) is the subject line and the bump2version message is the second paragraph.
Last time (PR #820) we needed to hack some of the other requirements too, but the tests succeeded on this PR so that should be unnecessary. I think it may be instructive to merge this now and then see if not regenerating the analysis runner driver image from 132 to 133 causes any trouble. If it does, we can regenerate that image pronto.


fix null pointer when effectiveTimeFrame is not available.

When we don't have any records from source-statistics-monitor for a source , the effectiveTimeFrame is null and the status is UNKNOWN. If the effectiveTimeFrame is not found return null as the value  of LastSeen of a subject.
Fixes #97

Good point. I think we already considered that the effectiveTimeFrame can be null but missed it in this calculation. However, it is assumed that if effectiveTime is available then the start and end timeStamps are available, otherwise they are null ( e.g. in the aforementioned implementation of calculating lastSeen). I think this assumption is safe since, the source-statistics-monitor always inserts both start and end time for every record.


TetstcontainerConfiguration has inconsistent properties resolving solutions

Hello!
I put a testcontainers.properties in the classpath, e.g. src/test/resources/testcontainers.properties
checks.disable=true
However, I found it didn't work. While putting the same value in ~/.testcontainers.properties gets things done.
After checking the source code, I found two get property methods:

getEnvVarOrUserProperty => getConfigurable(propertyName, defaultValue, userProperties);
getEnvVarOrProperty => getConfigurable(propertyName, defaultValue, userProperties, classpathProperties);

However
    public boolean isDisableChecks() {
        return Boolean.parseBoolean(getEnvVarOrUserProperty("checks.disable", "false"));
    }

This means, it won't reads the classpathProperties.
Could I ask why some properties could be configured in classpathproperties, but not others? If so, could we have a clear explanation in the documentation? I was thinking all properties will be read and will be merged finally. But apparently no....
Thanks a lot,
Yingkun

This is intentional.
Some properties are "per project", while other are "per environment". Setting checks.disable in src/test/resources/testcontainers.properties would disable them for every user of your project, even those who haven't tried to run it yet and may have issues with their setup that would be highlighted by the checks.
Same applies to the reuse mode and a few others.

Thanks a lot for the info. Still, I hope we could have it explained here: https://www.testcontainers.org/features/configuration/
to let people know what should be set where....


add animation to the text

Description

update p tag in html
added fade in effect in text
added webkit for other browser

Add GIF/ScreenShot

Create a GIF of your Working Project and Add it for a quick PR review.

Task Checklist
Put x in between the square brackets without any spaces to tick your Task.

[ ] You have created a new branch for contribution.
[ ] Added README.md for your project in a specified folder.
[ ] Add Demo in GIF or Screenshot form.
[ ] You are Registered Officially for HacktoberFest 2021 as Partcipant.
[ ] Followed Contribution Guidelines.

Issue
Mention your issue no.

This PR cannot be merged in due terms of Hacktoberfest.


Updated NAR hash

Genuinely don't get what they could possibly be updating

I can only assume it is related to their latest OS upgrades. Thanks for the pull!


Remove fps limiting on smart watch

Hey. I would like to offer a function for settings - the ability to remove frame limiting.
I dare to assume that this is a limitation on the part of the software and it was created to increase autonomy.
I think it is necessary to add the ability to turn off this limit, since there are people who have no problems with charging the smart watch every day and they want the interface to work smoothly. Smart watches are also an element of the image.
Most likely this is a specific frame limit (for example, 30 fps) specified in some settings file. I suggest creating a checkbox in the watch autonomy settings so that you can change this limit from 30 fps when the checkbox is on and 60 fps when the checkbox is off. Option text would be "Remove fps limit"
If the developer appreciates this idea positively, as a developer I can try to implement this functionality myself.

@Crossmax14
Have you test this functionality  in LiteOS?

@Crossmax14
Have you test this functionality  in LiteOS?

@bingbingyouni No


preliminary lbrycrdd container

The initial container for lbrycrdd should have the ability to launch, run, not get in the way, and be portable.
My initial release will be simple and on Ubuntu 18.04 and require as few dependencies as possible.
The main process should run in a non-root user state.
This container will run the latest binary release by default and eventually will be the template for tagged releases in the future.

Baseline lbrycrd container has been created.

baseline container created, this should allow someone to sync the blockchain as is.  However, it's far from release ready.


can you change the favicon

im wondering if i can change the favicon

Possibly, but that's not something that I'd care to work on adding in as part of this project; you'd have to look into it upstream in the Pi-hole project or Grafana (depending on what favicon you want to change).


Add Tenant Aware Job

Makes dealing with tenant scoped models in a queue simple

This was inspired by https://github.com/aventure-cloud/laravel-tenancy/blob/8546d3a3f73ce6a2aaf742a7424f5902e272e410/src/Queue/TenantAwareJob.php

Just realised this assumes the tenant column. I've never used the Landlord package with multiple Tenants but guess that would need supported so will close for now.