Simulation time for message headers

I have a feature request!
I want to do this:
Have a standard way of updating message headers with correct timestamps.
For being able to do it, I wish ROS# had the following feature:
Possibly a RosBridgeClient.time.now() or an improvement of StandardHeaderExtensions that uses a clock synchronized with the /clock topic (published by a ROS node).
Alternatively, ros-sharp should publish its own clock on /clock. I have some concerns about the stability of this though...
I implemented a ClockSubscriber in order to get a laser scan from Unity to work with Cartographer:

It seems to me that it would be good to have this as standard functionality in ros-sharp.
I currently set the roundtrip delay manually, but it would be better to measure it...
Here is a bonus video of the ROS navigation stack and Cartograper working with ros-sharp.

Hi @samiamlabs  !
Very nice videos! Would you like to drop some lines on what you are working on here #20 , togehter with your video links?
I'd like to learn more about what improvement you suggest / what you want to achieve:

Why is the timing set in StandardHeaderExtensions not correct for your application? From the title of your issue I read that you want to publish the Unity simultion time. To my understanding, the advantage of UnityEngine.Time.realtimeSinceStartup is that the time difference to the clock time published by /clock on the ROS system will remain constant. Is (or is there going to be) real hardware involved in your setup? If so, using Unity simulation time at any point will likely cause problems.
Would it make sense for your application to remove the header completely from the message and let rosbridge_suite sort things out? See the last paragraph in Section 3.4.3 here.
Which concerns about stability do you have in terms of publishing a /clock topic from within Unity?
In the previous Release  1.2c we had a ClockTimePublisher.cs (you find it in \Unity3D\Assets\RosSharp\Scripts\RosCommuncation) that publishes topics at "constant" time intervals, rather than triggered by Unity event functions. Would something like this solve your problem?
How exactly would you like the synchronization with a ROS /clock topic to take place?

I will probably have some videos that make easier to understand what I'm trying to at the end of this week. I can post them at that time.

I'm referring to ROS simulation time in the title, not Unity simulation time. The concepts are very similar though. You can read about ROS simulation time here: http://wiki.ros.org/Clock. The basic idea is to enable you to speed up or slow down your entire ROS system.

In the case of using a source for /clock in ROS (not Unity Simulation Time) you would need to keep track of the slow-down/speed-up factor and update https://docs.unity3d.com/ScriptReference/Time-timeScale.html accordingly. ROS nodes will use simulation time if the rosparam /use_sim_time parameter is set.
For real robots wall time sould be used so you should syncronize all computers the same time server if possible. I will be putting vive trackers on real robots for localization and visualization at some point. Will probably need wall-time header stamps in message headers then.

