Add saving other metadata from songs.

Allow browsing by genre.
Fix the errors in PR #487
@alex-phillips This is based on the current master branch, and I've removed anything not related to the genre + metadata stuff.

Sorry guys, but there are a couple of issues with this PR

Bug(s) – please see the reviews.
Leftovers (kutr font and icons).
There's no proper test apparently. No validation of data creation/modification can be found.
AWS integration, which is mentioned in the original PR.

Actually, can you hold this off a bit? I'm doing a massive code linting on the JavaScript part (using eslint-plugin-vue) and don't want you guys to have to fix all the conflicts again.

@phanan Let us know when you think things have settled enough for us to resume working on this.

Yes please.

@X-Ryl669 Can you go ahead and clean this up? This PR is getting kind of messy with 2 implementing the same features. I would clean this up, but have no control over your branch.
Ideally it would be great if you could PR my fork. I'll see if I can pick and choose your changes that seem relevant to this feature and implement them into mine.

@alex-phillips: I don't know how to do this correctly. I've started from your fork, but there was too many commit and I could not submit a PR to phanan's branch. So, what I did, is restarted from my own's master branch (with many changes already), and applied the diff from your fork. Then I made many modifications (to get it to build and work, split the genre into a real SQL table, add GUI, API changes, etc...).
Once I was confident with my code, I've cherry-picked all the commit to a new branch based on phanan's master branch, and submitted/fixed this PR until Travis accepted it.
Back to your remark, since you're rebasing from phanan's branch in your fork, and since this PR includes 100% of your work (but based on phanan's master), I don't know what's the best way to work together.  It's not easy and very time consuming, either I give you write access to my fork's branch (is it possible ?) and you fix the conflict based on what I did on my master branch (but then it's time consuming for you), I don't know what's best.
I've already fixed all conflicts in my fork, but since I'm so far from phanan's branch, it's hard to backport them. Right now, I'm working on an Android's plugin for Kutr/Koel on Orpheus' music player, and I prefer to spend time on this instead of redoing the PR to keep up with the changes.
So, tell me what you prefer.

@X-Ryl669 Let me rebase and fix my PR and then see if I can manually add the changes you've made. That way we're starting from @phanan base master with my changes for this feature (with no additional alterations not intended to be in master) and then gradually see if I can add your additions by looking at the changes in this PR. I suggest we close this PR and stick to the other since, as you said, your master has many additional changes that are hard to back pedal. I can then give you access to my fork in necessary for you to manually add anything I may have missed.

Ok, please go for it. Beware that, since I've changed the DB format (new Genre table), you need to remove the migration files you've done and use mine that includes both yours and mine. Except for this, it's almost 1:1 from your code (except for genre in song table, obviously).


Explicit converters

Addresses #177

[x] Extract directly from stimuli in database + tests
[x] Add converter extraction
[x] Add tests
[ ] Renable feature updating, checking both extractors and converters
[ ] Add way to disable certain stimuli, such as german or original stims. Schema. By default all enabled.

This may require a refactor, so that convertion and extraction is applied across all datasets. It's probably okay right now, but shared Stimuli is causing problems, because they could be shared across datasets. It's becoming more likely because dervied stims (e.g. text) may be shared.
Another potential solution: add some uuids to the stimulus hash, so that they are unique to a task. This probably works in the short term, but it would require essentially reextracting the same features twice in some cases.

Current problem is when I have onset as primary_key of RunStimulus, I get a ObjectDeletedError error late on. No idea why, but it's fixed by rexecting the query. But that is still too strange.

Trying to find a way to not use 'onset' (float) as primary key. Somehow that triggers the odd error.

Talked to Tal. Decision:

[ ] Make stimuli specific to a dataset (so no worries on re-extracting, or sharing resouces)
[ ] Make hash field not unique (because in theory it could overlap w/ the same stimulus in another dataset)
[ ] Use is as primary key in RS table
[ ] Add unique constraint on properties (onset, duration, foreign keys)

Only things missing are:

[ ] Tests for updating functions (that only the correct subset changes when updated)
[ ] Way to disable original stimuli from further processing on ingestion.

I think it's better instead to disable certain transformers for specific datasets. Or rather, in the future to define a mass set of transformers (plus parameters) and apply to all, except for the disabled ones. I'll leave that for another PR.


Remove jquery from pipeline editor and add minor UX improvements

Description
This PR aims at removing jQuery and RefManager from PipelineView component in order to make the implementation closer to the React way.
The refactoring also comes with some improvements on the drag-n-drop behavior, including:

when select/drag a step, the step and its connections (lines) will be moved to top, making them visually recognizable
when a connection line is selected, the start/end dots will also be highlighted.
several minor bugs were fixed, e.g. connection lines sometimes are visually gone.

Checklist

[x] The PR branch is set up to merge into dev instead of master.

Great work! The editor feels smooth to me, although the connections are lagging a bit when selecting many steps and moving them around.
Notes

when select/drag a step, the step and its connections (lines) will be moved to top, making them visually recognizable

Now I can do the following, which I don't really like:

Select connection --> it will be over the unselected step
Unselect connection (just click anywhere else in the editor)

Another screenshot:

Here, when dragging the step in the lower right corner the connection goes over some steps but not over others. I found this a bit confusing, I would rather default to always have the connections below steps.
Connections don't always connect to the step

Exact reproduction steps are a bit hard, but I can reproduce every now and then by:

Select all steps
Move them
Make a subselection
Move them
All these steps are done in quick succession.

After some more playing with the editor I came up with better steps:

