operator [CI] codeflare-operator (0.0.3)

Thanks for submitting your Operator. Please check the below list before you create your Pull Request.
New Submissions

[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Have you considered whether you want to use semantic versioning order?
[ ] Is your submission signed?
[ ] Is operator icon set?

Updates to existing Operators

[x] Did you create a ci.yaml file according to the update instructions?
[x] Is your new CSV pointing to the previous version with the replaces property if you chose replaces-mode via the updateGraph property in ci.yaml?
[x] Is your new CSV referenced in the appropriate channel defined in the package.yaml or annotations.yaml ?
[x] Have you tested an update to your Operator when deployed via OLM?
[x] Is your submission signed?

Your submission should not

[x] Modify more than one operator
[x] Modify an Operator you don't own
[x] Rename an operator - please remove and add with a different name instead
[x] Modify any files outside the above mentioned folders
[ ] Contain more than one commit. Please squash your commits.

/merge possible

/approve
/lgtm

/retest-required

/merge possible

/merge-status

/retest

/merge

/merge possible

/merge possible

/merge possible

/merge possible

/merge possible


az fzf is not a command

[Enter feedback here]
az fzf is documented but does not actually exist in the az cli. As suggested  by docs:
docker run -it -v ${HOME}/.ssh:/root/.ssh mcr.microsoft.com/azure-cli
az fzf install

bash-5.0# az fzf
'fzf' is misspelled or not recognized by the system.
TRY THIS:
https://aka.ms/cli_ref
Read more about the command in reference docs
bash-5.0#

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

ID: 320a9fcc-4475-8ed4-7404-a09d81bf6ce1
Version Independent ID: f3385cf5-48d3-3ca2-d5d0-c3ea7000bca7
Content: az fzf
Content Source: latest/docs-ref-autogen/fzf.yml
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

hi @phealy could you look at this? thanks

The azure storage account I had hosting the extension is in a subscription that accidentally got disabled. I've submitted a PR to merge the code (as last published) into this repo for future hosting, so once that's approved the index should be updated via the automatic process.


Cognito--access denied on non-local site?

Deploy runs perfectly, and so does Amplify build.  Visiting website, both "signup" and "login" give Access denied error.  Grubbing around Cognito doesn't surface any settings I can change, registered a user manually but stuck.  Welcome any tips, tricks.

probably this bit: https://github.com/johnsmclay/amazon-api-gateway-url-shortener/tree/master/client#1-update-the-environment-variables-in-the-env-file


Use *ngIf or filter for list item

There is no way to hide or filter virtual scroll list item based on flag. ViewPortItems are not skipping items that satisfy *ngIf condition

@amitwagh17 You could try to filter the items before displaying:
this.items = (items || []).filter(item => item.flag !== someFlag);

lucasbasquerotto is correct. You have to filter the items array before you pass it to virtual-scroll.


Does not work Resize if there is a question mark?

Timber is used in Gantry 5 and I can't do the following: In developer mode, do images have code after the sign ? and such images are not changed through resize
{{ 'http://site.com/wp-content/themes/g5_hydrogen/images/img/img.jpg?19485'|resize(300,150) }}

Shouldn't it be Image(URL)|resize  ?

Nope not working for me also!
If images have Asset Timestamps on it like this:
'http://site.com/wp-content/uploads/2019/05/GoldenGateBridge.jpg?5ccc9a0c'|resize(480)
This works!
'http://site.com/wp-content/uploads/2019/05/GoldenGateBridge.jpg'|resize(480)

I have a small clue - in short the ? is not a problem if we are using external images - the problem only exists with local images.

Closing this as a stale issue. Please let us know if you still run into this issue by opening a new ticket.


Fix aws-sigv4 canonical request formatting fallibility

The aws-sigv4 crate currently implements the Display trait for formatting the canonical request, and since it's using ToString to do the actual formatting, it will panic if there's any error during that formatting.
In #710, we fixed a bug where header values that contained non-ASCII characters would cause a panic, but the problem was just punted a little bit since now it can panic if there's invalid UTF-8 in the header value.
Options we should evaluate and choose from:

Refactor CanonicalRequest to have a fallible format function instead of implementing Display, and bubble the error up.
Refactor CanonicalRequest to have an infallible format function, but produce bytes instead of a string, and put the header value's bytes directly into the formatted canonical request.

Russell wrote a (currently failing) test case for this issue:
#[test]
    fn test_signing_utf8_headers() {
        let req = http::Request::builder()
            .uri("https://foo.com/")
            .header("x-sign-me", HeaderValue::from_bytes(&[0xC0, 0xC1]).unwrap())
            .body(&[])
            .unwrap();
        let creq = crate::http_request::sign(
            SignableRequest::from(&req),
            &SigningParams::builder()
                .region("us-east-1")
                .access_key("123")
                .service_name("foo")
                .secret_key("asdf")
                .time(SystemTime::now())
                .settings(SigningSettings::default())
                .build()
                .unwrap(),
        );
    }


Bluetooth: GATT: Discover attribute doc update

When doing a GATT discovery procedure with BT_GATT_DISCOVER_ATTRIBUTE it was not documented how to handle the user_data in the callback.
Unfortunately the user_data cannot be anything but NULL since the ATT request response does not contain enough information to generate anything meaningful. So the solution for this is unfortunately that the documentation has just been updated to be more specific.
This PR also improves the user_data generation slightly by adding a new macro.
closes https://github.com/zephyrproject-rtos/zephyr/issues/45172

I noticed the documentation for was missing. I wrote up an alternative doc fix in PR https://github.com/zephyrproject-rtos/zephyr/pull/45792. If you think it's good, should we pull it into this PR? (It does not have the new macro you propose here.)

I noticed the documentation for BT_GATT_DISCOVER_STD_CHAR_DESC was missing as well on the same callback. I wrote up an alternative doc fix in PR #45792. If you think it's good, should we pull it into this PR? (It does not have the new macro you propose here.)

I think your solution is more well done that mine, and would prefer that :)

Consider inlining the macro BT_GATT_DISC_ATTRIBUTE. I believe it may be easier to read the code without the macro. You mas dismiss this review if you disagree however.

Can you elaborate on what you mean by this? You'd just do
	attr = (struct bt_gatt_attr) {
			.uuid = _uuid,
			.read = NULL,
			.write = NULL,
			.user_data = _user_data,
			.handle = _handle,
			.perm = 0,
		})

instead of
	attr = BT_GATT_DISC_ATTRIBUTE(&uuid_svc.uuid, start_handle, &value);

?

Consider inlining the macro BT_GATT_DISC_ATTRIBUTE. I believe it may be easier to read the code without the macro. You mas dismiss this review if you disagree however.

Can you elaborate on what you mean by this? You'd just do
	attr = (struct bt_gatt_attr) {
			.uuid = &uuid_svc.uuid,
			.read = NULL,
			.write = NULL,
			.user_data = &value,
			.handle = start_handle,
			.perm = 0,
		})

instead of
	attr = BT_GATT_DISC_ATTRIBUTE(&uuid_svc.uuid, start_handle, &value);

?

Yes, but I would leave out the members that are zero. Like the following:
	attr = (struct bt_gatt_attr) {
			.uuid = &uuid_svc.uuid,
			.user_data = &value,
			.handle = start_handle,
		});

Omitted members of a compound literal are zero-initialized.

Consider inlining the macro BT_GATT_DISC_ATTRIBUTE. I believe it may be easier to read the code without the macro. You mas dismiss this review if you disagree however.

Can you elaborate on what you mean by this? You'd just do
	attr = (struct bt_gatt_attr) {
			.uuid = &uuid_svc.uuid,
			.read = NULL,
			.write = NULL,
			.user_data = &value,
			.handle = start_handle,
			.perm = 0,
		})

instead of
	attr = BT_GATT_DISC_ATTRIBUTE(&uuid_svc.uuid, start_handle, &value);

?

Yes, but I would leave out the members that are zero. Like the following:
	attr = (struct bt_gatt_attr) {
			.uuid = &uuid_svc.uuid,
			.user_data = &value,
			.handle = start_handle,
		});

Omitted members of a compound literal are zero-initialized.

Got ya. No strong opinions, and if you prefer the non-macro solution let's just go with that.


Fix | media-overseerr, media-wizarr, tools-pyload, tools-runwhen-local, recyclarr

Wizarr requires root privileges, dropped the image for now.
Overseerr needed a proper mounts added to .statefulset.volumeClaimTemplates
changed all mounting options according to bjw docs
pyload is still having permission issues

Pyload is requiring root permissions

Dropped pyload. Switching to ytdl-material

deployed youtubedl-material


Mark Nordtronic Box Dimmer 2.0 compatible with deCONZ

Had a chance to try this out a few minutes ago.

thanks


M-of-N-like sporks

See issue https://github.com/dashpay/dash/issues/2221

allow multiple hardcoded spork addresses (N) to be specified in chainparams/cmd-line/config (same signers for all sporks);

allow multiple messages with the same id/value signed by different spork addresses;

(de)activate any spork only when at least M similar message with the same id/value signed by different signers were received (the same M for all sporks);
"M-of-N" spork implementation requires spork signers consensus achieved with some external communication and doesn't offer any facilities for such consensus achievement. If this consensus is not achived, the spork is treated as it has default value. For example, if sporks are configured as "at least 2 signers of 5 possible" and some spork has default value 0, and 2 signers broadcast this spork value 1, while 2 other signers broadcast value 2 (and nTimeSigned field has the same value, see details later), this spork is treated as it has value 0.
Also, several possible signers require new logic for nTimeSigned field processing. In old implementation this field is used to separate old non-actual spork messages from the new spork messages (spork message with bigger nTimeSigned overwrites message with smaller one). We need similar logic in new implementation. For example, we have the same configuration like in previous example, 2-of-5-signers. At moment t1 signers 1, 2, 3 broadcast spork with value 1 and spork switches to this value. After that at moment t2 signers 4 and 5 tries to switch this spork to value 2, and fail to do this, because votes of first 3 signers don't allow any node to calculate current spork value, and spork goes to default value. We can't also simply overwrite all "old" spork messages of other signers because of the fact that in this case just one signer can "rallback" several other signer's messages.
To resolve this issue we can require all signers to use the same value of the nTimeSigned field to treat their messages as a part of the same "spork broadcast" and allow such signer's groups to overwrite messages of other signer's groups with less nTimeSigned field value if this group size is bigger or equal to the minimum configured value (M in M-of-N). It is difficult to use current time for this goal as it was before, because signer's clocks are not synchronized and signers can broadcast their messages at slightly different moments of time. I think it is better to use increasing counter instead and allow signers to set its value directly. Also it is better to allow spork signers to use some default way to calculate this counter value for their convenience and I have added such calculation, but this calculation is not a facility for achieving of signers consensus, so it doesn't resolve all possible situations and sometimes signers should set counter value explicitly. Also,  I've renamed nTimeSigned field to nBroadcastID to reflect its new meaning.