The reason i need accurate headers for sensor data is that I make pretty heavy use of tf (http://wiki.ros.org/tf) in order to do thinks like track objects in the world/map frame while the robot is moving. For this reason i need accurete timestamps and appropriate frame_id:s. Rosbridge_suit just sets the fame_id filed to "" if I understand correctly.

I don't know ho often rosbrigde drops messages when under heavy load (several simulated 3d cameras for example). All the ROS nodes will freeze up (get stuck in sleep functions) if they don't receive times on the /clock topic (and /use_sim_time is set). I also have some concerns about shifting ping between simulation computer and ROS computer causing problems with tf. I would be less concerned about publishing /clock from Unity if ros-sharp was using DDS (https://en.wikipedia.org/wiki/Data_Distribution_Service) instaid of websockets. Possibly https://github.com/ros2/ros1_bridge and https://github.com/firesurfer/rclcs could be an option, but I think they are still fairly experimantal.

I guess it might be smart to try to publish /clock from Unity in FixedUpdate and determine if it works for my applications before implementing more complicated time syncronization.

As for implementation, here is how they solved it for SIGVerse: https://github.com/PartnerRobotChallengeVirtual/common-unity/blob/master/Assets/SIGVerse/Common/ROSBridge/SIGVerseRosBridgeTimeSynchronizer.cs
But I'm not so shure that is the right way to do it.

I think the best solution I thought of so far is make something like a get_current_unity_time service provider/server in Unity and have a ros node request time at set intervalls (measuring roundtrip). The ROS node can then publish the syncronized time on the ROS computer. In that case the StandardHeaderExtension sould work as is for simulation time and only need to be updated to support wall time for real robots. It would also make it easy to a implement a slider for speeding up and slowing down the simulation in Unity and ROS simultaniously.

Upon further reflection, I think I will implement this on my own fork and make a pull request if I want it on the main master branch. If implemented as I suggested at the end of the last comment, there should not be any breaking changes.
Should I close the issue?

That's a good @samiamlabs .
You know your requirements best and how to fulfill them.
When done, please do think about whether your new features are useful for ROS# in general.
If so, we all are happy to  receive your pull request.
We should refer to this discussion in your pull reqest. Fell free to close it or to keep it open for further discussions in the meantime.

Thank you again for the impressive videos about your ROS# application and also for your initiative to improve the timing between ROS and Unity!
It is possible to implement an own timer in Unity e.g. by using Physics.Simulate() and Physics.autoSimulation(). This will solve the problem you reported above.
Though this might be a help for some applications, I would not like to implement any own timing concept in ROS#. It would make the framework less flexible and e.g. restrict the use of other assets in combination with ROS#.
How shall we proceed with this issue? Are you planning to work on this topic in the future?
Shall we keep it open such that others find your fork can support you there?
In case you consider your work done (for the time being), I'd suggest to close the issue.

The main problem is that nodes that use TF can be very sensitive when it comes to timestamps. I found that it is pretty difficult to keep ROS and Unity properly synchronized so that all the navigation and localization systems work as they should
I made enough progress so that it is usable for my purposes with my on clock-sync-system, but it is far from perfect.
I have some more advanced simulation scenarios that I am planning to implement, but I think I will attempt to use ROS2 and https://github.com/firesurfer/rclcs for most of that.
My attempt at clock-sync can be found in the links below in case anyone is interested:
https://github.com/samiamlabs/dyno/tree/master/dyno_unity
https://github.com/samiamlabs/ros-sharp/tree/new-warehouse
Closing the issue is fine with me :)

Thank you for the update and for sharing these infos and your work.
ROS2 is something we are planning to adress too.
The nice thing is that all Websocket communication between Windows and Linux will become redundand, whereas Unity Eidtor capabilities will stay equally useful.


Add BASE_URL env var to override site.toml

This allows you to set: -e BASE_URL="https://example.com" as an environment variable and have that override the configuration in site.toml. As @flynnduism noted, this ability to override is common in other CMS systems.
Signed-off-by: Matt Butcher<EMAIL_ADDRESS>

I may be missing something... testing this branch and I still see the original value in the site.toml used:
$ RUST_LOG=info BASE_URL=http://localhost:3001 make serve
cargo build --target wasm32-wasi --release
    Finished release [optimized] target(s) in 0.01s
# Keep an eye on the binary size. We want it under 5M
-rwxr-xr-x 2 vdice staff 4.9M Jan 25 13:32 target/wasm32-wasi/release/bartholomew.wasm
wagi -c ./modules.toml --log-dir ./logs -e PREVIEW_MODE=0 -e SHOW_DEBUG=1 -e BASE_URL=http://localhost:3001
Jan 25 13:35:35.100  INFO wagi::wagi_app: Starting server addr=<IP_ADDRESS>:3000
Jan 25 13:35:35.101  INFO wagi::wagi_config: Loading modules config file path="./modules.toml"
Jan 25 13:35:35.101  INFO wagi::wasm_runner: Using log dir log_dir=./logs/d6be14a4dca778e1268075b80c1eb146da34f7da829683491b9dc33083e34932
Jan 25 13:35:35.151  INFO wagi::wasm_runner: Using log dir log_dir=./logs/9db5fbffa27308489b1a68995e843e2eb01eeabf76b0d525cabbc2ae2b81f86e
Ready: serving on <IP_ADDRESS>:3000

@vdice yeah, all this is supposed to do is override site.toml's base_url so that it can be used in templates. This won't alter the virtual host or IP address (though if we wanted to, we could do that).


[types] utility function for converting access path into struct tag

This functionality was already implemented in resource-viewer, but it is also useful elsewhere.

/land

/land

اااااااااااااااااااا
Evernote

On Jan 5, 2021, at 11:46 AM, github-actions[bot]<EMAIL_ADDRESS>wrote:

Cluster Test Result
Compatibility test results for land_b7e17ac7 ==> land_4e73ad41 (PR)

All instances running land_b7e17ac7, generating some traffic on network
First validator land_b7e17ac7 ==> land_4e73ad41, to validate storage
First batch validators (14) land_b7e17ac7 ==> land_4e73ad41, to test consensus
Second batch validators (15) land_b7e17ac7 ==> land_4e73ad41, to upgrade rest of the validators
All full nodes (30) land_b7e17ac7 ==> land_4e73ad41, to finish the network upgrade
all up : 904 TPS, 5007 ms latency, 6350 ms p99 latency, no expired txns
Logs: http://kibana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/app/kibana#/discover?_g=(time:(from:'2021-01-05T17:24:35Z',to:'2021-01-05T17:46:11Z'))
Dashboard: http://grafana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/d/2XqUIhnWz/performance?from=1609867475000&to=1609868771000
Validator 1 logs: http://kibana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/app/kibana#/discover?_g=(time:(from:'2021-01-05T17:24:35Z',to:'2021-01-05T17:46:11Z'))&_a=(columns:!(log),query:(language:kuery,query:'kubernetes.pod_name:"val-1"'),sort:!(!('@timestamp',desc)))
Repro cmd:

./scripts/cti --tag land_b7e17ac7 --cluster-test-tag land_4e73ad41 -E RUST_LOG=debug -E BATCH_SIZE=15 -E UPDATE_TO_TAG=land_4e73ad41 --report report.json --suite land_blocking_compat
🎉 Land-blocking cluster test passed! 👌
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

اااااااااااااااااااا
Evernote

On Jan 5, 2021, at 11:46 AM, github-actions[bot]<EMAIL_ADDRESS>wrote:

Cluster Test Result
Compatibility test results for land_b7e17ac7 ==> land_4e73ad41 (PR)

All instances running land_b7e17ac7, generating some traffic on network
First validator land_b7e17ac7 ==> land_4e73ad41, to validate storage
First batch validators (14) land_b7e17ac7 ==> land_4e73ad41, to test consensus
Second batch validators (15) land_b7e17ac7 ==> land_4e73ad41, to upgrade rest of the validators
All full nodes (30) land_b7e17ac7 ==> land_4e73ad41, to finish the network upgrade
all up : 904 TPS, 5007 ms latency, 6350 ms p99 latency, no expired txns
Logs: http://kibana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/app/kibana#/discover?_g=(time:(from:'2021-01-05T17:24:35Z',to:'2021-01-05T17:46:11Z'))
Dashboard: http://grafana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/d/2XqUIhnWz/performance?from=1609867475000&to=1609868771000
Validator 1 logs: http://kibana.ct-2-k8s-testnet.aws.hlw3truzy4ls.com/app/kibana#/discover?_g=(time:(from:'2021-01-05T17:24:35Z',to:'2021-01-05T17:46:11Z'))&_a=(columns:!(log),query:(language:kuery,query:'kubernetes.pod_name:"val-1"'),sort:!(!('@timestamp',desc)))
Repro cmd:

./scripts/cti --tag land_b7e17ac7 --cluster-test-tag land_4e73ad41 -E RUST_LOG=debug -E BATCH_SIZE=15 -E UPDATE_TO_TAG=land_4e73ad41 --report report.json --suite land_blocking_compat
🎉 Land-blocking cluster test passed! 👌
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Bot not applying the right label sometimes for PRs

PRs in the azure-sdk-for-js repo for Metrics Advisors and Communication packages are not getting the right label applied to them even if they are mapped as expected in the CodeOwners file
Examples:

https://github.com/Azure/azure-sdk-for-js/pull/11790
https://github.com/Azure/azure-sdk-for-js/pull/11713

I believe this is because we haven't refreshed the data from the codeowners files. I know @AlexGhiondea  was planning to manually run it again but we should also have an issue (perhaps this one) to track running this on some cadence. @mitchdenny do we have anything else that is watching codeowners files that we could add this to? Or should we just use some scheduling system (DevOps or function) that will run it on some schedule?

I know that the live test notifications hang off the CODEOWNERS file as well. How does the bot pick up its configuration @AlexGhiondea?

I know that the live test notifications hang off the CODEOWNERS file as well.

That is done by a daily Devops Pipeline that runs https://dev.azure.com/azure-sdk/internal/_build?definitionId=679. We could do something similar here or maybe create a combined one.

This appears to have been caused because the bot doesn't "refresh" after a change is made to CODEOWNERS files.  Let's use this issue to track implementing that refresh.

@weshaggard yep ... I think it would make sense to create a combined job here for refreshing anything that is tied to the CODEOWNERS file. @AlexGhiondea is there a tool that you already have that refreshes the bot settings?

Can we have the bot "refreshed" manually for now and then continue to use this issue to track anything else we want to do? I have a lot of incoming PRs with no labels that I have to manually go and apply labels now

I've done the manual refresh for now.

@mitchdenny are you asking about this?
If so, then yes, you can point that tool to the code owners file in each of the repos and it will update the configuration for the bot. I ran this before the holidays as there were some other changes that need to be refreshed.

@mitchdenny are you asking about this?
If so, then yes, you can point that tool to the code owners file in each of the repos and it will update the configuration for the bot. I ran this before the holidays as there were some other changes that need to be refreshed.

Yeah ... its just something that needs to be done regularly. I see you reached out to the FabricBot team to ask about alternative authentication schemes (I did as well, and got the same response).

Yeah ... its just something that needs to be done regularly. I see you reached out to the FabricBot team to ask about alternative authentication schemes (I did as well, and got the same response).

The manual refresh didnt seem to stick. See https://github.com/Azure/azure-sdk-for-js/pull/13121 which should have gotten the Mgmt label, but didnt

The manual refresh didnt seem to stick. See https://github.com/Azure/azure-sdk-for-js/pull/13121 which should have gotten the Mgmt label, but didnt

Alright, am re-opening this
The below PRs should have gotten the Mgmt label, they didnt:

https://github.com/Azure/azure-sdk-for-js/pull/13317
https://github.com/Azure/azure-sdk-for-js/pull/13316

Alright, am re-opening this
The below PRs should have gotten the Mgmt label, they didnt:

https://github.com/Azure/azure-sdk-for-js/pull/13317
https://github.com/Azure/azure-sdk-for-js/pull/13316

This is driving me nuts! Please help!
Another set of PRs that should have gotten the Mgmt label, and they didnt

https://github.com/Azure/azure-sdk-for-js/pull/13871
https://github.com/Azure/azure-sdk-for-js/pull/13870
https://github.com/Azure/azure-sdk-for-js/pull/13869
https://github.com/Azure/azure-sdk-for-js/pull/13868
And more!

Looks like the various arm-* rules failed because fabric bot doesn't know how to interpret them:

So we've got two feature asks on the Fabric Bot team:

service principal based authentication (or repo-based configuration)
support for globbing syntax in filters.

Without #1, someone on the EngSys team has to go in every single time a rule is updated. And without #2 we have to have a separate rule (no globs) for each of the arm-* folders (which exacerbates the first issue).

I believe they are working on a better auth story.

That isn't the last I heard so that is good news. Did the person you spoke to give you any kind of ETA (better auth also implies they are acknowledging the need for a supported API?)

@praveenkuttappan Can we have the manual refresh done in a regular frequency? We have more services joining our repos and the codeowners files are getting updated, and the bot is not able to keep up

@AlexGhiondea Do you have any wiki or any info on how to trigger this labeling bot manually?

IIRC the main issue is that the fabric bot didn't provide a proper rest API we could call so Alex hacks around it by using a local cookie to try and automate this but that isn't a good way to do this automatically. It is probably worth reaching out the the fabric bot folks to see if they have made any headway on supporting an api for updating the rules.

What @weshaggard said is right. I have a tool that can update the rules for the bot, but it requires that we extract an auth token from a cookie. @praveenkuttappan I can show you how to do it if you want to give it a try!

Hello (again)
I have given up waiting for a solution here and have added an entry for each mgmt plane package in the JS repo directly. Please see https://github.com/Azure/azure-sdk-for-js/pull/17060
Can we get the "refresh" done so that the bot starts applying the right labels?

@AlexGhiondea I would like to know more about this tool so I can try it. I can also reach out to fabric bot team once I understand more about what/how we do it now.

How is that refresh going?

Not sure what happened... now none of the PRs are getting any labels :(

@ramya-rao-a the refresh went fine... but now there aren't any labels associated with any paths... I'm reaching out to the bot team to see what's going on 🙂.

This is me, just posting here, like I do every 2 weeks, wondering what to expect next... None of the bot labelling is working now :(

What is the plan for manual refresh?

@praveenkuttappan has anyone considered contributing SP auth to the fabric bot?

Pretty sure this no longer matters now that we've moved away from FabricBot.
CC: @JimSuplizio

@kurtzeborn, you're right, if the CODEOWNERS file is correct the labels should be being applied. The problem was that FabricBot didn't directly use the CODEOWNERS file. There was a script that generated the FabricBot.json from the CODEOWNERS which apparently broke and they stopped using it and started updating CODEOWNERS files directly. Moving to actions and the github-event-processor now uses the CODEOWNERS files.


[FIXED JENKINS-28655 and JENKINS-28656] - Docker Traceability can create image fingerprints on-demand

Follow-up to #7
JENKINS-28656

[x] Add the global configuration of DockerTraceabilityPlugin
[x] Adjust the logic to create fingerprints on-demand
[x] Unit test
[x] Update docs

JENKINS-28655

[x] - New item skeleton with the automatic injection
[x] - Better UI - show item references on run summaries
[x] - Automatically setup build descriptions

TODOs:

[ ] - Agree on the approach
[ ] - Fix javadoc

Open questions:

TBD - retention policies in Docker Reference Job (remove buttons, etc.)

@reviewbybees

Looks like a code error?
[ERROR] /scratch/jenkins/workspace/plugins/docker-traceability-plugin/src/test/java/org/jenkinsci/plugins/docker/traceability/core/DockerTraceabilityRootActionTest.java:[124,76] error: cannot find symbol

I think I am :-1:  on this.  Looks way to hacky to workaround a deficiency in core.
I would propose that core is modified to add a veto to prevent cleanup and that the plugin depends on that core for this feature.
Also when would these events get cleaned up?  If never then we will grow the fingerprint DB unbounded at a very rapid rate...

I would propose that core is modified to add a veto to prevent cleanup and that the plugin depends on that core for this feature.

I've already started this feature implementation. BTW, we cannot backport such change, hence the plugin will hang till the next LTS.

Also when would these events get cleaned up? If never then we will grow the fingerprint DB unbounded at a very rapid rate...

See TBD bullet in the PR description. We can easily implement such cleanup using this manager - both retention policies and manual deletions can be supported

the Fingerprint cleanup thread implementation checks AbstractProjects only in Build references

If true, that is a potentially backportable fix.

Not sure I follow this well enough to evaluate. Would be useful for the PR description to summarize the current behavior from a user perspective, the problems with that, the proposed short-term workaround, and the proposed long-term solution.

@jglick

If true, that is a potentially backportable fix.

It was not completely true. The issue has been fixed in 1.577
https://github.com/jenkinsci/jenkins/commit/8c038bbadebad973249648ca5df56429d950493d
My apologies for a false positive alarm.

Extended the description of the proposed solution

From description looks like a crazy hack.

@KostyaSha Other options were even more horrible :)
I hope to patch Jenkins API soon to get Fingerprint changes in the next LTS line

Hope it will be not a hardcoded project for docker-* features

Also build description is very long on screenshot, containers and images has short. For tag you need print hash, because tag can be changed (not sure how do you track such changes at all).

@oleg-nenashev I think we concluded this was to be closed and work on a simpler workaround solution and a longer term solution in core did we not?

@jtnord
Yes. I just have not closed the PR yet (a reminder for me)


fix(semver): fixed edge cases that do not match prerelease

>0.0.0-a does not match pre-releases on 0.0.0 that start with a
capital letter or number. This has to do with the ordering of
code points. Numbers and capital letters come before lowercase
letters.
>0.0.0-0 should match all valid pre-releases on 0.0.0. According
to the spec, "Numeric identifiers MUST NOT include leading zeroes."
A 0 is also the lowest code point for all the allowed characters
in a pre-release
Note, I fully admit that this is a bug I introduced.

@mattfarina This looks good to me but I wanted to run a quick sanity check. Is there a specific chart I could test this on?

Also, pulling into 2.7.

@thomastaylor312 try the incubator/istio chart. Though, there should be no difference before and after. This is an edge case and I'm not sure anyone is hitting it.

@bacongobbler
0.0.0-01 is technically invalid in SemVer. Though, I don't think any tools or validators stop or preclude it. The range in this PR is looking for greater than 0.0.0-0. It could be altered to be >=0.0.0-1 as 1 is the next code point after 0. For the range the case in the PR works.
When it comes to ordering it goes numbers, all capital letters, then all lowercase letters. For string sorting (in go and most languages) BETA comes before alpha because it's about sorting the underlying code point rather than the meaning of the letter.
As ascii table, like the one at https://ascii.cl, might help visualize it.
The current code would not catch 0.0.0-1, 0.0.0-ALPHA, and other similar ones because it is looking for code points after those. This PR fixes it.
Does that help?

Yes that helps, thank you very much for the clarification. This is what I was missing:

The range in this PR is looking for greater than 0.0.0-0

I had assumed it was "greater or equal to". I wasn't looking at the docstring close enough. Thank you for walking me through that!


Revert https://github.com/Azure/azure-rest-api-specs/pull/9045

This reverts commit b49caabeacecce6ddc7e357dd7d758bd9fd82dbc.
The backend changes for https://github.com/Azure/azure-rest-api-specs/pull/9045 are not going out because of the lockdown. And the swagger changes made are not backwards compatible. So reverting it.
Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

Can one of the admins verify this patch?

/azp run automation - sdk


fix: add an ordering-agnostic yaml comparator in testutil

For testdata at least, this means we can compare proper example yaml
that are checked in and ordered according to proto order.  This
unfortunately doesn't fix the underlying ordering problem we have
reported up in googleapis/google-api-go-client/issues/302, but sidesteps
it for increased test coverage at least.

why is cla stalled :(

why is cla stalled :(

ask and ye shall receive apparently


Unhelpful Subword Assignment Error (in Firrtl)

See http://stackoverflow.com/questions/40950073/chisel-3-assignment-to-bit-range
class TestX extends Module
{
    val io = IO(new Bundle {
        val a = Output(UInt(width=2))
    })

    io.a(1, 0) := UInt(0)
}

Gives error:
Error: [module TestX] Expression T_4 is used as a FEMALE but can only be used as a MALE.
We should probably try to catch this in Chisel

Also we should probably document this limitation

Subword assignments not supported.
It may be possible to emit a better error by adding a SourceOnlyBinding or something, so assigning to it in Chisel frontend will give the user a helpful error.

This will be implemented after / with #440


Playlist documentation do not match with the code

What is the improvement or update to the Wiki you wish to see?
The following template variables to not match what the code is looking for:

sync_to_user
sync_to_user_<>
exclude_user
exclude_user_<>

Source: https://metamanager.wiki/en/latest/defaults/playlist/#template-variables
The code looks for those variables:

sync_to_users
sync_to_users_<>
exclude_users
exclude_users_<>

Source: https://github.com/meisnate12/Plex-Meta-Manager/blob/master/defaults/playlist.yml
Does the docs page already exist? Please link to it.
https://metamanager.wiki/en/latest/defaults/playlist/#template-variables

this is already fixed in nightly


[Issue] - Health Checker - Vulnerability Detected marked as True w

Provide Version Number
Provide the version of the script that has the issue.
<IP_ADDRESS>8
Describe the issue
A clear and concise description of the issue.
Running HealthChecker.ps1, the XML/HTML report Vulnerability Detected as True and Security Vulnerabilities will have DisplayWriteType value as "Red" when no "real" Security Vulnerability is detected, however  Security Vulnerability reports the following output:
IIS module anomalies detected: False
Expected behavior
A clear and concise description of what you expected to happen.
When "Security Vulnerability" reports "IIS module anomalies detected: False", Vulnerability Detected should be False.
Script Output
If applicable, add the exception that wasn't handled.
Additional context
Add any other context about the problem here.

<Obj RefId="2493">
<TNRef RefId="153"/>
<ToString>HealthChecker.HtmlServerInformationRow</ToString>
<Props>
<S N="Name">IIS module anomalies detected</S>
<S N="DetailValue">False</S>
<Nil N="TableValue"/>
<Nil N="Class"/>
</Props>
</Obj>

<Obj RefId="2494">
<TNRef RefId="153"/>
<ToString>HealthChecker.HtmlServerInformationRow</ToString>
<Props>
<S N="Name">Security Vulnerabilities</S>
<S N="DetailValue">False<br></S>
<Nil N="TableValue"/>
<S N="Class">Red</S>
</Props>
</Obj>

<Obj RefId="2506">
<TNRef RefId="153"/>
<ToString>HealthChecker.HtmlServerInformationRow</ToString>
<Props>
<S N="Name">Vulnerability Detected</S>
<S N="DetailValue">True</S>
<Nil N="TableValue"/>
<S N="Class">Red</S>
</Props>
</Obj>

Encountered the same issue after rolling out extended protection on Exchange 2019; from the HTML version of the report:

Determined the cause of this.
When we added in the section of IIS Module check, we added this to the security vulnerability section, now it isn't null we flag it as Security Vulnerability detected but the displayed value of the IIS Module section is false, that is why we see a false value in the bottom section.


Service Counseling fields for Prime API payload

Description
Adds the requiredMedicalEquipmentWeight and organizationalClothingAndIndividualEquipment to the Entitlement payload for the Prime. This also ensures the progear and spouse-progear fields are taken from the entitlement object (database).
Setup
Run the prime API
make db_dev_e2e_populate && make server_run

Then hit the prime API for some data like so:
go run ./cmd/prime-api-client --insecure get-move-task-order --id "cff839ab-ac1e-4db0-9d6e-c4b368bf854a"
You should get the new fields on the entitlements output like this:
"entitlement":{"authorizedWeight":8000,"dependentsAuthorized":true,"eTag":"MjAyMS0wNS0wNlQxOTozNzo0OC4zMjQ1NTVa","id":"cf8dc44e-d06c-42fb-8912-ea82e7b4a620","nonTemporaryStorage":true,"privatelyOwnedVehicle":true,"proGearWeight":1000,"proGearWeightSpouse":200,"requiredMedicalEquipmentWeight":1000,"storageInTransit":2,"totalDependents":1,"totalWeight":5000}

Code Review Verification Steps

[ ] If the change is risky, it has been tested in experimental before merging.
[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.
Any new migrations/schema changes:

[ ] Follow our guidelines for zero-downtime deploys (see Zero-Downtime Deploys)
[ ] Have been communicated to #g-database
[ ] Secure migrations have been tested following the instructions in our docs

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] User facing changes have been reviewed by design.
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

References

Jira story for this change

Fails

:no_entry_sign:
Yarn Audit Issues Found:
high - Path traversal
Package url-parse
Patched in >=1.5.0
Dependency of react-scripts
Path react-scripts > webpack-dev-server > sockjs-client > eventsource > original > url-parse
More info https://npmjs.com/advisories/1678
1 high vulnerabilities and 0 critical vulnerabilities found

Warnings

:warning:
Please add the JIRA issue key to the PR title (e.g. MB-123)

  Generated by :no_entry_sign: dangerJS against a74fc25d093907f097feb93ee6ed6551ab4ecf46


typeahead:select != typeahead:selected

This seems pretty wrong, and led me to some hair pulling!

ehh i think i was on an old version :-1:


Quickly navigating to a particular show by number

I was listening to an older episode (719) in my podcast player last night. I wanted to look at the show notes at my desk this morning. Last I had glanced at my podcast player and noted the episode number.
Arriving at https://syntax.fm/shows, I noted that the shows are displayed in chronological order (reverse or forward). I thought I would just use the search to jump to the right episode.
No luck. Search results were:
#762 What to Steal. Finding Inspiration in Web Development
…/@wesbos/video/7198565156853386502. * Sentry’s Date Picker - https://x.

Hovering over search result items, I noted that URLs for shows are:
https://syntax.fm/show/:id/:slug (e.g. https://syntax.fm/show/719/fullstack-typescript-apps-with-no-build-step-with-brian-leroux)
I've found that on many sites with URLs in this format the "slug" is optional, since the id is enough to uniquely determine the desired page.
E.g. https://ctvnews.ca/1.6865914 redirects to: https://www.ctvnews.ca/london-drugs-stores-remain-closed-monday-after-cybersecurity-incident-1.6865914
So I tried https://syntax.fm/show/719
No joy. This just redirects to https://syntax.fm/shows
So. Suggestions:

https://syntax.fm/show/:id should redirect to the full page URL.
The search engine should be able to find shows by id

great suggestions! We do have syntax.fm/719 - but there is no way for you to know that.
I agree on both accounts, these changes should be made:

The search should index the show number and show a bang on match when inputting a number
syntax.fm/show/:id/:slug - the slug can be anything, but if you omit, it is gives us an error. So we need to make the slug optional. all meta tags are already in place here for the correct canonical URLS.

Working on these rn


Bold text not working

I have a very simple test set up and it doesn't seem to be picking up on emphasis at all. Am I configuring or using this wrong? It seems like a very basic use case.
I'm using the Nuget package in ASP.NET Core: Markdig.Markdown.ToHtml(markdown);
The markdown is ## Big heading\nHello this is some text on my page. **This bit is bold. **\n
The HTML I get back is
Big heading
\n
Hello this is some text on my page. **This bit is bold. **
\n

It is expected as per CommonMark specs: the space just before the trailing ** must be removed, you can try it here
## Big heading

Hello this is some text on my page. **This bit is bold.**


Changing caching library

After reading the release notes of SpringBoot 1.4.0 (see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes ), it seems that Spring guys suggested to use a new caching library, i.e. Caffeine ( https://github.com/ben-manes/caffeine ) instead of the caching libraries from Guava.
Replacement is easy.
Do you think you would consider a pull request with the aforementioned change?

Closing as duplicate of #155.
But yes, I would love to switch to Caffeine. If you decide to help with this, it should be done off the "3.0" branch.

@mbosecke agreed! I'll do it this week

@mbosecke I have a question. Caffeine is for Java8 only, while I see that Pebble's branch 3.0 has target 1.7. Do you plan to move to Java8 in version 1.7? Otherwise, there is no way to use that caching library.

Yup, I was planning on moving to Java 8 for the next major release of Pebble so feel free to up that target number.

Caffeine has a Guava wrapper. Can't that be used for now?

@thclev It looks like migration was done in #239


Upgrade to normalize.css v4.2.0.

Fixes #20384. We probably need to merge this fix in even if we do end up going with #20388.

Simply copy-pasting the library caused Hound to explode, so I went and fixed the comment style. It's still complaining about vendor prefixes and property ordering, but most of those issues were present last time around anyway and it may not even be possible to fix them.

This proves there is a problem in the configuration file with Hound (exclude_file option in .hound.yml  doesn't exist according to Hound docs) and SCSSLint as _normalize.scss isn't ignored for some rules

Okay, so ignore_file is only for jshint, not scss. For scss you need an exclude in scss/.scss-lint.yml. I've pushed a new commit which fixes this.

Keep it as-is, we don't want comments in our outputted CSS (except for License/Copyright headers)

Might also need to update Normalize to 5.0 to resolve issue #21060


Interval setting ignored, still polling for updates every 1 minute

Hi, thanks for the great plug-in.
i have tried to set "interval" to 10000ms (10 seconds) but the lightbulbs are still refreshed only every 1 minute which is the default setting.
How did i make sure thats the case:

It only logs every minute, not 10 seconds.
I tried to turn off the lights from the original Yeelight application and i watched to see when it responded in Homebridge, still took a minute.
I have tried the same with an interval of 5000 and same results.

My config is:
        {
            "name": "Yeelighter",
            "timeout": 5000,
            "interval": 10000,
            "ctforcolor": true,
            "blocking": false,
            "split": false,
            "override": [
                {
                    "id": "0x00000000036eba1e",
                    "name": "bedroom yeelight 2",
                    "offOnDisconnect": true
                },
                {
                    "id": "0x0000000004981936",
                    "name": "bedroom yeelight 1",
                    "ignored": false,
                    "offOnDisconnect": true
                },
                {
                    "id": "0x0000000007d1247c",
                    "name": "living room yeelight 1",
                    "offOnDisconnect": true
                },
                {
                    "id": "0x0000000012a02ae1",
                    "name": "living room yeelight 2",
                    "offOnDisconnect": true
                }
            ],
            "platform": "Yeelighter"
        }

Am i doing it wrong?
Thanks in advance

Good catch. This was bug. I will fix it in the next update.


process_messages seeds

These are seeds produced with: --with-sanitizers=address,undefined,integer,fuzzer on Arch Linux.
Merging with python test_runner.py --m_dir ~/merge-assets/fuzz_seed_corpus/ ~/qa-assets/fuzz_seed_corpus process_messages gives 13605 files from 13128.
As an extra data point: I also tried a build with --with-sanitizers=fuzzer and then merging with the python script. The first merge run gave 13407 files and the second run gave 13419 files so there is some variance.

The first merge run gave 13407 files and the second run gave 13419 files so there is some variance.

Not a single of our fuzz targets is deterministic (:sob:), so this is expected

The first merge run gave 13407 files and the second run gave 13419 files so there is some variance.

Not a single of our fuzz targets is deterministic (:sob:), so this is expected

Thanks

Thanks

Not a single of our fuzz targets is deterministic (😭), so this is expected

Huh, that sounds... incorrect? :)
What makes you think that we don't have any deterministic harnesses? :)

Not a single of our fuzz targets is deterministic (😭), so this is expected

Huh, that sounds... incorrect? :)
What makes you think that we don't have any deterministic harnesses? :)

The randomness module consumes environment data from the OS, which is not deterministic. This will upset at the very least use_value_profile because hashing the data into the rng will yield completely different non-deterministic states (as expected).
If there is a target that is fully deterministic with use_value_profile (what we use for merging), I am eager to know.

The randomness module consumes environment data from the OS, which is not deterministic. This will upset at the very least use_value_profile because hashing the data into the rng will yield completely different non-deterministic states (as expected).
If there is a target that is fully deterministic with use_value_profile (what we use for merging), I am eager to know.

Not a single of our fuzz targets is deterministic (😭), so this is expected

Huh, that sounds... incorrect? :)
What makes you think that we don't have any deterministic harnesses? :)

The randomness module consumes environment data from the OS, which is not deterministic.

If you're referring to src/random.{cpp,h}: we have a lot of fuzzing harnesses that don't depend on it at all, no? :)

If there is a target that is fully deterministic with use_value_profile (what we use for merging), I am eager to know.

Determinism is a property of the harness and not the fuzz runner, no?
A nondeterministic fuzzing harness is a fuzzing harness that, even for the same input, can exhibit different code paths on different runs.
Let's look at a fuzzing harness that is guaranteed to exhibit identical code paths across different runs given the same input.
I choose the trivial addition_overflow as an example: by reading the code it is clear that the harness is fully deterministic. There is simply no source of randomness or variation across runs :)
See src/test/fuzz/addition_overflow.cpp:
FUZZ_TARGET(addition_overflow)
{
    FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
    TestAdditionOverflow<int64_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint64_t>(fuzzed_data_provider);
    TestAdditionOverflow<int32_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint32_t>(fuzzed_data_provider);
    TestAdditionOverflow<int16_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint16_t>(fuzzed_data_provider);
    TestAdditionOverflow<char>(fuzzed_data_provider);
    TestAdditionOverflow<unsigned char>(fuzzed_data_provider);
    TestAdditionOverflow<signed char>(fuzzed_data_provider);
}

Do we agree that the addition_overflow fuzzing harness is fully deterministic? :)
If not, what is the source of non-determinism?