Quickly "throw" a step. Meaning that you hold your mouse to select and then quickly move your mouse and let go of the step (don't drag and hold).

What is the UUID that is shown as part of the steps?
As you can see in the above screenshots, there is an additional string included below the filename. I guess this was used for testing, but should be removed.

when a connection line is selected, the start/end dots will also be highlighted.

I really love this! :heart:

Some more notes
When wanting to do a run, the button needs to be pressed twice

Drag select a step
Press "run selected steps"
Note that it didn't work
Press "run selected steps" again
Now it executes

Styling of step status seems off
Not sure whether this is related to the aforementioned UUID that is included, but:

As you can see the background of "Failure" is a lot bigger (my guess is that this is caused by the icon as it not only happens for "Failure"

Connections don't always connect to the step
Thanks for spotting this issue. To precisely reproduce it,

select any step(s)
drag a step that is NOT selected
Just fixed it in my latest commit.

I also changed the behavior to "steps are always on top of connections". What I don't like about it is when you move a step over another, you often see the following.

Earlier I actually implemented exactly as you proposed: move steps to top in the sequence of selection. But then when you create a multi-selection rectangle, the steps are like pop-corns jumping to your eye sight, which is quite annoying.

Connections don't always connect to the step
After some more playing with the editor I came up with better steps:

Quickly "throw" a step. Meaning that you hold your mouse to select and then quickly move your mouse and let go of the step (don't drag and hold).

I can still easily reproduce this:

Styling of step status seems off

This is still the case.

Do a pipeline run
See that the state change (a state that includes an icon, e.g. ":heavy_check_mark: Completed") is not rendered correctly.

Just fixed it in my latest commit. Could you try again?

Works for me. The pipeline runs issue is fixed and connections are now always displayed below other steps. I agree that we can improve on the connection (z-index) behavior (but priority wise I think it is best to postpone it -- feel free to open an issue ;)

Found a minor issue: when you click on a selected step the properties panel doesn't open. I think it should open, especially as we now no longer open the properties pane on drag single select.

Minor issue: when zoomed out the panning is no longer "1:1". Your cursor should stick to the same position on the grid (like it is on 100% zoom level).

Minor nitpick: since you can't drag from a start-connecting-dot on the pipeline step (left circle/dot), when you're not dragging a connection (the arrow under the cursor) the start-connecting-dots shouldn't have the "drop zone" appear on hover.
Really like the addition of the visual drop zone though!

A minor issue when dragging a selection of steps: https://www.tella.tv/video/cl0asjt58000309l82ldkej7s/view
Basically, the step clicked-and-dragged that causes the whole selection to move seems to move more and therefore disconnect with the connection-arrow during the drag.

Minor nitpick: I think we should make the drag less sensitive. I.e. when you try to click a step it should register as a drag when you drag it more. Right now sometimes you try to click a step, move the mouse a bit in the process (unintentionally) and the click is not registered as a click on the step but as a drag.

Minor nitpick: like Yannick mentioned there's a bit of a delay in the connection position update when moving the steps (the connections seem to update their position ever so slightly delayed). If this is too difficult to fix without a major refactor we can leave it like this. I'd say it's similar in "severity" to what we had before, although it was one of the things that I hoped this refactor would be able to remedy/improve.

Overall remark about the refactor: the code structure & abstractions seemed to have improved a ton. Great job!

@yannickperrenet @ricklamers the delay issue should be addressed by the new commits. The approach was explained above, except that it's already quite smooth without canvas API.

Minor nitpick: I think we should make the drag less sensitive. I.e. when you try to click a step it should register as a drag when you drag it more. Right now sometimes you try to click a step, move the mouse a bit in the process (unintentionally) and the click is not registered as a click on the step but as a drag.

Not sure whether this caused it, but I didn't have the following issue before (I can not let go of the step anymore):
https://user-images.githubusercontent.com/26223174/156831313-fa9939de-f65b-456e-9319-0f3ddf113569.mp4
To reproduce: do the "throwing" of the step again but do it with your cursor close to the dot where connections would connect to or close to the outside of the step (so that the quick drag motion is outside of the step).
https://user-images.githubusercontent.com/26223174/156832115-89b69f5e-1cb6-47ca-9b25-6245e1568209.mp4

the delay issue should be addressed by the new commits

The delay is indeed a lot less severe. Combining that with the additional re-render after savePositions makes the editing experience smooth again. Really well done! :100:

@yannickperrenet I think it's okay from UX perspective since user intended to "drag" (with lower sensitivity, user really needs to drag to trigger the dragging behavior). And user should be aware that they started dragging from the edge. So, I think "dragging without touching the step" in this specific case shouldn't be confusing / annoying.
The only problem is that user cannot "finish" dragging. I added an event listener to handle this case. So user will not be locked up by the dragging behavior :-) You can checkout the last commit I made.

You can checkout the last commit and give it a try.

Awesome! Works like a charm :100:


Unmapping/remapping pins

If I create an IO config for a pin with
config = DigitalInput.newConfigBuilder(rpi4j).provider("pigpio-digital-input").id("pin-"+pinNumber).address(pinNumber)....
pin = rpi4j.create(config);

the name "pinX" is registered in the Registry and the pin works accordingly.
If I then want to disconnect the pin I call
pin.shutdown(rpi4j);
which seems to forward the disconnect to pigpio but doesn't unregister the IO in the Registry.
Any attempt to then create a new config with the same id creates an exception:
com.pi4j.io.exception.IOAlreadyExistsException: IO instance [pin14] already exists in the Pi4J runtime context; unable to create a new instance using this reserved id.
	at com.pi4j.provider.impl.ProviderProxyHandler.invoke(ProviderProxyHandler.java:99)
	at com.sun.proxy.$Proxy2.create(Unknown Source)
	at com.pi4j.context.Context.create(Context.java:309)
	at com.pi4j.internal.IOCreator.create(IOCreator.java:60)
	at com.pi4j.internal.IOCreator.create(IOCreator.java:101)
	at com.pi4j.internal.IOCreator.create(IOCreator.java:189)
        ...

The registry on the autoContext doesn't seem to have a way to remove things from it (it is a DefaultRegistry not RuntimeRegistry)

This is a good point. I just ran into it myself.

This is a good point. I just ran into it myself.

Is there is a possibility to support you to solve the issue?

Does this thread alive?

I see @eitch did a commit https://github.com/Pi4J/pi4j-v2/pull/198/files related to this topic.

I merged a PR, and i think it should be fine now since v2.2.0


Set up subtrees to track upstream, add tests

This PR:

adds/changes/removes etc

Testing
Description on how trivy-operator can be tested.

[ ] fresh install works

[ ] AWS
[ ] Azure
[ ] KVM

[ ] upgrade from previous version works

[ ] AWS
[ ] Azure
[ ] KVM

Other testing
Description of features to additionally test for trivy-operator installations.

[ ] check reconciliation of existing resources after upgrading
[ ] X still works after upgrade
[ ] Y is installed correctly

Checklist

[ ] Update changelog in CHANGELOG.md.
[ ] Make sure values.yaml and values.schema.json are valid.

Tested in WC, deployment works, CRDs are installed, operator runs (starboard-exporter even reconciles the reports still)

Ok I'll fix ats next week. Merging this for now


Added Motion Detection

Added motion detection category to the file. Created motionAccessory.ts and updated platform.ts

I decided to remove this change.  Would not have worked.  Not tested.


Unable to run application after recompiling using apktool 2.0.2

We are trying to decompile and recompile an application which uses android support design library, we are able to recompile using apktools 2.0.2. While running the application we are getting the following exception.
12-08 11:49:58.235: E/AndroidRuntime(6057): FATAL EXCEPTION: main
12-08 11:49:58.235: E/AndroidRuntime(6057): Process: jp.co.jiec.myapplication, PID: 6057
12-08 11:49:58.235: E/AndroidRuntime(6057): java.lang.IllegalStateException: Expected 18 but was 17
12-08 11:49:58.235: E/AndroidRuntime(6057):     at com.android.dex.EncodedValueReader.checkType(EncodedValueReader.java:283)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at com.android.dex.EncodedValueReader.readType(EncodedValueReader.java:183)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:704)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
12-08 11:49:58.235: E/AndroidRuntime(6057):     at libcore.reflect.AnnotationAccess.getAnnotation(AnnotationAccess.java:72)

code :
while (childClass != null &&
                    (defaultBehavior = childClass.getAnnotation(DefaultBehavior.class)) == null) {
                childClass = childClass.getSuperclass();
            }

I haven't had a chance to test this code, but you are basically saying that using this code. Using baksmali/smali to disassemble and re-assemble creates an apk that is broken that otherwise would have worked if baksmali was not involved?
If so, copy this over to https://github.com/JesusFreke/smali
My forte isn't smali :)

Thanks for response, we are not using baksmali/smali we just decompiled the apk using
"new ProcessBuilder(APKTOOL_PATH, "d", "-s", apkPath, "-o", tempDirPath).start()"
and then recompiled
"new ProcessBuilder(APKTOOL_PATH, "b", "-a", AAPT_PATH, directory, "-o",outputApkPath);"

Sorry very old ticket here. In the future use a pull request when wanting to change code. Otherwise you get what happened here. A lost ticket in the mess of this backlog.


docker build --pull

Support for the --pull option in build images from Dockerfile
Issue: https://github.com/docker/fig/issues/726
Before merge we need "--pull" support in docker-py.
The test fails for the block. This feature is compatible with the next version of docker-py.
Block: https://github.com/docker/docker-py/pull/421

ping @yograterol :wink:

@aanand Yes I will add test an sign my commit.
@tianon :+1: dont worry ;)

:heart:

@yograterol Still willing to work on this one ?

squashing?! wow that's ugly

I think having the --pull flag (either in docker-compose build or docker-compose up --force-recreate) is quite useful. Any interest?

+1

:+2:

Closing as duplicate of #1494 which has an integration test


Feature/disentangled vae

Added Beta VAE model
Amended evaluation script to accommodate for the model.
Utilized code to generate and reconstruct loss metrics
Added a boiler plate for the disentanglement evaluation file

Fix conflicts to main
Remove all checkpoints (git lfs has been disabled from github for my account...)


scExpression: Remove cell cultures from tissue drop down

Remove cell cultures from tissue drop down. These datasets are not widely applicable and confusing to have show up at the top of the tissue drop down.

capture by "(cell culture)"

Thanks, Seve!
It looks like fixing BE primary filter endpoint fixes this one for free! But I'll keep an eye on it till the BE fix goes to prod before closing this ticket!

Will get this commit merged into staging today!
https://github.com/chanzuckerberg/single-cell-data-portal/pull/2429

In staging now 👌

in prod!


New version: ElectricalEngineering v0.4.9

Registering package: ElectricalEngineering
Repository: https://github.com/christiankral/ElectricalEngineering.jl
Created by: @christiankral
Version: v0.4.9
Commit: 66be1c36207565fdbd9aed2e7dce7a637c8ae445
Reviewed by: @christiankral
Reference: https://github.com/christiankral/ElectricalEngineering.jl/issues/14#issuecomment-1289494320
Description: Julia electrical engineering package

@christiankral please see the message above.  Once you fix the automerge issues you can register again the new revision without changing the version number and this pull request will be automatically updated.
[noblock]


[HUDI-333][Site] Add table of contents in relevant pages

Includes:

Add table of contents in relevat pages
Fix overall font type, size and line-height
Adjust image sizes in admin pages
More minor fixes

Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contributing.html before opening a pull request.

What is the purpose of the pull request
Add table of contents to easily navigate in pages.
Brief change log
.css, .md, .html, .js file changes
Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
Screenshot for look and feel of the changes:
quickstart.pdf
Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

Attached a screenshot for look and feel.
quickstart.pdf

@bhasudha : Ran it locally. Looks great. Thanks for doing this. Helps a lot in navigating each pages. Will go ahead and merge this.

👍


Integer Scaling Thin White Border

Godot version
v4.2.stable.mono.official [46dc27791]
System information
Godot v4.2.stable.mono - Windows 10 (Forward+, Mobile, and Compatibility)
Issue description
Using the newly added integer scaling produces a single-pixel-wide white border around the edge of the screen when in full screen mode. Mode: Viewport, Aspect: Keep, Scale 1(default), Scale Mode: integer. Tested on Forward+, Mobile, and Compatability modes. Tested starting at full screen, or starting in windowed then switching to full screen.
This was possible to achieve in Godot 3 with the old set_attach_to_screen_rect + VisualServer.black_bars_set_margins, for what its worth.
Steps to reproduce
Use the newly added integer scaling mode with Mode: Viewport, Aspect: Keep, Scale 1(default), Scale Mode: integer. Will be most visible with black borders, so using a resolution that integer scales perfectly to monitor resolution is not recommended. Attached below is a blank project with these settings at 320x240.
Minimal reproduction project
Test.zip

This worked. Thanks very much. Closing issue.


Add Eidolon by @artsy

Hey @orta @ashfurrow @1aurabrown

Is Eidolon on the App Store?
What's the name  of the app (what's the bundle display name)?

Thanks

The app's display name is "Kiosk", but it's not on the store. It's enterprise distributed (more details are [here](http://artsy.github.io/blog/2014/11/13/eidolon-retrospective/]. The repo looks good!