I don't think it makes sense to try and coordinate on nTimeSigned or rename to use a broadcast field -- or rather, I think that adds extra, un-needed complexity. The nTimeSigned should be when the signer signed the spork, and we track spork ID/Values per-spork-signer instead. The latest nTimeSigned value over-writes the value for that spork ID for that given signer only.

At moment t1 signers 1, 2, 3 broadcast spork with value 1 and spork switches to this value. After that at moment t2 signers 4 and 5 tries to switch this spork to value 2, and fail to do this, because votes of first 3 signers don't allow any node to calculate current spork value, and spork goes to default value.

I'm not sure I understand this. What do you mean by "because votes of first 3 signers don't allow any node to calculate current spork value" ? Can you explain this in another way? I don't think the intention is to require signing and broadcasting at a specific time or timestamp, but rather, sporks are updated per-signer and when the threshold number is reached where ID / Value match, then the active spork switches to that value.

I think I see what's going on here with switching from time to sequence id - it's basically an attempt to make sure everyone is signing the same message I guess. But I don't see why it would matter if signatures are not combined (in a crypto way like e.g. in BLS). To distinguish messages signed by different spork key holders I'd rather switch from strSporkAddress to mapSporkAddresses <int, string> e.g. [(0, "Xsomeaddr1"), (1, "Xsomeaddr2), ..]. You could then make -sporkaddr accept format like signerid:signeraddr e.g. 0:Xsomeaddr1 and instead of encoding every addr in one string in cmd line you could submit multiple -sporkaddr just like we do for -connect or -addnode. This would also require extending spork message with smth like nSignierID  though but I think it should be feasible to implement upgrade logic here.

How could this node understand that current spork value is 2, not 1? The only way is to compare nTimeSigned field of all this messages.

nTimeSigned should be different for all signers. The node uses the spork with the same ID / value for the threshold signers. If the threshold is below majority (e.g. 2 of 5), then it should honor majority signers, e.g. if 2 spork signers send 10004 / 1000, then the other 3 send 10004 / 3000, then the majority signed value should take the "active" slot.

This would also require extending spork message with smth like nSignierID though but I think it should be feasible to implement upgrade logic here.

I initially was trying to do something like this, but I don't think it's necessary (is an arbitrary unique ID field that doesn't have to be honored by all nodes and is superfluous). We can just use the sporkAddr as the unique ID instead. The spork signer is identified by reading the signature and recovering the pubkey / hash160, something like:
https://github.com/nmarley/dash/blob/a5b2df7a86da7c7a789b607be5a194ec9ae4abb2/src/spork.cpp#L431

Looks like I can't explain it clearly.) This 3 signers and other 2 signers participate in different votings really, for example first 3 signers vote in 2017 year and last 2 signers vote in 2018. And spork should be 1000 in 2017 and should become 3000 in 2018. But usual node in 2018 has 5 messages in its memory: 3 messages from 2017 and 2 from 2018, that's why switching to 3000 in 2018 fails.

Ah, ok, thanks for the explanation. I think I understand now. In this case, just make the threshold value require a majority, e.g. if 5 total spork keys exist, require at least 3 of them. That should solve the problem, right?

@nmarley , right, it solves the problem,  but I've thought that 1-of-N (or 2-of-N at least) case is important for this functionality (we can have emergency need to switch some spork value, so any additional communications among signers can be too slow). Am I wrong? What is the most possible configuration for many signers we plan to use?

I'd say let's start with implementing the simplest/smallest possible one aka 2of3 first see how it goes.

So,  to make it clear,  what should be changed:

Remove processing of small Ms, M always is greater than N/2.
Remove new processing of the nTimeSigned field, calc current spork value with majority of signers.
Get KeyID from message signature like in @nmarley implementation, not by comparing signature with all signer addresses like in current implementation (I'm using address as signer unique id already, only calculation of the KeyID is different).
Change -setsporkaddress syntax to don't set all addresses in one string.

Have I missed something?

@gladcow sounds good (assuming (4) means ", support providing multiple -sporkaddrs instead")

Rebased and fixed, re-review,  please.

Rebased and fixed,  re-review,  please

Contains changes from https://github.com/dashpay/dash/pull/2313 (I missed them),  but also stops to serialize pubkey ids, pubkeys should be hardcoded or read from options,  not from spork cache ( = from previous dashd run)

I initially was trying to do something like this, but I don't think it's necessary (is an arbitrary unique ID field that doesn't have to be honored by all nodes and is superfluous). We can just use the sporkAddr as the unique ID instead. The spork signer is identified by reading the signature and recovering the pubkey / hash160, something like:
https://github.com/nmarley/dash/blob/a5b2df7a86da7c7a789b607be5a194ec9ae4abb2/src/spork.cpp#L431

A little late and probably not relevant at this point in time, but my understanding is that this type of pubkey recovery cannot be done with BLS. Perhaps something to think about in the future.

Pls rebase again and bump CSporkManager::SERIALIZATION_VERSION_STRING

Rebased, serialization version is bumped.

Fixed the issues

Not sure I understand it right @nmarley. I was thinking of using another spork to activate new keys smth like
// add new keys to chainparams, bump min required
if (IsSporkActive(SPORK_X_MULTIKEYSPORK) {
    // use chainparams
} else {
    // ignore chainparams, use the first (i.e. legacy) key only and minkey == 1
}

So first activate SPORK_X_MULTIKEYSPORK with the legacy key and then re-sign needed sporks with multiple keys.

Wouldn't that be more complicated? Seems to me like the method I outlined would be easier, and it doesn't require another spork (which would only be used for this purpose). Are there any downsides to that method?

@nmarley I don't think the logic for spork activation here is compatible with multiple keys + 1-of-1 case. But we could probably "downgrade" the activation code with some hardcoded 1-of-1 backwards compatible logic and a legacy spork address i.e. smth like "if signed by the legacy spork address, assume that's the right value and ignore everything else for now". Is that what you are proposing?

@UdjinM6 Yes. The more I think of it, the more I don't like trying to shoehorn the legacy spork key into the multiple spork signers logic. But I was thinking something like you suggested, namely:

Look at multi signers logic first. Otherwise:
If legacy spork signed it, then consider it valid.

Something like: https://github.com/nmarley/dash/compare/pr2288-rebased...spork-legacy-logic
Should be separate PR if we go that route. I think this particular PR should be good though as-is, since it introduces the main multi signers logic and there could be alternative ways to activate, as we've discussed a couple already.

edit: Actually, not exactly this:

if signed by the legacy spork address, assume that's the right value and ignore everything else for now

More like, prefer multi signer logic first, and then fall back to legacy spork key.

Need to think more about it but I agree that new keys and migration logic is smth for another PR. Let's merge this as is first :)


Accept terminal file argument

@tbrooke: This enables file arguments for input, rather than piping standard input.
For example:
commonform render --format docx some-contract.cform

File arguments should also work for other subcommands, too:
commonform lint some-contract.cform

You can see the change in usage, too:
$ ./bin/commonform --usage
Compose, verify, and share form contracts

Usage:
  commonform [--usage]
  commonform critique [FILE]
  commonform definitions [FILE]
  commonform directions [FILE]
  commonform hash [FILE]
  commonform headings [FILE]
  commonform lint [FILE]
  commonform references [FILE]
  commonform render [options] [FILE]
  commonform share [FILE]
  commonform uses [FILE]
  commonform --help | -h
  commonform --version | -v

Options:
  --color                       Colorize output
  -t TITLE, --title TITLE       Form title to be rendered
  -b BLANKS, --blanks BLANKS    File containing fill-in-the-blank values
  -f FORMAT, --format FORMAT    Output format [default: terminal]
  -n STYLE, --number STYLE      Numbering style [default: decimal]
  -s PAGES, --signatures PAGES  Signature page data

@tbrooke, is this what you had in mind?

I think this is a good idea for usability purposes. We don't need to be teaching people about piping.

Good Job - It will be much easier to get started now
On Mon, Jan 25, 2016 at 1:43 AM, Kyle Mitchell<EMAIL_ADDRESS>wrote:

@tbrooke https://github.com/tbrooke: This enables file arguments for
input, rather than piping standard input.
For example:
commonform render --format docx some-contract.cform
File arguments should also work for other subcommands, too:
commonform lint some-contract.cform

You can view, comment on, or merge this pull request online at:
https://github.com/commonform/commonform-cli/pull/23
Commit Summary

Accept terminal file argument (close #21)

File Changes

M source/read-input.js
https://github.com/commonform/commonform-cli/pull/23/files#diff-0
(6)
M source/usage.txt
https://github.com/commonform/commonform-cli/pull/23/files#diff-1
(20)
M test/uses.test.js
https://github.com/commonform/commonform-cli/pull/23/files#diff-2
(13)

Patch Links:

https://github.com/commonform/commonform-cli/pull/23.patch
https://github.com/commonform/commonform-cli/pull/23.diff

—
Reply to this email directly or view it on GitHub
https://github.com/commonform/commonform-cli/pull/23.


Add stage folder

what

Add stage folder e.g. folder:stage/qa, folder:stage/dev

why

Stage specific directories in spacelift so it's easier to find all components by account

references

Closes https://github.com/cloudposse/atmos/issues/124

This can be easily handled just by passing custom labels, so we'll close this for now.

It's difficult to add this label across specific stages because of the spacelift labels list interface which has issues with deep merging. That's why i was trying to tackle it here.
If we were to use a map interface, somehow, for spacelift labels, like we do with tags, then we wouldn't need a pr like this. However this would simplify a lot if we could label spacelift stacks with all of their context.tf metadata.
The goal of this pr was to have a better folder structure in spacelift but spacelift nerfed their folder view in their UI leaving this change futile. :(


Autotune Conv2d

Feature description
This is a more specific feature related to Issue #617. After playing around a bit with the shader for conv2d, I think it might be worth reworking the kernel to allow for autotuning to adjust the workgroup size and allow for loop unrolling of the innermost loop. More details below, but I think we can achieve greater utilization and saturation of host GPU's with some relatively straightforward adjustments.

Feature motivation
This can help with speeding up models and more efficient resource utilization. As you can see with some rudimentary testing below, autotuning can usually find a (barely) faster pipeline*. What I'd like to draw attention to though is the variance. Autotuning seems able to identify much more consistent compute pipelines. This can allow for better predictability and stable resource allocation.
* The computer I did this on is a bit of a potato right now. I'd be curious to see if someone can see similar trends with larger batch sizes, higher resolution images, and/or more channels in the input tensor. Also using a graphics API besides Vulkan.
Notes on the data

The only GPU I had readily available lying around is an old Nvidia GT 1030. All results below were run using Vulkan, the Dx12 drivers have some weird invocation limit that I'm having trouble getting around.
This data is very much cherry-picked. There were some runs where the variance of autotuning was higher/min time of the benchmark run was higher. But the overall trend aligns with what's shown below.
All benchmarks were run with no bias tensor and ConvOptions {stride: [1,1], padding: [1,1], dilation: [1,1], groups: 1 };. The bulk of this data is centered on input tensors of shape [32, 3, 224, 224], which should be a fairly reasonable input to something like ImageNet, VGG, ResNet-50.

Input Tensor Shape
Type + Bench Run
Samples
Mean
Variance
Median
Min
Max

[8, 3, 224, 224]
Autotune 1
5
489.791ms
80.587µs
492.758ms
478.120ms
501.855ms

[8, 3, 224, 224]
Default  1
5
504.855ms
281.282µs
511.095ms
481.818ms
522.776ms

[10, 3, 224, 224]
Autotune 2
5
619.695ms
192.013µs
623.878ms
593.247ms
633.878ms

[10, 3, 224, 224]
Default 2
5
614.064ms
215.598µs
618.749ms
594.727ms
630.743ms

[12, 3, 224, 224]
Autotune 3
5
730.587ms
215.773µs
736.289ms
711.603ms
748.222ms

[12, 3, 224, 224]
Default  3
5
768.905ms
6.479ms
728.904ms
718.285ms
929.267ms

[32, 3, 224, 224]
Autotune 4
5
2.082s
166.660µs
2.084s
2.066s
2.102s

[32, 3, 224, 224]
Default 4
5
2.122s
671.122µs
2.129s
2.090s
2.161s

[32, 3, 224, 224]
Autotune 5
5
2.083s
41.796µs
2.086s
2.075s
2.092s

[32, 3, 224, 224]
Default 5
5
2.100s
173.529µs
2.102s
2.076s
2.115s

[32, 3, 224, 224]
Autotune 6
5
2.112s
282.122µs
2.118s
2.083s
2.128s

[32, 3, 224, 224]
Default 6
5
2.110s
785.019µs
2.096s
2.083s
2.147s

[32, 3, 224, 224]
Autotune 7
5
2.120s
131.166µs
2.118s
2.102s
2.135s

[32, 3, 224, 224]
Default 7
5
2.141s
737.797µs
2.127s
2.115s
2.189s

Implementation
I'll link a PR that's a major WIP and brute forces the ability to autotune kernel::conv::conv2d. I think we'll need to sneak in a thin abstraction layer between module_ops::conv2d and kernel::conv::conv2d.

Thanks @agelas for this exploration! We are currently refactoring the wgpu backend to reduce allocations, this will probably help a lot with reducing the variance. We are thinking to add an abstraction over autotuning as well, it isn't very convenient for now to autotune new operations :/

Is it resolved?


[Feat] Implementation of Specialist Directory

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
The Specialist Directory feature will provide a comprehensive list of medical specialists . This directory will include details such as:

Specialist names
Qualifications and credentials
Areas of expertise
Years of experience
Patient reviews and ratings
Real-time availability for appointments

Patients will be able to filter specialists based on various criteria (e.g., specialty, location) and book appointments directly from their profiles.
Use Case
This feature would significantly enhance the user experience by allowing patients to:

Make informed decisions when selecting a specialist based on qualifications and patient feedback.
Quickly find available specialists, reducing wait times and frustration in scheduling appointments.
Access a centralized location for all specialist information, which is particularly helpful for new patients unfamiliar with the facility.

Specific Scenario
For example, a patient experiencing symptoms of a condition can browse the directory, read reviews from other patients, view qualifications, and schedule an appointment with a suitable specialist all in one place, thus streamlining the process.
Benefits

Increased Transparency: Providing patient reviews and specialist qualifications fosters trust within the community.
Improved User Experience: A user-friendly directory simplifies the search and booking process, enhancing overall satisfaction.
Enhanced Patient Engagement: Engaging patients through feedback and detailed profiles encourages them to take a more active role in their healthcare.
Operational Efficiency: By enabling online bookings directly from the directory, it reduces administrative workload and potential booking errors.

Priority
High
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

okay, also add a filter to search according to various fields

@Luson045 okay i will make sure to add thta feature

please assign me the task as for gssoc24 extd


Updating folder structure

Adding userActions.js for all user action.
Adding userReducers for all user reducers.
Moved pages to containers folder.

TODO: -

Move async requests from components to actions so can be reused by other components

Is it a standard React folder structure? I think it make more sense to group by features.

Actions/ - Redux folder structure.
Reducers/ - Redux folder structure.
Containers/ - stateful components
Components/ - stateless components (Can be reused in containers)

@tananaev Any thoughts on PR

I have already added my thoughts. Waiting for your reply.

Yes it is standard folder structure recommended by react redux.
Here is example from redux example project.
https://github.com/reduxjs/redux/tree/master/examples/real-world/src

It doesn't seem to be scalable. How do you handle a big app with multiple features and screens? Also, can you please point to the documentation where they say it's recommended.

Containers are screens in which multiple components(features) can be included.
Here is example from official redux git repo https://github.com/reduxjs/redux/tree/master/examples/real-world/src

You keep referring to the same sample. Is there any documentation about it?


Fixed potential issue with wrong result type set on pin/unpin methods of PFObject.

Due to the fact that some of these methods might return earlier - there could be nil result set on pin/unpin result tasks. This fixes the issue by enforcing generic types across both PFPinningObjectStore and PFObject implementation.
Contributes to #604, #563

I can't wait till we can have a compiler warning for a lack of generic type, personally.

Yeah, that would be extremely helpful.


lndclient: add SubscribeInvoices

As I mentioned in #24 SubscribeInvoices was missing from LightningClient.
I tried my best to match the existing base code.
Let me know how I can improve this.

I've fixed the last nit and squashed the commits 👍

I would like to know what do you think about deferring the close of the invoiceUpdates & streamErr channels in the anonymous function. Something like this:
	invoiceUpdates := make(chan *lnrpc.Invoice)
	streamErr := make(chan error, 1)

	// New invoices updates goroutine.
	s.wg.Add(1)
	go func() {
		defer s.wg.Done()
		defer close(streamErr)
		defer close(invoiceUpdates)

		for {

I would like to know what do you think about deferring the close of the invoiceUpdates & streamErr channels in the anonymous function

This is a great idea, provides consuming clients with a signal that we're done sending updates. We do a similar thing in other streaming rpcs.

I've added the closure of the channels, let me know if there is something to fix, If not I will squash the commits for a clean merge.

Everything is squashed, let me know if there is something left to fix.


Table functionality is not working in Quill editor

Hi @jhchen,
Greetings!
I am currently using Quill version 2.0.2 in my Angular application and encountering some challenges with table functionality:
I am successfully able to copy an Excel table and paste it into the Quill editor using the quill-better-table module.
However, the colors from the Excel table do not appear after pasting it into the Quill editor.
Additionally, other templates are distorting when I use the following code:
this.quillEditor.setContents(this.quillEditor?.clipboard?.convertHTML(this.data?.selectedMail?.bodyHTML))
Could you please provide guidance on how to achieve a more seamless integration?
Thank you.

Quill and Tables are a long story...

https://github.com/slab/quill/issues/117

and many others if you search "table" related issues.
Today I also had issues with tables and Quill, rowspan and colspan are not preserved when you copy and paste into quill. And again quill-better-table sounds like the solution.


filter-branch is broken in 1.0.19072

> git filter-branch --subdirectory-filter <directory> -- --all
Rewrite <commit_id> (1/525) (0 seconds passed, remaining 0 predicted)    C:/Program Files/Git/mingw64/libexec/git-core\git-filter-branch: line 463: ../map/<commit_id>: No such file or directory

Looked into this one and it is a shell script and is using a bunch of plumbing commands like checkout-index, update-index, write-tree etc.  I added the command to the ShouldLock method returning false and it made it past the initial part of the code but failed to rename the index because it no longer was holding the lock.  So this may have to do with creating placeholders?
This command will create a .git-rewrite directory that it does a bunch of working in and the ../map/ directory should be in that created directory.


GalleryViewer Adjustments

Summary

Use native video player in favor of custom player
Only pan in directions where there is another file (avoids confusion)
Make footer a header, so player controls are not overlayed
Make header fade and not move

Ticket Link
Checklist

[ ] Added or updated unit tests (required for all new features)
[x] Has UI changes
[x] Includes text changes and localization file updates (footer became header in localization files, no actual text changes)
[x] Have tested against the 5 core themes to ensure consistency between them.

Device Information
This PR was tested on:
Xiaomi Redmi 9, Android 10
IOS 13 Emulator
Screenshots

Release Note
Replaced video-player with a native one

Improved image view panning.

Hello @chebureki,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.

Hi @chebureki thanks for this improvements, I'll try and take a look before the EOY, but super quick, can you please revert the changes to the localization files other than english? That is cause of the translation flow, we only modify english in the PR's and the rest is done through the translation server.
Thanks

@matthewbirtch from the UI/UX point of view, do we want to move the footer to the top of the screen as in this PR? Should we look for a different alternative?

@enahum from UI/UX point of view, It's too cluttered to have those elements all stacked at the top. It also moves those controls to a harder to reach location. Is there another solution here? I think maybe we need to create a design ticket for this specific issue so we can look at it more closely.

@matthewbirtch can you or @Rina-dsg  work with @chebureki to find a good solution for this?

@matthewbirtch can you or @Rina-dsg work with @chebureki to find a good solution for this?

You can reach me via
email<EMAIL_ADDRESS>mattermost-dev: @kirill-sokol

@chebureki I'll reach out to you next week to polish the solution.

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!
/cc @aspleenic

Hi @Rina-dsg were you able to look at a polished solution for this ?

@enahum yeah, I checked. The bar with an avatar and a share btn should be under the media preview. I messaged all my notes @chebureki directly on MM. Not sure if he updated the pr after.

Sorry, have been busy with holidays and other stuff. I will try to get into it tomorrow :)
Feeling a bit weak after my booster-shot today

bump

Building app in separate branch.

/update-branch

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/20944
https://circleci.com/gh/mattermost/mattermost-mobile/20943

Artifact links:
https://20944-70265724-gh.circle-artifacts.com/0/tmp/artifacts/Mattermost_Beta.ipa
https://20943-70265724-gh.circle-artifacts.com/0/tmp/artifacts/Mattermost_Beta.apk

This is great @chebureki. However, the link and share buttons in the footer don't seem to work unless I tap the very top of them (tested on iOS). I think these buttons might be interfering with the safe area at the bottom and may need to bump up to avoid that interference.

could you by any chance provide a screenshot or recording :). Sorry, I just don't have access to a apple device as of now

could you by any chance provide a screenshot or recording :). Sorry, I just don't have access to a apple device as of now

Yep, sorry I should have provided that. Here's a screenshot. The red rectangle represents the safe area and as you can see, some of the UI is overlapping in to this area.

@chebureki thank you very much for your contribution, but we are closing this in favor of the V2 app.


DDP training on TPU is not working

Bug description
PyTorch-Lightning DDP training on TPU might be broken for “automatic_optimization” mode.
“automatic_optimization” mode is the default mode for a LightningModule to be trained by the Trainer. Users only need to define the training forward pass in the module and the Trainer would automatically do the backward pass and optimization step correctly.
On TPU (PT/XLA), DDP is usually achieved by calling xm.optimizer_step() for optimization step, which would add a gradient all_reduce op before calling optimizer.step(). In PyTorch-Lightning, it is done in TPUPrecisionPlugin class as:
closure_result = xm.optimizer_step(optimizer, optimizer_args={"closure": closure, **kwargs})

However, in “automatic_optimization” mode, PyTorch-Lightning actually puts the forward pass and backward pass into the closure callable given to the optimizer.step(), so forward and backward happen within optimizer.step(). What ended up happening is, in an iteration of a batch:

All_reduce gradients
Forward pass
Zero gradients
Backward pass
Optimizer step

The all_reduce would be a no_op, and the gradients are not being synchronized between DDP processes before being applied to the models. What should happen instead is:

Forward pass
Zero gradients
Backward pass
All_reduce gradients
Optimizer step

The gradient all_reduce op needs to be inserted into the closure. A possible fix could be:
diff --git a/src/pytorch_lightning/plugins/precision/tpu.py b/src/pytorch_lightning/plugins/precision/tpu.py
index efa61dd8f..2dda36d3f 100644
--- a/src/pytorch_lightning/plugins/precision/tpu.py
+++ b/src/pytorch_lightning/plugins/precision/tpu.py
@@ -29,6 +29,13 @@ class TPUPrecisionPlugin(PrecisionPlugin):
            raise ModuleNotFoundError(str(_XLA_AVAILABLE))
        super().__init__(*args, **kwargs)
+    def _tpu_wrap_closure(self, optimizer, closure: Callable[[], Any]) -> Any:
+        import torch_xla.core.xla_model as xm
+
+        closure_result = closure()
+        xm.reduce_gradients(optimizer)
+        return closure_result
+
    def optimizer_step(  # type: ignore[override]
        self,
        optimizer: Optimizable,
@@ -39,8 +46,9 @@ class TPUPrecisionPlugin(PrecisionPlugin):
    ) -> Any:
        import torch_xla.core.xla_model as xm
+        closure = partial(self._tpu_wrap_closure, optimizer, closure)
        closure = partial(self._wrap_closure, model, optimizer, optimizer_idx, closure)
-        closure_result = xm.optimizer_step(optimizer, optimizer_args={"closure": closure, **kwargs})
+        closure_result = optimizer.step(closure=closure, **kwargs)
        skipped_backward = closure_result is None
        # in manual optimization, the closure does not return a value
        if model.automatic_optimization and skipped_backward:

A comparison between with and without the patch is done on the modified MNIST TPU tutorial, with BATCH_SIZE = 128: Tensorboard log. From the training loss curve in it, the model converges faster with the fixed codes, as the gradients are correctly reduced and models are synced across processes.
IR graphs can also be dumped before and after the fix. Before the fix, a xla::cross_replica_sum() op cannot be found in an iteration, while after the fix, it correctly appears after the backward ops.
How to reproduce the bug
MNIST TPU tutorial
Error messages and logs

# Error messages and logs here please

Environment

#- Lightning Component (e.g. Trainer, LightningModule, LightningApp, LightningWork, LightningFlow): PyTorch-Lightning
#- PyTorch Lightning Version (e.g., 1.5.0): master
#- Lightning App Version (e.g., 0.5.2):
#- PyTorch Version (e.g., 1.10): 1.14
#- Python version (e.g., 3.9):
#- OS (e.g., Linux): Linux
#- CUDA/cuDNN version: None
#- TPU models and configuration: Google Cloud TPU V3-8
#- How you installed Lightning(`conda`, `pip`, source): source
#- Running environment of LightningApp (e.g. local, cloud): cloud

More info
No response

Thank you so much! Do you want to open a PR implementing your solution?

Looking at the source code (https://github.com/pytorch/xla/blob/6e6bb07e696c51a555a7d33433508ba236703a35/torch_xla/core/xla_model.py#L1027-L1032). It'd be better to avoid the duplicated reduction by not using xm.optimizer_step at all, and instead calling it's internal calls in our desired order
diff --git a/src/pytorch_lightning/plugins/precision/tpu.py b/src/pytorch_lightning/plugins/precision/tpu.py
index efa61dd8f..30c64751b 100644
--- a/src/pytorch_lightning/plugins/precision/tpu.py
+++ b/src/pytorch_lightning/plugins/precision/tpu.py
@@ -29,6 +29,13 @@ class TPUPrecisionPlugin(PrecisionPlugin):
             raise ModuleNotFoundError(str(_XLA_AVAILABLE))
         super().__init__(*args, **kwargs)

+    def _wrap_closure(self, model: "pl.LightningModule", optimizer: Optimizable, **kwargs: Any) -> Any:
+        closure_result = super()._wrap_closure(model, optimizer, **kwargs)
+        import torch_xla.core.xla_model as xm
+
+        xm.reduce_gradients(optimizer)
+        return closure_result
+
     def optimizer_step(  # type: ignore[override]
         self,
         optimizer: Optimizable,
@@ -37,10 +44,8 @@ class TPUPrecisionPlugin(PrecisionPlugin):
         closure: Callable[[], Any],
         **kwargs: Any,
     ) -> Any:
-        import torch_xla.core.xla_model as xm
-
         closure = partial(self._wrap_closure, model, optimizer, optimizer_idx, closure)
-        closure_result = xm.optimizer_step(optimizer, optimizer_args={"closure": closure, **kwargs})
+        closure_result = optimizer.step(closure=closure, **kwargs)
         skipped_backward = closure_result is None
         # in manual optimization, the closure does not return a value
         if model.automatic_optimization and skipped_backward:

Shouldn't grad clipping be done after grad all_reduce?

Yes. My bad!

Thank you so much! Do you want to open a PR implementing your solution?

I notice there are other places that have called xm.optimizer_step(), such as in lightning, lightning_lite, and pytorch_lightning. I don't know enough how to incorporate this change to all the places that have similar issue. So I hope someone know more about the package structure could help.

AFAIK Lite does not suffer from this issue because it doesn't need to run the closure separately.

The fix is merged to master.


git plugin doesn't seem to work

I have refactored my zshrc and added antigen to manage my plugins, everything works well except the git plugin. My theme typically shows the git status but know it doesn't. Can you please review my zshrc and let me know if I configured antigen properly?

'antigen theme'  must be placed before 'antigen apply'.
Hope that helps.

Na it doesn't work. I purposefully put it outside.

This may not be the problem but: if you use antigen you should use "antigen use oh-my-zsh" and not source it directly. It looks you are executing both, try removing line 26.

I had tried it, but there was no use. Surprisingly it works with the same file at home computer but not in office. By removing the sourcing of .oh-my-zsh/oh-my-zsh.sh file it stops working at home too.

Seems its the problem with my specific theme - jiks in themes repo!


Update to 3.13.0-01

New version of Nexus came out on 2018-07-19 and Nexus Platform Plugin already works with it. New version has API changes and 3.12 is not compatible with updated plugin.

I've built and deployed it in our environment and it works fine


Add TableView and CollectionView protocol

Changes in this pull request
This adds TableView and CollectionView protocols, so that the concrete UITableView and UICollectionView can be used less often in tests. This fixes the testing issues that surfaced in #136.
Checklist

[ ] All tests pass. Demo project builds and runs.
[ ] I added tests, an experiment, or detailed why my change isn't tested.
[ ] I added an entry to the CHANGELOG.md for any breaking changes, enhancements, or bug fixes.
[ ] I have reviewed the contributing guide

@jessesquires current state is that there's only TableView protocol, and all the TableView-side of ReactiveLists passes. General idea is that TableView captures all of the functionality relied upon in a UITableView by TableViewDriver. This means that we can tell "diff" or "no diff" a bit easier, since we can subvert DifferecenKit's UITableView extension in tests. Doing this forced me to confront a few issues in tests:

We seemed to be somehow using HeaderView and TestTableViewSectionHeaderFooter at the same time for the same IndexPath in tests. We didn't use the latter much, so I instead just copied the functionality out of there and into HeaderView and FooterView.
An XCTAssertNil is now an XCTAssertNotNil (will call this one out in line)
The registerViews(for:) method now belongs to a constrained extension of the TableView protocol. This actually ends up making our tests more thoroughly test this functionality (will call out where inline).

The down side is the testTableView methods in tests, which are needed to make cell/header/footer dequeuing work properly.

Hm... I don't think I fully understand the goals here and what we're gaining by doing this. What's wrong with subclassing UITableView in tests to achieve the mocking we want?

This means that we can tell "diff" or "no diff" a bit easier, since we can subvert DifferecenKit's UITableView extension in tests.

I'm not sure I'm following here. We don't need to test DifferenceKit, right? That lib has tests? We just want to test that if, for example, we add a SectionModel that [tableView numberOfSections] returns the correct value?

RE: this comment https://github.com/plangrid/ReactiveLists/pull/136#issuecomment-417031912
FWIW, IGListKit uses a real UICollectionView and UIWindow in all its tests:
https://github.com/Instagram/IGListKit/blob/master/Tests/IGListTestCase.m#L12-L30

I generally don't like the introduction of the TableViewProtocol, but more importantly this will hinder us from moving toward a unified API for tables and collections as described in #46 — the eventual goal will be to just have CellViewModels and Sections and be able to render either a collection or a table with little to no code changes (essentially just changing the cell type).

We should probably discuss in person 😄

Hm... I don't think I fully understand the goals here
I tried dropping in a UIWindow and ran into crashes in UITableView. Admittedly, I didn't try to hard to work them out because I figured trying to make UIKit work well in a test environment would be difficult.

FWIW, IGListKit uses a real UICollectionView and UIWindow in all its tests:
That's certainly one approach. It does expose the tests to flaking due to bugs in UIKit though, as well as further extends the reach to already very integration-y unit tests.

more importantly this will hinder us from moving toward a unified API for tables and collections as described
Hm I actually thought a protocol might be the layer of indirection we needed to have the unified API. We could evolve this into a ListView protocol, which has the API contract for a view driven by ListViewDriver (combination of CollectionViewDriver and TableViewDriver). Right now, TableView is too thin of a layer to be helpful, but we could iterate on it.

Hm I actually thought a protocol might be the layer of indirection we needed to have the unified API.

Ah yes, that's correct. We've started laying that groundwork with CellContainerViewProtocol, which unifies the APIs for tables and collections for dequeueing and registering cells. This seems more like the appropriate place to add the insert/delete/move/reload methods, rather than introduce a new protocol

I can do that, but then I'd have to make TableViewDriver and CollectionViewDriver generic because that protocol has associatedtype requirements.


Numerous small doc, formatting, or other minor things to help with clarity

Various suggestions to help make this a bit more clear for a newcomer.

Hi @lmcmz I had a quick look at the contracts and work so far and looks good, nice and clear. I made a few doc changes, hope that's ok. I did want to ask about the copies of:
scripts/flow
transactions/flow
transactions/nftStoreFront
I think that copying these in might not be the best thing here. How about having the folders but just with README.md files which link to the real repo examples. My theory is having them learn of the other repos is more powerful long term, also means we have less things to update and keep in sync. Not sure if that's just me who thinks that way


Gas System

Effectively make all XCP fees dynamic based on the ratio between the transactions of a given type seen in the last difficulty period and some hard-coded target value. If there are fewer transactions than the target, the fee should be very low (zero?); if there are more, then the fees should start to increase, say logarithmically. We'll want to implement this for #1939 at least; possibly other things.

Consider EIP-1559 without the miner tip feature

Empirical Analysis of EIP-1559: Transaction Fees, Waiting Times, and Consensus Security

Note: This will need to be tested carefully.

@ouziel-slama let's set a maximum rate that the gas price can change from difficulty period to difficulty period. (Say 2x and .5x)

Two important changes:

We should use a two-week moving average rather than sync to the difficulty period with no min/max rate of change
We should build in a way of having a base fee different for each contract type

See https://github.com/CounterpartyXCP/counterparty-core/pull/2180


'forEachLayerAtPixel' tile layer method does not account for pixelRatio of device.

The method only works if the pixelRatio of the device is 1.
The canvas height and width  both need to be multiplied by the pixelRatio.

@Benjaki2, would you be able to provide a pull request with a fix?

@ahocevar, sure thing.

Was a fix for this worked on?

Fixed with #5731.

Actually not fixed with #5731,


Resolve TCA deprecated warnings

The goal of this task is to reduce number of warning as much as possible, ideally down to zero which may be tricky and require some extensive refactor. To avoid huge refactors, focus on quick wins first and create follow up tickets for work on its own.
Simple fixes:

reducers in closures
async API instead of sync one
EffectTask refactored to Effect
AnyPublishers refactored to Effect.publisher { ... }

For instance, October 31st, 2023 at 10am CET, there are 111 warnings to resolve.

resolved in #902


HIL tests sometimes experience transient failures

There have been a number of instances how where the HIL testing has failed, only to pass in a subsequent run when re-added to the merge queue. One example of such failure can be seen here.
This is not the end of the world, but also is far from ideal; would be good to invest some time into seeing how/if we can make these tests more reliable.

I agree, we should try to log here all the transient failures of the HIL workflow.
For reference, the workflow that you linked failed because of the uart_async test on S3:
ERROR panicked at 'assertion failed: `(left == right)`'
diff < left / right >
<[72, 101, 108, 108, 0, 0, 0, 0, 0, 0, 0]
>[72, 101, 108, 108, 111, 32, 69, 83, 80, 51, 50]
└─ uart_async::tests::test_send_receive::{async_fn#0} @ /home/runner/work/esp-hal/esp-hal/hil-test/tests/uart_async.rs:66

No idea what failed in there, but it's a rare issue, tried to run the test locally around 20 times and all of them succeeded, also the workflow suceedss most of the runs...


Does mj_contactForce apply to contact->geom[0] or contact->geom[1]?

Hi,
I'm an engineer and I'm trying to use MuJoCo for analyzing contact forces between objects.
I'm looking for some help with mj_contactForce. The documentation says it retrieves the force for a given contact but it doesn't say if the direction of this force is for contact.geom[0] or contact.geom[1]. From experimenting, it looks like this force is always the force that the contact applies to contact.geom[1]. To get the force on contact.geom[0], the vector must be inverted.
This matches what I see in the simulate sandbox's visualization code (engine_vis_visualize.c lines 236-291 for mjVIS_CONTACTFORCE).
Paraphrasing a bit, the code looks like this:
mju_transpose(mat, con->frame, 3, 3);
mj_contactForce(m, d, i, confrc);
mju_copy(frc, confrc, mjMIN(3, con->dim));
mju_mulMatVec(vec, mat, frc, 3, 3);

// make sure arrow points towards body with higher id
if (m->geom_bodyid[con->geom[0]] > m->geom_bodyid[con->geom[1]]) {
  mju_scl3(vec, vec, -1);
}

This indicates that mj_contactForce gives the contact force to be applied to geom[1] but for some reason the visualization forces it to always point towards the body with the higher ID.
Clarification around contact force direction would be nice to have in the docs for mjContact and mj_contactForce.
Here is a model that you can turn on contact force visualization and contact split under "rendering" to see the force arrows:
<mujoco>
  <option
    timestep="0.01"
    integrator="implicitfast"
    gravity="0 0 -9.810"/>

  <!-- Free Camera Positioning -->
  <statistic
    center="0 0 0.5"
  />

  <visual>
    <map force="0.5" />
    <global azimuth="0" elevation="-20"/>
  </visual>

  <worldbody>
    <light pos="0 1 5" dir="0 -1 -2"/>

    <body name="plane" pos="0 0 -0.5">
      <geom type="plane" size="5 5 1"/>
    </body>

    <body name="box" pos="0 0 0.5" >
      <geom type="box" mass="1" size="1 1 1"/>
      <freejoint />
    </body>
  </worldbody>
</mujoco>

Here is a screenshot when "box" has the higher ID:

Here is a screenshot when "box" is moved above "plane" in the XML so it has a lower ID:

Obviously the actual force is always a pair acting on both geoms (Newton's 3rd law), but in the case of one of the geoms being static only the component acting on the moving geom is rendered.
In terms of which of the 2 action/reaction forces is represented in mjtContact (and reported by mj_contactForce) I believe the rule is slightly different then what you think it is. This line shows you that the order of the con.geom[0, 1] has to do with the type order in mjtGeom, and then looking e.g. this file, it looks to me like the frame is oriented such that the normal (con.frame[0-2]) always points from geom[0] to geom[1].
The actual force that is computed is in that frame and the normal component is never negative.
So I believe the correct rule is
The normal direction (frame[0-2]) always points from geom[0] to geom[1], which are sorted according to their mjtGeom enum values. If the two geoms have the same mjtGeom value, then they are sorted according to their respective body indices.
Do you think you could please confirm or find a counter-example to the above proposed rule? After we're happy that that is is correct, I will update the docs accordingly 🙂

Thanks for the quick response!
I agree that the contact normal direction (frame[0-2]) always points from geom[0] to geom[1]:

con->frame is populated by ccdMPRPenetration from libccd in engine_collision_convex.c. ccdMPRPenetration says the returned direction is from obj1 to obj2.

For plane-box contact, the plane normal is always the contact normal and the mjtGeom type results in box being geom[1] like you said

I couldn't find the contact force calculation code to know if the direction is always computed for geom[0] or geom[1] but experimentally I've seen that it is always the correct force for geom[1]:

For plane-box, plane is geom[0] and box is geom[1]. Force is for geom[1] (points towards box).

For box-box, geom[0] is the lower ID body. Force is for geom[1] (points towards the higher ID box).

For mesh-mesh, geom[0] is the lower ID body. Force is for geom[1]. When I swap the body ordering but keep the scene the same, the force is for the new geom[1].

I think the docs should describe:

frame[0-2] as pointing from geom[0] to geom[1]
Contact force is for geom[1]. To get the force for geom[0], it must be scaled by (-1, -1, -1).

I don't think a MuJoCo user needs to know the rules for deciding geom ordering but that's up to you ¯\_(ツ)_/¯.

I just saw this is already documented:
mjtNum  frame[9];                // normal is in [0-2], points from geom[0] to geom[1]

Is points from geom[0] to geom[1] not clear enough? Closing for now.

Ah, I forgot that mjContact already indicates it points from geom[0] to geom[1].
I still think there is missing documentation about which geom the contact force applies to. This is my main concern.

But it always applies to both geoms... You want us to explain Newton's 3rd law in the documentation of mjContact?

It's reasonable for users to know that the contact force on one geom is the opposite of the contact force on the other geom.
What's not reasonable is knowing which geom needs to have mj_contactForce multiplied by (-1, -1, -1).


create possibility to view/download full logs

Now that we have the collapsible log parts (which is awesome btw) we lost the possibility to view and/or downloads the full logs of a build. In some cases this might be interesting (to search for an error, for example).
Could we add a "un-collapse all" button somewhere to un-collapse every log to be able to search or a button to download the whole log? Preferably both of course :)

The ability to search for a specific word has also been inadvertently lost - We often search for a keyword (such as clilaravel, or nodegatsby) when we troubleshoot failed deployments.
A "expand all" feature would solve our limited case, but @Schnitzel's idea for a "view / download" would be a more fully formed solution I think.

This is a great idea.
I think the quickest way to get this working would be to make it possible to switch off log parsing with something like this
https://github.com/uselagoon/lagoon-ui/compare/feature/raw_logs
It just introduces a checkbox that turns off the accordion.
The only issue I have at the moment is that there's this persistent issue with a scrolling event that messes up the state of the entire component. I thought we'd fixed it, but I guess it's just a case of it being masked by the accordion behaviour now.

@bomoko - nice - just disabling the accordion would solve my version of the problem immediately.
PS - I've also seen that accordion state and the "scroll up" / "scroll down" buttons getting confused fwiw


Fixed doxygen generation

The dependencies' folders were cloned into $TRAVIS_BUILD_DIR, hence doxygen was seeing them as part of this repo tree.
Fixes issue #53

Just a curiosity.
Why instead of removing the sources (which may take some time slowing down the compilation), not moving to the previous folder as we did in all the others (other repositories) travis configuration.
Something like
cd ${TRAVIS_BUILD_DIR}/../ before cloning iDynTree ?

Because travis uses the same script for building dependencies either in the linux docker container, and osx. Inside the docker container only the cloned git folder is mounted, and the sources are cloned inside. I would't mind of the time rm takes though.

ok


⚠ Jenkins Plugins Artifactory has degraded performance

In d468d0e, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1404 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 79f6731 after 12 minutes.


fix: register task with size scope

Signed-off-by: Gaius<EMAIL_ADDRESS>
Description

Register task with size scope.

Related Issue

Motivation and Context

Screenshots (if appropriate):
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation Update (if none of the other choices apply)

Checklist:

[x] Code compiles correctly.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Codecov Report

Merging #1003 (1c776cd) into main (71425c6) will increase coverage by 0.09%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1003      +/-   ##
==========================================
+ Coverage   45.80%   45.89%   +0.09%
==========================================
  Files         130      130
  Lines        9131     9131
==========================================
+ Hits         4182     4191       +9
+ Misses       4480     4472       -8
+ Partials      469      468       -1

Flag
Coverage Δ

Object-compatibility-e2etests
?

e2etests
?

unittests
45.89% <100.00%> (+0.09%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

scheduler/rpcserver/rpcserver.go
93.23% <100.00%> (ø)

client/daemon/peer/peertask_conductor.go
57.14% <0.00%> (+0.36%)
:arrow_up:

cdn/supervisor/progress/progress.go
97.01% <0.00%> (+5.97%)
:arrow_up:

pkg/sync/kmutex.go
100.00% <0.00%> (+16.66%)
:arrow_up:


⚠ Bofrost.at has degraded performance

In 9dfa24b, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1423 ms

Resolved: Bofrost.at performance has improved in 0a666fc.


ocmproviderauthorizer: do not match providers full hostname against the 'domain' field

Up until now, when accepting an OCM invitation, we match the users' IDP:
>> ocm-find-accepted-users
+------------+---------+----------------+-----------------------+
| OPAQUEID   | IDP     | MAIL           | DISPLAYNAME           |
+------------+---------+----------------+-----------------------+
| samuel9876 | cern.ch |<EMAIL_ADDRESS>| Samuel Alfageme Sainz |
+------------+---------+----------------+-----------------------+

... with the domain from the ocm providers in Mentix:
{
		"name": "CERN",
		"full_name": "CERN",
		"description": "CERN ScienceMesh",
		"organization": "CERN",
		"domain": "cern.ch",
		"homepage": "https://home.cern/",
		"email"<EMAIL_ADDRESS>		"services": [
		     ...
		 ]
}

However, while transitioning to production environments, these fields will be with actual IDP URLs. Like e.g.
reva whoami
id:<idp:"https://auth.cern.ch/auth/realms/cern" opaque_id:"cboxbot" type:USER_TYPE_PRIMARY > username:"cboxbot" ...>

This will result on an error as https://auth.cern.ch/auth/realms/cern does not match cern.ch from the example ocm-providers.json/mentix
2022-10-05 15:17:06.716 INF src/github/cs3org/reva/internal/http/interceptors/providerauthorizer/providerauthorizer.go:83 > skipping provider authorizer check for: /ocm/shares pid=1 pkg=rhttp traceid=2f02001fb497925228a9e579b7b2bd9d
2022-10-05 15:17:06.716 DBG src/github/cs3org/reva/pkg/rhttp/rhttp.go:304 > http routing: url=ocm pid=1 pkg=rhttp
2022-10-05 15:17:06.716 DBG src/github/cs3org/reva/internal/http/services/ocmd/ocmd.go:113 > http routing head=shares pid=1 pkg=rhttp tail=/ traceid=2f02001fb497925228a9e579b7b2bd9d
2022-10-05 15:17:06.72 ERR src/github/cs3org/reva/internal/grpc/services/ocmproviderauthorizer/ocmproviderauthorizer.go:125 > error verifying mesh provider error="error: not found: https://auth.cern.ch/auth/realms/cern" pid=1 pkg=rgrpc traceid=e251ed3c59c6a6ed1bb2d1765343e9bf
2022-10-05 15:17:06.721 ERR src/github/cs3org/reva/internal/http/services/ocmd/reqres.go:62 > provider not authorized error="error verifying mesh provider" pid=1 pkg=rhttp traceid=2f02001fb497925228a9e579b7b2bd9d
2022-10-05 15:17:06.721 WRN src/github/cs3org/reva/internal/http/interceptors/log/log.go:112 > http end="05/Oct/2022:15:17:06 +0000" host=<IP_ADDRESS> method=POST pid=1 pkg=rhttp proto=HTTP/1.1 size=71 start="05/Oct/2022:15:17:06 +0000" status=401 time_ns=6280387 traceid=2f02001fb497925228a9e579b7b2bd9d uri=/ocm/shares url=/ocm/shares

We'll also need to consider the cases where a single IDP is used in multiple institutions like e.g. eduGAIN. As all the users will share the same IDP URL on their ids.

This might be related: https://github.com/pondersource/oc-sciencemesh/issues/19

See also https://github.com/cs3org/reva/issues/3113


Refactor: Unclear error message

Attempt to use not declared environment variable. Please report the problem to the maintainers of this task, not to RKD (unless it is a core task)

Suggestion: Add environment variable name

Done.


update new service info to service_status table when upload yaml files - [closed]

In GitLab by @sokril on Dec 19, 2017, 09:58
Merges upyaml -> dev

In GitLab by @wknet123 on Nov 13, 2019, 10:20
the coverage is  7.6% check console log

In GitLab by @wknet123 on Nov 13, 2019, 10:20
the coverage is  7.6% check console log

In GitLab by @wknet123 on Nov 13, 2019, 10:20
closed


Amend the list of ipvs schedulers with descriptions

This PR fixes the IPVS scheduler name list by adding schedulers that were missing and adding some descriptions (copied for source code comments) for each.

/approve

@tengqm Thanks for this PR.
The test cases failed due to Netlify build timeout failures.
please re-push the commit.

/sig network

/lgtm


frontend: use navigate -1 for back buttons

Back buttons should not add new history entries and behave same
as native back buttons by going one step back in history.
also: added functional back button component for send view class component

@benma I pushed one more commit that updates BackButton and added canGoBack prop, so each component can pass a boolean if the back button should be active or disabled. Should also address the other comments about passong props.
I'm not sure if you had something like this in mind.
I keep it as separate commit and if ok I'll update all other views to use this BackButton.
Or let me know how you'd like the BackButton to work.

I'll make nicer commits when we are happy with the props. @benma PTAL


open file with WinML Dashboard

In the UI part, I added ONNX Version and Quantization options.
The purpose is that we want to support to convert to both ONNX 1.2 and ONNX1.3 no matther what OS build users have(RS5 or 19H1), though users might not be able to run the converted model. The same as quantization, we want to support to convert model with dequantize op.


Add a marker in built-in terminal middleware to distinguish between "soft" and "hard" 404

I've come across a scenario where I'd like to determine if a 404 response coming up the pipeline was the result of hitting the built-in terminal middleware ("hard" 404) or if someone actually handled the request, but returned 404 anyway ("soft" 404). This can be solved easily by adding a marker in HttpContext.Items for middleware to check. Would you accept a PR for something like that?

What would it do if it detected a soft 404?

So, the scenario is that I have an API that also serves a SPA using StaticFiles. Right before StaticFiles, I have a MW that runs the pipeline and then checks if a 404 comes back. When a 404 comes back, I "fall back" to /index.html and re-executing the pipeline. This results in client-side routes (which doesn't get handled on the server) getting served index.html, and the client-side JS routing can take over. The only problem is if the API actually sends a soft 404. In that case, I don't want to fall back to index.html, but send a application/problem+json response.

Wouldn’t it be better to react to the requested content type instead? If the client asks for HTML respond with that. If it wants JSON, respond with that. Just saying :)

We're working on some changes over in the routing repo that will solve this if you want to opt in to the new model in 2.1.0
Basically we want to decide fairly early what endpoint is going to match, and then let middleware see that. When you get to the end of the chain, only then will it call into the actual endpoint.  (usually you will have routing at the end today).

Wouldn’t it be better to react to the requested content type instead? If the client asks for HTML respond with that. If it wants JSON, respond with that. Just saying :)

That's not what this is about. If I have a client-side route, https://my-app.com/customer-info, and share that with a friend. When she goes to that URL, there's nothing on the server that can handle that URL. In that case, I want to serve index.html (which includes JavaScript for client-side routing). I basically want a catch-all route that uses StaticFiles and doesn't respond to soft 404s 😄

I've seen people tackle this SPA problem from the other end, rewriting requests as they come in rather than reacting to 404s.

I've seen people tackle this SPA problem from the other end, rewriting requests as they come in rather than reacting to 404s.

How do you know which request to rewrite up-front though? It could be handled by all kinds of different MW. The point of this MW is that it should be independent from any routing or other MW 😄

I want the same as MapSpaFallbackRoute  in Microsoft.AspNetCore.SpaServices, but something a bit more robust and not coupled to MVC's routing.

Feel free to build a sample and we can see if it's general purpose enough to fit in the stack somewhere. Otherwise aspnet-contrib may be a good place for it.

We're working on some changes over in the routing repo that will solve this if you want to opt in to the new model in 2.1.0

Feel free to build a sample and we can see if it's general purpose enough to fit in the stack somewhere. Otherwise aspnet-contrib may be a good place for it.

@Tratcher @rynowak Does that mean adding a marker in the current MW is out of the question?

Here's what I ended up with: https://gist.github.com/khellang/47e8fac5b1bad2df74cb8c145d32f98e.
It's used either like this:
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

namespace SpaFallback
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSpaFallback(); // <-- Would love to remove this...
        }

        public void Configure(IApplicationBuilder app)
        {
            app.UseStaticFiles();
            app.UseMvc();
        }
    }
}

Or like this:
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

namespace SpaFallback
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            app.UseSpaFallback();
            app.UseStaticFiles();
            app.UseMvc();
            app.UseSpaFallbackMarker(); // <-- Would love to remove this...
        }
    }
}

As you can see, if the built-in terminal MW added a marker, it would substantially simplify the code. Mostly in the implementation, but also slightly from a user's POV.

That's not terribly complex code to begin with...

@SteveSandersonMS Maybe you'd be interested in pulling something like https://github.com/aspnet/HttpAbstractions/issues/945#issuecomment-333538268 into JavaScriptServices?


Scanner.c is missing on npm, therefore preventing the package installation

The scanner.c file is missing on the published npm package. This is causing the npm install to fail during the node-gyp rebuild step.
Steps to reproduce
$ mkdir tree-sitter-sql
$ cd tree-sitter-sql
$ npm pack<EMAIL_ADDRESS>$ tar --strip-components=1 -xvf derekstride-tree-sitter-sql-0.1.1.tgz package/
$ npm install

The compilation step will fail with the following error:
make: *** No rule to make target 'Release/obj.target/tree_sitter_sql_binding/src/scanner.o', needed by 'Release/obj.target/tree_sitter_sql_binding.node'.  Stop.

But if you download the scanner.c manually, it'll work:
$ mkdir -p src/
$ curl -Lo src/scanner.c 'https://derek.stride.host/tree-sitter-sql/src/scanner.c'
$ npm install

I'm not well versed on the npm publish behavior, but I think this is being caused by having /src/ defined on .gitignore.

Could this be the cause of the following error I'm getting when opening a .sql file?
Error executing lua callback: Failed to load parser for language 'sql': uv_dlopen: /home/user/.local/share/nvim/site/pack/packer/start
/nvim-treesitter/parser/sql.so: undefined symbol: tree_sitter_sql_external_scanner_create

v0.2.0 should have scanner.c included.

Could this be the cause of the following error I'm getting when opening a .sql file?

I'm doubtful, neovim requests scanner.c by default:
https://github.com/nvim-treesitter/nvim-treesitter/blob/000f71842bf08840df1e70004b17507fa92b2fb7/lua/nvim-treesitter/parsers.lua#L1742

v0.2.0 should have scanner.c included.

Could this be the cause of the following error I'm getting when opening a .sql file?

I'm doubtful, neovim requests scanner.c by default:
<EMAIL_ADDRESS>
Thank you!


read_csv with Ray engine fails with some combinations of Column and Index Locations and Names parameters

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04
Modin version (modin.__version__): <IP_ADDRESS>+34.ga571e10
Python version: 3.8.6
Code we can use to reproduce:

import os

os.environ["MODIN_ENGINE"] = "ray"

import pandas
import modin.pandas as pd
from modin.pandas.test.utils import df_equals

test_filename = "test.csv"
kwargs = {
    "filepath_or_buffer": test_filename,
    "index_col": "col1",
    "usecols": ["col1"],
}
str_two_cols = """col1,col2
0,1
2,3
"""

try :
    with open(test_filename, "w") as f:
        f.write(str_two_cols)

    df_pandas = pandas.read_csv(**kwargs)
    print(df_pandas)
    df_pd = pd.read_csv(**kwargs)
    print(df_pd)
    df_equals(df_pd, df_pandas)
finally:
    os.remove(test_filename)

Describe the problem

Source code / logs

Empty DataFrame
Columns: []
Index: [0, 2]
Traceback (most recent call last):
  File "test.py", line 26, in <module>
    df_pd = pd.read_csv(**kwargs)
  File "/localdisk/amyskov/modin/modin/pandas/io.py", line 109, in parser_func
    return _read(**kwargs)
  File "/localdisk/amyskov/modin/modin/pandas/io.py", line 127, in _read
    pd_obj = EngineDispatcher.read_csv(**kwargs)
  File "/localdisk/amyskov/modin/modin/data_management/factories/dispatcher.py", line 104, in read_csv
    return cls.__engine._read_csv(**kwargs)
  File "/localdisk/amyskov/modin/modin/data_management/factories/factories.py", line 87, in _read_csv
    return cls.io_cls.read_csv(**kwargs)
  File "/localdisk/amyskov/modin/modin/engines/base/io/file_reader.py", line 29, in read
    query_compiler = cls._read(*args, **kwargs)
  File "/localdisk/amyskov/modin/modin/engines/base/io/text/csv_reader.py", line 142, in _read
    column_chunksize = compute_chunksize(empty_pd_df, num_splits, axis=1)
  File "/localdisk/amyskov/modin/modin/data_management/utils.py", line 54, in compute_chunksize
    col_chunksize = get_default_chunksize(len(df.columns), num_splits)
  File "/localdisk/amyskov/modin/modin/data_management/utils.py", line 29, in get_default_chunksize
    length // num_splits if length % num_splits == 0 else length // num_splits + 1
ZeroDivisionError: integer division or modulo by zero

Since Modin read_csv fails with several combinations of Column and Index Locations and Names parameters (with ray engine), the scope of this issue will be expanded to cover issues with all Column and Index Locations and Names parameters.

Reproducer of incorrect output with header, prefix and usecols parameters provided:
import os

os.environ["MODIN_ENGINE"] = "ray"

import pandas
import modin.pandas as pd
from modin.pandas.test.utils import df_equals

test_filename = "test.csv"
kwargs = {
    "filepath_or_buffer": test_filename,
    "header": None,
    "prefix": "col",
    "usecols": ["col1"],
}
str_two_cols = """col1,col2
0,1
2,3
"""

try:
    with open(test_filename, "w") as f:
        f.write(str_two_cols)

    df_pandas = pandas.read_csv(**kwargs)
    print(df_pandas)
    df_pd = pd.read_csv(**kwargs)
    print(df_pd)
    df_equals(df_pd, df_pandas)
finally:
    os.remove(test_filename)

Output:
Empty DataFrame
Columns: [col1]
Index: []
   col1
0  col2
1     1
2     3
Traceback (most recent call last):
  File "test.py", line 61, in <module>
    df_equals(df_pd, df_pandas)
  File "/localdisk/amyskov/modin/modin/pandas/test/utils.py", line 500, in df_equals
    assert False, "One of the passed frames is empty, when other isn't"
AssertionError: One of the passed frames is empty, when other isn't

Hello! Thanks for your efforts! Any coming fix or current workaround for this please? I have several files that I cannot open due to this bug. Thanks! @amyskov

@amyskov Yes, sure.
Here are the steps to reproduce this issue:

Download and unzip this file (link).
Run the following code:

import modin.pandas as pd
import ray
import os
os.environ["MODIN_ENGINE"] = "ray"
ray.init()

file_name = "ELRA-W0309.en-fr.en"
df = pd.read_csv(file_name, names=['English'], sep="\n")

This gives an error:

ZeroDivisionError: integer division or modulo by zero

I have also other files where everything works fine, like this one.
Thanks!

@ymoslem, temporally this bug can be avoided by adding index_col=False option to the read_csv function, see example below:
import modin.pandas as pd
import pandas
import ray
import os
os.environ["MODIN_ENGINE"] = "ray"
ray.init()

from modin.pandas.test.utils import df_equals

file_name = "ELRA-W0309.en-fr.en"

df_pandas = pandas.read_csv(file_name, names=['English'], sep="\n")
df_pd = pd.read_csv(file_name, names=['English'], sep="\n", index_col=False)
df_pd.reset_index(drop=True, inplace=True) # indexes aligning between pandas and Modin

df_equals(df_pandas, df_pd) # df_pd and df_pandas are equal!

Hope this helps!

Adding the index_col=False option solved it. Thanks a lot! @amyskov
df = pd.read_csv(file_name, names=['English'], sep="\n", index_col=False)

I am not able to reproduce this bug on master, so I'll go ahead and close this issue. Please re-open if needed!


2019: change button "Run" to "Evaluate"

students will have a clearer distinction between static and dynamic aspects.

Maybe "Run" is better, when the Academy is used by people other than CS1101S students?
Closing this issue.


Extension Marketplace error message is not user friendly when offline.

Originally posted by @bhavyaus in https://github.com/microsoft/vscode/issues/184082#issuecomment-1574102424

We do detect if the error is an offline error and I am seeing following during then

We do detect if the error is an offline error and I am seeing following during then

Typing in a search text in that input field throws the XHR error.

I am seeing the same error also when typing

Got it. If I start VS Code when already offline, I see the error that you are seeing. If I go offline AFTER VS Code has started and then try to use the marketplace, I see the XHR failed error.

Strange. I see offline message either way. Can you please enable log level to trace and see what network log says?

I'm seeing the same error in the logs as well

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Which vocabulary file need to use?

Hi, I do the sample generation using the example command:
python generate_samples.py \     --dir <path_to_shards> \     -o <output_path> \     --dup_factor 10 \     --seed 42 \     --vocab_file <path_to_vocabulary_file> \     --do_lower_case 1 \     --masked_lm_prob 0.15 \      --max_seq_length 128 \     --model_name bert-large-uncased \     --max_predictions_per_seq 20 \     --n_processes 16
I found nothing is mentioned about the vocabulary file here or I missed something important. Do I need to download and use the vocabulary file in https://huggingface.co/bert-large-uncased/blob/main/vocab.txt?

It's the vocab_file of the tokenizer, as used in: dataset/data/create_pretraining_data.py, BertTokenizer c'tor.
You can modify this by using BertTokenizer.from_pretrained(name_or_path), where name_or_path is a new param.
Note to add it to both generate_samples.py and create_pretraining_data.py

It's the vocab_file of the tokenizer, as used in: dataset/data/create_pretraining_data.py, BertTokenizer c'tor. You can modify this by using BertTokenizer.from_pretrained(name_or_path), where name_or_path is a new param. Note to add it to both generate_samples.py and create_pretraining_data.py

Yes, I know it's the vocab_file of the tokenizer, which is used in the file create_pretraining_data.py for BertTokenizer. I mean this repository does not provide a vocab_file (or I missed). Do I need to use the vocabulary file provided by the Huggingface: https://huggingface.co/bert-large-uncased/blob/main/vocab.txt?

Yes, for instance. You can also use your own with the mentioned modifications.

Thanks!


Incorrect documentation for building Ballista on Linux when using docker-compose

Describe the bug
The following pages have incorrect instructions for building and running with docker-compose:
The page at https://github.com/apache/arrow-ballista/blob/master/benchmarks/README.md has:
cargo build --release
docker-compose up --build

The page at https://github.com/apache/arrow-ballista/blob/master/docs/source/user-guide/flightsql.md has these specific instructions for Linux:
cargo build --release --all --features flight-sql
docker-compose up --build

Using the latter as an example, docker-compose fails to start the scheduler:
Step 9/14 : COPY ballista/ui/scheduler/build /var/www/html
COPY failed: file not found in build context or excluded by .dockerignore: stat ballista/ui/scheduler/build: file does not exist

To Reproduce
Clone the repo into a new directory and follow the instructions above
Expected behavior
Additional context

@andygrove @ianmcook we need to get this merged into apache's CI & the docs: https://github.com/spaceandtimelabs/arrow-ballista/blob/master/.circleci/config.yml#L51

I think you meant to ping @iajoiner


Reduce page weight by 22.5MB (with suggestions for more)

I noticed on the intro page a note saying "there may be a slight delay in loading the interactive map depending on the device you are using". Looking at the interactive map page I noticed that it has a 97MB page load (uncompressed) of which 89MB is in the HTML. Looking at that I noticed most of this is in inefficient JSON. In this pull request I've:

Truncated coordinates from 15 decimal places (which is equivalent to atom-level precision) to 5 decimal places (around 1.1m at worst which should be fine for 200x200m boxes). That saves approximately ~21MB;
Converted RGB values into integers instead of floating point values. This saves another ~1.7MB.

These were a couple of "quick win" improvements. However there are is potential for a lot more reduction:

There seem to be 195,395 cells so the variables accessible_population, id, population, proximity_population, transport_performance, uc name and within_urban_centre are repeated that many times. Are they used in the visualisation? If not, they could be removed entirely saving another 27MB. If they are, could they be shorter?
The quadrilaterals that make each cell are currently sent as GeoJSON in the JSON. That requires 10 values to be sent for each cell (lat/lon for 5 vertices). With a little re-engineering you could send a more concise format to the browser. You could then use JS to construct the GeoJSON representation before sending it to the map. I suspect that 195,000 operations may be much quicker than the many MB of HTML required.

I've done the two extra points:

saved the polygons as 4 vertices (rather than 5) in geom and rebuilt them as geometry objects in the browser - saves 11MB
trimmed variable names - saves 15MB

I've converted the data variable for each layer from JSON to a CSV format. This saves another 15MB as we don't need to repeat variable names. There is a little bit of Javascript to parse this back into the original format on page load.


Update getsearchablemailboxes-operation.md

Adding description of the expected result for the operation

Docs Build status updates of commit 3c309e6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/web-service-reference/getsearchablemailboxes-operation.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 3c309e6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/web-service-reference/getsearchablemailboxes-operation.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: a-baabde sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Docs Build status updates of commit 5f3156a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/web-service-reference/getsearchablemailboxes-operation.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@a-baabde Changes are now live: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getsearchablemailboxes-operation; thanks for your contribution.


./node_modules/uppy-angular/fesm5/uppy-angular.js Module not found: Error: Can't resolve 'uppy' in '/node_modules/uppy-angular/fesm5

Please add "uppy": "^1.5.2", in dependencies in package.json and run npm
install.
[image: image.png]
Thanks,
Adrita
On Fri, Mar 27, 2020, 1:55 PM Snehamuralidhara<EMAIL_ADDRESS>wrote:

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/adritasharma/uppy-angular-library/issues/1, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AG7KMU676WR52DTI2PQNPG3RJRPGZANCNFSM4LU2O2RA
.


Associate and disassociate IP of VM

Sorry for making an issue here but I have been trying for 2 hours without success.
I am trying to remove the public IP of a VM:
# Import the needed credential and management objects from the libraries.
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.compute import ComputeManagementClient
import os

# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()
subscription_id = "MYID"
network_client = NetworkManagementClient(credential, subscription_id)

RESOURCE_GROUP_NAME = "group2"
LOCATION = "westus"
IP_NAME = "vmBoxPublicIP"

Now I know I need to use network_client.public_ip_addresses.begin_create_or_update() but I don't understand the parameters. I want to know how to remove and add a public IP to a existing VM. Would appreciate any help

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'Network - Virtual Network:0.42260206,Compute:0.41772202,Azure.Identity:0.038641464'

Hey @marcelo321 - thanks for your question! Tagging the right people so we can get your question addressed asap!
In the meantime, we have a sample here that might be helpful for you?
https://github.com/Azure-Samples/azure-samples-python-management/blob/main/samples/network/ip/manage_public_ip_address.py

Thanks @swathipil
I know that with az cli it is possible to do it like this:
Remove:
az network nic ip-config update \
          --resource-group $resourceGroupName --nic-name $nicName \
          --name $publicIpNameOnNic --remove PublicIpAddress

Add:
az network nic ip-config update \
          --name $publicIpNameOnNic \
          --nic-name $nicName \
          --resource-group  $resourceGroupName \
          --public-ip-address $publicIp

But I am completely lost on how to do it with python sdk

@swathipil Thanks for sharing the code.
@marcelo321 Please go through the below code if this helps to update your existing VM NIC with the new ip.
    SUBSCRIPTION_ID = os.environ.get("SUBSCRIPTION_ID", None)
    GROUP_NAME = "vm-resource-group"
    PUBLIC_IP_ADDRESS = "vm-ip"
    NEW_PUBLIC_IP_ADDRESS = "vm-ip-new"

    # Create client
    # For other authentication approaches, please see: https://pypi.org/project/azure-identity/
    resource_client = ResourceManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=SUBSCRIPTION_ID
    )
    network_client = NetworkManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=SUBSCRIPTION_ID
    )

    # Get NIC details
    # Obtain the management object for virtual machines
    compute_client = ComputeManagementClient(credential=DefaultAzureCredential(),subscription_id=SUBSCRIPTION_ID)
    vm_name = "sasharvm"

    # Get network details of the VM
    nic_name = compute_client.virtual_machines.get(GROUP_NAME,vm_name=vm_name).network_profile.network_interfaces[0].id.split('/')[-1];
    nic_group = compute_client.virtual_machines.get(GROUP_NAME,vm_name=vm_name).network_profile.network_interfaces[0].id.split('/')[-5];
    subnet_id = network_client.network_interfaces.get(nic_group, nic_name).ip_configurations[0].subnet.id;
    vm_location = compute_client.virtual_machines.get(GROUP_NAME,vm_name=vm_name).location;
    ip_config_list = network_client.network_interfaces.get(nic_group, nic_name).ip_configurations;

    # Add new public ip address
    new_public_ip_address = network_client.public_ip_addresses.begin_create_or_update(
        GROUP_NAME,
        NEW_PUBLIC_IP_ADDRESS,
        {
          "location": vm_location
        }
    ).result()
    print("Create public ip address:\n{}".format(new_public_ip_address))

    # Provision the network interface client with the new IP Address
    poller = network_client.network_interfaces.begin_create_or_update(GROUP_NAME,
        nic_name,
        {
            "location": vm_location,
            "ip_configurations": [ {
                "name": ip_config_list[0].name ,
                "subnet": { "id": subnet_id },
                "public_ip_address": {"id": new_public_ip_address.id }
            }]
        }
    )

    nic_result = poller.result()

    # Delete existing public ip address
    public_ip_address = network_client.public_ip_addresses.begin_delete(
        GROUP_NAME,
        PUBLIC_IP_ADDRESS
    ).result()
    print("Delete public ip address.\n")

Hi @SaurabhSharma-MSFT,
I almost got it, but I am facing this error:
In order to delete the public IP, disassociate/detach the Public IP address from the resource.
So I need the first part to detach the IP before deleting it.
Altought what I wanted in first place was detaching it and not deleting it, I think deleting it is also helpful (but I need the part of detaching it.)

@swathipil I am not being able to find this type of command to simply detach the ip in the link you shared or the docs

@marcelo321 The code which I have shared is run disassociates the old IP Address while executing network_client.network_interfaces.begin_create_or_update.  Also, please find the below the gif showing the same.

Is this not working for you ?
Thanks
Saurabh

Hey @SaurabhSharma-MSFT,
Yes now it works (I changed the code before). So this code is creating a new IP and associating it with the VM nic name, that automatically detaches the old publicIP and then deletes i.
I noticed that when this happens, the PublicIP stays the same value (in the few tests I did) but has the new publicIP that is created. I think this happens because the VM is never without a publicIP, it just changes the PublicIP name we give.
Would be possible to work with only one publicIP without creating a new one?
So I have VM1 with publicIP1, I want to detach that IP so the VM1 wouldn't have any attacked publicIP, and then I want to attach it again, that way the publicIP should change this time.
That would be exactly the same as running this 2 commands in azure cli:
az network nic ip-config update \
          --resource-group $resourceGroupName --nic-name $nicName \
          --name $publicIpNameOnNic --remove PublicIpAddress

az network nic ip-config update \
          --name $publicIpNameOnNic \
          --nic-name $nicName \
          --resource-group  $resourceGroupName \
          --public-ip-address $publicIp

Any idea if it is possible @SaurabhSharma-MSFT?

Hi, wanted to check again if someone can take a look please @SaurabhSharma-MSFT @swathipil

Hi @marcelo321, In the cli command you provided, you did not directly operate on the VM, but released a public IP and gave a new public IP in the network interfaces, and the corresponding SDK is network_client.network_interfaces.begin_create_or_update.
Hope this unblock you.
network_client.network_interfaces.begin_create_or_update(GROUP_NAME,
        nic_name,
        {
            "location": vm_location,
            "ip_configurations": [ {
                "name": ip_config_list[0].name ,
                "subnet": { "id": subnet_id },
            }]
        }
    )

network_client.network_interfaces.begin_create_or_update(GROUP_NAME,
        nic_name,
        {
            "location": vm_location,
            "ip_configurations": [ {
                "name": ip_config_list[0].name ,
                "subnet": { "id": subnet_id },
                "public_ip_address": {"id": new_public_ip_address.id }
            }]
        }
    )

Close this issue, because resolved. Due to the related dependency msrest has not been upgraded to the latest version.


doc: link auth design in doc

/cc @mitake @heyitsanthony

@heyitsanthony fixed. PTAL.

lgtm

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@e70c8ac). Click here to learn what that means.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master    #7611   +/-   ##
=========================================
  Coverage          ?   73.63%