Not a single of our fuzz targets is deterministic (😭), so this is expected

Huh, that sounds... incorrect? :)
What makes you think that we don't have any deterministic harnesses? :)

The randomness module consumes environment data from the OS, which is not deterministic.

If you're referring to src/random.{cpp,h}: we have a lot of fuzzing harnesses that don't depend on it at all, no? :)

If there is a target that is fully deterministic with use_value_profile (what we use for merging), I am eager to know.

Determinism is a property of the harness and not the fuzz runner, no?
A nondeterministic fuzzing harness is a fuzzing harness that, even for the same input, can exhibit different code paths on different runs.
Let's look at a fuzzing harness that is guaranteed to exhibit identical code paths across different runs given the same input.
I choose the trivial addition_overflow as an example: by reading the code it is clear that the harness is fully deterministic. There is simply no source of randomness or variation across runs :)
See src/test/fuzz/addition_overflow.cpp:
FUZZ_TARGET(addition_overflow)
{
    FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
    TestAdditionOverflow<int64_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint64_t>(fuzzed_data_provider);
    TestAdditionOverflow<int32_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint32_t>(fuzzed_data_provider);
    TestAdditionOverflow<int16_t>(fuzzed_data_provider);
    TestAdditionOverflow<uint16_t>(fuzzed_data_provider);
    TestAdditionOverflow<char>(fuzzed_data_provider);
    TestAdditionOverflow<unsigned char>(fuzzed_data_provider);
    TestAdditionOverflow<signed char>(fuzzed_data_provider);
}