Thanks @ashfurrow


sumneko-lua-language-server: set logpath and metapath to $XDG_CACHE_HOME if set

Description of changes
Some people are facing this problem on my last PR. Since some people don't have the $XDG_CACHE_HOME variable set to something, the program creates strange directories named XDG_CACHE_HOME.
This new PR will fix the problem as you can see below:
$XDG_CACHE_HOME empty:

$XDG_CACHE_HOME set to $HOME/.local/cache:

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Can you please rebase your branch to master, to avoid branch merge with master.


updated the files to verify input params is not empty

This PR is in test, do not merge yet.

The PR can be merged. It is tested for incubator pipelines.

This PR is no more required, since we updated the image lowercase url script to handled the edge cases of migration from old cloud pak 4.1 to 4.2 with these PR
https://github.com/kabanero-io/kabanero-pipelines/pull/404
https://github.com/kabanero-io/kabanero-pipelines/pull/408
https://github.com/kabanero-io/kabanero-pipelines/pull/409
So marking this pr as closed.


[Feature Request]: Use partitionsFor instead of listTopics in ReadFromKafkaDoFn

What would you like to happen?
For brokers with a huge amount of partitions, using listTopics adds unnecessary overhead. Using partitionsFor would be preferable.
Issue Priority
Priority: 2 (default / most feature requests should be filed as P2)
Issue Components

[ ] Component: Python SDK
[X] Component: Java SDK
[ ] Component: Go SDK
[ ] Component: Typescript SDK
[X] Component: IO connector
[ ] Component: Beam examples
[ ] Component: Beam playground
[ ] Component: Beam katas
[ ] Component: Website
[ ] Component: Spark Runner
[ ] Component: Flink Runner
[ ] Component: Samza Runner
[ ] Component: Twister2 Runner
[ ] Component: Hazelcast Jet Runner
[ ] Component: Google Cloud Dataflow Runner

So instead of
for (List<PartitionInfo> topicPartitionList : consumer.listTopics().values()) {
    topicPartitionList.forEach(
        partitionInfo -> {
          existingTopicPartitions.add(
              new TopicPartition(partitionInfo.topic(), partitionInfo.partition()));
        });
}

Have something like:
List<PartitionInfo> topicPartitionList =
          consumer.partitionsFor(kafkaSourceDescriptor.getTopicPartition().topic());
topicPartitionList.forEach(
    partitionInfo -> {
         existingTopicPartitions.add(
              new TopicPartition(partitionInfo.topic(), partitionInfo.partition()));
    });


[#2] Fix clamping of two consecutive elements with a common parent

This commit also introduces a CHANGELOG.

I have not looked into the problem itself, but have two further questions:

Won't your changes mean that a list of sibling nodes will never be processed in batch again, but always end up as a list of n deferrred iterations?

If yes, this sounds painfully slow.
In that case, we probably want to do this only for elements that are potentially affected. Sadly, we can not use getComputedStyle to check for a max-height (as this could trigger a redraw) and might need to resort to a different solution, like checking extra attributes on the element (ugly, I know).

If siblings are set up like "node1 with max-height and clamping" + "node2 without clamping" + "node3 with max-height and clamping", I fear this would not fix the issue you encountered. Let me know if I'm missing something.

The idea of deferring is probably correct. However, we might need to use a differently structured approach.

I have not looked into the problem itself, but have two further questions:

Won't your changes mean that a list of sibling nodes will never be processed in batch again, but always end up as a list of n deferrred iterations?

If yes, this sounds painfully slow.
In that case, we probably want to do this only for elements that are potentially affected. Sadly, we can not use getComputedStyle to check for a max-height (as this could trigger a redraw) and might need to resort to a different solution, like checking extra attributes on the element (ugly, I know).

If siblings are set up like "node1 with max-height and clamping" + "node2 without clamping" + "node3 with max-height and clamping", I fear this would not fix the issue you encountered. Let me know if I'm missing something.

The idea of deferring is probably correct. However, we might need to use a differently structured approach.

You are right with 2), I added an example to the test file as a basis for further steps.
On the screenshot can be seen that the last paragraph is not clamped (although it should be).

I think the described issue in 1) is only partially correct.
Prior to my changes in this branch, we would call #clamp sequentially on each given node before calling drainQueue once. Now we do almost the same, while deferring the clamping for neighbors.
In the most extreme case (if all nodes are neighbored), every other element would be deferred. Even then, only a second batch processing will happen (not n!) as none of the deferred nodes are neighbored anymore.

Yeah, the check for previousElementSibling is way too simple. The suggested changes do not fix the issue in multiple cases:
.common-parent
  .clamp-element-with-min-height -# Clamped just fine
  %div
    .clamp-element-with-min-height -# NOT CLAMPED CORRECTLY
  .clamp-element-with-min-height -# NOT CLAMPED CORRECTLY

I think a feasible solution must be based on the neighborhood of nodes within a common parent. This could be quite difficult.

This attempt has been abandoned in favor of https://github.com/makandra/superclamp/pull/6


Box around Text -> Incorrect Bounding Box

[x] Review the documentation: https://virocore.viromedia.com/
[x] Search for existing issues: https://github.com/viromedia/virocore/issues
[x] Use the latest ViroCore release: https://virocore.viromedia.com/docs/releases
[x] Turn off Instant Run in Android Studio

Environment
Please provide the following information about your environment:

OS: Mac
Version: ViroCore version: 1.7.2
Device(s): Android OnePlus 5t

Description
Getting a bounding box of a text element has proven challenging and inaccurate. I've attempted to scale the text down further however with different camera positions the box is significantly off. Frequently the bounding box around the text will return 0 for everything as well.
I've attempted upgrading to 1.8.2 however due to other issues this did not work.
I just tested 1.9 and still returned incorrect, additionally it seems like camera placement in both 1.8.0, 1.8.2, and 1.9.0 are being set incorrectly now compared to 1.7.2 and below.
Seem to be set directly at facing straight, even though we've saved off camera position and set it for a static scene.

Reproducible Demo
    public static Node createTextNode(String text, StreemViroView viroView, Integer width, Integer height) {

        Node containerNode = new Node();
        Node textNode = new Node();

        // Large text size here. Smaller text when scaled gets blurry. If we render large text then scale it down on a parent node then it doesn't get blurry when scaled.
        Text textGeometry = new Text.TextBuilder()
                .viroContext(viroView.getViroContext())
                .textString(text)
                .fontFamilies("Roboto")
                .fontSize(100)
                .height(height)
                .width(width)
                .color(Color.parseColor("#008CFF"))
                .horizontalAlignment(Text.HorizontalAlignment.CENTER)
                .verticalAlignment(Text.VerticalAlignment.CENTER)
                .lineBreakMode(Text.LineBreakMode.NONE)
                .clipMode(Text.ClipMode.CLIP_TO_BOUNDS)
                .maxLines(1)
                .build();

        textNode.setGeometry(textGeometry);
        textNode.setTag(TextUtil.TEXT_NODE_PREFIX + "text");

        containerNode.addChildNode(textNode);

        return containerNode;
    }

public static void createBoxNode(Node boxNode, float width, float height) {
        Quad planeGeometry = new Quad(width, height);

        Material material = new Material.MaterialBuilder()
                .diffuseColor(Color.WHITE)
                .lightingModel(Material.LightingModel.CONSTANT)
                .shadowMode(Material.ShadowMode.DISABLED)
                .build();

        planeGeometry.setMaterials(Arrays.asList(material));

        boxNode.setGeometry(planeGeometry);

        boxNode.setTag(TextUtil.TEXT_NODE_PREFIX + "box");
    }

    public static Node createPOVNode(StreemViroView viroView, Vector position) {
        Node boxNode = new Node();

        Vector cameraPosition = viroView.provideView().getLastCameraPositionRealtime();
        float distance = cameraPosition.distance(position);
        float scale = distance * .04f;

        boxNode.setScale(new Vector(scale, scale, scale));

        return boxNode;
    }

Creation:
Mind you some of this is purely to attempt to scale the text down far enough to fit inside the box. However this is no longer sufficient enough as the return size for the bounding box is seemingly inconsistent enough that it doesn't work in all scenarios.
transformNode.setTransformBehaviors(EnumSet.of(Node.TransformBehavior.BILLBOARD));

        this.textNode = TextUtil.createTextNode(text, streemViroView, jobView.getWidth(), jobView.getHeight());

        rotationNode.addChildNode(textNode);
        transformNode.addChildNode(rotationNode);
        transformNode.setOpacity(0);

        rootNode.addChildNode(transformNode);
        setupTouchEvents(transformNode);
        textNode.setScale(new Vector(1, 1, 1));

        /*
            Viro doesn't return bounding box of the TextNode synchronously. Without a delay the bounding box returned is 0.

         */
        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                BoundingBox boundingBox = textNode.getBoundingBox();

                Double w = ((boundingBox.maxX - boundingBox.minX) * 1.10);
                Double h = ((boundingBox.maxY - boundingBox.minY) * 1.50);
                TextUtil.createBoxNode(boxNode, w.floatValue(), h.floatValue());

                textNode.removeFromParentNode();

                double centralY = (((boundingBox.maxY - boundingBox.minY) * 1.5) / 2) - ((boundingBox.maxY - boundingBox.minY) / 4);
                textNode.setPosition(new Vector(0, centralY * -.5, 0.01));

                Double selectedW = w * 1.10;
                Double selectedH = h * 1.10;
                TextUtil.createSelectedBoxNode(selectedNode, selectedW.floatValue(), selectedH.floatValue());

                Node containerNode = TextUtil.createPOVNode(streemViroView, position);

                boxNode.addChildNode(textNode);

                containerNode.addChildNode(boxNode);
                containerNode.addChildNode(selectedNode);

                rotationNode.addChildNode(containerNode);

                updateTransformation(position, scale, rotation.floatValue());

                // Additionally sometimes the bounding box is smaller than reality so we scale down the text afterwards so it fits in the white box.
                textNode.setScale(new Vector(.7, .7, .7));
                transformNode.setOpacity(1);

            }
        }, 100);

