OTA Example/Documentation

It would be great to have some instructions/examples on how to implement OTA.
Probably the first step would be to build a partition table supporting two OTA partitions, like this:
# Name,   Type, SubType, Offset,   Size,     Flags
nvs,      data, nvs,     0x009000, 0x4000,
otadata,  data, ota,     0x00d000, 0x2000,
phy_init, data, phy,     0x00f000, 0x1000,
ota_0,    app,  ota_0,   0x010000, 0x180000,
ota_1,    app,  ota_1,   0x190000, 0x180000,

Then flash the esp using:
espflash /dev/ttyUSB0 target/xtensa-esp32-espidf/debug/example --partition-table partitions.csv

At this point, the initial software version would be flashed.
Then to installing the first update:
I know that I can export the firmware to a .bin file using:
    espflash save-image ESP32 target/xtensa-esp32-espidf/debug/example test.bin

But this would include the bootloader, right? But I don't want to reflash the bootloader. I only want to have the OTA partition. So how would I save an image with only one partition?
The next step is probably to call espflash write-bin-to-flash? But using which arguments and how would one specify to only write to the OTA partition?

You might have a look at my project https://github.com/taunusflieger/anemometer. I have an ota implementation based on esp-idf and scripts which create the application image without the boot loader.

@taunusflieger thanks! That's actually very helpful.
But you use cargo espflash save-image --release ESP32-S3 --flash-size 2MB ./bin/firmware-$version.bin (https://github.com/taunusflieger/anemometer/blob/master/create-ota-img.sh) to create an OTA image. But if I read the code right, this would include the bootloader.

You might be right, but if you are I would not understand why you would create the image without the bootloader. This image gets written into one of the two OTA partitions. The boot process picks up one of the two partitions and loads the image from there. That works with the solution. So either it does not contain the boot loader and it is not required or it contains the boot loader as it is required. Why then would you want to create the image without a boot loader?

Any update on this? It looks like there's still not a way to get a binary I can use for OTA updates.

From looking at other issues/comments, it seems like the tool always puts the binary in the first app partition? Is that something I can actually rely on? It doesn't seem to be documented anywhere. If so, I think I'll just have to produce a full sized binary, manually parse the partition table, manually slice it out, and hope for the best...

https://github.com/DaneSlattery/esp-ota for anyone curious, you could yoink the documentation and examples from here

Also updating that I ended up doing the manual approach with a little python script: https://github.com/dragazo/netsblox-vm-esp32/blob/master/extract-ota.py
I still think this should just be a feature of this tool, though. But I'll admit I haven't looked recently - I was just reminded of this when I got a comment ping and thought I'd at least post my solution from way back.


[cli] Fix typos

I do not think that this PR requires an issue, but if you prefer, I can create it ?

The lint failure is not related to the changes.
(The release 1.63 bring a new lint
https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq )


Audio not working in Webonary

You can get to this page, https://www.webonary.org/obulom/browse/browse-vernacular/. Click on the Audio icons. No sound.

If this is caused by uploading an incompatible audio file type, Jason reports that this will be resolved in the next FLEX release. Reference Github Combine Issue #623

Confirmed that the upload zip file does not contain any audio files. Marking it as a FLex issue.

Jason: to resolve this, we need to notify him of the file format (e.g. .ogg) of the audio files. He will then add it to the list of supported audio formats in FLEX.

Jason: to resolve this, we need to notify him of the file format (e.g. .ogg) of the audio files. He will then add it to the list of supported audio formats in FLEX.
We need to:

Notify Jason of the audio file format.
After a new build is released, test and confirm this has solved the problem.

Need to re-upload with the latest FLEX version.

This database has been uploaded successfully from Windows FLEx 9.1 and the audio files work (https://www.webonary.org/soskundi/browse/browse-vernacular-english/). So this remains a Linux upload problem.

Have Anita send an email to the compiler of the Obulum Webonary site to ask to re-upload to check the audio files.

The compiler of the Obulum Webonary site had a crashed computer and was not able to re-upload.


Support of SPM

Hi,
Do you plan to support the swift package manager ?

Yes, I'd love to, but I won't have the time to do it myself for a while. If somebody (you?) want to work on a PR I'd certainly welcome that!

Ok, I will try do it.

I've started doing some work for this on https://github.com/Thomvis/BrightFutures/tree/swift-3.0. It was a bit of a painful process and it's not yet done. We need a new Result release as well.

I just submitted https://github.com/mxcl/PromiseKit/pull/425 for PromiseKit. I could certainly do the same for BrightFutures, especially if you are trying to support Swift 3 early. I'd like to use some sort of promise/futures library for https://github.com/TheArtOfEngineering/Edge.

Hi @TheArtOfEngineering. Thanks for showing interest in the project. I already have a Package.swift on the swift-3.0 branch and swift build runs successfully. Can you use that as a starting point and suggest changes if needed? Thanks!

Hi Thomas! What is the status on this? I cannot find a Package.swift in master, nor in the swift3.0 branch.

@wvteijlingen I restarted the Swift 3 migration after my previous comment on this issue and did not include a Package.swift in that effort. The fastest way to get this in would be to submit a PR. Let me know if you're interested in that / need help. Thanks!

Unless BrightFutures has some special build process that I'm not aware of, I think it's just as easy as renaming the "BrightFutures" dir to "Sources" and creating a Package.swift containing:
import PackageDescription

let package = Package(
    name: "BrightFutures",
    dependencies: [
        .Package(url: "https://github.com/antitypical/Result.git", majorVersion: 3),
    ]
)

I'll see if I can get around to creating a PR for this tomorrow.


[improve][client] Change the get lastMessageId to debug level

Motivation
When using RawReader to read the topic, the getLastMessageId continues to print to the logs, change it to the debug level to avoid printing it too much.
Modifications

Verifying this change

[ ] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:
If the box was checked, please highlight the changes

[ ] Dependencies (add or upgrade a dependency)
[ ] The public API
[ ] The schema
[ ] The default values of configurations
[ ] The threading model
[ ] The binary protocol
[ ] The REST endpoints
[ ] The admin CLI options
[ ] Anything that affects deployment

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Matching PR in forked repository
PR in forked repository: https://github.com/zymap/pulsar/pull/42

Good catch !

/pulsarbot run-failure-checks

Codecov Report

Merging #18421 (c3a57c4) into master (b31c5a6) will decrease coverage by 10.47%.
The diff coverage is 4.00%.

@@              Coverage Diff              @@
##             master   #18421       +/-   ##
=============================================
- Coverage     46.98%   36.51%   -10.48%
+ Complexity    10343     1932     -8411
=============================================
  Files           692      208      -484
  Lines         67766    14385    -53381
  Branches       7259     1572     -5687
=============================================
- Hits          31842     5252    -26590
+ Misses        32344     8554    -23790
+ Partials       3580      579     -3001

Flag
Coverage Δ

unittests
36.51% <4.00%> (-10.48%)
:arrow_down:

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

Impacted Files
Coverage Δ

.../java/org/apache/pulsar/client/impl/ClientCnx.java
30.16% <ø> (ø)

...a/org/apache/pulsar/client/impl/TableViewImpl.java
0.00% <0.00%> (ø)

...ar/client/impl/conf/ProducerConfigurationData.java
84.70% <ø> (-0.18%)
:arrow_down:

...va/org/apache/pulsar/client/impl/ConsumerImpl.java
15.07% <7.69%> (+0.03%)
:arrow_up:

...he/pulsar/client/impl/PartitionedProducerImpl.java
30.34% <0.00%> (-5.13%)
:arrow_down:

.../pulsar/client/impl/ProducerStatsRecorderImpl.java
84.04% <0.00%> (-0.62%)
:arrow_down:

...va/org/apache/pulsar/client/impl/ProducerImpl.java
16.43% <0.00%> (-0.59%)
:arrow_down:

...va/org/apache/pulsar/broker/service/ServerCnx.java

...nsaction/buffer/impl/TransactionBufferDisable.java

...er/impl/SingleSnapshotAbortedTxnProcessorImpl.java

... and 484 more


Heap-use-after-free in sctp_handle_forward_tsn

Found while fuzzing, can reproduce with master.
==2134458==ERROR: AddressSanitizer: heap-use-after-free on address 0x60e000000188 at pc 0x0000007a0e6c bp 0x7ffd6311a290 sp 0x7ffd6311a288
READ of size 8 at 0x60e000000188 thread T0
    #0 0x7a0e6b in sctp_handle_forward_tsn /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_indata.c
    #1 0x503bfa in sctp_process_control /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_input.c:5595:5
    #2 0x4fcd23 in sctp_common_input_processing /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_input.c:5933:10
    #3 0x4ed23d in usrsctp_conninput /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/user_socket.c:3342:2
    #4 0x4d13eb in main /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new.c:192:3
    #5 0x7f88b3e7ccc9 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26cc9)
    #6 0x429419 in _start (/usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new+0x429419)

0x60e000000188 is located 104 bytes inside of 152-byte region [0x60e000000120,0x60e0000001b8)
freed by thread T0 here:
    #0 0x4a109d in free (/usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new+0x4a109d)
    #1 0x7a438a in sctp_flush_reassm_for_str_seq /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_indata.c:5542:3
    #2 0x79ee2e in sctp_handle_forward_tsn /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_indata.c:5728:7
    #3 0x503bfa in sctp_process_control /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_input.c:5595:5
    #4 0x4fcd23 in sctp_common_input_processing /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_input.c:5933:10
    #5 0x4ed23d in usrsctp_conninput /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/user_socket.c:3342:2
    #6 0x4d13eb in main /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new.c:192:3
    #7 0x7f88b3e7ccc9 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26cc9)

previously allocated by thread T0 here:
    #0 0x4a131d in malloc (/usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new+0x4a131d)
    #1 0x776b51 in sctp_process_a_data_chunk /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_indata.c:2105:3
    #2 0x771b6e in sctp_process_data /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_indata.c:2808:8
    #3 0x4fdaff in sctp_common_input_processing /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/netinet/sctp_input.c:6098:12
    #4 0x4ed23d in usrsctp_conninput /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/usrsctplib/user_socket.c:3342:2
    #5 0x4d1347 in main /usr/local/google/home/deadbeef/usrsctp_fuzzer_repro/repro/repro_new.c:185:3
    #6 0x7f88b3e7ccc9 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26cc9)

Full output from repro program:
[S][0.000] vrf_id 0x0: adding address: [S][0.000] AF_CONN address: 0x1
[P]usrsctp initialized
[S][0.000] Timer type 7 started: ticks=3600000, inp=0x619000000080, stcb=(nil), net=(nil).
[S][0.000] SCTP: add HMAC id 1 to list
[S][0.000] SCTP: added chunk 193 (0xc1) to Auth list
[S][0.000] SCTP: added chunk 128 (0x80) to Auth list
[S][0.000] Bind called port: 5000
[S][0.000] Addr: [S][0.000] IPv4 address: <IP_ADDRESS>:5000
[S][0.000] Main hash to bind at head:0x625000000198, bound port:5000 - in tcp_pool=0
[P]Calling usrsctp_connect()
[S][0.000] Allocate an association for peer:[S][0.000] AF_CONN address: 0x1
[S][0.000] Port:5001
[S][0.000] Adding an address (from:1) to the peer: [S][0.000] AF_CONN address: 0x1
[S][0.001] Association 0x61d000000a80 now allocated
[S][0.001] Sending INIT
[S][0.001] Timer type 2 started: ticks=3000, inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.

[S][0.002] moving to COOKIE-ECHOED state
[S][0.002] Timer type 6 started: ticks=1000, inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.
[S][0.002] Leaving handle-init-ack end
[S][0.002] Timer type 6 already running: inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.

O 00:19:02.513308 0000 13 88 13 89 23 ff b5 ff 00 00 00 00 0a 00 00 27 00 ff ff 00 03 00 00 00 2e 00 00 00 17 00 04 80 00 80 04 40 80 00 04 80 07 00 00 c6 9d 43 5f 00 80 20 00 00 # SCTP_PACKET
[S][0.002] m-c-o put out 0
[S][0.002] Ok, we have put out 0 chunks
[S][0.002] Check for chunk output prw:-16465665 tqe:0 tf=0
[S][0.002] Calling chunk OUTPUT
[S][0.002] m-c-o put out 0
[S][0.002] Ok, we have put out 0 chunks
[S][0.002] chunk OUTPUT returns
[P]Injecting 3rd packet

I 00:19:02.513427 0000 13 89 13 88 b7 0d 32 66 00 00 00 00 00 10 00 11 00 00 00 00 00 00 ff fd 80 00 32 04 00 64 00 00 # SCTP_PACKET
[S][0.002] Ok, Common input processing called, m:0x611000001300 iphlen:0 offset:12 length:32 stcb:0x61d000000a80
[S][0.002] stcb:0x61d000000a80 state:4
[S][0.002] sctp_handle_cookie_ack: handling COOKIE-ACK
[S][0.002] Timer type 6 stopped: inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.
[S][0.002] moving to OPEN state
[S][0.002] Timer type 8 started: ticks=600000, inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.
[S][0.002] Timer type 5 started: ticks=30613, inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.
[S][0.002] Timer type 5 already running: inp=0x619000000080, stcb=0x61d000000a80, net=0x616000000680.
[S][0.002] chunk_flags:0x10 look for control on queues (nil)
[S][0.002] chunk_flags: 0x10 ordered: 1 MID: 65533 control: 0x60e000000120
[S][0.002] Building ck: 0x60e000000040 for control: 0x60e000000120 to be read (MID: 65533)
[S][0.002] Queue data to stream for reasm control: 0x60e000000120 MID: 65533
[S][0.002] chunk is a not first fsn: 0 needs to be inserted
[S][0.002] Inserting at tail of list fsn: 0
[S][0.002] Looking at control: 0x60e000000120 e(0) ssn: 65533 top_fsn: 0 inc_fsn:<PHONE_NUMBER> (nxtdel: 0)- o
[S][0.002] Timer type 3 not stopped: inp=0x619000000080, stcb=0x61d000000a80, net=(nil).
[S][0.003] Check for chunk output prw:-16465665 tqe:0 tf=0
[S][0.003] Calling chunk OUTPUT

O 00:19:02.513770 0000 13 88 13 89 23 ff b5 ff 00 00 00 00 03 00 00 14 ff ff fd 34 00 01 fd ff 00 01 00 00 02 cc 02 cc # SCTP_PACKET
[S][0.003] m-c-o put out 1
[S][0.003] Ok, we have put out 1 chunks
[S][0.003] chunk OUTPUT returns
[P]Injecting 4th packet

I 00:19:02.513852 0000 13 89 13 88 b7 0d 32 66 00 00 00 00 c0 ff 00 0c 00 00 00 00 00 00 53 eb # SCTP_PACKET
[S][0.003] Ok, Common input processing called, m:0x611000001800 iphlen:0 offset:12 length:24 stcb:0x61d000000a80
[S][0.003] stcb:0x61d000000a80 state:8
[S][0.003] sctp_process_control: iphlen=0, offset=12, length=24 stcb:0x61d000000a80
[S][0.003] sctp_process_control: processing a chunk type=192, len=12
[S][0.003] FORWARD_TSN

Will link to repro program in a bit.

Build using:
cmake -DCMAKE_C_COMPILER=/usr/bin/clang-8 -Dsctp_build_repro=1 -Dsctp_sanitizer_address=1 -Dsctp_debug=1 .

Bisected to determine this was introduced by https://github.com/sctplab/usrsctp/commit/b10a5d3b26e94320232dbdf269873497f8f7cff1.
The issue occurs here:
TAILQ_FOREACH(control, &strm->inqueue, next_instrm) {
	if (SCTP_MID_GE(asoc->idata_supported, mid, control->mid)) {
		sctp_flush_reassm_for_str_seq(stcb, asoc, strm, control, ordered, new_cum_tsn);
	}
}

sctp_flush_reassm_for_str_seq may free control, resulting in a UAF when dereferencing control->next_instrm.

Thanks for reporting an narrowing it down. I will have a look...

Fixed in https://github.com/sctplab/usrsctp/commit/914095020d7c9d50f074d4d22ffd70b6b8046d6f.


chore: bdd-sbhg-1583571526 to 0.0.1

chore: Promote bdd-sbhg-1583571526 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Change CLI file parsing errors to use an error code

Description of the Change
After the implementations of https://github.com/mochajs/mocha/pull/3467 and https://github.com/mochajs/mocha/pull/3666 and https://github.com/mochajs/mocha/pull/4464, there are a few instances in the code that do not use error codes yet.
Alternate Designs
Open to other names for this error code
Why should this be in core?
Using codes is a best practice like in Node.js, codes help identify errors as mocha errors at a glance
Benefits
Using codes is a best practice like in Node.js, codes help identify errors as mocha errors at a glance
Possible Drawbacks
None I'm aware of
Applicable issues
Contributes to https://github.com/mochajs/mocha/issues/3656, semver-minor

Coverage increased (+0.01%) to 94.07% when pulling 15b5f4b93b2656e96ce4c37db504243641cc8de5 on evaline-ju:issue/codes-3656-2 into b1f26e2955211003bdf1fd3f445a5c39c1235a81 on mochajs:master.

There's a conflict in lib/errors.js because I added a TIMEOUT error... should be able to just use both sets of changes

in case anyone else was wondering, I think "unparsable" is correct and "unparseable" is not.  my spell checker dislikes both 😄

I'm not really sure if there is/was a temporary problem with the browser tests since I saw at least another PR with the same failure. At the same time, I don't know how to just re-run the test. 🤔

hmm.  I'll look into that error.  some saucelabs weirdness.. hope it's just temporary.
this seems to have a conflict now--could you please rebase onto master?

hmm I'm not seeing a conflict currently, after I rebased 2 days ago?

After a long hiatus I have tried to formally rebase - looks like the browser test on forked PRs problem is known

You can ignore the browser test. We are working on #4553 .


GH-40693: [Go] Fix Decimal type precision loss on GetOneForMarshal

Rationale for this change
Loss of precision when using GetOneForMarshal on Decimal128 and Decimal256
What changes are included in this PR?
Fixes for precision loss with DecimalType.GetOneForMarshal

GitHub Issue: #40693

This seems to work:
	typ := a.DataType().(*arrow.Decimal256Type)
	f := (&big.Float{}).SetInt(a.Value(i).BigInt())
	scale := big.NewInt(10)
	scale.Exp(scale, big.NewInt(int64(typ.Scale)), nil)
	f.Quo(f, new(big.Float).SetInt(scale))
	return f.Text('f', int(typ.Scale))
	// return f.Text('g', int(typ.Precision))

But the f format is not what the tests expect... with g it results in further floaty errors, as in 0.99000000000000000000000000827180612553027674871409 or<PHONE_NUMBER>.1234567889999999999999999938549877259069

@hermanschaaf Came through and fixed these 🥇

@zeroshade PTAL when you have a chance? Thanks!


Remove Append partitioning sections in documentation

We are planning to support hash-partitioned use-cases, so we should remove all references to Append partitioning from Documentation.

In docs meeting we decided to move append information to a special low-priority section, possibly not in the table of contents but available for reference during technical support.


feat(aws-kinesisstreams-kinesisfirehose-s3): added loggingBucketProps and logS3AccessLogs

Issue #485 , if available:
Description of changes:
-Added logS3AccessLogs and LoggingBucket props
-Created integ and unit tests for logging bucket
-Added pattern prop S3BucketInterface
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: fe76e48ff6976e9581179736d95422e6789e5e29
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v1
Commit ID: fe76e48ff6976e9581179736d95422e6789e5e29
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v2
Commit ID: a0adb39d454585b8c9166d1b13a052485fadd883
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: githubautobuild-for-cdk-v1
Commit ID: a0adb39d454585b8c9166d1b13a052485fadd883
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Implement touch support for designer drag-and-drop

Make sure that touches select the components
Implement drag-and-drop to reorder components
Closes #1020
Author: Evan W. Patton<EMAIL_ADDRESS>Change-Id: If33b569dbf76d08df411185e0efac546df253409

The initial work was done by Grace Yu, a student of @ram8647. I implemented touch to reorder the components and logic to ensure that the component is selected when a drag occurs. It would be good for someone else to review the full set of changes.

Deferred to the next non components release.


Parameter name is incorrect

In above,
there is parameter "Secret" to pass to deploy u-sql database deployment using command-line, but it is not correct
If we pass using "-Secret" will not work..correct this to "-Secrete" instead of "-Secret"
Regards,
Dipti Mamidala

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

ID: 3c4f5005-badf-be90-53d2-43caaf3f75c4
Version Independent ID: 40319ba7-072b-5984-cb88-36a733161ba8
Content: How to set up a CI/CD pipeline for Azure Data Lake Analytics
Content Source: articles/data-lake-analytics/data-lake-analytics-cicd-overview.md
Service: data-lake-analytics
GitHub Login: @yanancai
Microsoft Alias: yanacai

@dipti927 Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Hello, i have tried the above to deploy u-sql database project and it was working fine  2 months back.. and today morning when i tried to execute this... i am getting the below error
Deployment failed with Could not load file or assembly 'Microsoft.Rest.ClientRuntime, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Can you please let me know what is wrong here?

I have used the same U-SQL SDK and Azure SDK dependencies which is mentioned in the article..
Version of U-SQL SDLK is Microsoft.Azure.DataLake.USQL.SDK.1.3.180615build
its downloading the below packages
Microsoft.Azure.Management.DataLake.Analytics.3.5.1-preview
Microsoft.Azure.Management.DataLake.Store.2.4.1-preview
Microsoft.Rest.ClientRuntime.2.3.11
Microsoft.Rest.ClientRuntime.Azure.3.3.7
Microsoft.Rest.ClientRuntime.Azure.Authentication.2.3.3
Microsoft.IdentityModel.Clients.ActiveDirectory.2.28.3
Let me know if you need any other information.
Regards,
Dipti Mamidala

@yanancai , any updates on this?

My understanding is the assemblies were not found in the search path.   Have you added the "-AzureSDKPath" option to point to where the Azure SDK files are located ?
One way to find out the root cause is to use:  https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer


Added a way to specify the ngrok region via environment variables

Hey @wernight, can you merge this please? 😄

Thanks, merged.


[ISSUE 7265] Doc: Adding how to debug in Idea document

Which Issue(s) This PR Fixes

Fixes #7265
Brief Description
Adding how to debug rocketmq in Idea document

How Did You Test This Change?
no need to test

Codecov Report

Merging #7266 (94bfb48) into develop (5f6dc90) will increase coverage by 0.05%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             develop    #7266      +/-   ##
=============================================
+ Coverage      42.61%   42.66%   +0.05%
- Complexity      9415     9421       +6
=============================================
  Files           1152     1152
  Lines          82355    82355
  Branches       10723    10723
=============================================
+ Hits           35093    35137      +44
+ Misses         42886    42844      -42
+ Partials        4376     4374       -2

see 13 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@RongtongJin @ShannonDing Hi, could you please review this pr? Thanks a lot :)

也来个英语版？

Good idea! I will work on it these days

也来个英语版？

done!

@xdkxlk hi, could you please review this pr :)