Do we agree that the addition_overflow fuzzing harness is fully deterministic? :)
If not, what is the source of non-determinism?

I am not sure if that affects the fuzz engine in any way, but the fuzz binary will at the very least call into random before main:
$ FUZZ=addition_overflow ./src/test/fuzz/fuzz
fuzz: random.cpp:560: void ProcRand(unsigned char *, int, RNGLevel): Assertion `false' failed.
Aborted (core dumped)

With the assert(false) added in random.cpp.
==443853==    by 0x4CBB025: __assert_fail (in /usr/lib64/libc-2.32.so)
==443853==    by 0xC14DF7: ProcRand(unsigned char*, int, RNGLevel) (random.cpp:560)
==443853==    by 0xC14E36: GetRandBytes (random.cpp:585)
==443853==    by 0xC14E36: GetRandHash() (random.cpp:605)
==443853==    by 0x6DFE1F: CSignatureCache (sigcache.cpp:35)
==443853==    by 0x6DFE1F: __cxx_global_var_init.1 (sigcache.cpp:86)
==443853==    by 0x6DFE1F: _GLOBAL__sub_I_sigcache.cpp (sigcache.cpp:0)

I am not sure if that affects the fuzz engine in any way, but the fuzz binary will at the very least call into random before main:
$ FUZZ=addition_overflow ./src/test/fuzz/fuzz
fuzz: random.cpp:560: void ProcRand(unsigned char *, int, RNGLevel): Assertion `false' failed.
Aborted (core dumped)

With the assert(false) added in random.cpp.
==443853==    by 0x4CBB025: __assert_fail (in /usr/lib64/libc-2.32.so)
==443853==    by 0xC14DF7: ProcRand(unsigned char*, int, RNGLevel) (random.cpp:560)
==443853==    by 0xC14E36: GetRandBytes (random.cpp:585)
==443853==    by 0xC14E36: GetRandHash() (random.cpp:605)
==443853==    by 0x6DFE1F: CSignatureCache (sigcache.cpp:35)
==443853==    by 0x6DFE1F: __cxx_global_var_init.1 (sigcache.cpp:86)
==443853==    by 0x6DFE1F: _GLOBAL__sub_I_sigcache.cpp (sigcache.cpp:0)

@MarcoFalke Good catch! That's super ugly!
I read your earlier comment "not a single of our fuzz targets is deterministic" as a comment on the contents on the fuzzing harnesses (in other words the content of the individual LLVMFuzzerTestOneInput:s), but I now understand it is a comment on the pre-main behaviour of src/test/fuzz/fuzz. Thanks for clarifying!
I think this needs to be fixed.
What is the best way forward? Should we try to opt-out of randomness via a build macro when building src/test/fuzz/fuzz?
Perhaps we need a fuzzer friendly build mode FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION as suggested in the libFuzzer documentation.

@MarcoFalke Good catch! That's super ugly!
I read your earlier comment "not a single of our fuzz targets is deterministic" as a comment on the contents on the fuzzing harnesses (in other words the content of the individual LLVMFuzzerTestOneInput:s), but I now understand it is a comment on the pre-main behaviour of src/test/fuzz/fuzz. Thanks for clarifying!
I think this needs to be fixed.
What is the best way forward? Should we try to opt-out of randomness via a build macro when building src/test/fuzz/fuzz?
Perhaps we need a fuzzer friendly build mode FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION as suggested in the libFuzzer documentation.

I think the way forward is to:

Remove globals (since they are polluting the fuzz binary)
Make classes deterministic (either by passing a bool to the constructor or mocking them in ./src/test/util)
(Last resort) Change the Core code to build or mock away the randomness module, but that might be controversial

I think the way forward is to:

Remove globals (since they are polluting the fuzz binary)
Make classes deterministic (either by passing a bool to the constructor or mocking them in ./src/test/util)
(Last resort) Change the Core code to build or mock away the randomness module, but that might be controversial


Adding arcs field to Geometry Objects

Adding arcs field to LineString.

Hi @patricoferris , actually I got stuck at finding the array index type. I am wondering is there a way to get the type  of the variable used in OCaml (I mean to say to check the data type whether a float or int) or need to create a function for that.
Need some guidance to proceed further...