This makes sense, I moved the addition of the billboard to after measurements had been completed and things seemed to work but was unsure why that effected things.
I'll also try to high accuracy stuff and see if that solves some other issues.
Currently the measurements for the bounding box of text do not include the letter descenders.


Import .carto file with create_vis parameter doesn't create a map

Contect

Python SDK version: 1.6.0

According to the CARTO Import API documentation, in order to import a .carto file into CARTO, you have to add the parameter "create_vis=true".
When I try to import a carto file using the Python SDK using the parameter create_vis=True, CARTO is importing only the datasets but it is not creating the map:
dataset_manager = DatasetManager(auth_client)
for filename in glob.iglob('output/*.carto'):
    # files = {'file': open(Path(filename), 'rb')}
    table = dataset_manager.create(filename, interval=None, create_vis=True)

However, if I call the CARTO Import API directly like this, the carto file is importing the datasets and it creates the map:
 r = requests.post('https://{username}.carto.com/api/v1/imports/?api_key={api}&create_vis=true'.format(username=new_username, api=api_key_new_username), files=files)

If I other parameters to set the different properties of the created dataset, for example to set the privacy of the dataset that is imported, CARTO creates the dataset properly:
dataset_manager = DatasetManager(auth_client)
for filename in glob.iglob('output/*.carto'):
    # files = {'file': open(Path(filename), 'rb')}
    table = dataset_manager.create(filename, interval=None, privacy='link')

Is create_vis in the Python SDK the correct name of the parameter to create a map from a .carto file?
cc @oleurud

Removing from RT since seems minor (and there's a workaround).
Thanks for reporting!


ArcadePhysics GroupVsGroup collisions skip certain objects.

Version

Phaser Version: 3.22.0

Operating system: MacOS

Browser:

Description

Expected behavior: Tilemap in one Group will collide with Sprite in another Group, if the Groups are set to collide.
Actual behaviour: No collision occurs. Sprite falls through the floor or moves through a wall.
Additional notes:

Arcade Physics is used in all cases.
The Group is the Physics version.
When adding a Tilemap to a Physics Group, it gains a Body. Remove the Body - it does not reflect per-tile collisions.

Cause:
In Phaser.Physics.Arcade.World.prototype.collideGroupVsGroup, it steps through the children of group1 and runs collideSpriteVsGroupon each, against group2. Thus, when a Tilemap is a child of group1 (but not group2), it is treated as a Sprite.
However, collideSpriteVsGroup will return early if it cannot find body on the "Sprite". We have removed the Body from the Tilemap to get accurate collisions, so it fails this check, and no collision is run.
Example Test Code

It's actually easiest to see the problem in the source code:
collideGroupVsGroup: function (group1, group2, collideCallback, processCallback, callbackContext, overlapOnly)
    {
        if (group1.length === 0 || group2.length === 0)
        {
            return;
        }

        var children = group1.getChildren();

        for (var i = 0; i < children.length; i++)
        {
            this.collideSpriteVsGroup(children[i], group2, collideCallback, processCallback, callbackContext, overlapOnly);
        }
    }

collideSpriteVsGroup has the following code:
if (group.length === 0 || !bodyA || !bodyA.enable)
{
    return;
}

Tilemaps do not have bodies, so they won't pass the check, and no collision will be evaluated.
Additional Information

I resolved the issue in my code by modifying collideGroupVsGroup. It uses collideHandler instead of collideSpriteVsGroup. This correctly evaluates collisions.
I think it could be more efficient, however. collideHandler will evaluate the type of group2 every time, but we know it's a Group by this point. This means an unnecessary check of group2 type for every object in group1, which can add up.
A more efficient fix would be a version of collideHandler where the second object is known to be a Group.

What is the collide() or collider() call exactly?

@samme I just create a Collider, scene.physics.add.collider( group1, group2 ). If group1 has a Tilemap in it, it won't collide with anything in group2. If group1 has a Sprite in it, it WILL collide with anything in group2.

I tried collisions with TilemapLayer in Group and they all seemed to work: https://codepen.io/samme/pen/MWwePJQ.

Interesting. My discovery conditions were pretty deep in a complex process, and I used this.physics.add.group instead of this.add.group. If you switch that in the codepen, everything goes crazy. The tilemap falls off screen, because the physics group gives it a body. So I add this.physics.world.disableBody( layer.body ); delete layer.body;. At that point, the sprites both fall through the tilemap. I can re-establish collisions by adding this.physics.add.collider( layer, group2 );, but the inverse (this.physics.add.collider( player1, group1 );) does not work.
If I insert the following function (indicating where a change was made), the group1->group2 collision works, but the group2->group1 collision does not.
function fixTilemapGroupCollisions() {
  const World = Phaser.Physics.Arcade.World.prototype;
  if ( !World.__collideGroupVsGroup ) {
      World.__collideGroupVsGroup = World.collideGroupVsGroup;
      World.collideGroupVsGroup = function ( group1, group2, collideCallback, processCallback, callbackContext, overlapOnly ) {

          if (group1.length === 0 || group2.length === 0)
          {
              return;
          }

          var children = group1.getChildren();

          for (var i = 0; i < children.length; i++)
          {
              // Changed from `collideSpriteVsGroup`.
              this.collideHandler(children[i], group2, collideCallback, processCallback, callbackContext, overlapOnly);
          }
      };
  }
}
fixTilemapGroupCollisions()

The reason that 1->2 works with this variant code is that collideHandler takes the Tilemap from group1 and feeds it to collideGroupVsTilemap. But 2->1 doesn't work, because when collideHandler gets a Group as parameter object1, it only runs a collision if object2.body exists. And we have to remove the body to get the Tilemap behaving properly inside the physics group.
In other words, the collision behaves differently depending on whether Tilemap was the first or second participant. That is inconsistent and causes problems. In fact, any time a bodiless Tilemap is the second participant in a Group collision, it looks like it should fail to collide.
Hmm, I thought my fixTilemapGroupCollisions method would work, but it only fixes 1->2 collisions. I think I have to fix the other direction too.

In fact, collideSpriteVsGroup just does body checks, so if the Group has a Tilemap, it will be skipped.
I have an idea about swapping the inputs to collideHandler. That might make the whole process a bit more robust. Hold on...

I made a simplified collision handler. It adds a new function, collideTypes, which strictly orders collision participants, breaks down Groups, and boils everything down to either SpriteVsSprite or SpriteVsTilemap right there. This appears to resolve all my issues.
Drawbacks: It invalidates a lot of the methods on World, because it only uses two of them. Furthermore, it can't apply the useTree functionality in World, because the tree function assumes that everything in a Group has a Body, and that's not true when dealing with tilemaps. But it's a great deal more solid, and will always run the same interaction no matter which object comes first. (This may be another drawback! It may reorder the objects involved in a collision. If that order is somehow used elsewhere, this code will break that assumption.)
Anyway, here's the modified codepen, with the Phaser hacks at the top:
Phaser.Physics.Arcade.World.prototype.collideHandler = function (object1, object2, collideCallback, processCallback, callbackContext, overlapOnly)
{
    //  Collide Group with Self
    //  Only collide valid objects
    if (object2 === undefined && object1.isParent)
    {
        return this.collideTypes(object1, object1, collideCallback, processCallback, callbackContext, overlapOnly);
    }

    //  If neither of the objects are set then bail out
    if (!object1 || !object2)
    {
        return false;
    }

    return this.collideTypes( object1, object2, collideCallback, processCallback, callbackContext, overlapOnly );
};

Phaser.Physics.Arcade.World.prototype.collideTypes = function(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly)
            {
                // Enforce comparison order.
                // Groups are always first, then tilemaps, then bodies.
                if ( (object1.body && !object2.body) || (!object1.isParent && object2.isParent) ) {
                    var swap = object2;
                    object2 = object1;
                    object1 = swap;
                }

                // BODIES
                if (object1.body)
                {
                    if (object2.body) {
                        return this.collideSpriteVsSprite(object1, object2, collideCallback, processCallback, callbackContext, overlapOnly);
                    }
                    // After sorting, object2 is either a body or invalid.
                }

                // TILEMAP LAYERS
                else if (object1.isTilemap)
                {
                    if (object2.body)
                    {
                        return this.collideSpriteVsTilemapLayer(object2, object1, collideCallback, processCallback, callbackContext, overlapOnly);
                    }
                    // After sorting, object2 is either a tilemap, body, or invalid.
                    // Tilemaps do not interact, so we only need to evaluate bodies.
                }

                // GROUPS
                else if (object1.isParent)
                {
                    var children = object1.getChildren();
                    if (children.length === 0)
                    {
                        return false;
                    }
                    // Unfold Groups for evaluation.
                    var didCollide = false;
                    for (var i = 0; i < children.length; i++ )
                    {
                        if ( this.collideTypes( children[i], object2, collideCallback, processCallback, callbackContext, overlapOnly ) )
                        {
                            didCollide = true;
                        }
                    }
                    return didCollide;
                }
            };

console.clear();

document.getElementById('version')
  .textContent = 'Phaser v' + Phaser.VERSION;

var config = {
  width: 800,
  height: 600,
  physics: {
    default: 'arcade',
    arcade: {
      gravity: { y: 600 }
    }
  },
  scene: {
    preload: preload,
    create: create
  },
  loader: {
    baseURL: 'https://labs.phaser.io',
    crossOrigin: 'anonymous'
  },
};

var game = new Phaser.Game(config);

function preload() {
  this.load.image('tiles', 'assets/tilemaps/tiles/gridtiles.png');
  this.load.tilemapTiledJSON('map', 'assets/tilemaps/maps/simple-map.json');
  this.load.image('player', 'assets/sprites/phaser-dude.png');
}

function create() {
  var map = this.make.tilemap({ key: 'map', tileWidth: 32, tileHeight: 32 });
  var tileset = map.addTilesetImage('tiles');
  var layer = map.createStaticLayer('Level1', tileset);

  map.setCollision([20, 48]);

  var player1 = this.physics.add.image(256, 320, 'player');
  var player2 = this.physics.add.image(320, 320, 'player').setFlipY(true);

  var group1 = this.physics.add.group();
  var group2 = this.physics.add.group();

  group1.add(layer);
  this.physics.world.disableBody( layer.body );
  delete layer.body;

  group2.add(player1);
  group2.add(player2);

  // this.physics.add.collider(group1, player1);
  // this.physics.add.collider(player2, group1);
  this.physics.add.collider(group1, group2);
  // this.physics.add.collider(group2, group1);
}

It may not be enormously performant, mind you. I'm getting some performance hitches when comparing the fix to unfixed code in a heavy project.

If the problem occurs only when TilemapLayers are given physics bodies, I don't think it's a bug.

Correction: it's not about TilemapLayer bodies. That's just a side effect of the rather subtle situation where it occurs, and I'm removing the bodies anyway.
It's about Group collision functions assuming that the members of a Group are all Sprites (or body-having entities). But the Group is specified to take any kind of GameObject, which includes TilemapLayers, which have different intrinsic collision properties to Sprites. This means that, depending on the order in which groups are compared, tilemap collisions may or may not occur.
(If a tilemap has a Body, the Body is an axis-aligned bounding box equal to the total area of the tilemap. This is not how tilemaps should work, so I disable the body.)
It's possible that Groups should not accept TilemapLayers, but as it stands, they are valid members, and they sometimes work properly. Again, it depends on order.

For me the order doesn't seem to matter: a tilemap layer in a group always collides and a tilemap layer in a physics group never collides (after the body is removed).
It's true that physics groups are more restrictive than ordinary groups. Every member must have a physics body of the same type as the group — so no tilemap layers.

Having finally had the time to refactor our physics code...
Things behave fine with the normal group. The physics group was not necessary for physics. In fact, the physics group was detrimental to tilemap physics. I don't know why we went with physics groups in the first place; it's possible that we assumed they were necessary to add collisions between groups. This was untrue; the sole purpose of a physics group is to give its members bodies. The docs actually imply this, but apparently not firmly enough to get it through my skull.
I might suggest making the instructions on physics groups a bit clearer about their sharp focus, and advise that they're not necessary for running physics into a group. Thus others would be spared our confustication.


[CP] Catch error for missing directory in FontConfigManager in beta

Issue Link
https://github.com/flutter/flutter/issues/138434
Target
beta
PR Link
https://github.com/flutter/flutter/pull/140005
Changelog Description
We are allowing the deletion of a directory to not crash the tool if the directory doesn't exist.
Impacted Users
All flutter users
Impact Description
Flutter will crash if it attempts to delete a directory that doesn't exist or any other FileSystemException
Workaround
N/A
Risk
medium
Test Coverage
yes
Validation Steps
The test case added confirms the fix by silently exiting when the deletion error comes up

fyi @christopherfujino

Closing as obsolete. The next beta release will be 3.19, which includes the original commit.


jfrog rt del produces 404 errors

Hello,
I am using Mac OS Catalina with a zsh shell.  I historically have used a bash shell, but recently switched to zsh.  I do not know if the below issue is related.  I was unable to delete using the cli.  I am using jfrog version 1.33.2

jfrog rt del "libs-snapshot-local/*6.15.39131-SNAPSHOT"
[Info] Searching artifacts...
[Info] Found 24 artifacts.
libs-snapshot-local/com/datical/hammer/com.datical.db.project.model.edit/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.ui.product/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.ui.test/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/dbmodel-api/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/hammer/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.drivers.test/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.profile.model/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.project.model/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/protoclub-api/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/ui/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.liquibase.model/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.ui.feature/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.ui.ext/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/core-integration/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/pom-first-repo/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.equinox/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.product/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.xml.ui.feature/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.rcp.target/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/core/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/repl/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.forecast.model/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.db.ui/6.15.39131-SNAPSHOT/
libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.feature/6.15.39131-SNAPSHOT/
Are you sure you want to delete the above paths?
You can avoid this confirmation message by adding --quiet to the command. (y/n): y
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.project.model.edit/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.project.model.edit/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.ui.product/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.ui.product/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.ui.test/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.ui.test/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/dbmodel-api/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/dbmodel-api/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/hammer/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/hammer/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.drivers.test/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.drivers.test/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.profile.model/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.profile.model/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.project.model/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.project.model/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/protoclub-api/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/protoclub-api/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/ui/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/ui/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.liquibase.model/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.liquibase.model/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.ui.feature/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.ui.feature/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.ui.ext/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.ui.ext/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/core-integration/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/core-integration/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/pom-first-repo/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/pom-first-repo/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.equinox/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.hammer.repl.equinox/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.product/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.hammer.repl.product/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.xml.ui.feature/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.xml.ui.feature/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.rcp.target/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.rcp.target/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/core/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/core/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/repl/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/repl/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.forecast.model/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.forecast.model/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.db.ui/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.db.ui/6.15.39131-SNAPSHOT'."
}
]
}
[Info] Deleting: libs-snapshot-local/com/datical/hammer/com.datical.hammer.repl.feature/6.15.39131-SNAPSHOT/
[Error] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "Could not locate artifact 'libs-snapshot-local:com/datical/hammer/com.datical.hammer.repl.feature/6.15.39131-SNAPSHOT'."
}
]
}
{
"status": "failure",
"totals": {
"success": 0,
"failure": 24
}
}