ping @lizhimins @RongtongJin


Theme Variation with StyleBoxTexture returns wrong type

Godot version
4.0.dev (14e1f36e61)
System information
Windows 10
Issue description
When trying to access a theme variation using a StyleBoxTexture, it returns a node of type StyleBoxFlat

Steps to reproduce
Run the MRP. View the output.
Minimal reproduction project
ThemeBug.zip

You should use get_theme_stylebox("panel", "PanelContainerAlt").

The method should probably return an empty ref when called with invalid arguments?

Ah, you're right. The documentation is a little fuzzy on this. It just says the parameters are StringName name, StringName theme_type="", but doesn't give any descriptive examples, so my assumption was that name was the name I gave it ("PanelContainerAlt"), when it's really the name Godot assigns it in the theme dock:

and the theme_type is the name you give the theme variation.
I'll close this as user error, but I may make a PR to flesh out the documentation.


Approaches to running Node on Android

Hi,
This is just a FYI, feel free to close.
I just found your project after I created a SO question on pro's / con's of different approaches: : Compiling NodeJS as native library on Android
I am not familiar to the native linking, compiling techniques in bringing Node to android, so find it hard to choose between options, but your project looks like it is exactly what I am looking for! Thank you.
PS I updated the SO question with react-native-node link.

Thanks for letting us know.