Hi Patrick:)), A very Good Evening!
I have pushed some commits, requesting you to have a review and guidance on further implementations...
Is I am doing in a correct way?
I am thinking to work further on completing the rest of the geometry objects implementation and the topology objects. Once this is done, I am thinking to work upon the transformation and quantization...

Hi Patrick:)), A very Good Evening!
I have pushed some commits, requesting you to have a review and guidance on further implementations...
Is I am doing in a correct way?
I am thinking to work further on completing the rest of the geometry objects implementation and the topology objects. Once this is done, I am thinking to work upon the transformation and quantization...

I've also enabled OCaml-CI for this repo :))

Hi @patricoferris ,
I have one confusion, is the  arcs type same throughout the json file or different referring to the below examples?
{
          "type": "LineString",
          "properties": {
            "prop0": "value0",
            "prop1": 0
          },
          "arcs": [0]
        },

Here, it seems as an int array type
{
          "type": "Polygon",
          "properties": {
            "prop0": "value0",
            "prop1": {
              "this": "that"
            }
          },
          "arcs": [[-2]]
        }

Whereas, it seems to be of type int array array

And, like as you said, the arcs here,
"arcs": [
    [[4000, 0], [1999, 9999], [2000, -9999], [2000, 9999]],
    [[0, 0], [0, 9999], [2000, 0], [0, -9999], [-2000, 0]]
  ]

is of type Position.t array array
So, I think we need to declare the arc type specifically in each geometry module bcz don't think will work with global declarartion

The "arcs" will be different depending on the geometry:

For type “LineString”, the “arcs” member must be an array of arc indexes
For type “MultiLineString”, the “arcs” member must be an array of LineString arc indexes

So if for LineString it is an array of arc indexes i.e. int array then for a MultiLineString an array of such arcs would be an int array array

yeah, thought so only before writing this comment but then thought to just confirm once , thanks Patrick:))

Hi Patrick:)),
Have the following doubts regarding the latest commit:

Throws the following error , I don't understand that why it shows like that, quite confusing :disappointed:

 File "src/topojson/topojson.ml", line 337, characters 21-25:
337 |           { objects; arcs }
                           ^^^^
Error: This expression has type float array array
       but an expression was expected of type Position.t array array
       Type float is not compatible with type Position.t = float array

Secondly, How to access the Position.t module form Geometry module into the Topology module, that's why I copy pastes that module into the Topology module as I tried simply using Geometry.Position.t but didn't work

Requesting for your valuable suggestions and guidance on the same.

Secondly, How to access the Position module form Geometry module into the Topology module ? I copy pasted that module into the Topology module as I tried simply using Geometry.Position.t but didn't work

This compiles for me, what was the error you got when trying?
type t = { objects : (string * json) list; arcs : Geometry.Position.t array array }

Yeah now working, actually the issue was: (in the _intf.ml file)
184 |     arcs : Geometry.Position.t array array;
                 ^^^^^^^^^^^^^^^^^^^
Error: Unbound module Geometry

but now resolved...

Hi Patrick:))
There are some issues like:
1.
File "src/topojson/topojson.ml", line 238, characters 17-45:
238 |               @@ LineString.base_of_json json
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: This expression has type (int array, [ `Msg of string ]) result
       but an expression was expected of type (LineString.t, 'a) result
       Type int array is not compatible with type LineString.t = Arcs.t array
       Type int is not compatible with type Arcs.t = int array

File "test/topojson/test.ml", line 47, characters 7-36:
47 |   | Ok { Topojson.Topology.objects } ->
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error (warning 9 [missing-record-field-pattern]): the following labels are not bound in this record pattern:
arcs
Either bind these labels explicitly or add '; _' to the pattern.

Also, the important issue:
File "src/topojson/topojson.ml", line 1:
Error: The implementation src/topojson/topojson.ml
       does not match the interface src/topojson/.topojson.objs/byte/topojson.cmi:
        ... ... ... In module Make.Topology:
       The module `Geometry' is required but not provided
       File "src/topojson/topojson_intf.ml", line 182, characters 2-50:
         Expected declaration

For
File "src/topojson/topojson.ml", line 1:
Error: The implementation src/topojson/topojson.ml
       does not match the interface src/topojson/.topojson.objs/byte/topojson.cmi:
        ... ... ... In module Make.Topology:
       The module `Geometry' is required but not provided
       File "src/topojson/topojson_intf.ml", line 182, characters 2-50:
         Expected declaration

If you follow to where the compiler is warning, it is that you have declared in the interface for Topojson that the Topology module should contain a Geometry module:
https://github.com/IIITM-Jay/ocaml-topojson/blob/d399baf191ed3d6e8f161d098b5a177c40d06870/src/topojson/topojson_intf.ml#L182
In the implementation no such module exists. I can see why you have done this in order to be able to reference Geometry.Position.t. I recommend following the ocaml-geojson way of achieving this by moving the Topology module type into S:
module type S = sig
  type json
  (** The internal representation of JSON *)

  module Geometry : Geometry with type json = json
  module Topology : sig
    type t = {
      objects : (string * json) list;
      arcs : Geometry.Position.t array array;
    }
  end

...

The reason to define Topojson.t as
type t = Topology of Topology.t | Geometry of Geometry.t
is that the value of the  type of TopoJSON object can be any of the Geometry types   or the Topology and not only the Topology (I think so)

The value of the type member must be one of: “Topology”, “Point”, “MultiPoint”, “LineString”, “MultiLineString”, “Polygon”, “MultiPolygon” or “GeometryCollection”. The case of the type member values must be as shown here.

what do you think?  🤔

Good point! In which case it should stay as is, you just need to add the Ok (Topology...) :))

To get the following issue resolved:
File "src/topojson/topojson.ml", line 318, characters 15-22:
318 |           Ok { objects; arcs }
                     ^^^^^^^
Error: This expression has type (string * json) list
       but an expression was expected of type (string * Geometry.t) list
       Type json is not compatible with type
         Geometry.t = Geometry.geometry * (string * json) list

We need to make some changes to the line:
          let* objects = J.to_obj objects in
I am not sure, but thinking so. but got stuck as wondering if J.to_obj   is indeed required ?
I think the objects is getting the type as (string * json) list due to  to_obj objects only, I think... bcoz we have already declare  the objects type as (string * Geometry.t) list everywhere

Looks like we have already done the following:

Yes, we can first convert it to the raw objects association list (string * json list) and then map over it converting the json to a Geometry.t.

but still the issue persists:
318 |           Ok { objects; arcs }
                     ^^^^^^^
Error: This expression has type (string * json) list
       but an expression was expected of type (string * Geometry.t) list
       Type json is not compatible with type
         Geometry.t = Geometry.geometry * (string * json) list

You need to replace it with
Ok { objects = geometries; arcs }

or rename the variable to objects

Actually, I have tried both the ways before also, but was getting the same sort of errors, that's why asked so.
To solve that issue I have used:
type t = {
      objects : (string * (Geometry.t, [ `Msg of string ]) result) list;

so, now the compiler is not showing up that error.
But I am not sure whether I have done it in a correct way or still some better approach can be done for this
What do you think Patrick...

Just a pushed a commit to get the CI running -- opam's metadata is poorly documented, so thought that would be quicker. Be sure to pull that commit in :))

Just a pushed a commit to get the CI running -- opam's metadata is poorly documented, so thought that would be quicker.