@jnewton03,
My guess is that the user used by JFrog CLI doesn't have delete permissions. I suggest you check whether this is the cause of the issue. Please let us know.

@jnewton03,
Were you able to resolve the issue?

Hi, I'm facing the same issue but the user i'm using had admin privileges. I've read it can also come due to no existant of repo but i've verified that my repo does exist. Could you please help me getting this resolved asap? We are evaluating Artifactory and have only 7 days trial period left.
[Error] Artifactory response: 404 Not Found jfrog rt dp ri-team/waste.proxy:154 engineering-docker --build-name=Retail_Development-waste-api-proxy-feature/push-to-artifactory --build-number=154 The CLI commands require the Artifactory URL and authentication details Configuring JFrog CLI with these parameters now will save you having to include them as command options. You can also configure these parameters later using the 'config' command.

@jnewton03,
Were you able to resolve the issue?

@eyalbe4 Sorry for the delay.  I will try this again, although I'm not working from home using my linux machine, so the env is slightly different.

Thanks @jnewton03.
@safeery2k - it looks like JFrog CLI is waiting for a user input. You can disable these interactive prompts as follows:

Make sure you're using the latest version for JFrog CLI.
Set the CI environment variable to true.
This may not work if you're using an old JFrog CLI version. In this case,  set the JFROG_CLI_OFFER_CONFIG environment variable to false.

Let me know if this resolves the issue.