PS You are on the oldest node version of the candidates I found. You planning to upgrade?

PS2 I received an answer by the NodeBase creator on which you are based: answer


add documentation for the Zulip's architecture

Add a documentation to describe the generable file structure based on Zulip's architecture
The Zulip project’s codebase seems large, and it could be intimidating for new learners to navigate among the directories and files. As a new contributor, I found it challenging to relate the codebase with the project’s architecture.
Understanding technologies involved in an open source project helps new contributors know if this is the right project to get involved in. This knowledge then can be applied to the project’s codebase so that contributors gain a whole picture of file organizations and which directories new developers can look into when they desire to participate. Furthermore, by learning the software’s architecture, contributors can learn its strengths and weaknesses, which can be used to propose possible improvements.
By explaining the technologies and related file organization, hopefully, new developers confidently join, learn, and contribute to Zulip's chat project.

@vnhanai Please clean up your PR to remove unrelated commits if you would like your proposed changes to be reviewed. Thanks!

Thanks for working on documenting Zulip!
It's not obvious to me how this would be preferable https://zulip.readthedocs.io/en/latest/overview/directory-structure.html, which is more precisely written from the context of someone deeply familiar with Zulip, and tries to avoid unimportant details that would make it so long nobody will read.
I think I'd prefer to see proposed tweaks to that page (say, details you felt are important but are missing) over adding a semi-duplicate of that page as this PR does.
Such proposals are probably best done in the form of a thread in #documentation on chat.zulip.org explaining your goals; that can really help avoid wasted effort. I'd love to see you write up your thoughts there! I'm going to close this PR, though, since I don't see us merging it without substantial reworking, and doing so will make it easier to review more targeted work you may do in this direction.


Darrick dev

tl_detector.py and tl_classifier.py are changed
SSD model for sim data, not real data

Hi @darrickz,
We are closing out the issue because there are no enhancements proposed here and you have submitted your own project.
Thank you.


[release-1.4] add passthrough filter chain support for v1beta1 authorization policy

Cherrypick https://github.com/istio/istio/pull/18207, For #12394

https://github.com/istio/istio/pull/18409
Not sure why the label didn' work, I will investigate

Thanks!


Fix-RTE was not initialised when it is mounted 2nd time

Description
Remove RTE instance from tinymce editor instances when component is unmounted. Tinymce internally keeps a list of editors initialized. And we need to remove editor from that list when component is unmounted.
Fixes #785
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Manually tested that RTE is initialised every time a page is loaded.

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

@vicky-primathon I see some tests failing

Duplicate of #690. @Nikhil-Nandagopal Please close the one you find inappropriate.


MissionRaw upload results in ' UNSUPPORTED'

I'm currently attempting to use the orbit feature of MAVSDK with the mission_raw command. The result of the following code outputs the following error:
'mavsdk.mission_raw.MissionRawError: UNSUPPORTED: 'Unsupported''
I was hoping for some guidance on using the raw mission command as it would be beneficial for my work.
Thanks for your help!
`
import asyncio
from mavsdk import System
from mavsdk.mission_raw import MissionItem
from mavsdk import mission_raw
MAV_CMD_DO_ORBIT = 34
ORBIT_YAW_BEHAVIOUR = 0
MAV_MISSION_TYPE_MISSION = 0
MAV_FRAME_MISSION = 2
async def run():
drone = System()
await drone.connect()
print("Waiting for drone to connect...")
async for state in drone.core.connection_state():
    if state.is_connected:
        print(f"Drone discovered with UUID: {state.uuid}")
        break

print_mission_progress_task = asyncio.ensure_future(print_mission_progress(drone))

running_tasks = [print_mission_progress_task]
termination_task = asyncio.ensure_future(observe_is_in_air(drone, running_tasks))

mission_items = []
mission_items.append(MissionItem(0,#Seq
                                 MAV_FRAME_MISSION,#frame
                                 MAV_CMD_DO_ORBIT,#command
                                 1,#current
                                 0,#autocontinue
                                 5.0,#param1
                                 float('nan'),#param2
                                 ORBIT_YAW_BEHAVIOUR,#param3
                                 0,#param4
                                 1,#x float('nan') Using the nan results in error.The documenation for orbit states:'NaN: Use current vehicle position or current center if already orbiting.'
								 1,#y float('nan')
								 25.0,#z
								 MAV_MISSION_TYPE_MISSION))

print("-- Uploading mission")
await drone.mission_raw.upload_mission(mission_items)

print("-- Arming")
await drone.action.arm()

print("-- Starting mission")
await drone.mission_raw.start_mission()

await termination_task

async def print_mission_progress(drone):
async for mission_progress in drone.mission_raw.missionProgress():
print(f"Mission progress: "
f"{mission_progress.current}/"
f"{mission_progress.total}")
async def observe_is_in_air(drone, running_tasks):
""" Monitors whether the drone is flying or not and
returns after landing """
was_in_air = False

async for is_in_air in drone.telemetry.in_air():
    if is_in_air:
        was_in_air = is_in_air

    if was_in_air and not is_in_air:
        for task in running_tasks:
            task.cancel()
            try:
                await task
            except asyncio.CancelledError:
                pass
        await asyncio.get_event_loop().shutdown_asyncgens()

        return

if name == "main":
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
`