Thanks Patrick, I saw the changes and git quite surprised with the fact that embedding the shakey of the successfully passed commit of geojson would help to get the CI running. I too have observed some hash keys of some repo (like ocaml/opam)in the build details.
By opam's metadata is poorly documented, you mean the dune-project file, right?
And working test, what I am missing in this one, can we do like this (showing errors, I know I am missing something):
let () =
  let s = read_file "./test_cases/files/exemplar.json" in
  let json = Ezjsonm.value_from_string s in
  let topojson_obj = Topojson.of_json json in
  match topojson_obj with
  | Ok v -> (
      match Topojson.to_json v with
      | (Topology f,[]) -> (v,f)
      | _ -> assert false)
  | _ -> assert false
  | Error (`Msg m) -> failwith m

Hi Patrick, Good Morning:))
51 |       | Topojson.Topology f -> v
             ^^^^^^^^^^^^^^^^^^^
Error: This pattern matches values of type Topojson.topojson
       but a pattern was expected which matches values of type Topojson.json

Here, we indeed wanted the to match with the values of type Topojson.topojson and of course, we need to check the Topojson.to_json, which is being defined as:
let to_json = function
   | { topojson = Topology f; bbox } -> Topology.to_json ?bbox f

I have spent time trying to rectify it, but not getting the way exactly, need your valuable guidance on the same.

and for this

I think we want type topojson to be type t ?

I have done this bcoz I think due to the bbox implementation:
type topojson = Topology of Topology.t | Geometry of Geometry.t
  and t = { topojson : topojson; bbox : float array option }
  let topojson_to_t tjson bbox = { topojson = tjson; bbox }

That's why kept like that, still wanted your suggestions on this...

Here, we indeed wanted the to match with the values of type Topojson.topojson and of course, we need to check the Topojson.to_json, which is being defined as:

I think things are getting confused here. There are three types I think you are mixing up.

type json -- this is the OCaml representation of the raw JSON i.e. something like { "hello": "world" }.
type topojson -- is a topojson object either a Topology or a Geometry
type t -- is a topojson object but with the shared extra data (like the bounding box)

The function val to_json returns json (the raw JSON i.e. in this test Ezjsonm.value). val of_json produces a type t whose field member topojson is of type topojson, right now there is no way to access that because there is no function to do so and the type t is abstract.
I've fixed these issues which I think should clear things up in this commit https://github.com/geocaml/ocaml-topojson/commit/3631c539c7ce0e9642db7c28d7245934f2a27d77 -- I would recommend that you git cherry-pick that commit into this branch. The implementation needs fixed however as you can see from the failing test https://ci.ocamllabs.io/github/geocaml/ocaml-topojson/commit/3631c539c7ce0e9642db7c28d7245934f2a27d77/variant/debian-11-4.08_opam-2.1 (hint: I would have a look at your foreign members code ;))
Hopefully that's helpful, let me know if anything is not clear :))

What an awesome explanation :+1: , Thank you so much Patrick for this :pray: , the main thing that I was missing:

there is no way to access that because there is no function to do so and the type t is abstract.

I think for the failing test, properties need to be implemented in every Geometry , I guess bcoz properties being eliminated as when we receive after running test, to support

A geometry object may have a member with the name “properties”. The value of the properties member is an object (any JSON object or a JSON null value)

needs your suggestions on the same...

In geojson we have properties field in Feature/ Feature Collection only and not in every Geometry type.
What do you think...

Yes, this is another subtle difference between the two I think. A geometry in this case will be:
type geometry =
      | Point of Point.t
      | MultiPoint of MultiPoint.t
      | LineString of LineString.t
      | MultiLineString of MultiLineString.t
      | Polygon of Polygon.t
      | MultiPolygon of MultiPolygon.t
      | Collection of t list

    and t = {
      geometry: geometry;
      properties: (string * json) list;
      foreign_members: (string * json) list;
    }

And you will have to plumb through properties similarly to how foreign_members is.
Note as well, another reason the test is failing is because geometries is in the output JSON object twice

Added the properties field but that needs your guidance on the same.

Note as well, another reason the test is failing is because geometries is in the output JSON object twice

What could be the reason for that, don't think it could be foreign_members... but not sure

For the error Collection type
 | Collection of t list
we had before
 t = geometry * (string * json) list
but how to do now as we changed it to records

What could be the reason for that, don't think it could be foreign_members... but not sure

The foreign members implementation is not quite right for two reasons:

geometries needs to be in keys_in_use -- that's why it is appearing twice.
keys_in_use is applied for every geometry which is not right. For example it treats arcs as a key in use which is only correct for geometries that use that field. arcs is a foreign member for a Point. I can fix this later in a different PR.

Like the below one, we need to do:
let v ?(properties = []) ?(foreign_members = []) geo =
      { geometry = geo; properties; foreign_members }

    let geometry t = t.geometry
    let properties t = t.properties

    let rec base_of_json json =
      let fm = foreign_members json in
      let props = properties t.properties in
      match J.find json [ "type" ] with
      | Some typ -> (
          match J.to_string typ with
          | Ok "Point" ->
              Result.map (fun v ->
                  {
                    geometry = Point v;
                    properties = props;
                    foreign_members = fm;
                  })
              @@ Point.base_of_json json

The problem is what needs to be written in       let props = properties t in
let rec base_of_json json =
      let fm = foreign_members json in
      let props = properties t.properties in

For
let rec to_json ?bbox = function
      | Point point, foreign_members, properties ->
          Point.to_json ?bbox ~foreign_members ~properties point

It could be changed to something like
let rec to_json ?bbox t = match t.geometry with
      | Point point ->
          Point.to_json ?bbox ~foreign_members:t.foreign_members ~properties:t.properties point

And for
 let rec base_of_json json =
      let fm = foreign_members json in
      let props = properties t.properties in
      match J.find json [ "type" ] with
      | Some typ -> (
          match J.to_string typ with
          | Ok "Point" ->
              Result.map (fun v ->
                  {
                    geometry = Point v;
                    properties = props;
                    foreign_members = fm;
                  })
              @@ Point.base_of_json json

Not quite, you need to actually get the properties JSON value (like we got the foreign members). Here you've tried to access the properties of the OCaml value for the geometry which doesn't make sense because we're actually building that value in this function.

The last part not completely understood, pushed a commit also so that it will be easier to pint out my mistakes ...

Like we should firstly create the function like this :

 let geo_properties properties =
      if properties = [] then [] else [ ("properties", J.obj properties) ]

Secondly, using it here as:

let to_json ?bbox ?(properties = []) ?(foreign_members = []) position =
        J.obj
          ([
             ("type", J.string typ); ("coordinates", Position.to_json position);
           ]
          @ bbox_to_json_or_empty bbox
          @ foreign_members
          @ geo_properties properties)

(i) but now, how to use it here:

  let rec base_of_json json =
      let fm = foreign_members json in
      let props = geo_properties properties in
      match J.find json [ "type" ] with

(ii) _And here while doing in the records, is the following way not correct after resolution of the above point 3(i):
Result.map (fun g ->
                 {
                   geometry = Point g;
                   properties = props;
                   foreign_members = fm;
                 })
             @@ Point.base_of_json json

So I think there's some confusion again here. The base_of_json function takes raw JSON (in the form of the JSON parser so for example, type json = Ezjsonm.value and produces an OCaml value for that object. So:
{
        "type": "Point",
        "properties": {
          "prop0": "value0"
        },
        "coordinates": [102, 0.5]
      },

Needs to produce the Point geometry along with extracting properties field to put in the record (note there are no foreign members here). You are trying to use the geo_properties function you defined, but that is only useful for going the other way around -- producing JSON for the OCaml value.
You need to extract the properties (if there are any) in step 3 (i) from the JSON using functions like J.find and J.to_obj etc. Yes 3 (ii) is fine I think if you fix 3 (i) 👍

Hi @patricoferris ,
I have made some changes to the properties field as per my understanding. I have changed the properties type as
      properties : json option; since I don't find any harm in doing so (taken some reference from geojson) and to fulfil the following objective:

The value of the properties member is an object (any JSON object or a JSON null value).

For the issue so raised, I think need to modify the function     val v : LineString.t array -> t in _intf file and in general the val v func of every geometry types, so need your suggestions and guidance on what changes are required to be done in these...
And I think then it's almost done and would be great if somehow this PR can be merged today

I have made some changes to the properties field as per my understanding. I have changed the properties type as
properties : json option; since I don't find any harm in doing so (taken some reference from geojson) and to fulfil the following objective:
The value of the properties member is an object (any JSON object or a JSON null value).

I think the interface would be better if it still was a string * json list and to take into account the null we could make it an option. Otherwise people could provide something like  `String "hello" which afaict is not a valid property. See for instance the Rust implementation: https://docs.rs/topojson/latest/topojson/struct.Geometry.html
Option<Map<String, JsonValue>>

which for us could be:
((string * json) list) option

For the issue so raised, I think need to modify the function val v : LineString.t array -> t in _intf file and in general the val v func of every geometry types.

I don't quite follow this, why does it need to change ?

Actually, I have used this before only that you mentioned:
((string * json) list) option

but was getting the below error, that's why use json option instead that
269 |                   { geometry = Point g; properties; foreign_members = fm })
                                              ^^^^^^^^^^
Error: This expression has type json option
       but an expression was expected of type (string * json) list option
       Type json is not compatible with type (string * json) list

And for this,

For the issue so raised, I think need to modify the function val v : LineString.t array -> t in _intf file and in general the val v func of every geometry types.

I don't quite follow this, why does it need to change ?

I am getting the error :
282 |                     geometry = MultiLineString g;
                                                     ^
Error: This expression has type
         ?properties:json ->
         ?foreign_members:(string * json) list -> geometry -> t
       but an expression was expected of type
         MultiLineString.t = LineString.t array

For that reason, I thought so,...
May I request to kindly review the code changes once to help me know what mistakes I was doing

I have worked on Polymorphism concept with other languages but now got crystal clear on how to do it with real world OCaml.
Loved the way how properties got fixed up and implemented.
Thanks a lot Patrick... learning more on OCaml Thank you so much :pray:

Thanks @IIITM-Jay for this and for persevering, it's a great piece of work.
For the future, it's a good practice to preserve authorship of code by using tools like git cherry-pick and merging code like https://github.com/IIITM-Jay/ocaml-topojson/pull/1. This also helps when trying to track down changes made and who made them at a later date, particularlt if the code isn't straightforward.

Actually, sorry @patricoferris for the above comment, I was literally trying to use  git cherry-pick for most of the changes that you've made earlier but everytime I am getting errors and somehow it didn't work. but will take care from now onwards.
But anyways thanks a lot once again :pray:

Actually, sorry @patricoferris for the above comment, I was literally trying to use git cherry-pick for most of the changes that you've made earlier but everytime I am getting errors and somehow it didn't work. but will take care from now onwards.

No worries, please ask questions if this is the case though so I can help :))


Example has 9 errors

Hi i am beginner and need try the example but have 9 errors with the example!

Example has now zero errors :D
Some occured because a video was remove from web-servers.
Follow this PR: https://github.com/brianegan/chewie/pull/475 for fixes


Assign types to json aggregations (pgx)

What do you want to change?
AFAIK sqlc cannot assign types to json aggregations.
For example:
select
  ...
  json_build_object(
    'id', s.id,
    'description', s.description
  ) as Show
from ...

Show will be exported as []bytes. I am able to get around this by skipping sqlc and using pgx:
v, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[types.PersonWithShow])

However seeing that sqlc can assign types to jsonb at a column level via overrides, I feel it would be very useful to be able to assign types to json at a query level.
What I would like to be able to do is:
  json_build_object(
    'id', s.id,
    'description', s.description
  )::Show as Show

I went down a rabbit hole trying to add custom pg types and setting db_type as an attempt for this to work in sqlc's current state, but gave up as I wasn't convinced this was the right direction.
Is this something that is possible in sqlc?
What database engines need to be changed?
PostgreSQL
What programming language backends need to be changed?
Go

Tracking JSON unmarshaling of custom structs here: https://github.com/sqlc-dev/sqlc/issues/2761 and composite type support here #2760.

I would really like this.


Create buffer from user defined class

I couldn't use your circular_buffer with any of my defined types. For instance, none of the classes defined here https://en.cppreference.com/w/cpp/language/rule_of_three
I am using msvc 2017 and it  throws an error nad a warning:

warning C4624: 'jm::circular_buffer<my_type,3>': destructor was implicitly defined as deleted
'jm::circular_buffer<my_type,3>::~circular_buffer(void)': attempting to reference a deleted function

Thanks

should be fixed now

Yes!
Well done!
Thank you
Em ter, 10 de jul de 2018 às 17:35, Justas Masiulis <
<EMAIL_ADDRESS>escreveu:

should be fixed now
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JustasMasiulis/circular_buffer/issues/2#issuecomment-403957197,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFpfhoRA4QoYTe4xchL1_yM1CBA08TqJks5uFRAmgaJpZM4VJ4hp
.

May suggest a test that fails?
Insert a vector as an attribute
struct leak_checker {
leak_checker() { ++num_constructions; }
~leak_checker() { ++num_deletions; }

leak_checker(const leak_checker&) { ++num_constructions; }

leak_checker(leak_checker&&) { ++num_constructions; }

leak_checker& operator=(const leak_checker&) = default;
leak_checker& operator=(leak_checker&&) = default;

std::vector numbers;
};
Em ter, 10 de jul de 2018 às 17:59, Justas Masiulis <
<EMAIL_ADDRESS>escreveu:

Closed #2 https://github.com/JustasMasiulis/circular_buffer/issues/2.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JustasMasiulis/circular_buffer/issues/2#event-1726534845,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFpfhi8peNJJZuL0QR8-TZVv9pBiW5F3ks5uFRXAgaJpZM4VJ4hp
.


refactor(anta.tests)!: Update the pass/fail criteria for testcase VerifyBFD