Hi, Seems like its already set to true. I'm attaching my script and build log, please review.
pipelineLog-158.txt
here is my bitbucket pipelines script, i am using pipe to push the image.
  branches:     feature/*:     - step:          services:               - docker         script:           # Build docker image using docker build command with build number as tag           - docker build -t waste.proxy:$BITBUCKET_BUILD_NUMBER .           # Publish Docker image to Artifactory docker registry           - pipe: JfrogDev/artifactory-docker:0.2.12             variables:               ARTIFACTORY_URL: $ARTIFACTORY_URL               ARTIFACTORY_USER: $ARTIFACTORY_USER               ARTIFACTORY_PASSWORD: $ARTIFACTORY_PASSWORD               DOCKER_IMAGE_TAG: "ri-team/waste.proxy:${BITBUCKET_BUILD_NUMBER}"               DOCKER_TARGET_REPO: "engineering-docker"

@safeery2k,
The issue can be seen in log:
jfrog rt config --url=?? --user=?? --password=?? --interactive=false

The config command configures the connection details of your Artifactory server, according to the ARTIFACTORY_URL, ARTIFACTORY_USER and ARTIFACTORY_PASSWORD environment variables. It looks likes these environment variable have not been set.
Can you please check if those variables have been set?

I have removed them before pasting the log as don't want to share those details publicly. I can see them being set correctly in the log.

I see @safeery2k.
So you manually masked the real values in the log with "??".
jfrog rt config --url=?? --user=?? --password=?? --interactive=false

[Info] Encrypting password...
[Error] Artifactory response: 404 Not Found

Artifactory returns a 404 Not Found response for the request for encrypting the password. Could it be that something is wrong in the configured Artifactory URL? Maybe it is missing the /artifactory suffix? Or maybe it doesn't need it? I can't know for sure, because it really depends on your reverse proxy configuration.
You can run the config command from your local machine and see what works.

I manage to resolve it through direct push. I think there is some issue with bitbucket pipe, you may want to check.
Here is the code I'm using now. Thanks for your help.
 - docker build -t ${ARTIFACTORY_SERVER_NAME}-${ARTIFACTORY_REPO_NAME}.jfrog.io/ri-team/waste.proxy:${BITBUCKET_BUILD_NUMBER} .            - echo "$ARTIFACTORY_PASSWORD" | docker login -u "$ARTIFACTORY_USER" --password-stdin ${ARTIFACTORY_SERVER_NAME}-${ARTIFACTORY_REPO_NAME}.jfrog.io            - docker push ${ARTIFACTORY_SERVER_NAME}-${ARTIFACTORY_REPO_NAME}.jfrog.io/ri-team/waste.proxy:${BITBUCKET_BUILD_NUMBER}

I see @safeery2k.
So you manually masked the real values in the log with "??".
jfrog rt config --url=?? --user=?? --password=?? --interactive=false

[Info] Encrypting password...
[Error] Artifactory response: 404 Not Found

Artifactory returns a 404 Not Found response for the request for encrypting the password. Could it be that something is wrong in the configured Artifactory URL? Maybe it is missing the /artifactory suffix? Or maybe it doesn't need it? I can't know for sure, because it really depends on your reverse proxy configuration.
You can run the config command from your local machine and see what works.

How was this solved? I have the same issue now.

I'm having the very same problem, I tried authenticating with both api key and password and no dice, still getting 404.
Has anyone figured out a solution?

i am also facing the same issue , anyone having any workaround


RTMP display take photo (there's a black border)

Hi,
There's a bug on taking photos or screenshots via RtmpDisplay on the latest version.
Thank you!

I'm on it.

Hi, @pedroSG94 I just want to ask if you fix this issue on the latest version?
Thank you so much!

Yes, I did. Do you still have this problem?
I just tried it and work for me


[gui error report] Error: Initializing daemon...

👉 Please describe what you were doing when this error happened.
Specifications

OS: darwin 20.6.0
IPFS Desktop Version: 0.23.0
Electron Version: 19.0.9
Chrome Version: 102.0.5005.167

Error
Error: Initializing daemon...
Kubo version: 0.15.0
Repo version: 12
System version: amd64/darwin
Golang version: go1.18.5
Found outdated fs-repo, migrations need to be run.
Looking for suitable migration binaries.
Need 1 migrations, downloading.
Downloading migration: fs-repo-11-to-12...
Fetching with HTTP: "https://ipfs.io/ipfs/QmdaCHYBDHEhXCMoynH5UcohEay6m1XayZCcxWZzKAHNVN/fs-repo-11-to-12/versions"
Fetching with HTTP: "https://ipfs.io/ipfs/QmdaCHYBDHEhXCMoynH5UcohEay6m1XayZCcxWZzKAHNVN/fs-repo-11-to-12/v1.0.2/fs-repo-11-to-12_v1.0.2_darwin-amd64.tar.gz"
Downloaded and unpacked migration: /var/folders/g9/1nk0r9qn0pz1vl8twk7b4_m80000gn/T/migrations3534330747/fs-repo-11-to-12 (v1.0.2)
Running migration fs-repo-11-to-12 ...
  => Running: /var/folders/g9/1nk0r9qn0pz1vl8twk7b4_m80000gn/T/migrations3534330747/fs-repo-11-to-12 -path=/Users/richethercorn/.ipfs -verbose=true
applying 11-to-12 repo migration
locking repo at "/Users/richethercorn/.ipfs"
error: failed to acquire repo lock at /Users/richethercorn/.ipfs/repo.lock
Is a daemon running? please stop it before running migration
The migrations of fs-repo failed:
  migration fs-repo-11-to-12 failed: exit status 1
If you think this is a bug, please file an issue and include this

Thanks for submitting this issue.
We have instructions in our FAQ for getting passed repo.lock errors, can you try to follow the instructions at https://github.com/ipfs/ipfs-desktop#i-got-a-repolock-error-how-do-i-resolve-this and let us know if you're still experiencing issues?


Failure to parse URL that doesn't start with scheme but contains a query that contains a URL with a scheme

Here's a simple example URL that fails to parse:
somedomain.com/?g=http://somedomain.com/

If you add a scheme to the front, it then parses properly:
http://somedomain.com/?g=http://somedomain.com/

I think the solution lies in changing this part so that it's only checking for :// near the beginning of the url and not anywhere in the entire url: https://github.com/splunk/utbox/blob/f8db838d28117f15fc406b6fc980d2963776ab37/utbox/bin/ut_parse_lib.py#L257

I think this fixes it:
preg_rfc1808 = re.compile("^[a-z]*://")

Hi @mlhdeveloper,
Thank you so much for bringing this up!
I changed line 15, which theoretically should have fixed the issue, but it still doesn't seem to work. I suspect it’s still referencing the Public Suffix List (PSL) rules and expects the input accordingly.
preg_rfc1808 = re.compile("^[a-z+]*://")
Line 255 clearly states that it follows RFC 1808. Instead of editing the data, I’ll explore other ways to inform the user more effectively. Please let me know if you have any thoughts or suggestions—I’d really appreciate any help or feedback.
    # Following the syntax specifications in RFC 1808, urlparse recognizes
    # a netlog only if it is properly introduced by '//'.

Thank you! I'll keep you posted if I make any changes.


Error reading dependencies from storage: unconfigured table dependencies

Requirement
We're attempting to view Dependencies in Jaeger UI. Our Jaeger cluster was configured to integrate with Dgraph with the Cassandra Jaeger backend. The script used to provision the Jaeger keyspace is provided below.
Problem
We get this error message when we click on the "Dependencies" tab in the UI:

As a consequence, we cannot view that page. However, we are able to view our Dgraph traces successfully in the Search tab.
Idea of cause
We're wondering if perhaps something is missing from the Cassandra keyspace that is causing this problem. We used the create.sh script with the v002.cql.tmpl script (that are available here: https://github.com/jaegertracing/jaeger/tree/master/plugin/storage/cassandra/schema ) to generate the keyspace below.
Script used to provision Jaeger keyspace in Cassandra:
CREATE KEYSPACE IF NOT EXISTS jaeger_v1_prodCluster1 WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};

CREATE TYPE IF NOT EXISTS jaeger_v1_prodCluster1.keyvalue (
    key             text,
    value_type      text,
    value_string    text,
    value_bool      boolean,
    value_long      bigint,
    value_double    double,
    value_binary    blob,
);

CREATE TYPE IF NOT EXISTS jaeger_v1_prodCluster1.log (
    ts      bigint,
    fields  list<frozen<keyvalue>>,
);

CREATE TYPE IF NOT EXISTS jaeger_v1_prodCluster1.span_ref (
    ref_type        text,
    trace_id        blob,
    span_id         bigint,
);

CREATE TYPE IF NOT EXISTS jaeger_v1_prodCluster1.process (
    service_name    text,
    tags            list<frozen<keyvalue>>,
);

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.traces (
    trace_id        blob,
    span_id         bigint,
    span_hash       bigint,
    parent_id       bigint,
    operation_name  text,
    flags           int,
    start_time      bigint,
    duration        bigint,
    tags            list<frozen<keyvalue>>,
    logs            list<frozen<log>>,
    refs            list<frozen<span_ref>>,
    process         frozen<process>,
    PRIMARY KEY (trace_id, span_id, span_hash)
)
    WITH compaction = {
        'compaction_window_size': '1',
        'compaction_window_unit': 'HOURS',
        'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.service_names (
    service_name text,
    PRIMARY KEY (service_name)
)
    WITH compaction = {
        'min_threshold': '4',
        'max_threshold': '32',
        'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.operation_names (
    service_name        text,
    operation_name      text,
    PRIMARY KEY ((service_name), operation_name)
)
    WITH compaction = {
        'min_threshold': '4',
        'max_threshold': '32',
        'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.service_operation_index (
    service_name        text,
    operation_name      text,
    start_time          bigint,
    trace_id            blob,
    PRIMARY KEY ((service_name, operation_name), start_time)
) WITH CLUSTERING ORDER BY (start_time DESC)
    AND compaction = {
        'compaction_window_size': '1',
        'compaction_window_unit': 'HOURS',
        'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.service_name_index (
    service_name      text,
    bucket            int,
    start_time        bigint,
    trace_id          blob,
    PRIMARY KEY ((service_name, bucket), start_time)
) WITH CLUSTERING ORDER BY (start_time DESC)
    AND compaction = {
        'compaction_window_size': '1',
        'compaction_window_unit': 'HOURS',
        'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.duration_index (
    service_name    text,      // service name
    operation_name  text,      // operation name, or blank for queries without span name
    bucket          timestamp, // time bucket, - the start_time of the given span rounded to an hour
    duration        bigint,    // span duration, in microseconds
    start_time      bigint,
    trace_id        blob,
    PRIMARY KEY ((service_name, operation_name, bucket), duration, start_time, trace_id)
) WITH CLUSTERING ORDER BY (duration DESC, start_time DESC)
    AND compaction = {
        'compaction_window_size': '1',
        'compaction_window_unit': 'HOURS',
        'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.tag_index (
    service_name    text,
    tag_key         text,
    tag_value       text,
    start_time      bigint,
    trace_id        blob,
    span_id         bigint,
    PRIMARY KEY ((service_name, tag_key, tag_value), start_time, trace_id, span_id)
)
    WITH CLUSTERING ORDER BY (start_time DESC)
    AND compaction = {
        'compaction_window_size': '1',
        'compaction_window_unit': 'HOURS',
        'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy'
    }
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 172800
    AND speculative_retry = 'NONE'
    AND gc_grace_seconds = 10800;

CREATE TYPE IF NOT EXISTS jaeger_v1_prodCluster1.dependency (
    parent          text,
    child           text,
    call_count      bigint,
    source          text,
);

CREATE TABLE IF NOT EXISTS jaeger_v1_prodCluster1.dependencies_v2 (
    ts_bucket    timestamp,
    ts           timestamp,
    dependencies list<frozen<dependency>>,
    PRIMARY KEY (ts_bucket, ts)
) WITH CLUSTERING ORDER BY (ts DESC)
    AND compaction = {
        'min_threshold': '4',
        'max_threshold': '32',
        'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
    }
    AND default_time_to_live = 0;

iirc v002.cql.tmpl introduced a new table dependencies_v2. You must be running the old version of Jaeger that looks for dependencies table only.

I'm running:

jaeger-agent:1.14
jaeger-collector:1.14
jaeger-query:1.14

from the available docker containers.
Are these old versions?

dependencies_v2 was made the default in v1.11 (#1344). But  the code should still work wit  v1. Please get a more detailed exception from the query service logs.

I wasn't seeing logs, so I restarted the docker container for the jaeger-query service and tried to reproduce the issue, and this is what I got:

I'm not sure what was different from the first case, but it's still concerning that I can't see the dependency graph. Here's what I'm seeing in the logs for the jaeger-query service:
2019/11/25 17:22:12 maxprocs: Leaving GOMAXPROCS=32: CPU quota undefined
{"level":"info","ts":1574702532.2560709,"caller":"flags/service.go:115","msg":"Mounting metrics handler on admin server","route":"/metrics"}
{"level":"info","ts":1574702532.2592008,"caller":"flags/admin.go:108","msg":"Mounting health check on admin server","route":"/"}
{"level":"info","ts":1574702532.259329,"caller":"flags/admin.go:114","msg":"Starting admin HTTP server","http-port":16687}
{"level":"info","ts":1574702532.2593534,"caller":"flags/admin.go:100","msg":"Admin server started","http-port":16687,"health-status":"unavailable"}
{"level":"info","ts":1574702532.3582067,"caller":"cassandra/factory.go:93","msg":"Cassandra archive storage configuration is empty, skipping"}
{"level":"info","ts":1574702532.393898,"caller":"querysvc/query_service.go:130","msg":"Archive storage not created","reason":"archive storage not configured"}
{"level":"info","ts":1574702532.3939996,"caller":"query/main.go:139","msg":"Archive storage not initialized"}
{"level":"info","ts":1574702532.3947246,"caller":"healthcheck/handler.go:130","msg":"Health Check state change","status":"ready"}
{"level":"info","ts":1574702532.3947551,"caller":"app/server.go:135","msg":"Starting CMUX server","port":16686}
{"level":"info","ts":1574702532.3947449,"caller":"app/server.go:112","msg":"Starting HTTP server","port":16686}
{"level":"info","ts":1574702532.394759,"caller":"app/server.go:125","msg":"Starting GRPC server","port":16686}

As you can see, there's not much there.

are you running the Spark job to generate the dependencies?

I'm not... I just ran the Cassandra script to create the Keyspace. Do we need to run a Spark job too?

Yes. https://www.jaegertracing.io/docs/1.15/deployment/#aggregation-jobs-for-service-dependencies
Still weird that you got that error message, since Spark job doesn't create tables, it only populates the data.

Hi @yurishkuro
is this issue resolved?
I am seeing the same error in UI although I can see dependencies_v2 table in Cassandra.

Do I have to run Spark job at least one time?
Info:
Jaeger Version: 1.22.0
Deployed using Jaeger helm chart.

well, I have run spark job still seeing the same issue.
logs from spark job
21/04/22 14:33:52 INFO CassandraDependenciesJob: Running Dependencies job for 2021-04-22T00:00Z:<PHONE_NUMBER>000000 ≤ Span.timestamp<PHONE_NUMBER>999999
21/04/22 14:33:52 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
21/04/22 14:34:00 INFO CassandraDependenciesJob: Storing dependencies into dependencies_v2
21/04/22 14:34:01 INFO CassandraDependenciesJob: Done, 8 dependency objects created

@sshah90, are you able to reproduce this error consistently? If so, would you be able to give us the steps?

@jpkrohling
I just deployed it using helm chart and whenever I click on system architecture tab, I received errors then I ran spark job still it was the same, then from slack channel, Joe recommended restarting pods which solves the problem for me.

I have the same problem when I click on system architecture tab.  I think that might case by GetDependencyVersion.  It get V1 when there is no data in dependencies_v2.  After running spark job, it insert data into dependencies_v2.  So the function will get V2 and you need to restart the query pod to take effect.

@allanhung great find, would you like to contribute with a fix? I think we can invert the logic there: if there's a v1 table, use it, otherwise use v2.
cc @yurishkuro , @pavolloffay , as you both were active during #1344.

I think the problem is not with the priority order (v2 already takes priority) but with the fact that the table existence check is only done when the storage factory is instantiated, so after starting the query service it will remember the check and won't repeat it.

Right, and the idea is that what it remembers is the v2, not v1. So, check for v1 and use it if found, otherwise use v2, which might not exist now but might in the future.

If the frequency of queries to dependencies is relatively low, then the check for table version can be done at query time instead of at startup time.

I test the code, it will return V2 if the dependencies_v2 table exists. No matter there is data in it.  I build a test environment to re-procedure the problem. Here are the steps:

Install from helm chart
values.yaml

cassandra:
  config:
    cluster_size: 3
    seed_size: 2
  persistence:
    enabled: true
    storageClass: cloud-efficiency
    accessMode: ReadWriteOnce
    size: 20Gi

agent:
  enabled: false

helm upgrade --install jqtest \
    --namespace tracing \
    --create-namespace \
    -f values.yaml \
    jaegertracing/jaeger

After it's up and running, scale down cassandra to 1.

kubectl scale statefulset jqtest-cassandra --replicas=1

restart the jaeger-query pod.

kubectl rollout restart deploy/jqtest-jaeger-query

When jaeger-query issue query SELECT ts from dependencies_v2 limit 1, it should get error 'Cannot achieve consistency level LOCAL_ONE' from cassandra. So it will get dependency version with V1.

scale cassandra back to 3

kubectl scale statefulset jqtest-cassandra --replicas=3

browse the ui, you should get 'Error reading dependencies from storage: unconfigured table dependencies'.

In my environment, I enable the cluster-autoscaler.  So there might be chance cassandra and jaeger-query pod need to be migrated to another kubernetes worker node.  And that might cause this issue.
As @yurishkuro mention,  check the table version at query time instead of at startup time is a good idea.
Another workaroud is changing the sql from
SELECT ts from dependencies_v2 limit 1
to
SELECT count(table_name) FROM system_schema.tables WHERE keyspace_name=? and table_name = 'dependencies_v2'

Since this issue only happens with Jaeger versions several years old, I don't think it's worth fixing, closing.

Happened to me now, with Jaeger latest chart 1.0.0:

All pods are up and running.


How can I enter a user without asking the browser to use the camera and microphone

Hello Guys, How can I enter a user without asking the browser to use the camera and microphone,
Where only the room manager shares the camera and its voice to its users  in :
https://rtcmulticonnection.herokuapp.com/demos/dashboard/
I want the user to be able to access without sharing his camera and only the microphone can see the camera and sound of the room manager

In you application, check if the user is room magager, if true pass in the getUserMedia : video and audio true, else pass only audio true


Update EventMeshTcp2Client.java

Make anonymous inner class a lambda[EventMeshTcp2Client]
Fixes #3399 .
Motivation
Make anonymous inner class a lambda[EventMeshTcp2Client]
Modifications
Make anonymous inner class a lambda
Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

For there is no response, I'll close this pr.


ImportError from wheel installation

Hello - thank you so much for the energy that you are investing in providing a wheel installation for VTK.
I have successfully installed the software, but am running into errors on import.
When installing from conda, I get the following error:
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/srv/conda/envs/notebook/lib/python3.7/site-packages/vtkmodules/vtkRenderingOpenGL2.py in <module>
      4     # use relative import for installed modules
----> 5     from .vtkRenderingOpenGL2Python import *
      6 except ImportError:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-7c7f66f02cd3> in <module>
----> 1 import vtk

/srv/conda/envs/notebook/lib/python3.7/site-packages/vtk.py in <module>
     30     all_spec = importlib.util.find_spec('vtkmodules.all')
     31     all_m = importlib.util.module_from_spec(all_spec)
---> 32     all_spec.loader.exec_module(all_m)
     33
     34     # import vtkmodules

/srv/conda/envs/notebook/lib/python3.7/site-packages/vtkmodules/all.py in <module>
     31 from .vtkIOXMLParser import *
     32 from .vtkDomainsChemistry import *
---> 33 from .vtkRenderingOpenGL2 import *
     34 from .vtkDomainsChemistryOpenGL2 import *
     35 from .vtkIOXML import *

/srv/conda/envs/notebook/lib/python3.7/site-packages/vtkmodules/vtkRenderingOpenGL2.py in <module>
      7     # during build and testing, the modules will be elsewhere,
      8     # e.g. in lib directory or Release/Debug config directories
----> 9     from vtkRenderingOpenGL2Python import *

ModuleNotFoundError: No module named 'vtkRenderingOpenGL2Python'

When installing with pip, I instead get the following error:
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/srv/conda/envs/notebook/lib/python3.7/site-packages/vtk/vtkOpenGLKit.py in <module>
      4     # use relative import for installed modules
----> 5     from .vtkOpenGLKitPython import *
      6 except ImportError:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-7c7f66f02cd3> in <module>
----> 1 import vtk

/srv/conda/envs/notebook/lib/python3.7/site-packages/vtk/__init__.py in <module>
     10 from .vtkRenderingKit import *
     11 from .vtkIOKit import *
---> 12 from .vtkOpenGLKit import *
     13 from .vtkParallelKit import *
     14 from .vtkWrappingKit import *

/srv/conda/envs/notebook/lib/python3.7/site-packages/vtk/vtkOpenGLKit.py in <module>
      7     # during build and testing, the modules will be elsewhere,
      8     # e.g. in lib directory or Release/Debug config directories
----> 9     from vtkOpenGLKitPython import *

ModuleNotFoundError: No module named 'vtkOpenGLKitPython'

Note also that this is happening on a headless system (through a Jupyter notebook, running on a JupyterHub installed on EKS), which may be pertinent information.
Thanks!

Thanks for the feedback, we are currently working on integrating the python wheel generation as part of the VTK regular build process (see https://gitlab.kitware.com/vtk/vtk/merge_requests/5543), once this is complete, wheel for the latest version of VTK will be available.
This means that will not put effort in fixing the existing wheels.
The error you report makes sense, the VTK wheel were not built with osmesa or egl and currently require X. See https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html

CC: @demarle @mathstuf

I suspect the root cause here is that the wheel is built on a pre-GLVND machine (which I highly suspect manylinux1 is), but run on a machine with only GLVND libraries. You'll need to install some compat package to get libGL.so.1 on your distribution (it makes zero sense for it to go into Python packages as it is different from machine to machine depending on graphics drivers).

Note that VTK's built-in wheel build will not change this fact (except that VTK now really wants to use GLVND if it is available).


Error when reordering with git lfs installed

Been using kirby-git-content successfully on a bunch of sites without problems (thanks a lot for creating this useful plugin! 🙏 )
But on this one I set up git lfs for larger files and I get git error messages like the following when reordering pages in the panel (Other operations seem to be fine). The reordered content is committed and gets pushed, but the error leaves me with an uneasy feeling and is distracting for my panel users (I could of course turn of error display, but then I wouldn't be able to diagnose if real issues should arise).

Kirby config.php extract
'thathoff' => [
    'git-content' => [
      // use the main git repo at the root of the project
      // (instead of the default, a separate git repo for "content")
      'path' => realpath(__DIR__ . '/../../'),
      // silent git errors on production systems
      // so normal users aren’t confused by cryptic messages
      'displayErrors' => true,
      // Push to GitHub after every change. NOTE: makes things a little slower
      // but is easier to maintain for us than a separate cron job
      'push'=> true,
    ],

.gitattributes
content/**/*.png filter=lfs diff=lfs merge=lfs -text
content/**/*.jpg filter=lfs diff=lfs merge=lfs -text
content/**/*.pdf filter=lfs diff=lfs merge=lfs -text
content/**/*.tif filter=lfs diff=lfs merge=lfs -text
content/**/*.tiff filter=lfs diff=lfs merge=lfs -text
content/**/*.jpeg filter=lfs diff=lfs merge=lfs -text
content/**/*.psd filter=lfs diff=lfs merge=lfs -text
content/**/*.mp4 filter=lfs diff=lfs merge=lfs -text
content/**/*.mp3 filter=lfs diff=lfs merge=lfs -text
content/**/*.mov filter=lfs diff=lfs merge=lfs -text
content/**/*.m4a filter=lfs diff=lfs merge=lfs -text
content/**/*.m4p filter=lfs diff=lfs merge=lfs -text
content/**/*.ogg filter=lfs diff=lfs merge=lfs -text