Orbit can't be part of a mission (yet).

Orbit can't be part of a mission (yet).

Is there any other way to execute the command currently?
Thanks!

Is there any other way to execute the command currently?
Thanks!

@dayjaby: thanks for the insights! Do you mean that MAV_CMD_DO_ORBIT is not supported by PX4 in mission mode, is that right?
But then does the command work when not in mission mode? I have never used orbit, but whatever is supported by PX4, we should be able to add to MAVSDK :+1:.

@dayjaby: thanks for the insights! Do you mean that MAV_CMD_DO_ORBIT is not supported by PX4 in mission mode, is that right?
But then does the command work when not in mission mode? I have never used orbit, but whatever is supported by PX4, we should be able to add to MAVSDK :+1:.

MISSIONRAW was the only location in the API reference that I could find for inputting a not already predefined action. So I have not tested the action in any other way besides the mission format.

MISSIONRAW was the only location in the API reference that I could find for inputting a not already predefined action. So I have not tested the action in any other way besides the mission format.

@JonasVautherin yes, in PX4 it is only supported as standalone command. PX4 goes into a special flight mode for orbit, which is is semi-automatic (depends quite a bit on the exact version of PX4 as there is ongoing development). Is the sending of a simple COMMAND_LONG documented somewhere for MAVSDK? I couldn't find any documents.

@JonasVautherin yes, in PX4 it is only supported as standalone command. PX4 goes into a special flight mode for orbit, which is is semi-automatic (depends quite a bit on the exact version of PX4 as there is ongoing development). Is the sending of a simple COMMAND_LONG documented somewhere for MAVSDK? I couldn't find any documents.

Right, thanks @dayjaby for the insights! :blush:
This means that it cannot go through the mission_raw plugin, and the mavlink_passthrough plugin is unfortunately only available in C++. I would suggest @DoppleGangster contributes that as a feature to MAVSDK-C++, such that it then automatically propagates to the language bindings (including MAVSDK-Python).
For instance, it could be action.orbit(...) in the action plugin, or if there is a more complex API around the orbit mode, it could even become an orbit plugin. Really open to the discussion here, and happy to give guidance if @DoppleGangster wants to try contributing it. Just let me know, I won't spend time describing the steps to follow if nobody is interested :see_no_evil: :smile:.

Right, thanks @dayjaby for the insights! :blush:
This means that it cannot go through the mission_raw plugin, and the mavlink_passthrough plugin is unfortunately only available in C++. I would suggest @DoppleGangster contributes that as a feature to MAVSDK-C++, such that it then automatically propagates to the language bindings (including MAVSDK-Python).
For instance, it could be action.orbit(...) in the action plugin, or if there is a more complex API around the orbit mode, it could even become an orbit plugin. Really open to the discussion here, and happy to give guidance if @DoppleGangster wants to try contributing it. Just let me know, I won't spend time describing the steps to follow if nobody is interested :see_no_evil: :smile:.

(Note: I tried to show the process in a 20-minutes live session during the last devsummit, that may be a starting point)

(Note: I tried to show the process in a 20-minutes live session during the last devsummit, that may be a starting point)

Watched the video and seems straight forward enough. I'll give it a go and try and implement orbit as an action. Assuming I don't run into issues I'll contribute my changes.
Thanks for the responses.

Watched the video and seems straight forward enough. I'll give it a go and try and implement orbit as an action. Assuming I don't run into issues I'll contribute my changes.
Thanks for the responses.

@JonasVautherin after following the video and attempting to compile I get the following error:
/home/drone1/Documents/MAVSDK/src/mavsdk_server/test/../src/plugins/action/action_service_impl.h:323:31: error: ‘class testing::NiceMockmavsdk::testing::MockAction’ has no member named ‘do_orbit’
323 |         auto result = _action.do_orbit(request->radius_m(), request->velocity_ms(), request->yaw_behavior(), request->latitude_x(), request->longitude_y(), request->altitude_z());
Is there another step that I may have missed or perhaps I implemented one of the steps incorrectly?
Thanks for your help.

@JonasVautherin after following the video and attempting to compile I get the following error:
/home/drone1/Documents/MAVSDK/src/mavsdk_server/test/../src/plugins/action/action_service_impl.h:323:31: error: ‘class testing::NiceMockmavsdk::testing::MockAction’ has no member named ‘do_orbit’
323 |         auto result = _action.do_orbit(request->radius_m(), request->velocity_ms(), request->yaw_behavior(), request->latitude_x(), request->longitude_y(), request->altitude_z());
Is there another step that I may have missed or perhaps I implemented one of the steps incorrectly?
Thanks for your help.

Yes, it needs to be mocked here.
Something like (I just wrote types randomly, they have to correspond to your do_orbit prototype, but you get the idea):
MOCK_CONST_METHOD6(do_orbit, Action::Result(double, double, YawBehavior, double, double, double)){};

Yes, it needs to be mocked here.
Something like (I just wrote types randomly, they have to correspond to your do_orbit prototype, but you get the idea):
MOCK_CONST_METHOD6(do_orbit, Action::Result(double, double, YawBehavior, double, double, double)){};

Awesome that did the trick. Hopefully I get a chance to test the command today.
Thanks again!

Awesome that did the trick. Hopefully I get a chance to test the command today.
Thanks again!

Alright next question. Is there a way to regenerate the python wrapper with my local build of MAVSDK?

Alright next question. Is there a way to regenerate the python wrapper with my local build of MAVSDK?

The link between both repositories (mavlink/mavsdk and mavlink/mavsdk-python) is the proto submodule (mavlink/mavsdk-proto). I gather you already modified it in mavlink/mavsdk. You need to propagate those changes into your clone of mavlink/mavsdk-python. Either by copying mavsdk/proto to mavsdk-python/proto, or by making your mavsdk-python clone point to your fork of mavsdk-proto.
Then, you can generate the python wrapper with ./other/tools/run_protoc.sh.
Let me try to give an example, because I understand it may be a bit confusing :sweat_smile:.
Example
Say you have DoppleGangster/mavsdk in /tmp/mavsdk and DoppleGangster/mavsdk-python in /tmp/mavsdk-python.
cd /tmp/mavsdk-python

# Synchronize proto/ between both clones
rm -rf proto
cp -r /tmp/mavsdk/proto .

# Generate the python bindings in a venv
python3 -m venv venv
pip install protoc-gen-mavsdk
./other/tools/run_protoc.sh

To go further, note that cp the proto changes is not exactly the nicest way. Actually, you will need to make a fork of mavlink/mavsdk-proto and make a PR with your changes. Your fork will be DoppleGangster/mavsdk-proto, and both your clones DoppleGangster/mavsdk and DoppleGangster/mavsdk-python could point to that fork, such that they can access your changes. But that's not needed, cp will work just fine.

The link between both repositories (mavlink/mavsdk and mavlink/mavsdk-python) is the proto submodule (mavlink/mavsdk-proto). I gather you already modified it in mavlink/mavsdk. You need to propagate those changes into your clone of mavlink/mavsdk-python. Either by copying mavsdk/proto to mavsdk-python/proto, or by making your mavsdk-python clone point to your fork of mavsdk-proto.
Then, you can generate the python wrapper with ./other/tools/run_protoc.sh.
Let me try to give an example, because I understand it may be a bit confusing :sweat_smile:.
Example
Say you have DoppleGangster/mavsdk in /tmp/mavsdk and DoppleGangster/mavsdk-python in /tmp/mavsdk-python.
cd /tmp/mavsdk-python

# Synchronize proto/ between both clones
rm -rf proto
cp -r /tmp/mavsdk/proto .

# Generate the python bindings in a venv
python3 -m venv venv
pip install protoc-gen-mavsdk
./other/tools/run_protoc.sh

To go further, note that cp the proto changes is not exactly the nicest way. Actually, you will need to make a fork of mavlink/mavsdk-proto and make a PR with your changes. Your fork will be DoppleGangster/mavsdk-proto, and both your clones DoppleGangster/mavsdk and DoppleGangster/mavsdk-python could point to that fork, such that they can access your changes. But that's not needed, cp will work just fine.

@JonasVautherin great makes sense! Hopefully I'll get some time later this week to continue testing.
Really appreciate your responses.

@JonasVautherin great makes sense! Hopefully I'll get some time later this week to continue testing.
Really appreciate your responses.

When attempting to run the action I get an error that the status is unimplemented. Is this indicating that the orbit command from MAVSDK is not currently a functional command?
Below is the error:
response = await self._stub.DoOrbit(request)
File "/home/drone1/Documents/MAVSDK/venv/lib/python3.8/site-packages/aiogrpc/channel.py", line 40, in call
return await fut
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.UNIMPLEMENTED
details = ""
debug_error_string = "{"created":"@1611455209.308076891","description":"Error received from peer ipv6:[::1]:50051","file":"src/core/lib/surface/call.cc","file_line":1067,"grpc_message":"","grpc_status":12}"