Description

Moved VerifyBFD testcase from generic to bfd file and rename with VerifyBFDPeersHealth
Added the remote dick verification and an optional input parameter of last down to verify if peer was down more threshold hours.

Fixes #503
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have run pre-commit for code linting and typing (pre-commit run)
[ ] I have made corresponding changes to the documentation
[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 (tox -e testenv)

LGTM


CadenceFixture: Add option to start without connecting a client

This will be important if we end up shipping the initial release without support for multiple client connections.

DONE: Released in 0.5.8-alpha


cmake: use BUILD_INTERFACE/INSTALL_INTERFACE

Fixes #741

Pull request checklist

[x]  Changes are described in the pull request, or an existing issue is referenced.
[x]  The test suite compiles and runs without error.
[x]  Code coverage is 100%. Test cases can be added by editing the test suite.

Can one of the admins verify this patch?

Coverage remained the same at 100.0% when pulling 541ee62a05d007e1356e4d89d70f52a84282ca80 on theodelrieu:fix/cmake_include_directories into f4c01601faea6157341481734c6711716dd1c1e8 on nlohmann:develop.

Thanks!


Issues 174, 101 missing technical specs

Issues 174 and 171  talk about adding a toConsole() method to the interfaces Take and Response* , a first approach is proposed in the  171  issue discussion, but since those 2 Interfaces are the center of many things in the project, something special is required to accomplish that.
The platform architecture could be changed trying to accomplish that, for example.
1st Approach:

Create the ConsoleFriendly interface with the correspondent  toConsole() method, and make Take and Respose inherit that.
Result:
Every single implementation of those two interfaces, including the inner anonymous classes will need to implement the toConsoleMethod().

btw it could look something like:
	public String toConsole() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
				.toString();
	}

Causing lots of code repetition.
2nd Approach:*
Convert those interfaces to abstract classes and give the implementation of the toConsole()  method in two places of the system (Response and Take now abstract clases with a implemented toConsole method).
And this would imply remove all     @Override  annotations in the  "act" methods all over the platform.
This or having to change the act method in Takes to:
 public Response act(Request req) throws IOException{
    	 return null;
     }

Finally the 3rd Approach
And this one I like but I would need to research it's viability, and is about to create an aspect to add this behavior to the "toString" method of the required Interfaces implementation, but this one could be the slowest one.
Anyhow this sounds to me, like I need more documentation on what are the architectural guidelines of the platform so I can adhiere to them.
@davvd @yegor256

@m4solutions milestone set to 1.0 (correct me if I am wrong)

@yegor256 this task is yours,go ahead

@m4solutions many thanks for the report, I topped your account for 15 mins, transaction 55933067

@m4solutions I'm thinking about it...

@marcuss we should use toString


Published file stays in Publishes area after removing (without abandoning)

The Issue
If you remove a published file but don't check the "abandon" option, it will stay in your Publishes area but will seem like you haven't downloaded it.  I'm not sure how we would want to handle this - what would be the scenario where someone would want to remove it from their list without abandoning the claim? If they did this, they would have to manually abandon the claim via CLI right?
Steps to reproduce

Remove published file but don't check the abandon option
Go back into Publishes, it's still there.

Expected behaviour
Not sure
Actual behaviour
Tell us what happens instead
System Configuration

LBRY Daemon version:
LBRY App version:
LBRY Installation ID:
Operating system:

Anything Else

Screenshots

yes if the user forgets to press the abandon claim they must use the CLI to abandon it, i went through this first time using it lol

something like this would be a work around

I think we should remove the option to abandon claim from claim page when clicking the remove button (or just disable the button), what do you guys think?

not sure if this issue was addressed i think would fall under here but when i press the trash can button for one of my claims it goes oit of published but remains in downloaded, shouldnt it be removed all together from the app ui maybe not delete my file but delete blobs ect.

@liamcardenas if we remove the option, are you suggesting we always abandon it? If not, I suspect at least some users will be confused that removing a file for one of their publishes does not remove the ability for others to discover and access it.

https://github.com/lbryio/lbry-app/issues/895


[Bug]  Retained messages and Remove Topics

Hi,
It's not possible to remove retained messages:

I think that 1 devices is sending a lot of messages and I need to ignore them.
It's possible to block only one topic ?
I removed the topic from the writing device and I still receive it.

hi @jot4p!
Thanks for reaching out with the issue.
You get the error shown above when you try to delete the retained message for a specific topic that already does not have the retained message. Please try to refresh the page with the Refresh button on the top right corner of the page before you try to delete it.
If you say the devices are sending a lot of messages, I assume some of those messages can clear the retained message with the empty payload, while others can create a retained message for a topic with a non-empty payload. And this could happen regularly. That could be the reason why you see the retained message on the UI but when you try to delete it you get that error.

I removed the topic from the writing device and I still receive it.

To understand why you still receive the messages while you removed the topic from the writing device, I need to see the exact patterns used for the client credential and the topic the device is using to publish the message.

It's possible to block only one topic ?

I can recommend you set a similar auth rule for publishing:
^(?!test/topic$).*$
Where test/topic should be replaced with the exact topic that you want to block. This pattern will allow to publish to any topic except for test/topic.

Hi @dmytro-landiak,
Retained Messages:

It's not possible to remove the retained messages (I try everything)...
... maybe the button should force to remove...

Second topic:

If I remove the topic from the list of allowed topics... Why am I still receiving the data ?

What version of TBMQ are you using? Single node deployment or cluster mode?

Retained Messages:

Do you get the same error you sent at the beginning? If yes, please check if the created time is updated for that topic.

First topic:

What version of TBMQ are you using? Single node deployment or cluster mode?

version: 1.2.0
Do you get the same error you sent at the beginning? If yes, please let me know if the created time is changing for that topic.

It's not possible to remove any message from the beginning.

Second topic:

Currently, the client should be reconnected to see that the allowed topics were changed. Is this the case for you? Was the client connected after the credentials were changed? before.. the client is connected from the beginning but if I restart the server the problem is the same.

Unfortunately, it is hard to reproduce the explained issues. Is it possible to get access to your instance and UI? We can continue regarding this via email to avoid sharing sensitive info if you are fine with that (please send me something to<EMAIL_ADDRESS>Otherwise, I will continue investigating this but it will be hard to understand where the problem could be without more details about the patterns, topics, and logs.

@jot4p hi!
I have not heard from you for a while and did not get an email either. Are you able to provide me with more detailed info regarding the issue you are facing in private communication?


Need to set basic configuration according to profile of project

Technical
VSC
Description
In the VSC Project,  we can create the project in the WAPPL by wearable /mobile profile
When open the Design Editor, we check the profile mobile or wearable (for example config,xml ).
Steps to reproduce

Create a  Wearable Project in the WAPPL of VSCode
Open the Design Editor

Expected behaviour
Design Editor is open by wearable profile.
Actual behaviour
Design Editor is open by mobile profile.

This issue should be solved by @hsiwkin who is change a way to set a basepath.
By default, design-editor set screen configuration to mobile and then when config.xml is found it changes screen config.
When you open index.html but in upper directory, basepath is upper directory and design-editor is looking for config.xml in this upper directory instead of project directory.
config.xml is not found and screen config is not changed.

I've reproduced the steps described above and now - after merging the fixes regarding opening projects in workspaces - the issue does not occur.

It's good working.
We can be close the issue


CC-14 # Gracefully handle null path parameter

null is no longer passed as cwd
bumped version number

LGTM 👍


iOS 14 doesn't receive Dynamic Links on first install (No pre-install link matched for this device)

[REQUIRED] Step 1: Describe your environment

Xcode version: 12.2
iOS version: 14.3
Firebase SDK version: 7.1
Installation method: CocoaPods
Firebase Component: Dynamic Links

[REQUIRED] Step 2: Describe the problem
When the app is not installed and tap a Dynamic Link, the application:openURL:options method does not receive the dynamic link url
Steps to reproduce:

App not installed previously
Tap Dynamic Link
Device show App Store page for app
From Xcode build and run app
application:openURL:options receive url = "p://google/link/?request_ip_version=IP_V4&match_message=No pre-install link matched for this device"

Relevant Code:

(BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *, id> *)options {
BOOL handled=YES;
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink && [DynamicLinksManager isARealiableDynamicLink:dynamicLink]) {
if (dynamicLink.url) {
      handled=[DynamicLinksManager handleWithMainUrl:dynamicLink.url];
  } else {
  }

}
return handled;
}

Could you please share the firebase dynamic link used?

https://app.shopadvizor.com/monavis

Could you please try to reproduce this issue in the quick start app?
https://github.com/firebase/quickstart-ios/tree/master/dynamiclinks

Hello,
Sorry for intervening :) but are there any updates on this?
thanks