=========================================
  Files             ?      325
  Lines             ?    26454
  Branches          ?        0
=========================================
  Hits              ?    19479
  Misses            ?     5508
  Partials          ?     1467

Impacted Files
Coverage Δ

proxy/grpcproxy/adapter/lease_client_adapter.go
100% <100%> (ø)

proxy/grpcproxy/adapter/chan_stream.go
55.12% <100%> (ø)

proxy/grpcproxy/adapter/watch_client_adapter.go
100% <100%> (ø)

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 e70c8ac...fded83f. Read the comment docs.

@xiang90 sorry for my late reply. The change seems good to me.


Update 184711c0-2ce4-ba6e-df56-1f7fdd60ab2c.md

Fix sample VBA code to make it work.

Hi @dazhang88, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (David Zhang (DE)). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

Thanks dazhang88  for fixing the formatting change. Sometimes during the conversion to our proprietary publishing system, these types of errors occur.
Office Scale Team


publish to npm

Hi there,
is there any plan to publish Rainbow on npm? If not would you consider it?
I have searched through issues and PRs looking for npm but couldn't find anything about it, so if I missed sorry about that. In case help is needed I can contribute on it if you like.
Cheers and thanks for making this tool.

Related: https://github.com/ccampbell/rainbow/issues/7

Rainbow is now availble on NPM!
https://www.npmjs.com/package/rainbow-code