The problem is that we sometimes run into a race condition where Kirby triggers an update/sorted hook when things have not changed or have already been committed. Thats one of the reasons why we disable errors by default because most of the time errors are no real problems (like this one here). I think this is not a special git lfs problem but commiting with lfs is sometimes a bit slower so it’s more likely to trigger this race condition.
Maybe we should run a git status before committing and thus catching the error but it would trigger a git status every commit which can get slow when running with large repos. I think the better solution is to simply catch this specific „nothing to commit” error.


[docs] Add Toolpad to Navigation

[x] I have followed (at least) the PR section of the contributing guide.

https://deploy-preview-33937--material-ui.netlify.app/

I have pushed a change so that the new sections in the docs are only visible in staging, this way, we can merge this PR as soon as it's ready.


Unable to view schemas in schema registry

Describe the bug
I have added a protobuf schema to the registry that imports googles timestamp type.  When loading the schema registry ui, I now get a 404 because it cannot find the imported proto definition.  While this is somewhat expected, since I found out confluents registry wont be natively supporting google well known types until 6.2.0, it is frustrating that we can no longer see any schema, as long as at least one cannot be read.
It would be nice if the other schemas could still be seen, and maybe even the schema with an issue could still be shown so you can delete or edit the schema.
Set up
using v0.4.0 - 521ba0c
Steps to Reproduce
Steps to reproduce the behavior:

create a new proto schema with the following line
import "google/protobuf/timestamp.proto";
go to schema registry in kafka ui

observe 404 error toast notification and no schemas shown
Expected behavior
see the working schemas, maybe even the bad one with some sort of indication it has a problem
Additional context
Any known workarounds would be great, and this may not be a problem soon once confluent supports these types in the registry natively.

Hey, which SR version are you on?
I tried with confluentinc/cp-schema-registry:5.5.0, it seems to be working fine:

with sr: confluentinc/cp-schema-registry:6.1.0
and schema:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package testing;

message Notification {
    google.protobuf.Timestamp PublishTime = 1;
}

My application was able to register the schema which then broke my ability to view the schemas.
However, when trying to manually add this through the ui I now get 422: unprocessable entity

I am also unable to reproduce this by hand.  I am redeploying our broken build again to reproduce it that way.  I will let you know once that completes how it goes.
The code base is dotnet and uses the Confluent libraries:
Confluent.Kafka
Confluent.SchemaRegistry
Confluent.SchemaRegistry.Serdes.Protobuf

I'm not sure that I can, since "google/protobuf/timestamp.proto" is a well known type and not mine.
When I tried to change my proto file in my solution, it could no longer compile the notification type since it could no longer resolve timestamp.proto with a different path.
a potential work around could be to add our own version of timestamp.proto, and then change the import to utilize that?  However, we do not want to have to maintain this type ourselves, as it also has methods our code relies on provided by google already.

Nah, don't worry about the workarounds, it's actually a bug on our side (#1995).
I'll close this one as a duplicate, feel free to subscribe to #1995, we're planning to fix that one soon.


Does outline require color?

Check that outline works as expected without a color https://github.com/cfpb/cfgov-refresh/blob/flapjack/src/static/css/pages/bureau-structure.less#L178

Err... looking at this again, it's the color that's missing not the unit.

This is the default color that appears when tabbing to the element that uses this outline:

Add @pacific to the outline color.

Looks @pacific already to me.

@Scotchester Do you know if outline explicitly needs a color set? In the case of this one it looks like it's inheriting the color, is that how it should be? That's what this issue is covering.

I guess I don't understand the issue. Do you not expect/want it to be Pacific?

@Scotchester No the color is right, but should it be set in the outline, or is it fine to inherit it?

IMO, it's perfectly fine for it to be inherited.


Extend omnipool state construction

I extended omnipool state construction to allow

Dynamic fee initialization with arbitrary current dynamic fee level
Oracle initialization with arbitrary oracle value
Arbitrary imbalance
I also added some tests

Task linked: CU-8677b10xx Extend OmnipoolState constructor


Only works with separate CSS file - IE8

Another issue for proper IE8 I'm afraid (running on actual XP, Document mode: IE8 Standards).
It works fine when the CSS is in it's own file, such as in this example I whipped up:
http://yays.co/keep/respond-test-ie8-separate.html
However, when the styles are actually in the markup of the page.. it doesn't work in IE8, as you can see in this example:
http://yays.co/keep/respond-test-ie8.html

This is a known issue, mentioned in the Support & Caveats section of the readme:

Respond.js doesn't parse CSS referenced via @import, nor does it work with media queries within style elements, as those styles can't be re-requested for parsing.

Cool, might be worth adding in what browsers this affects, as it seems to be fine on Chrome and Firefox :)

it seems to be fine on Chrome and Firefox

They support media queries natively - they don't need respond.js to help out :)

Touché