When attempting to run the action I get an error that the status is unimplemented. Is this indicating that the orbit command from MAVSDK is not currently a functional command?
Below is the error:
response = await self._stub.DoOrbit(request)
File "/home/drone1/Documents/MAVSDK/venv/lib/python3.8/site-packages/aiogrpc/channel.py", line 40, in call
return await fut
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.UNIMPLEMENTED
details = ""
debug_error_string = "{"created":"@1611455209.308076891","description":"Error received from peer ipv6:[::1]:50051","file":"src/core/lib/surface/call.cc","file_line":1067,"grpc_message":"","grpc_status":12}"

You need to run your newly-built mavsdk_server, right? How are you connecting to the drone from python right now? Are you using your custom mavsdk_server?

You need to run your newly-built mavsdk_server, right? How are you connecting to the drone from python right now? Are you using your custom mavsdk_server?

In the MAVSDK folder I performed the following:
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -Bbuild/default -H.
cmake --build build/default
sudo cmake --build build/default --target install
sudo ldconfig
For the Python MAVSDK folder I performed the steps you had described above.
I'm using the jmavsim to test my code.

In the MAVSDK folder I performed the following:
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -Bbuild/default -H.
cmake --build build/default
sudo cmake --build build/default --target install
sudo ldconfig
For the Python MAVSDK folder I performed the steps you had described above.
I'm using the jmavsim to test my code.

You should start mavsdk_server manually, it will be in build/default/src/mavsdk_server/src/mavsdk_server, I think.
Set the port when starting it, something like: ./mavsdk_server -p 50051 udp://:14540. 50051 is what will be used by MAVSDK-Python (see below).
Then you have to tell python to connect to it, with:
drone = System(mavsdk_server_address="localhost", port=50051)
await drone.connect()

You should start mavsdk_server manually, it will be in build/default/src/mavsdk_server/src/mavsdk_server, I think.
Set the port when starting it, something like: ./mavsdk_server -p 50051 udp://:14540. 50051 is what will be used by MAVSDK-Python (see below).
Then you have to tell python to connect to it, with:
drone = System(mavsdk_server_address="localhost", port=50051)
await drone.connect()

Making the changes in the code and starting the server manually from my local python build still ends in the same result:

Waiting for mavsdk_server to be ready...
Connected to mavsdk_server!
Waiting for drone to connect...
Drone discovered with UUID: 0
Traceback (most recent call last):
File "mission.py", line 91, in
loop.run_until_complete(run())
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "mission.py", line 31, in run
await drone.action.do_orbit(5.0, float('nan'), ORBIT_YAW_BEHAVIOUR, float('nan'), float('nan'), float('nan'))
File "/home/drone1/Downloads/MAVSDK-Python/mavsdk/action.py", line 522, in do_orbit
response = await self._stub.DoOrbit(request)
File "/home/drone1/Downloads/MAVSDK-Python/venv/lib/python3.8/site-packages/aiogrpc/channel.py", line 40, in call
return await fut
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.UNIMPLEMENTED
details = ""
debug_error_string = "{"created":"@1611540952.740632776","description":"Error received from peer ipv6:[::1]:50051","file":"src/core/lib/surface/call.cc","file_line":1062,"grpc_message":"","grpc_status":12}"

Making the changes in the code and starting the server manually from my local python build still ends in the same result:

Waiting for mavsdk_server to be ready...
Connected to mavsdk_server!
Waiting for drone to connect...
Drone discovered with UUID: 0
Traceback (most recent call last):
File "mission.py", line 91, in
loop.run_until_complete(run())
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "mission.py", line 31, in run
await drone.action.do_orbit(5.0, float('nan'), ORBIT_YAW_BEHAVIOUR, float('nan'), float('nan'), float('nan'))
File "/home/drone1/Downloads/MAVSDK-Python/mavsdk/action.py", line 522, in do_orbit
response = await self._stub.DoOrbit(request)
File "/home/drone1/Downloads/MAVSDK-Python/venv/lib/python3.8/site-packages/aiogrpc/channel.py", line 40, in call
return await fut
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.UNIMPLEMENTED
details = ""
debug_error_string = "{"created":"@1611540952.740632776","description":"Error received from peer ipv6:[::1]:50051","file":"src/core/lib/surface/call.cc","file_line":1062,"grpc_message":"","grpc_status":12}"

But you updated the proto submodule in mavsdk, ran generate_from_protos.sh, and then compiled mavsdk_server from that, didn't you? If the proto submodule contains the do_orbit definition, then it should be generated.
Does action_service_impl.h contain do_orbit?

But you updated the proto submodule in mavsdk, ran generate_from_protos.sh, and then compiled mavsdk_server from that, didn't you? If the proto submodule contains the do_orbit definition, then it should be generated.
Does action_service_impl.h contain do_orbit?

It does:
`grpc::Status DoOrbit(
grpc::ServerContext* /* context /,
const rpc::action::DoOrbitRequest request,
rpc::action::DoOrbitResponse* response) override
{
if (request == nullptr) {
LogWarn() << "DoOrbit sent with a null request! Ignoring...";
return grpc::Status::OK;
}
    auto result = _action.do_orbit(request->radius_m(), request->velocity_ms(), request->yaw_behavior(), request->latitude_x(), request->longitude_y(), request->altitude_z());

    if (response != nullptr) {
        fillResponseWithResult(response, result);
    }

    return grpc::Status::OK;
}`

It does:
`grpc::Status DoOrbit(
grpc::ServerContext* /* context /,
const rpc::action::DoOrbitRequest request,
rpc::action::DoOrbitResponse* response) override
{
if (request == nullptr) {
LogWarn() << "DoOrbit sent with a null request! Ignoring...";
return grpc::Status::OK;
}
    auto result = _action.do_orbit(request->radius_m(), request->velocity_ms(), request->yaw_behavior(), request->latitude_x(), request->longitude_y(), request->altitude_z());

    if (response != nullptr) {
        fillResponseWithResult(response, result);
    }

    return grpc::Status::OK;
}`

Right, so it should be there. Can you show me how you start mavsdk_server and how you connect from python?

Right, so it should be there. Can you show me how you start mavsdk_server and how you connect from python?

Sure, starting from inside my MAVSDK-Python folder:
Terminal 1:
./mavsdk/bin/mavsdk_server -p 50051 udp://:14540
Terminal2:
'
python3 -m venv venv
source venv/bin/activate
python3 ../mission.py
`

Sure, starting from inside my MAVSDK-Python folder:
Terminal 1:
./mavsdk/bin/mavsdk_server -p 50051 udp://:14540
Terminal2:
'
python3 -m venv venv
source venv/bin/activate
python3 ../mission.py
`

Sure, starting from inside my MAVSDK-Python folder:

That's the issue. You should start the one you just built, which is in your MAVSDK folder, in build/default/src/mavsdk_server/src/. The one in your MAVSDK-Python folder is not the one you built, so it does not have your changes :wink:.

Sure, starting from inside my MAVSDK-Python folder:

That's the issue. You should start the one you just built, which is in your MAVSDK folder, in build/default/src/mavsdk_server/src/. The one in your MAVSDK-Python folder is not the one you built, so it does not have your changes :wink:.

Hell yeah. Thanks for keeping the help coming.
One thing to note on the build for the MAVSDK with mav_server. I commented out the following lines in the CMakeLists.txt
`#if (BUILD_BACKEND)
message(FATAL_ERROR "The argument BUILD_BACKEND has been replaced by #BUILD_MAVSDK_SERVER. To build mavsdk_server, use -DBUILD_MAVSDK_SERVER=ON.")
#endif()
It threw the error even when I replaced the parameter:-DBUILD_BACKEND=ON
With:-DBUILD_MAVSDK_SERVER=ON.
`
Then after that the MAVSDK folder existed but the actual mavsdk_server was missing. I had to run the make command in the mavsdk_server folder to get the file.
Thanks again for keeping the help coming. It is greatly appreciated. Should I upload the addition under my username for contribution? First time working on an open source project so not sure what the procedure is.

Hell yeah. Thanks for keeping the help coming.
One thing to note on the build for the MAVSDK with mav_server. I commented out the following lines in the CMakeLists.txt
`#if (BUILD_BACKEND)
message(FATAL_ERROR "The argument BUILD_BACKEND has been replaced by #BUILD_MAVSDK_SERVER. To build mavsdk_server, use -DBUILD_MAVSDK_SERVER=ON.")
#endif()
It threw the error even when I replaced the parameter:-DBUILD_BACKEND=ON
With:-DBUILD_MAVSDK_SERVER=ON.
`
Then after that the MAVSDK folder existed but the actual mavsdk_server was missing. I had to run the make command in the mavsdk_server folder to get the file.
Thanks again for keeping the help coming. It is greatly appreciated. Should I upload the addition under my username for contribution? First time working on an open source project so not sure what the procedure is.

About your error, BUILD_BACKEND has been replaced by BUILD_MAVSDK_SERVER. Maybe you had some remains of that old time, but a clean build should solve it.
About the do_orbit contribution, if that works on your side, of course please share it! It will go like this:

Open a PR with your changes in action.proto in MAVSDK-Proto
Once this is merged, update the proto submodule in your MAVSDK fork (to point to latest main, which will contain your changes from the PR in 1), and create a PR with your changes in MAVSDK
Optionally, when the MAVSDK PR is merged, you can open a PR in MAVSDK-Python with the proto submodule updated as well

Does that make sense? So the next step is a PR in MAVSDK-Proto, with your changes in action.proto :+1:.