update controller-gen

Signed-off-by: Kim Tsao<EMAIL_ADDRESS>Please specify the area for this PR
What does does this PR do / why we need it:
Which issue(s) this PR fixes:
Fixes #?
https://github.com/devfile/api/issues/1013
In addition to the changes mentioned in this comment, I had to update the controller-manager and kube-rbac-proxy sccs in order to fix the warning on openshift:
Warning: would violate PodSecurity "restricted:v1.24": allowPrivilegeEscalation != false (container "kube-rbac-proxy" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (containers "kube-rbac-proxy", "manager" must set securityContext.capabilities.drop=["ALL"]), seccompProfile (pod or containers "kube-rbac-proxy", "manager" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
PR acceptance criteria:

[ ] Test Coverage

Are your changes sufficiently tested, and are any applicable test cases added or updated to cover your changes?

[ ] Gosec scans

Fix all MEDIUM and higher findings and/or annotate a finding per gosec instructions: https://github.com/securego/gosec#annotating-code to address why a finding is not a security issue

Documentation

[ ] Does the registry operator documentation need to updated with your changes?

How to test changes / Special notes to the reviewer:

go mod tidy: go.mod file indicates go 1.18, but maximum supported version is 1.17 our integration tests need updating to support golang 1.18, we could cap it at 1.17 until this support is added.

/retest

/retest

/retest

Also updated a couple of dependencies related to upgrading the operator-sdk: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.25.0/