ENVIRONMENT
Xcode version: 12.4
iOS version: 14.4
App: quickstart-ios (https://github.com/firebase/quickstart-ios/tree/master/dynamiclinks)
REPRODUCING ISSUE ON quickstart-ios

Download quickstart-ios
Based on the values and configuration files of the original project, configure Dynamic links according to https://firebase.google.com/docs/dynamic-links/ios/receive#objective-c_2
Run diagnostic [FIRDynamicLinks performDiagnosticsWithCompletion:nil]; with output:

---- Firebase Dynamic Links diagnostic output start ----
Firebase Dynamic Links framework version 7.4.0
System information: OS iOS, OS version 14.4, model iPhone
Current date 2021-03-02 17:59:45 +0000
Device locale en-ES (raw en_ES), timezone Europe/Madrid
Specified custom URL scheme is com.XXXX.YYYY and Info.plist contains such scheme in CFBundleURLTypes key.
AppID Prefix: WWWWWWW, Team ID: WWWWWWW, AppId Prefix equal to Team ID: YES
performDiagnostic completed successfully! No errors found.
---- Firebase Dynamic Links diagnostic output end ----

App not installed previously
Tap dynamic link
From Xcode build and run quickstart-ios
In method application:openURL:options receive url = "com.XXXX.YYYY://google/link/?request_ip_version=IP%5FV4&match_message=No%20pre%2Dinstall%20link%20matched%20for%20this%20device%2E"
FIRDynamicLink created according to that url, delivers the values shown in the attached image
The test was done with both true and false values for FirebaseDeepLinkPasteboardRetrievalEnabled

@cuicmex @eldhosembabu  Are there any updates on this? I want to integrate the firebase dynamic links. I test several times in iOS14.2.1 and iOS14.4.1. It works well. But if it have chance to fail to work in iOS14, I need to know it and have some backup mechanism.

Any updates on this issue?I almost gave up on this SDK

Same issue here if isForcedRedirectEnabled=true. Any updates?

Hi. I'm facing the same issue. Any update?

Only first start app I have url "com.my-project://google/link/?request_ip_version=IP%5FV4&match_message=No%20pre%2Dinstall%20link%20matched%20for%20this%20device%2E
" isForcedRedirectEnabled=true and isForcedRedirectEnabled=false don't help. iOS 14+. I understand this because of Apple's restrictions on collecting user information. If there are developers of the library, let me know if any work is being done in this direction?

I create the url manually

FWIW, I did some debugging and here's the rough sequence of events I saw that seems to only occur on first install of an application using the library. I'm running a slightly older version of the framework but I checked the latest and didn't see any changes that would seem to have an impact on this.

App launches and initiates [FIRApp configure]
Eventually as a part of that configure process, -[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLink] is called, which then initiates -[FIRDLDefaultRetrievalProcessV2 fetchLocaleFromWebView] due to _localeFromWebView` property not being set to anything yet.
Fetching the locale seems to execute a FIRDLJavaScriptExecutor to run some Javascript to get the device's locale (I'm sure there's historical context I'm unaware of, but not sure why the iOS SDK's locale APIs couldn't be used for this)
The executor finishes, and ultimately results in -[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLinkInternal] being called, which eventually makes a call to [_networkingService retrievePendingDynamicLinkWithIOSVersion...] (truncated for brevity)
Ultimately, all of this ends up calling [FIRDynamicLinks passRetrievedDynamicLinkToApplication:] which triggers whatever deeplink logic you've got in your application.

In our case, we have a property that stores the last received deeplink in case our app isn't yet initialized (as all this happens VERY quickly after the AppDelegate initializes, so we may not have a fully-initialized ViewController stack to work with yet), and in the case where a valid deeplink was clicked that resulted in the app being launched for the first time, this basically causes a race condition where sometimes this "phantom" empty fingerprinting deeplink comes first, and sometimes the originally clicked deeplink comes first... and whichever one comes second was overwriting the first in our case.
We had to add logic to discard any deeplinks that didn't contain any meaningful URL and that allowed us to work around the issue, but it took us a while to chase it down.
Here's the stack trace I saw when putting a breakpoint in my AppDelegate's application:openURL:options: handler:
Thread 1 Queue : com.apple.main-thread (serial)
#0	0x0000000102b2eb08 in <my ApplicationDelegate canOpen handler>
#1	0x0000000103e19f9c in -[GULAppDelegateSwizzler application:openURL:options:] at <rootProjectDir>/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m:716
#2	0x00000001039d4f10 in -[FIRDynamicLinks passRetrievedDynamicLinkToApplication:] at <rootProjectDir>/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinks.m:537
#3	0x00000001039d51a8 in -[FIRDynamicLinks retrievalProcess:completedWithResult:] at <rootProjectDir>/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinks.m:574
#4	0x00000001039cc0dc in -[FIRDLDefaultRetrievalProcessV2 handleRetrievalProcessWithResult:] at <rootProjectDir>/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLDefaultRetrievalProcessV2.m:172
#5	0x00000001039cbed4 in __68-[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLinkInternal]_block_invoke at <rootProjectDir>/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDLDefaultRetrievalProcessV2.m:133
#6	0x00000001039d1c98 in __105-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]_block_invoke_3 at <rootProjectDir>/Pods/FirebaseDynamicLinks/FirebaseDynamicLinks/Sources/FIRDynamicLinkNetworking.m:329

Not sure if this will help anyone, but figured I'd share what I know in case it does.

I have the same issue if isForcedRedirectEnabled=true.

"isForcedRedirectEnabled" need to set false
But nowadays, when you open on facebook in-app browser, it doesn't work again.....

We have the same issue with Firebase Unity SDK v8.1.0 ( Cannot receive dynamic links on first install )
Anybody can hellp ??

This also happens to me with flutter2 with firebase_dynamic_links enabled

Any update on this? I have the same issue when using a custom domain and trying to open it in iPads.

Hi @cuicmex ,
Sorry for the delayed response. Could you please share the quick start app where you were able to reproduce the issue as I was not able to reproduce this issue on my end.


Enable vs Disable Performance Analyzer on OpenSearch by default

This is a follow up to this issue #3042 after many new findings.
PA needs two steps to enable and run after OpenSearch cluster starts:

Run bin/opensearch-performance-analyzer/performance-analyzer-cli
Add true to data/performance_analyzer_enabled.conf, which is same as this api call: curl -XPOST localhost:9200/_plugins/_performanceanalyzer/cluster/config -H 'Content-Type: application/json' -d '{"enabled": true}'

The current behaviors of the above 2nd step on all distributions are:

TAR: no file == false by default
Docker (based on TAR): same as TAR
RPM/DEB: true in file == true by default

Since we have the API to enabled PA, I do not think it is needed for PA to have the true file by default on DEB/RPM.
I suggest keep the same behavior on all distributions with PA, disable / false by default == not creating the config file at all.
Thanks.

Hi @kkhatua @sruti1312 could you give some suggestions and thoughts on above?
Thanks.

@kkhatua @sruti1312 Could you please provide an update on this?


excluding some characters from string

Hi,
I want to match a keyword that does not include some specific words or characters, something like using regular expression for the matched keywords.
for example I want to match any sequence of characters that generates a word except AND keyword
any idea how I could do that using PEGTL?

Start by having rules for your keywords:
struct kw_and : TAO_PEGTL_STRING("AND") {};
struct kw_or : TAO_PEGTL_STRING("OR") {};
struct kw_origin : TAO_PEGTL_STRING("ORIGIN") {};

Then have a rule for any keyword:
struct keywords : sor< kw_and, kw_origin, kw_or > {};  // not ...kw_or, kw_origin

Note that is important that in this rule, the keywords which are a prefix of another keyword are always listed in the correct order, i.e. the longer keyword needs to come first in the above sor<...>. This is due to the fact how PEGs work, otherwise ORIGIN would match the OR from the kw_or rule first and the grammar wouldn't even try to match `kw_origin'.
Finally, use the rematch<> rule to match an identifier and make sure it is not a keyword.
struct label : rematch< identifier, not_at< keywords, eof > > {};

This should do the trick.

okay cool, but is identifier by default includes space characters ? as when I try to match test1 test2 it passes, while I want it to fail in my case.
I thought identifier supports only letters & numbers.
here is my grammar:
   struct kw_and : TAO_PEGTL_STRING("AND") {};
    struct kw_or : TAO_PEGTL_STRING("OR") {};
    struct keywords : sor<kw_and, kw_or> {};
    struct label : minus< identifier, keywords> {};
    struct grammar: must<label>{};

That's just because the grammar matches the "test1" part of the input and ignores the rest. You need to explicitly enforce that the input ends after your label. Use:
struct grammar : must< label, eof > {};

It worked!
thank you so much for your help :)

You're welcome, thanks for choosing the PEGTL :)


installation example code is center aligned in firefox

Description
the table inside <div align="center"> acts differently in different browsers. for example in firefox, all the code examples get centered:

screenshot

whereas in chrome and safari the code is left-aligned.
Steps to reproduce
view the readme in firefox
Expected behavior
the code examples should be left-aligned as in chrome & safari.
Environment
firefox

Thank you!


Changed new upstream versions

Also added missing changelogs from the past few comments :)

Hi, I'm outside for the moment and not near a usable github but actually the "upstream" code is automatically updated every Monday, Wednesday and Friday according to the addons_updated addon that runs on my rpi!
The logic is that the addon checks if the tag "upstream" is aligned with the latest release on github (or dockerfile). It does not look the tag "version". If there is a new release, it updates the tag "upstream" in 3 files if relevant : config.json, build.json and Dockerfile, and aligns the tag "version" with the new upstream. This allows to have a dockerfile for example with : BUILD_FROM name/name:$UPSTREAM
If you update it manually, you need to make sure that all instances are changed, as the addons_updater works with sed to replace the tag. So if somewhere the tag upstream does not corresponds to the one in config.json, it will not be updated by my automatic script.
However, I usually link the docker build to "latest". This allows people to always have the latest version, even if my script did not update the version. This avoids issues if for example, the dockerhub image upstream is not named the same way as the github releases.
Hope it clarifies :)
I'll look at all your commits a bit later today! Thanks for the commits!

In the same way, my addons_updater script does not take into account the part after -ls in the upstream versions. Only the part to the left corresponds to the app version, the number after - ls corresponds to improvements made by the linuxserver team that manages some upstream image (for example, an automatic dependence update - useless for us as we are building from the docker image)

Thanks!

awesome didnt know that! thanks for explaining. How is the changelog populated? Is that also done by the addon? It should include the very specific version number.

Yes :) actually there is a high probability that all files realign this night when then addon runs, we'll see tomorrow. It works pretty well :)


Replace arrow entities for glyphicon + template + libs snippets - Rebase of #1624 #1444

Rebase of #1624 #1444
Linked issues/PRs : #610 #833 #834 #1007

Thanks @Azaret!


Update MD file on new branch 2017-12-14_15-38-07

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon1.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.


Reduce the bundle size

The result is quite good:
Initial:
Total Size: 2,426.29 kB
Total Gzip Size: 739.34 kB

After optimizations:
Total Size: 1,442.90 kB
Total Gzip Size: 501.47 kB

The percentage benefit of gzip compression between the two cases is approximately 32.19%.
It enhances the development build, resulting in near-instant compilation.


Show middle state badges for running, starred and checked sub-rows

This PR will introduce indicators for the state of sub-rows in the experiments table.
There will an indicator for selected, starred and running sub-rows.
See https://github.com/iterative/vscode-dvc/issues/1714 for context on the issue.
https://user-images.githubusercontent.com/1231848/178348521-ccc43199-b36b-49f9-9726-339b8c9f7cf9.mov

[Q] Why are we not showing the middle state for experiments that have been selected for plotting?

I just added the plots indicator and will add some tests for all of them now

This pull request will bring the total coverage in the repository to 96.6% (0.0% change).

It was 96.7% before I added more tests. Go figure


XRay: visualization using kCacheGrind

This PR adds a conversion tool that can convert the reports generated by XRay to a format that is readable by kCacheGrind, a program that analyses profiling data and generates call graphs.

I already updated the wiki: https://github.com/RWTH-OS/HermitCore/wiki/Profiling-using-XRay#analysation


Zooming with the Mouse Wheel

Mouse wheel zooming appears to be disabled is there a way to enable it?

https://github.com/tombatossals/angular-openlayers-directive/blob/master/examples/030-custom-parameters-example.html