About your error, BUILD_BACKEND has been replaced by BUILD_MAVSDK_SERVER. Maybe you had some remains of that old time, but a clean build should solve it.
About the do_orbit contribution, if that works on your side, of course please share it! It will go like this:

Open a PR with your changes in action.proto in MAVSDK-Proto
Once this is merged, update the proto submodule in your MAVSDK fork (to point to latest main, which will contain your changes from the PR in 1), and create a PR with your changes in MAVSDK
Optionally, when the MAVSDK PR is merged, you can open a PR in MAVSDK-Python with the proto submodule updated as well

Does that make sense? So the next step is a PR in MAVSDK-Proto, with your changes in action.proto :+1:.

I do not appear to have permission to create a pull request with MAVSDK-Proto. I'm assuming this is controlled on your side?

I do not appear to have permission to create a pull request with MAVSDK-Proto. I'm assuming this is controlled on your side?

You have to fork the repo, so that it is under your control in github.com/dopplegangster/mavsdk-proto. You push your branch there, and from there you will be able to create a PR against github.com/mavlink/mavsdk-proto :+1:. Let me know how it goes :+1:!

You have to fork the repo, so that it is under your control in github.com/dopplegangster/mavsdk-proto. You push your branch there, and from there you will be able to create a PR against github.com/mavlink/mavsdk-proto :+1:. Let me know how it goes :+1:!

Got it thanks. The PR is in.

Got it thanks. The PR is in.

I'm trying to get the changes made with the enum to compile and I'm running into an issue with the auto-generated file action_service_impl.h
It seems that the translations do not generate the correct names for the enum as it adds on "ORBIT_YAW_BEHAVIOUR_" in from of certain parts of the enum. If I manually correct the issue everything generates correctly. Did I do something incorrectly with my proto file?
Below if the troubled code:
`static rpc::action::OrbitYawBehavior translateToRpcOrbitYawBehavior(const mavsdk::Action::OrbitYawBehavior& orbit_yaw_behavior)
{
switch (orbit_yaw_behavior) {
default:
LogErr() << "Unknown orbit_yaw_behavior enum value: " << static_cast(orbit_yaw_behavior);
// FALLTHROUGH
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED:
return rpc::action::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED:
return rpc::action::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED;
}
}
static mavsdk::Action::OrbitYawBehavior translateFromRpcOrbitYawBehavior(const rpc::action::OrbitYawBehavior orbit_yaw_behavior)
{
    switch (orbit_yaw_behavior) {
        default:
            LogErr() << "Unknown orbit_yaw_behavior enum value: " << static_cast<int>(orbit_yaw_behavior);
        // FALLTHROUGH
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED;
    }
}

`
Thanks again.

I'm trying to get the changes made with the enum to compile and I'm running into an issue with the auto-generated file action_service_impl.h
It seems that the translations do not generate the correct names for the enum as it adds on "ORBIT_YAW_BEHAVIOUR_" in from of certain parts of the enum. If I manually correct the issue everything generates correctly. Did I do something incorrectly with my proto file?
Below if the troubled code:
`static rpc::action::OrbitYawBehavior translateToRpcOrbitYawBehavior(const mavsdk::Action::OrbitYawBehavior& orbit_yaw_behavior)
{
switch (orbit_yaw_behavior) {
default:
LogErr() << "Unknown orbit_yaw_behavior enum value: " << static_cast(orbit_yaw_behavior);
// FALLTHROUGH
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED:
return rpc::action::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE:
return rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE;
case mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED:
return rpc::action::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED;
}
}
static mavsdk::Action::OrbitYawBehavior translateFromRpcOrbitYawBehavior(const rpc::action::OrbitYawBehavior orbit_yaw_behavior)
{
    switch (orbit_yaw_behavior) {
        default:
            LogErr() << "Unknown orbit_yaw_behavior enum value: " << static_cast<int>(orbit_yaw_behavior);
        // FALLTHROUGH
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TO_CIRCLE_CENTER;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_INITIAL_HEADING;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_UNCONTROLLED;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_HOLD_FRONT_TANGENT_TO_CIRCLE;
        case rpc::action::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED:
            return mavsdk::Action::OrbitYawBehavior::ORBIT_YAW_BEHAVIOUR_RC_CONTROLLED;
    }
}

`
Thanks again.

Oh! There is a typo :see_no_evil:. The enum is called OrbitYawBehavior, but the values are spelled BEHAVIOUR (with a "U").
That will require a new PR in MAVSDK-Proto, I'm afraid :see_no_evil:.

Oh! There is a typo :see_no_evil:. The enum is called OrbitYawBehavior, but the values are spelled BEHAVIOUR (with a "U").
That will require a new PR in MAVSDK-Proto, I'm afraid :see_no_evil:.

😌 PR is in. Thanks for looking into it.

😌 PR is in. Thanks for looking into it.

Thanks again for your help!

This is for anyone's reference coming in looking for answers to the error:
The argument BUILD_BACKEND has been replaced by #BUILD_MAVSDK_SERVER. To build mavsdk_server, use -DBUILD_MAVSDK_SERVER=ON.
Just set DBUILD_BACKEND=OFF the next time you call cmake:
sudo cmake -DBUILD_BACKEND=OFF -DBUILD_MAVSDK_SERVER=ON ...


Logging: Have logs appended in the udf together instead of 10 multiple logs.

Today, we have so many individual logs, we can write them together after lines of execution.

https://github.com/numaproj/numalogic/pull/356


feat(lamp): Add bottomBar component and colorRecogniztion component

Owner

[ ] Nickname(Tuya): 提尔
[ ] Intra-group review（组内审阅人员）：萧瑟

Description
add bottomBar component and add colorRecognization component
Package
Please select the relevant package.

[ ] tuya-panel-animation-sdk
[ ] tuya-panel-api
[ ] tuya-panel-electrician-sdk
[ ] tuya-panel-ipc-sdk
[x] tuya-panel-lamp-sdk
[ ] tuya-panel-lock-sdk
[ ] tuya-panel-robot-sdk
[ ] tuya-panel-outdoor-sdk

Type of change
Please select the relevant option.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Self CheckList
Please check all options.

[x] Intra-group review
[x] ESLint lint
[x] Example Run
[x] Jest Run
[x] No Grammer Error
[x] No Spell Error
[x] No Merge Conflict

LGTM

@zuochengpeng-Alex 代码有冲突，处理下提交

Codecov Report

Merging #198 (ce83200) into main (61ac343) will increase coverage by 0.03%.
The diff coverage is 67.34%.

@@            Coverage Diff             @@
##             main     #198      +/-   ##
==========================================
+ Coverage   62.80%   62.83%   +0.03%
==========================================
  Files         372      375       +3
  Lines       14256    14354      +98
  Branches     3316     3349      +33
==========================================
+ Hits         8954     9020      +66
- Misses       5278     5310      +32
  Partials       24       24

Impacted Files
Coverage Δ

...l-lamp-sdk/src/components/week-group/WeekGroup.tsx
78.94% <ø> (ø)

...uya-panel-lamp-sdk/src/formatter/drawTool/index.ts
61.76% <61.76%> (ø)

...rc/components/container/colorRecognition/index.tsx
64.28% <64.28%> (ø)

...p-sdk/src/components/container/bottomBar/index.tsx
92.30% <92.30%> (ø)

packages/tuya-panel-lamp-sdk/src/utils/index.ts
72.09% <100.00%> (+0.66%)
:arrow_up:

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


commitlint cannot read the input strings correctly

commitlint cannot read the input strings correctly
input echo "feat:" | npx commitlint into terminal, get failed message:
⧗   input:
feat:
✖   message may not be empty [subject-empty]
✖   type may not be empty [type-empty]
✖   found 2 problems, 0 warnings
// package.json
"devDependencies": {
    "@commitlint/cli": "^7.2.1",
    "@commitlint/config-conventional": "^7.1.2",
// ...
}

// commitlint.config.js
module.exports = {
  extends: ['@commitlint/config-conventional']
}

Expected Behavior

Current Behavior

Affected packages

[x] cli
[ ] core
[ ] prompt
[ ] config-angular

Possible Solution

Steps to Reproduce (for bugs)

commitlint.config.js

module.exports = {
  extends: ['@commitlint/config-conventional']
}

Context

Your Environment

Executable
Version

commitlint --version
7.2.1

git --version
2.17.2

node --version
v8.11.3

os
Mac 11.14

What is the expected behavior?

@escapedcat
expected: commitlint with 0 problems.
for the input string "feat:", message and type is not empty.


Tracklytics with Jack compiler

Will this library work if used with Jack compiler?
I did a quick test and it didn't work, is there any plans to make this compatible with Jack?

I haven't try with Jack compiler yet, but yes definitely it's in the plan

This is no longer valid since Jack compiler is not going to be used anymore


[IDE] No option to create a .xsaccess file

Currently, there's no option to create a .xsaccess file through right click --> New--> filetype. None of the options available through this menu creates a .xsaccess file.

Expected behavior
Such option should be available.

Is this really needed as there is no peculiar .xsaccess editor and these files are just JSON containing ones?
.xsaccess file can be created by just using New -> File and providing ".xsaccess" as a name.

Please, assign to me.


Cannot send push notification to Firefox (on Android)

Hi all,
I am experiencing a browser- and platform-specific failure of delivering notifications. I can successfully push notifications to all supported browsers on both desktop and Android except Firefox on Android. When I try that, I get
Push failed: 404 Not Found
Response body:
{"code": 404,
"errno": 102,
"error": "Not Found",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate invalid token"}
According to https://autopush.readthedocs.io/en/latest/http.html#error-codes errno 102 means 'Invalid URL endpoint'. Why would this happen on Android but not on Desktop? Is this a problem with django-push-notifications or rather pywebpush?
Thank you in advance

The mergeing of #674 should also fix this issue, for new devices registered.

Fixed by #674


Override default systemd emergency service behavior with coreos-su-login-force.conf

In the short term I'd definitely advocate for Fedora and derivatives to carry that change by default and tell anyone making kisoks etc. that they need to disable it. We just chose to carry it in FCOS derivatives by default currently.

We may want to consider shipping this by default for our images. Thoughts? @bsherman @castrojo @KyleGospo

I support adding the coreos-sulogin-force.conf from  https://github.com/coreos/fedora-coreos-config/blob/17b7f15f49c00ba1e522f15a72f6df70db01fdcc/overlay.d/05core/usr/lib/systemd/system/emergency.service.d/coreos-sulogin-force.conf#L1 to our desktop builds, from main on up.
This avoids current hassle for users which doesn't provide any real security benefit.
Originally posted by @bsherman in https://github.com/ublue-os/main/issues/469#issuecomment-1885875698

@travier you asked for someone to reach out in your comment.
I started poking around https://github.com/coreos/fedora-coreos-config/blob/stable/overlay.d/05core/usr/lib/systemd/system/emergency.service.d/coreos-sulogin-force.conf to see how this was being done on CoreOS. But I'm unsure how to get started adding this into the atomic desktops.
We can connect however you prefer, here, discord, email. My email is on my Fedora people profile (@bsherman1 not the same as my github handle).
Thank you for the offer to assist!

So I've dived into this more and I've found https://github.com/coreos/fedora-coreos-tracker/issues/805#issuecomment-1888794647, which makes it a harder sell for switching it on for all Fedora desktops.
I would probably be a good idea to start with a discussion thread on discourse or on fedora-devel to get more ideas on how this could be safely done.

In general, the process to get such a changes in Fedora is to make a Change Request to have it be visible to the community and force the discussion to happen (and a decision to be taken).
Writing / drafting a change page following the instructions in https://docs.fedoraproject.org/en-US/program_management/changes_policy/ is good first step.

So I've dived into this more and I've found coreos/fedora-coreos-tracker#805 (comment), which makes it a harder sell for switching it on for all Fedora desktops.

I read through the linked issue and https://github.com/coreos/fedora-coreos-config/pull/311 plus again reading through the discussion which spawned this current issue The context was: how to reset a root password on atomic desktops when locked out/can't boot/etc. I dare assume, the REASON one wishes to do this is almost always a need to boot single user, which requires the root user to have their password set.
cgwalters provided a known good solution for how to accomplish the root password reset, but also suggested use of emergency.target as an alternative. https://github.com/ublue-os/main/issues/469#issuecomment-1885264886
I hope this is a fair assessment of the history/situation:

Fedora has had a non-usable single mode or systemd emergency/rescue boot due to a root password not being assigned
In general, this is addressed by root password reset workarounds, which though common in the linux desktop world, look a bit different with selinux in the mix
with selinux in play, resetting the root password with init=/bin/bash but NOT loading selinux policies, will break labels (I've done this myself), but on traditional Fedora, the user can request an .autorelabel so that's the workaround there
however, on atomic desktops and the immutable root filesystem, relabeling is not possible, thus we have the situation which likely resulted in...
https://github.com/coreos/fedora-coreos-config/pull/311 provided a way boot emergency/rescue
coreos/fedora-coreos-tracker#805 (comment) addresses hardening the post boot-loader process, though it is in conflict (for the moment) with the working implementation from https://github.com/coreos/fedora-coreos-config/pull/311
https://github.com/ublue-os/main/issues/469#issuecomment-1885372308 shares the idea of a protocol which could assist in the hardening implementation, but also the reality of not yet having that ability, and the need for less secure su-login-force, but also warnings and workarounds for hardening on a case by case basis.

So, my view:

hardened by default is absolutely desirable, but on all Fedora systems, the current default is "unhardened"
on all Fedora (except FCOS derivatives), there is a way to gain root access with console access, by: rebooting, modifying boot options, resetting root password. but, it happens to be more likely that the uninformed user will break their atomic system's labels when attempting this
on FCOS, we have su-login-force, which by enabling emergency/rescue systemd targets, provides the same level of root access with lower risk a user damaging their system, by not requiring the user to forcibly set a root password. (one less step to root access; a single reboot instead of two)
It sounds like solving "hardened by default" is a bigger scope problem, but for the moment, we're trying to give users the ability to recover systems from the console without creating further problems, and the "su-login-force" solution does that without truly increasing security risk.

I needed to get that documented for my own understanding, as I had a few gaps in what/why was going on.
Please let me know if I'm missing something @travier and @cgwalters.
If this is reasonably correct assessment, I'll probably proceed by implementing this in our ublue-os images, but also start a  Fedora discussion thread.

The main problem is that the work around (auto su-login for single on the command line) also triggers if there is a filesystem check error.
Most systems don't have a GRUB password set so this is not an issue in most cases.
For those that have, this will become something else to harden / change.
I agree we can argue that not a lot of systems have a GRUB password set right now.

The main problem is that the work around (auto su-login for single on the command line) also triggers if there is a filesystem check error
Most systems don't have a GRUB password set so this is not an issue in most cases.

Thank you for restating this... In my attempt to see the big picture, I'd missed the clear detail... the auto su-login DOES bypass GRUB passwords if a fsck fails.
But yes, I agree...

For those that have, this will become something else to harden / change.

This clarifies the scope of recommendation... those deploying "secure" systems/kiosks/etc, after this suggested change, would need to do both:

set a grub password
disable auto su-login

it would be nice to find a configuration option that only triggers when single is added to the kernel command line.

We can probably ask the systemd folks how to do that.

It can be done in a systemd generator

It can be done in a systemd generator

I was inspired this, @cgwalters  and created #488
I've spent some time testing this on a modified FCOS  installation, plus my custom Silverblue image.   It seems to be working as expected.
While this doesn't go so far as to create a protocol, I believe it generally meets the goal suggested here: https://github.com/ublue-os/main/issues/469#issuecomment-1885372308
Also, @travier , though not a full solution to overall hardening, it seems to provide the intent of the SYSTEMD_SULOGIN_FORCE=1 without granting root access when a grub password prevents modifying the cmdline. So, it's a partial solution to https://github.com/coreos/fedora-coreos-tracker/issues/805#issuecomment-1888794647  and doesn't require warnings about "if you password protect grub, also disable this feature".
Based on the discussions above, I expect this approach would be more acceptable across all Fedora varieties.
Happy to get any feedback from you both as well as uBlue contributors on this.

Closing this as we've merged #488 and I'll work on upstream contributions separately.

Thanks a lot @bsherman for driving those fixes!


armadaproject.io: remove references to the term "quickstart", replace with "Demo" -> link to AWS demo site

Hey team! Please add your planning poker estimate with Zenhub @suprjinx @richscott @Sharpz7 @dejanzele @ClifHouck @headphonejames @kannon92

There are some security implications with exposing a public URL that anyone can submit jobs too.  How do we want to throttle users if they abuse this too much?  I guess we can have a minimal AWS cluster that won't incur too much cost if someone tries to submit a lot of jobs?

Let's make it minimal as a first step. We can add throttling as a follow up story. Good catch.

To the best of my knowledge, this is being blocked by the fact that its not active right now: https://ui.dev.armadaproject.io/
Unless the link has changed @dejanzele ?

this is the uri: https://ui.demo.armadaproject.io/

Maybe a solution here is people can request demo credentials from our website, and they only work for 24hrs?

i'm not really clear what we're doing with this story @dave-gantenbein  -- "Quickstart" seems to concern running locally, so it seems like we'd update to use localdev docker-compose and all it "Developement". The Demo site is kind of a new concept for these docs -- a production install already running to "try it out".

"Quickstart" as a term seems to cause confusion, as seen here! The term should be deprecated, and we either link to the demo site in AWS or the developers guide. Make sense?


broken grammar

In the Migrating Virtual Machines module.
Regarding this text. I think it is unclear:

NOTE	The VMs with the suffix _running are the active ones. As for the migration have to be stopped, a clone of the VMs were created for the migration. Those VMs are the ones without that suffix.

There are no VMs with the suffix _running
The bolded text may be missing a noun before have
It's unclear what "those VMs" are

Also, the VMs on VMware remain powered off at initial lab provision.

Is someone up for this one?


How can I clean Collection tags in onTagsChanged

First, congratulation for your library.
I have a button which save the tags in data base and clear the TagsEditText. But the next time when I type new tags and I press return, in the TagsEditText appear old tags and new tags because when the user press save button I should clean  Collection<String> tags but I don't know how do it.
Thanks

I found a simple solution.
mTagsEditText.getText().clear();
String [] tags = {};
mTagsEditText.setTags(tags);


Swift Bridging-Header import error help.

pod install (Next)
Swift Project Bridging-Hearder.h
import JazzHands.. Buil Error help me..
JazzHandsDemo (The run is well)

i find that in IFTTTAnimationFrame.h @import UIKit didn't add

When I installed JazzHands to swift 1.2 project, there was an issue: cannot find interface declaration for 'nsobject' superclass of IFTTTAnimator. After adding "#import <UIKit/UIKit.h>" in IFTTTAnimator.h, the problem is solved.


CAMEL-11675 - Repetable @Metadata annotation

yes i will check for them too. just made this simple change and have not adapted the remaining.

@lburgazzoli , see my question here ?
https://github.com/rhiot/rhiot/issues/169#issuecomment-400075439
let me know if you have idea about this?
i can see usages in apt, i think i can figure out but not sure about co? what do you mean by co?
Thanks.

run mvnDebug and attaching a debugger should work.
co is a typo, I meant "apt & so on"

debugger is getting attached but i dont know why it is not suspending at the first line of process methods of any processors.

Not ready yet!!

@lburgazzoli @davsclaus could you have a look?

Is the checkstyle correct, it looks a bit as if there are too many spaces / tabs

Does this not require to have a key or some id like attribute on @Metadata as in the JIRA ticket? Also the apt plugin should favour the metadata that has no value set in key, as that is what its using by default for all the component json data stuff it does, eg

will do a rework. closing.


x/mobile: Multiple independent lib using gomobile in the same app

What version of Go are you using (go version)?

1.19

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
GO111MODULE="on"
GOARCH="arm64"
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOOS="darwin"
GOVERSION="go1.19.3"

What did you do?
I have a problem which is as follows.
I have a legacy android app that already has a lib.so made using gomobile, this lib is necessary for the app, and I don't have its code, much less is it simple to reproduce what this lib does, and I need to include it another lib made by me in the same project, but as soon as I load the lib made by me, in several versions of android I have the following crash:

17:33:40.619 system_process W  channel 'f020b3a mypackage.android/org.dep.ClassDep (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
17:33:40.619 system_process E  channel 'f020b3a mypackage.android/org.dep.ClassDep (server)' ~ Channel is unrecoverably broken and will be disposed!

What did you expect to see?
I need both libs to work in the same app.
If there is a way where I can free up the communication channel and let the other use it, and then manage to keep alternating between the libs where each one does what it needs and free this channel, it would be interesting.
Or maybe a way to load the two separately inside the android where each one is inside a sandbox or something along those lines.
What did you see instead?
The error mentioned above.

Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions


--failfast flag

To quit as soon as any check fails. Might use a different name.

I don't need this.


feat: rework plugin runner API for easier use and testing

Types of changes

[ ] Chore (a non-breaking change which is related to package maintenance)
[ ] Bug fix (a non-breaking change which fixes an issue)
[x] New feature (a non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description
This PR adjusts createSliceMachinePluginRunner() and SliceMachinePluginRunner to simplify the plugin runner API. It also enables a simpler plugin testing setup and, possibly, a standard way to load internal Slice Machine plugins.
createSliceMachinePluginRunner()
Creating a plugin runner with createSliceMachinePluginRunner() now creates a hook system automatically. Before this PR, a hook system had to be manually created with createSliceMachineHookSystem() and passed to createSliceMachinePluginRunner().
declare const project: SliceMachineProject;

// Before
const hookSystem = createSliceMachineHookSystem();
const pluginRunner = createSliceMachinePluginRunner(project, hookSystem);

Since createSliceMachinePluginRunner() will always need a hook system, and generally plugin runners should have their own hook systems, createSliceMachinePluginRunner() now creates a new hook system upon function call.
A new feature introduced in this PR allows static plugins to be passed to the plugin runner. Static plugin is one that is statically provided upon plugin runner instantiation rather than resolved dynamically with import() at runtime. This helps us write tests more easily, and also provides a way for internal Slice Machine plugins to be loaded in a straightforward manner.
To support these changes, createSliceMachinePluginRunner() now accepts a single object argument rather than multiple positional arguments.
declare const project: SliceMachineProject;
declare const plugin: SliceMachinePlugin;

// After - without static plugins
const pluginRunner = createSliceMachinePluginRunner({ project });

// After - with static plugins
const pluginRunner = createSliceMachinePluginRunner({
  project,
  staticPlugins: {
    "@slicemachine/adapter-next": plugin,
  },
});

Note that providing a static plugin does not automatically register the plugin. It simply makes the plugin module available to the plugin runner without calling import(). Plugins are always required to be registered in the sm.json's plugins property.
SliceMachinePluginRunner
To support loading static plugins with createSliceMachinePluginRunner(), the following changes were made to SliceMachinePluginRunner.

The constructor now accepts a single object argument rather than multiple positional arguments.
A new _staticPlugins property. When _loadPlugin is called, it will attempt to load the plugin from _staticPlugins before calling import().

Because the hook system is created internally in createSliceMachinePluginRunner(), the calling code no longer has access to the hook system. The hook system is needed to call functions like callHook() and hooksForOwner().
To remedy this regression, SliceMachinePluginRunner forwards callHook() and hooksForOwner() to its internal hook system. If other hook system methods need to be exposed, they will need to be passed through the plugin runner.
This change has the benefit of simplifying the hook calling API. Consumers just need to create a plugin runner. There's no need to understand the underlying hook system.
declare const model: SharedSliceModel

const pluginRunner = createSliceMachinePluginRunner({ project });

await pluginRunner.init()

// The hook is called through the plugin runner, not the hook system.
await pluginRunner.callHook("slice:create", { libraryID: "foo", model })

Plugin tests
An example plugin test can be seen in packages/adapter-next/test/plugin-slice-create.test.ts.
Note that it creates a plugin runner with a static plugin and calls a hook. It uses the same APIs as Slice Machine would internally. A virtual file system is used via mock-fs.
Checklist:

[ ] My change requires an update to the official documentation.
[ ] All TSDoc comments are up-to-date and new ones have been added where necessary.
[ ] All new and existing tests are passing.

🦭

Hook System
LGTM
Static plugins
Reworking arguments from a tuple to an object works for me. However, I'm not a fan of "static plugins" through an additional option that acts as some kind of "registry".
What do you think about just having plugin registration allowing such an interface (or similar)?
export type SliceMachineConfigPluginRegistration<
	TPluginOptions extends PluginOptions = PluginOptions,
> =
	| string
	| SliceMachinePlugin
	| {
			resolve: string | SliceMachinePlugin;
			options?: TPluginOptions;
	  };

This would make the sm.json future-proof also for inline plugins when we allow an sm.config.ts. Test could then use the plugin runner this way:
import adapter from "../src";

const pluginRunner = createSliceMachinePluginRunner({
	project: {
		root: "...",
		config: {
			adapter,
		},
	},
});

Accepting a plugin module as its resolve property makes module-based plugin loading a public API. The staticPlugins approach would be a private internal API.
Generally speaking, accepting a module directly in the Slice Machine config is probably a good change. It makes writing one-off custom plugins easier—just write a plugin in a file and import it without thinking about how it is resolved via import(). Or write it directly in sm.config.ts to keep everything contained.

Exactly, to me, this is a benefit.

However, we should consider what this means when it comes to loading the plugin's code. If we use a package like jiti to load sm.config.ts, we are expecting jiti to do some form of transpilation. Does this mean developers can write TypeScript without pre-compiling?

Yes, it's a TS file so TS code can be imported. Systems using that TS file would have to apply appropriate transformations to it, tools like jiti handle that.

Will they need to write code differently than code they write in the rest of their project since they are processed differently?

I don't think so (from my experience with Nuxt which uses this approach, code remains the same)

We lose the ability to use resolve as a plugin's name/identifier. Instead, we'll need to rely on meta.name, which means it will need to be something unique. "My Plugin" would be a valid meta.name today, but it could conflict with other meta.names. A module name passed to resolve, on the other hand, is unique.
Is there a way we could enforce a unique meta.name? Maybe just make it a convention to use a package-like name rather than a human friendly name?

Oh true 🤔
Well... yes, we should rely on the name then, and make it a convention to use a package name here?
Plugin IDs could still be generated based on their position in the array.

👍 Done
Rather than pre-loading plugin modules with staticPlugins, the resolve plugin registration property can accept a module directly.
We'll now use meta.name as the plugin's identifier.
I'm not sure if there's value in assigning IDs to plugins. Maybe, probably. I can't think of a use case right now.

https://github.com/lihbr/prismic-slice-machine-plugin-exploration/pull/9/files#diff-0fc991f8a30696380e563b720ac1f6f23f47f8446254592881ebbba2133bd636R64-R77
This part got a little weird. It assumes resolve will never be a property of SliceMachinePlugin, which I think is okay.
I'll leave the PR open in case you have any other change suggestions, but feel free to merge if you think it looks good.

#9 (files)
This part got a little weird. It assumes resolve will never be a property of SliceMachinePlugin, which I think is okay.
I'll leave the PR open in case you have any other change suggestions, but feel free to merge if you think it looks good.

It's internal and for now, I think it's sufficient, we can always update it later on :)

Codecov Report

Merging #9 (209ba81) into master (c96a601) will increase coverage by 1.11%.
The diff coverage is 78.33%.

@@            Coverage Diff             @@
##           master       #9      +/-   ##
==========================================
+ Coverage   57.91%   59.03%   +1.11%
==========================================
  Files          24       24
  Lines        1661     1694      +33
  Branches       48       48
==========================================
+ Hits          962     1000      +38
+ Misses        699      694       -5

Impacted Files
Coverage Δ

packages/adapter-next/src/hooks/slice-delete.ts
42.30% <20.00%> (+0.64%)
:arrow_up:

packages/adapter-next/src/hooks/slice-update.ts
41.37% <33.33%> (+1.75%)
:arrow_up:

packages/adapter-next/src/hooks/slice-read.ts
50.00% <50.00%> (+7.89%)
:arrow_up:

packages/kit/src/createSliceMachinePluginRunner.ts
96.25% <90.47%> (-1.95%)
:arrow_down:

packages/adapter-next/src/hooks/slice-create.ts
81.20% <100.00%> (+1.07%)
:arrow_up:

packages/kit/src/defineSliceMachinePlugin.ts
100.00% <100.00%> (ø)

...dapter-next/src/hooks/sliceSimulator-setup-read.ts
13.52% <0.00%> (+0.40%)
:arrow_up:

packages/adapter-next/src/hooks/snippet-read.ts
14.49% <0.00%> (+1.44%)
:arrow_up:

... and 10 more

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 c96a601...209ba81. Read the comment docs.