Read-path in TSDB doesn't honor context

I ran into a situation in prometheus where a user was sending a very large query and it was running past the timeout. While investigating this issue I found that tsdb doesn't honor the context for reads (e.g. https://github.com/prometheus/tsdb/blob/master/querier.go#L155). What this means is if a client sends a query for a large set of series then the caller (prometheus) has to wait for tsdb to complete before timing out the request. From the quick looking I did this should actually be a fairly simple addition, as the various lookup methods would need to take a context and check it. This doesn't seem like a huge amount of effort, and I'd definitely be willing to submit the PR. So, would you guys be interested in something like this if I where to submit a PR for it?

this looks like a dupe of https://github.com/prometheus/tsdb/issues/84
I haven't looked into it, but IIRC it wasn't trivial to implement hence the issue being opened for so long.

#84 encompasses both the read and write path. As #84 states this is complex on the write path, but this issue is focused solely on the read path, as it seems that the read side should be doable (significantly less complex).

I just had a quick look over the past discussions and tend to agree with fabian's comment in https://github.com/prometheus/prometheus/issues/3480#issuecomment-345152830 that passing a context in such hot paths won't really help a lot.
I haven't done a proper research on the topic so if you want to invest the time than please open a PR against Prometheus, ping me and I will start a benchmark so we can test if it would behave better than what we have now.

After doing some more digging, it seems that the vast majority of the time is actually spent in SortedPostings. I'm not sure why that sort is necessary, but if it is in fact required then some sort of cancellation there seems like it would do the trick.

nice! thanks for spending the time for this. btw what did you use to visualise the bench results?
@gouthamve , @fabxc do you see any problem in adding a context for SortedPostings so this can be cancelled?

@krasi-georgiev I used google sheets, So nothing fancy :)

@krasi-georgiev One other question, do you know why that sort is required to begin with?

So I've been digging into this a bit more, and I believe I understand the issue better. The SortedPostings is only expensive in the head block because things aren't sorted already (same case in the test implementation). All blocks that have moved from head to an immutable block are sorted when they are persisted. What this means is right now all queries that hit the head block are significantly slower at this portion because they are each sorting the series' labels as they query. Unless we want to change that HEAD block to maintain sort order on insert/addition (which could be done per-shard, and merged using a heap) we'll be stuck with how it is.

Thanks for the analysis. Indeed SortedPostings is an outlier here with its big blocking computation.
Though the only way for passing a context to work would be to re-implement sorting since sort.Sort, where the time is actually spent, does not take a context either.
Unless your benchmark showed that the expansion of the postings list beforehand actually consumes a majority of the time.
Giving SortedPostings a context argument isn't enough of course, since it's called by other public methods. So this would be a further reaching change.
@jacksontj early on I actually tried to maintain a sorting of the IDs. It turned out to have significant problems since at startup or when a lot of targets appear, a massive bunch of series is inserted and must be added to the sort mapping. Approaches that could deal well with that usually had a high baseline cost, which didn't go well with the fact that in large setups single new series are appearing pretty much every few seconds.
That was a long time ago though and it would be great for someone to give this another shot.
I eventually went back to just resorting for each query since the assumption was that a few 10k series are the maximum for any realistic queries and for that performance seemed perfectly alright.

Though the only way for passing a context to work would be to re-implement sorting since sort.Sort, where the time is actually spent, does not take a context either.

We actually don't need much of an implementation to get cancellation, simply wrapping the sort method and using recover() does the trick.

Unless your benchmark showed that the expansion of the postings list beforehand actually consumes a majority of the time.

I re-ran the benchmark while adding some prints to track time of the various pieces, here is the data from a run with 1000 series:
postingsForMatcher all 4.8µs
SortedPostings - postings iterator 9.701035ms
SortedPostings - sort 3.776977868s
SortedPostings - NewListPostings 886ns
ix.SortedPostings 3.786722714s
total time 3.786758744s

In that we can see that almost all of the time is in the sort, so thats the main place to tackle

Giving SortedPostings a context argument isn't enough of course, since it's called by other public methods. So this would be a further reaching change.

I noticed while implementing the benchmarks etc. I actually have a branch with this mostly completed, so to speed up discussions a bit I've opened PR #416 with my code.

That was a long time ago though and it would be great for someone to give this another shot.

I'm curious to give this a shot, but my guess is that its going to be a significantly larger change, so we should probably finish this one separately first :)
So the PR I have adds context into the sort path and adds tests that cancellation happens within 1ms of the context cancellation time (seems more than sufficient of an error bar). If we're okay with the approach I can do a pass cleaning it up before we get it merged, otherwise we can iterate from there.

Another piece of information, I added a benchmark using the blocks to compare head to block performance:
BenchmarkBlockQuerier/1000000/100ms/head/equal_all-4         	       1<PHONE_NUMBER> ns/op
BenchmarkBlockQuerier/1000000/100ms/block/equal_all-4        	    5000	    242018 ns/op

From this we can see that head performance is significantly worse (4.6s vs 0.24ms). So after getting this timeout stuff in, definitely seems worth looking into maintaining sort somehow.

@fabxc I assume that this cancellation idea in the PR is acceptable? If so I can clean up that PR and we can get it merged in. I did spend some time looking into maintaining sort on the HEAD block, but that'll require more time as the few simple attempts where much slower (as I imagine you also experienced).

if you don't mind lets not rush it.
This would require changing many public interfaces so I want do some thinking before we commit to the context idea.
I need to clear some other pending PRs and will put some more time into this.

Sure, my intention isn't to rush so much as to make sure this is the
approach we want-- since there was no update on the progress for a week.
It's also unclear what the compatibility guarantees are ok various
interfaces (as this changes some exposed public methods, but not the
querier etc.).
So at this point I'm just looking for feedback to make sure the pr is what
we are looking for. But if it needs to wait for a couple others that's
definitely fine, thanks for the update :)
On Mon, Oct 22, 2018, 10:37 AM Krasi Georgiev<EMAIL_ADDRESS>wrote:

if you don't mind lets not rush it.
This would require changing many public interfaces so I want do some
thinking before we commit to the context idea.
I need to clear some other pending PRs and will put some more time into
this.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/prometheus/tsdb/issues/411#issuecomment-431908965,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABi3nYrOzk8HQ0xzJmXzVDjshaZpfPSJks5ungJjgaJpZM4XdQX6
.

I don't think I can have a look at this anytime soon as there are few more urgent pending bugs.

Bump to check on this :)

I am starting to look into this now.
If SortedPostings in the Head is the culprit here why not try to solve the problem there and avoid having  context all together?

friendly bump :)

haven't forgotten, just again need to complete few other older PRs and reviews.

@jacksontj 	I started looking into this again and Fabian's comment suggests that it is hard, but I prefer that we spend some time to look into fixing the underlying problem before polluting all interfaces with a context.
I am studying the code for postings and will post if I have any ideas. If you have time I would appreciate if you can look into that as well and suggest some ideas as well.

after some discussions with @brian-brazil (which led to some optimisation of the sorting in https://github.com/prometheus/tsdb/pull/485) it seems not worth it yet to pollute the interfaces with a context. Even with 10m series the sorting would finish in a reasonable time (in your bench results it is 3s which is not that much).
If you are  experiencing some real performance issues can you please include some details and we will try to address these and try to do it without adding a  context.

@krasi-georgiev I'm glad that an optimization was easily possible there. The performance issue still exists from my experience though. Although we see a 3s runtime in benchmarks, in a real production system I end up seeing significantly longer times (5m+ regularly for ~10M series) -- presumably due to memory allocation delays finding contiguous memory on a live system. As such in practice this seems to still be a necessary addition.

Try it with #485, which aside from being faster in raw terms should also greatly reduce contention that would should up in production.

I ran 2.6 with the patch from #485 and it went from 514s -> 120s (seemingly timing out correctly). So from what I see its still not cancelling when the context is, but the perf seems more inline with the benchmarks so that few second delay is tolerable. With this I'll go ahead and close out my PR -- we can add it back in later if there is interest in canceling at the "right" time, but #485 seems to resolve my major pain point.

Great! If we need better cancellation in future due to something else taking a bit too much time, we can always add contexts.

@jacksontj 	thanks for the update.
Can we close this issue than?


Update ContractDefinitions_Fetch

Riot has updated ContractDefinitions_Fetch, I have no idea what it is now but it returns 404 now.

The new url is https://pd.ap.a.pvp.net/contract-definitions/v3/item-upgrades

Thanks for the report and the new url, now fixed 👍


Refactor UDP transport

Significant refactor to add the following new features:

Connection establishment - helps with port scanning/dos mitigation
Connection disconnect - Client disconnect is now signaled to close properly
Connection idle timeout - If the client or server disappears (e.g., crash), idle timeout
will clean up the connection.
Shipping/pacing transmission to configurable rate per microsecond (applied at the millisecond level).
Added report feedback with logging and initial calculation of bandwidth and loss. This will be tuned and adjusted
based on testing. We can use the feedback report to adjust the shaping/pacing.

@paulej , thanks so much for the review. I updated all the comments and code based on feedback.  The one change not updated was the packing since it is portable to clang and gcc, which is what we require right now.


Ingested data broken into smaller chunks

Description
added a util function to shorten each document into sub-document that can be ingested into OpenSearch with same metadata
Issues Resolved
Closes [#59]
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

While I like this solution because it's straightforward we should try and find one that respects white space. The reason is in the document below. Here it's taken the word the and accidentally turned it into the word he. This could cause this document to be retrieved in a query where it should not.
{
    "url": "/docs/latest/install-and-configure/configuration/",
    "title": "Configuring OpenSearch",
    "content": "he config directory location. ...",
    "ancestors": ["Install and upgrade"],
    "type": "DOCS"
}

Maybe we can use the same method you had outlined but using str.split(" ") instead of using approximate character lengths of the words?

I've made the appropriate changes!


Use of unresolved identifier 'SyncInfo'

I don't understand what sync info should be in your documentation? does it represent a Post? And what is the managedObjectContext variable in your example readme.md? Do you have an example app i can reference?
Thanks :)

Hello, you can find example app in this repo: https://github.com/contentful/the-example-app.swift. managedObjectContext  property is probably NSManagedObjectContext, but can you be more specific what is needed? Same with SyncInfo, there is no such class/struct available in Contentful.swift


add prod/sum compat back to nomials

Closes #1070

@mayork, I'm about to merge this; makes it so you can do .prod() on both scalars and vectors


Remove a few copies in the queue event handler code

Not massively important, just a fun little quick win to improve a couple copies introduced by #690
cc @jasnell for the new jsg::parseJson variant

To be clear, this passes the internal test suite.


sending events when hitting the m.me/ link

I set up my webhook when there are conversations, so I would expect to see a POST when hitting the m.me/ link....but I don't.

I set the Triggers for the webhook to include convesration:start -- that's the one that's triggered when someone first hits the m.me/ link right?

Hi, MIke -- do you have a timeline, I'm realizing I need to know the referral to build up the app to get better traction so need to know whether we need to build this ourselves or just wait for the feature on smooch....?

The conversation:start event is triggered when the user taps the "Get Started" button for your page, or when they accept a message request sent via the linking API. In the case where the user clicks an m.me link, conversation:start would only fire if the Get Started button is presented and the user taps it.
When you configure your page with Smooch, it should automatically add a Get Started button for you - does your page have one?

Oh, I see.  Currently there is no Get Started button...there isn't one added, nor is it in the Messenger client.
What I want to do is to know which trigger keyword to use based on which m.me link is clicked.  I have different bots with different keywords which I would use as the ref parameter.
This way I can solve for the following use-case: 1) When a user clicks on the m.me/link, the bot auto-starts based on the known ref value; 2) I can deliver link-specific content.
This make sense?

Hi, I have done a workaround, but it is limited without being part of the Smooch API.  I have my Facebook Messenger server listen for the event referral (and I turned off all other events).
I then take the referral param and process a response.  Because it doesn't go thorugh the smooch API, however, I don't know the smooch userID and so cannot really communicate consistently since the rest of the communications go through smooch.
So I solve one problem which is being able to instrument and have the bot respond when clicking through a m.me link, but it's sort of fragmented now.
Timing on when referral params will be availble via smooch?

I don't have an exact timeline but I would suspect somewhere within the next 2-3 weeks

This was fixed at the same time as #6. If your page has a get started button, and you link the user via an m.me link, then a conversation:start webhook will be triggered with the referral param when the user clicks the button


Formatting of macros has changed with the 1.43.0 release

Tokio has started having CI runs fail due to rustfmt now rejecting some macros it previously accepted. Here's an example:
macro_rules! deref_async_write {
    () => {
        fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8])
            -> Poll<io::Result<usize>>
        {
            Pin::new(&mut **self).poll_write(cx, buf)
        }

        fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
            Pin::new(&mut **self).poll_flush(cx)
        }

        fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
            Pin::new(&mut **self).poll_shutdown(cx)
        }
    }
}

We use no configuration beyond passing the --edition 2018 flag, which does not affect results.
alice@margatroid io % rustfmt +1.42.0 --check async_write.rs
alice@margatroid io % rustfmt +1.43.0 --check async_write.rs
Diff in /home/alice/src/tokio/tokio/src/io/async_write.rs at line 1:
 macro_rules! deref_async_write {
     () => {
-        fn poll_write(mut self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8])
-            -> Poll<io::Result<usize>>
-        {
+        fn poll_write(
+            mut self: Pin<&mut Self>,
+            cx: &mut Context<'_>,
+            buf: &[u8],
+        ) -> Poll<io::Result<usize>> {
             Pin::new(&mut **self).poll_write(cx, buf)
         }

Diff in /home/alice/src/tokio/tokio/src/io/async_write.rs at line 13:
         fn poll_shutdown(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<()>> {
             Pin::new(&mut **self).poll_shutdown(cx)
         }
-    }
+    };
 }

Take a look at the CI run for more information here.

This kind of formatting changes should not happen as long as you are using the default configuration options, though we have been failing to provide such stability guarantee during 1.x releases. After 2.0 release we are planning to take a more conservative approach to preserve the stability guarantee. Sorry for the inconvenience.


Add example of how to add secrets

Add example of how to add secrets

#!/bin/bash -x
export DEPLOYMENT=${1}
export ENVIRONMENT=${2}
export COMMAND=${3}

cd ${DEPLOYMENT}
helmfile -i --state-values-set deployment=${DEPLOYMENT} -e ${ENVIRONMENT} -f helmfile.yaml ${COMMAND}

Done in https://github.com/HobOps/helm-charts/pull/14


static map files

Hi,
Im having an issue creating my map. I create my json file on https://mapshaper.org/ with the country that i want:

Then i just download it and load on my Geographies component:
`import React from "react";
import {geoCentroid} from "d3-geo";
import {
ComposableMap,
Geographies,
Geography,
Marker,
Annotation,
} from "react-simple-maps";
import geoUrl2 from "./data/guatemala.json";
const geoUrl =
"https://raw.githubusercontent.com/zcreativelabs/react-simple-maps/master/topojson-maps/world-110m.json";
const Map2 = () => {
return (

{({geographies}) =>
geographies.map((geo) => (

))
}

);
};
export default Map2;`
In my webpage the map looks :

I think is something with the projection, the scale and the rotation. How i know which configuration is the best for my map ?

You only need to adjust the "Scale" and "center" property of the ComposableMap component.
Something like below:
<ComposableMap
        height={550}
        projectionConfig={{
          scale: 1550,
          center: [105, 16]
        }}
        projection="geoMercator"
        data-tip=""
>
  ...
</ComposableMap>


recent: Don't modify row_focus if table is not focused.

This fixes an error in the inplace_rerender code when we are trying to remove a rendered row and correcting the row_focus if it is on the row being removed. If the table is not in focus, we don't need to do anything.
discussion: https://chat.zulip.org/#narrow/stream/6-frontend/topic/JS.20exception.3A.20Recent.20topics.20live.20update

Great, merged, thanks @amanagr!

Backported to 6.x as e11b0171fa.


Display glitching out in edit mode for tickets

The problem has to do with the content overflowing when the state changes on the card and pushes the other columns out of the row which messes up the rendering.

it seems to have gone away? Not sure why


Value of type 'RCTBaseTextInputView' has no member 'nativeEventCount'

On react native build -
Value of type 'RCTBaseTextInputView' has no member 'nativeEventCount'

"react-native-text-input-mask": "^3.1.4"
"react-native": "0.63.0"
xCode 12.5

i tried remove it, and it works.

@ig4ever What did you remove? The whole package or just the line which is causing this issue?


Type in documentation treshold_rules > threshold_rules

2 small typos in the README.md file
here and here .
I figure it's better to report those since it's making the example section to fail as it is now

Hi!
Thanks for pointing this out! We're using a structured format using terradoc for providing READMEs. I've updated the source file and re-generated the README in https://github.com/mineiros-io/terraform-google-billing-budget/pull/18.
Again, thanks for bringing this to our attention!


wrong width/height ratios due to missing radius

@j-4 you have to use within self.centerView = function()
        // Get the bounding box
        minX = d3.min(self.graph.nodes.map(function(d) {return d.x-d.radius;}));
        minY = d3.min(self.graph.nodes.map(function(d) {return d.y-d.radius;}));

        maxX = d3.max(self.graph.nodes.map(function(d) {return d.x+d.radius;}));
        maxY = d3.max(self.graph.nodes.map(function(d) {return d.y+d.radius;}));

currently, the +d.radius is missing, causing the rendering to cut of half of the nodes for small RNAs.

given this, you can increase the minRatio multiplier to 0.9  ;-)

Do you have a patch for that to be able to integrate this?
Or maybe a pull request?

come on.. I gave you the change in the comment from above... :)

Alright then... however, it was in another function ;-)
Thanks a lot for the bug report, it is now fixed in the fornac project and will be included in the next release!
https://github.com/pkerpedjiev/fornac/commit/b5546489da72147da14ea09e05c0ba3a7cc4670e


Fix the right custom name in ob.cfg

Custom libbitcoin server name is not working. This fixes it.

Coverage remained the same at 52.051% when pulling 6e008f49893da2f7a38fcdbc4a39e35592136f65 on check-libbitcoin-api into de9a97f44fd8059fed3115acafae03207584f1ca on master.


ADD timeflags in archetype property

it already exists.

It has to be a time archetype. Select the dropdown where it says "Base" and change it to "Time".


Update mongodb-driver-core to 3.12.5

Updates org.mongodb:mongodb-driver-core from 3.12.4 to 3.12.5.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.mongodb", artifactId = "mongodb-driver-core" } ]

labels: library-update, semver-patch

https://github.com/mongodb/mongo-java-driver/releases/tag/r3.12.5
Does not fix https://jira.mongodb.org/browse/JAVA-3710 yet


All extensions and settings disappear when transferring to another computer

All extensions and settings disappear when transferring a USB flash drive to another computer. I tried to log in and create a clean profile without authorization in the browser. The profile folder is stored locally on a USB flash drive.
My software:
Windows 10 x64 Pro 2004 build 19041.264
Portable Edge Updater v<IP_ADDRESS>
Edge Portable  83.0.478.37 x64 Stable

This is by design from Google Chrome. All Chromium-based browsers lose the extensions when you switch to another computer. In this case it is unfortunately better to synchronize the profile via a Microsoft account. Sorry!

Opera portable chromium based has this functionality https://www.opera.com/en/computer/portable

All extensions and settings disappear when transferring a USB flash drive to another computer. I tried to log in and create a clean profile without authorization in the browser. The profile folder is stored locally on a USB flash drive.
My software:
Windows 10 x64 Pro 2004 build 19041.264
Portable Edge Updater v<IP_ADDRESS>
Edge Portable 83.0.478.37 x64 Stable

Hello ,  try to zip or rar that folder wich is your user data from edge , i tested and moved to another machine and works with that method , just use a winrar software and make it .RAR , after move to another machine ,just extract it and check it.

I think Chromium based browsers will "encrypt" the data (extensions, etc) based on the hardware ID of your machine. If you move your portable folder to another machine, then the hardware ID has a mismatch and therefore the extensions won't load.
I've tried taking the portable folder and just archived it using Winrar and tried moving to another machine, but can't access the extensions etc. It's the same with Chrome portable as well.

I think Chromium based browsers will "encrypt" the data (extensions, etc) based on the hardware ID of your machine. If you move your portable folder to another machine, then the hardware ID has a mismatch and therefore the extensions won't load.
I've tried taking the portable folder and just archived it using Winrar and tried moving to another machine, but can't access the extensions etc. It's the same with Chrome portable as well.

do the settings for the extensions presists if you reinstall them at least

I think Chromium based browsers will "encrypt" the data (extensions, etc) based on the hardware ID of your machine. If you move your portable folder to another machine, then the hardware ID has a mismatch and therefore the extensions won't load.
I've tried taking the portable folder and just archived it using Winrar and tried moving to another machine, but can't access the extensions etc. It's the same with Chrome portable as well.

do the settings for the extensions presists if you reinstall them at least

No, they don't. Because the data can't be read anymore.
In Chromium based browsers (Vivaldi, Edge, Chrome), you can create profiles and switch between the profiles. If you have e.g. 100 extensions installed in Profile1, then you can take the contents of Profile1 and copy into Profile2, like this:
%localappdata%\Microsoft\Edge Dev\User Data\Profile 1
copy to
%localappdata%\Microsoft\Edge Dev\User Data\Profile 2

and it'll work. Your extensions and their settings will remain the same. Everything under the "User Data" folder can be copied to the other profile as well, such as bookmarks, sessions, etc. I have 5 different profiles that I have cloned using this method.
Notice that in my path above, I'm using Edge Developer. You can do this trick with Edge stable or Edge Canary, they all work using the same method and this means you don't have to waste time setting up your new profile with all your extensions and settings re-configured from scratch. You can even move extensions and certain files like bookmarks between Chromium browsers, like Edge and Chrome.
However, all of the above requires this to be done on the same machine. They all work on the same machine because the hardware ID doesn't change. If you try to move your data from machine A to machine B, it won't work. Certain files like bookmarks will work, but not extensions.
Firefox does not have this problem though, because it doesn't use the encryption method like Chromium browsers do.
The other solution is to take an image backup of your machine and restore it onto your new machine.  Even if you're using a portable version, the hardware ID is tattoed somewhere into the registry and so restoring from image backup guarantees that it'll be useable.


[hiccup] for React?

Hi @postspectacular, I'm sorry for the long pause in activity (perhaps it was a breath of fresh air for you 😉 )
I have given a lot more thought to your advice of thi.ng as a collection of tools rather than a framework, which I understand now. Forgive me as I'm what people refer to as a "cargo cult'er", but I see how the thi.ng collection contains a broad variety of useful tools that I can apply to many of my projects, even if it's not a framework.
That having been said, I think there is a great opportunity for some integration points here and I was wondering if you'd be open to creating an API into hiccup (for starters) that could be used to transpile hiccup into another template (e.g., React.createElement).  I would love to code my react components using hiccup.

Hi @loganpowell - yeah, thanks for the break! :) :) But seriously, I'm grateful for all the enthusiasm, new ideas / food for thought etc. I'm principally open to things leading to better integration with other tools, but simply don't know enough about React to do this myself (nor am I an active React user, so also couldn't prioritize this). That said, am open for PRs for such things, but since I'm also increasingly aware of the growing size of the code base and the related maintenance tasks, I'd maybe opt for such a project to be developed outside umbrella, with you (or others) as owners/maintainers.
Also, could you please provide some more context what such a transpiler would entail? If I understand correctly, you'd want to use hiccup instead of JSX and the transpiler would be AOT (ahead of time) during the project's build phase, or are there're other use cases?

I would be happy to maintain a separate fork if I can figure it out. It might make sense as a babel plugin

I'm happy to help & advice, of course! To get the ball rolling, it would be great to first collect some links about React/Babel internals and JSX options. I also foresee potential fundamental issues about transforming stateful hiccup components (i.e. closures) and handling of iterators/generators (which are used ubiquitously, at least in my own hiccup projects), even in stateless components. E.g.
import { comp, iterator, map, partition } from<EMAIL_ADDRESS>import { serialize } from<EMAIL_ADDRESS>
const img = (src) => ["img", { src }];
const link = (href, body) => ["a", { href }, body];
const imgLink = ({ src, href }) => link(href || src, img(src));

const thumbs = (images, columns) => [
    "div.thumbs",
    iterator(
        comp(
            map(imgLink),
            partition(columns, true),
            map((row) => ["div", ...row])
        ),
        images
    )
];

serialize(
    thumbs(
        [
            { src: "a.jpg", href: "/users/a" },
            { src: "b.jpg" },
            { src: "c.jpg" },
            { src: "d.jpg" },
            { src: "e.jpg" }
        ],
        3
    )
);

Results in:

Maybe there's an easy solution to this, but as I mentioned, I don't know enough about React to say how this could be approached...

Hi!
Just to say my two cents. I love hiccup api and I'm using React everyday (and I like it too) but honestly I don't think they can be interchangeable in an easy way. Just think about some "core" React feature like hook for local state management or the new Suspense/React.lazy mechanism.
More over as toxi said, the transducers can be hard to port.
Anyway there is a big space for explorations (some random ideas following).
From umbrella to react:

use JSX for hiccup can be nice for people coming from React or plain HTML,
use the atom package for the global state management and make some React HOC to trigger re-render when an atom changes (like mobx-react-lite is doing).

From react to umbrella:

types for the dom attributes: I really enjoy when react with typescript warn me that a prop named foo is not a valid prop for a
 (Property 'foo' does not exist on type 'DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>'.) or when I miss some mandatory props... this is a little verbose for now in hiccup and I see some space to let it be easier to write,
better error reporting (see #86 )

Some more ideas can be found in this brilliant talk Don't build that app where they are using ijk domz or htm module to skip the JSX pre-processing step and write more hiccup-like React code. See snippets in the video here or here or here.
@loganpowell Did you have any other ideas?

Thanks for this,  @nkint!
Just a brief note about the typed attribs - this is only problem if using the lazily evaluated component form (which admittedly is kinda default I've been using, but then again, not really) instead of direct component function calls. Here the issue is that TypeScript doesn't allow you to properly type array elements (or at least all of the ways I could think of ended in failure). Apparently there'll be some improvements in TS3.7, but haven't tried that yet. To illustrate better:
// arbitrary def for user context object
// see https://github.com/thi-ng/umbrella/tree/master/packages/hdom#user-context
interface MyHdomContext {
  theme: Theme;
  ...
}

// a component
const foo = (ctx: MyHdomContext, id: number, blah: string) =>
  ["div", ctx.theme.foo, `User: ${id} (${blah})`];

Call method A:
start(() => [foo, 42, "hdom"], { ctx: { theme }});

Pros:

automatic context injection
uniform syntax (also for component classes/objects with ILifeCycle impl)
components are only data
non-eager realization/execution (only during tree processing)

Cons:

no type checking

Call method B:
start((ctx: MyHdomContext) => foo(ctx, 42, "hdom"), { ctx: { theme }});

Pros:

fully type checked
component functions don't always need extra initial ctx arg, can decide on-demand

Cons:

generally more verbose

There's nothing in hdom/hiccup, which stops you from using both methods and I do that occasionally, even though I've never had real issues with the untyped method (A). VSCode is good enough to show me expected arguments when I hover over a child components name and my data is usually already mostly in the right format when it comes to building/updating UI...
Ps. I think the main aspect of this integration request here are really about hdom, rather than hiccup, since the latter is just a one-off serialization tool (largely meant for serverside or offline html/svg generation), without consideration for state change and/or time (axis) concerns...

I've looked deeper into the issue, considering what has been mentioned here. I suppose this is why I believe that the hiccup would need an API for creating such bridges rather than it be a simple syntax expansion/transpilation of hiccup to x (via Babel). What I was hoping for was an API that would allow for some kind of "hook" (not necessarily for React hooks, etc. forgive the play on words) into the hiccup form that would allow for the user (e.g., of React) to mix in the host frameworks bus (e.g., React hooks).
For example, from hdom:
["button", { style: {... }, onclick: () => bus.dispatch(["inc-counter"]) }, `clicks: ${state.value.clicks}`]

React:
const Example01 = () => {
  const [count, dispatch] = useReducer(reducer, initialState)
  const [state, setState] = useState(0)
  return ['button', {style: {...},  onclick= () => dispatch('increment')}, `clicks: ${state.value.clicks}`]
}

It looks ugly tho...

As for re-rendering when an atom's state has changed. This is easily done by attaching a watch to the atom and do some synchronization with RAF to avoid multiple re-draws if there're multiple state changes within the time span of a single frame:
import { IWatch } from<EMAIL_ADDRESS>import {
    DEFAULT_IMPL,
    HDOMOpts,
    HDOMImplementation,
    resolveRoot
} from<EMAIL_ADDRESS>import { derefContext } from<EMAIL_ADDRESS>
// almost identical  to hdom's start(),
// but attaches as watch to given atom/cursor/history...
const updateUIWatch = (
    state: IWatch<any>,
    tree: any,
    opts: Partial<HDOMOpts> = {},
    impl: HDOMImplementation<any> = DEFAULT_IMPL
) => {
    let isChanged = true;
    let isActive = true;
    let prev: any = [];
    const _opts = { root: "app", ...opts };
    const root = resolveRoot(_opts.root, impl);
    const update = () => {
        if (isChanged) {
            isChanged = false;
            _opts.ctx = derefContext(opts.ctx, _opts.autoDerefKeys);
            const curr = impl.normalizeTree(_opts, tree);
            if (curr != null) {
                if (_opts.hydrate) {
                    impl.hydrateTree(_opts, root, curr);
                    _opts.hydrate = false;
                } else {
                    impl.diffTree(_opts, root, prev, curr);
                }
                prev = curr;
            }
        }
        isActive && requestAnimationFrame(update);
    };
    state.addWatch("hdom", () => { isChanged = true; });
    // initial UI
    requestAnimationFrame(update);
    // cancellation function
    return () => {
        isActive = false;
        state.removeWatch("hdom");
    };
};

const state = new Atom({});
updateUIWatch(state, app, { ctx: ... });

Can one of you please post some good links about this React hooks thing and/or explain what the big deal is about this? Thx :)

https://reactjs.org/docs/hooks-overview.html
however, when compared to the elegance of hdom, you might throw up...

Ahhaha yes sorry 😅
It is a new way to handle local state to permit to write only function components (even if with not-pure function) instead of class component and grouping logics that before were spread around lifecycle method in a single function.
https://reactjs.org/docs/hooks-intro.html
https://reactjs.org/docs/hooks-overview.html
to better understand, a naive implementation of useState
Some good links:
https://medium.com/@dan_abramov/making-sense-of-react-hooks-fdbde8803889
https://overreacted.io/how-are-function-components-different-from-classes/
https://overreacted.io/a-complete-guide-to-useeffect/
https://overreacted.io/writing-resilient-components/
Hooks have some special rules (like: call in the same order):
https://overreacted.io/why-do-hooks-rely-on-call-order/

Thank you both! Looks like I will do some reading over the coming days... :)

I also mentioned React.Suspense and IMHO it worth to read also this:
https://overreacted.io/algebraic-effects-for-the-rest-of-us/
In the end sometimes to simulate an async render they actually "throw a Promise", that is a weird concept, but this article worth the reading!

The only reason I'm thinking about the React integration is it's Native target. You could just skip React entirely and just look at NativeScript. Having the native target is probably one of the biggest selling points of React.

Just to add to the point about type checking, recursive type aliases (coming in TypeScript 3.7) will allow for somewhat stronger typing of hiccup templates than is currently possible (or at least possible idiomatically), but they won't support anything that wouldn't already be possible through interfaces (if hiccup templates weren't array-based).  In particular, checking component arguments against their signatures can't currently be done through data structures alone.
In other words, although you can write an interface like
interface Binding<T, A extends any[]> {
  fn: (...args: A) => T;
  args: A;
}

there's currently no way to write a type that implicitly enforces the relationship between fn and args in arbitrary locations, e.g.
interface Template {
  children: Binding<any, any[]>[]; // Forced to use `any` since this is not an inference site
}
// checks even though generics could be inferred if `children` were an inference site
const foo: Template = { children: [{ fn: Math.sin, args: ["bar"] }] };

The same is true for the more terse, Array-based expressions.
The workaround is to use a wrapper function that provides a call site solely for the sake of inference.
Theoretically (it seems to me), this sort of thing should be possible, and maybe Anders already has something in mind.
Anyway, apologies for the discursion.  I'm in the slow process of abandoning React altogether, and this has been one of the blockers.  We have a ton of code that benefits materially from prop checking.  I am working on a transition that will preserve that, but again, it won't be a React-adapter, and the pain point is more a limitation of TypeScript than of hdom.

the fact that hiccup is 'just data' is it's primary selling point IMHO. This makes it very different from an interface, so this might just be trying to fit a round peg in a square hole...

Absolutely, moving from opaque code to data is a major win. (And my ultimate goal is for all of this to be dynamic anyway, so static typechecking won't matter.)  And note that the helper function in question just returns the argument array as-is, so the result is still transparent (unlike React elements).
If you look at the motivating example for recursive type aliases, it's clear that others are doing this as well:
https://github.com/microsoft/TypeScript/pull/33050
It's just not possible (yet) to capture relationships implied by function expressions.  Incidentally, being able to do so would have implications well beyond hdom, as you could essentially write a form of typed s-expressions.  (I am currently using the same technique to describe streams and transducers.)
So the balance for me is getting the benefit of data-based templates while preserving the ubiquitous static checks that have saved our skin countless time.  Using a helper function looks like the best option for now, and it may not be necessary forever.

I respect your Pragmatism. Idealistically, values could replace semantics, but I realize this is very idealistic. If it's any consolation, reading these comments has already helped me frame the problem through a clearer lens.

Forgive me for beating a dead horse here, but humor me:
Would it be feasible to use the App entry point e.g., ReactDOM.render($Hiccup(App), node), or start($Hiccup(App), node) or svelteNative($Hiccup(App)) as a signal for a compiler to translate the hiccup imports to the target implementation syntax? Instead of trying to parse the entire projects AST for a specific syntax? This might require an AST API which would take the hdom functions and 'put them in the right place' for the target framework, allowing the hiccup Arrays not to have to be sniffed out from the 'noise'.
Maybe the holy grail of "Write Once ..."

Sorry I spazzed out. I'm looking at this:
https://github.com/thi-ng/umbrella/blob/master/packages/hdom/src/api.ts#L155

you look at the motivating example for recursive type aliases, it's clear that others are doing this as well:
microsoft/TypeScript#33050
It's just not possible (yet) to capture relationships implied by function expressions. Incidentally, being able to do so would have implications well beyond hdom, as you could essentially write a form of typed s-expressions. (I am currently using the same technique to describe streams and transducers.)

Would it be prudent to jump on the bandwagon before it leaves the station?

I have read-only experience with TypeScript, but it seems to me that - with this PR - by hooking into the TypeScript compiler API, hiccup/hdom could be transformed into arbitrary targets, or am I wrong?

@loganpowell, this is an area near to my heart, so for my part the discussion is quite welcome.  I will add some thoughts at the next opportunity (prepping for a demo at the moment), but just wanted to say that I'd always rather engage in some healthy problem finding than continue to try solving the wrong problem.  This project has been a massive boost in that area, so I'd add my thanks to @postspectacular as usual.

@gavinpc-mindgrub thank you for your patience. I look forward to your thoughts!
DIgging into this a bit more, looking at the TypeScript Compiler API, it seems that API is rather undocumented/unstable ATM, but it is very exciting to say the least.
I did find these:
https://github.com/woutervh-/typescript-is
https://github.com/cevek/ttypescript

For time reasons, this is not a full answer, just some interjections:

IMHO hdom doesn't qualify/classify as a VDOM, since it's completely stateless and the normalized version of the last user supplied tree is the only piece of data kept around (purely for API/UX convenience) until the next update happens. That's it. Normalization here merely means that all elements are in a uniform structure afterwards (i.e. ["tag", { attribs }, ...children]). There's no other internal representation of the given hiccup structures (like VDOM nodes, DOM references etc). Nada. The diffing is directly applied to these 2 arrays (prev & current tree) and the target data structure (e.g. browser DOM) is then patched via the current element's configured HDOMImplementation. However, hdom itself knows nothing about that target, nor does it want/need to. It's dealt with in an entirely opaque manner. Also the default HDOMImplementation itself is stateless and simply acts as abstraction layer for diffTree() to modify the target. As mentioned in the readme, currently there's only one other HDOMImplementation, the one used by hdom-canvas, which translates hiccup to canvas API draw calls...
That linked PR about recursive types in TS 3.7 is what I mentioned earlier on and am very excited about it. But I'm not quite following what purpose a TS compiler plugin would have in the context of this discussion? It's possible I'm missing something here... (if so, sorry in advance! :)
I've toyed around with Svelte a few moons ago, but the thing I'm still needing to wrap my head around is how/if it works with dynamically constructed reactive dataflows (rather than statically declared reactions in the AOT compiled source). The examples in the playground are not really touching this aspect... By keeping things like reactivity / state handling separate, hdom users are free to choose their preferred state management...
Maybe somewhat unrelated here, but I think hdom can never directly compete with all these other frameworks, unless it starts providing some sort of default state/event handling, nor does it favor component-local state. So a lot of the issue and solutions existing for React don't directly apply here. Keeping these things out was actually one of the main points (apart from loving hiccup syntax) for me, but I also understand that it's a real downer / factor of confusion for newcomers... Of course we could include some sort of wrapper around atoms and/or interceptors as default, but personally, I don't want to be married to them. I think state/event handling are entirely separate problems to UI generation/updating... I also know some of you are comparing each hdom feature to what you know from React, but the fact is that hdom operates somewhat quite differently and because of this also requires some unlearning and I don't mean this in any negative sense...

With all that said, I can definitely imagine a form of hiccup-to-JS compiler and will do some basic transformation experiments as soon as time & other priorities allow for it...
Keep these ideas flowing. This all is *good stuff! Thank you!

Hi @postspectacular!

I have mistaken VDOM for a diffing algorithm. I didn't realize it needed to be stateful in order to be considered such, apologies.
I figured, that - instead of having to track the entire DOM representation (hdom tree) on every change - a compiler transform could allow updates/mutations to happen in a tree-local manner. For example...
If you toggle the Show me button in this Svelte tutorial, you'll see that they use awfully ugly syntax to track local changes. I figured a simple deref of thi.ng's Atom or an event via bus could be injected as a function during compile and directly trigger dom mutation locally. Forgive me if this sounds ridiculous.
I respect your perspective here. Even though it hurts a bit to admit it, you'll probably get a better crowd if you don't accommodate the lowest common denominator (I fall into this camp atm with JS) by doing all the thinking for the user. That having been said, I am finding it difficult plugging the libraries together in some cases.

That was inspirational. I agree with you overall. While reading, I couldn't help but to be reminded of how AWS deploys it's SDKs.
I may sound cranky, but don't get me wrong. I'm only here because I believe in the project and author. I'm just playing devils' (lazy-man's) advocate when I mention cargo-cults. Really, I'm just trying to scratch my own itch and these thi.ngs get so close to those 'hard to reach places' for me.
To your point about first-class 'processes and system', that's what really draws me to thi.ng. I can see:
hdom

passing presentations over wires,
describing routes as an hdom tree,
optics/lenses into an hdom tree with simple property accessor patterns,
adorning state with hdom on the fly,
arbitrary targets (e.g., native, static, APIs), etc..

transducers

one set of functions that work with any event source (pull, push, broadcast, csp ...) instead of cottage functions for each implementation (streams, events, data, etc.) huge
efficient processing with deterministic termination
I can imagine transducers as lambda functions (data -> data)

It's just data after all. So much potential at the presentation and process level. It's a beautiful abstraction. I mean, not to be meta, but you can transduce an hdom tree 😄
I very much look forward to seeing your work later this year!


dbeaver/dbeaver-ee#958 ability to change password added for Oracle

Vertica, SQLServer; SQL Server login folder in tree added

Case added for windows authentification in Tester. No user in this case - no dialog.

https://github.com/dbeaver/dbeaver-ee/pull/1053


Glowing white bits don't glow

Chisel and Bits: chiselsandbits-11.5
FCB: flatcoloredblocks-mc1.10-v4.1
Screens: http://imgur.com/a/pgyUT
Screen 1: a regular Glowing White Block emits light.
Screen 2: When turned into bits, they no longer emit light.
Screen 3: Oddly enough, other blocks such as Glowing Silver Block emit light even as bits.

Two things, please take a screen shot of your F3. and also try placing a full plane of glowing white bits.

Alright. http://imgur.com/a/k8ajL
It seems that when I place down a full plane, no light is emitted. However, if I place down two planes right next to one another, they emit light. I tried just simply causing a block update and that didn't seem to work.

The reason your glowing bits are not "glowing" int he dark is because you have optifine installed, it doesn't support he forge pipeline so I can't do glow-in-the-dark faces.
As for the other one I would try placing down glowstone and then removing it, I think its a strange glitch where MC doesn't update the light levels accurately, but if you place and remove another light-source it seems to resolve it.
If that is the case its a known issue with C&B I've just not had time to track it down yet.

Darn I was really hoping it wasn't Optifine. Thanks for the info though.
Yes you are correct. Placing another light source and removing it solves the strange light update glitch.

Yep figured as much, gonna go ahead and close this issue.


grant meeting urls params should persist (cookie?)

When doing the grant meeting we lose the sort order

fixed as part of grant viewing unification


Flannel using CNI

Updates Controller Manager/Kubelet with Flannel's required configuration for CNI
Removes old Flannel installation
Install CNI enabled Flannel DaemonSet/ConfigMap/CNI bins and config on host

ci check this

Added RBAC support and updated a doc that referenced Docker configuration which is no longer needed.

Rebased again.

Updated to v.0.2.0 flannel-cni released yesterday which includes CNI v.0.6.0 binaries
Added portmap plugin support
Fixed an issue that could occur if br_netfilter is not a module and net.bridge.bridge-nf-call-iptables sysctl was not set.
Addressed linter warnings

Just a note, the br_netfilter and net.bridge.bridge-nf-call-iptables checks are also applicable for weave. Ideally weave and flannel could share code. In another PR, we might want to combine the approach and configure the module/sysctl before kube-proxy is started, otherwise kube-proxy will still warn on startup that neither is set.


Progressively add descriptions for codec settings

Every codec has a ton of settings to mess around with, but the average user won't know what half of them mean. I'm adding small, slightly technical descriptions for each parameter in their respective component's title attribute so that users can hover over it and read about its purpose.
All changes are progressive, so descriptions can be added on an as-needed basis.

[ ] AVIF
[X] ~Browser JPEG~
[X] ~Browser PNG~
[X] MozJPEG
[ ] OxiPNG
[ ] WebP

Example

With the Modal PR this becomes pretty much obsolete


Mongo emitter

An event emitter to MongoDB.

👍 LGTM. We should follow up with configuration docs in the README.


[Feature Request]: Rate us to backend

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
I want to store the rate us comment and rating in the backend which can be used to display reviews later on the website
Use Case
can be used to display review about the website and will help to know the review and problems from customer
Benefits
will provide us feedback about the website and will help to improve it
Add ScreenShots

Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Wait for some time...we are working on login module...after it completes you can start working


[BUG] issues with singularity

Currently using singularity will cause some errors. After MLCube fixes the issue, we should do the following:

update cli_tests.sh to include again the integration test with singularity
update the documentation to remove the warning about singularity issues (in setup.md and in installation.md)

fixed by https://github.com/mlcommons/medperf/pull/526


fix: don't update generated files in docs.rs

closes #429
The build.rs had problems when executing inside docs.rs. This PR looks to skip the update of generated files if the env var DOCS_RS is set which means it is currently building the docs.

@bobbinth should we have main as the base branch?


Deploy to DEGEN Chain

Chain Name
Degen
Chain ID
666666666
RPC URL
https://rpc.degen.tips
Block Explorer URL
https://explorer.degen.tips
Deployment Funds
Yes

Looks like someone tried to deploy using the presigned transaction. However, Degen chain is an Arbitrum chain so the deployment reverted with out of gas, as described in the Multicall README.
Unfortunately this means the nonce was burned, and the only way to get Multicall3 onto Degen is to have the chain developers place it as a predeploy.

@mds1 - do you know where the steps are to create a predeploy on  an Arbitrum chain?
If you can point me in the right direction, I'll see if I can head to syndicate's offices next week and get it fixed.

Hey @gzeoneth, do you have any links or guidance on adding a predeploy to an Orbit stack chain? The context here is nonce 0 was burned on Degen chain, so Multicall3 cannot be deployed at the standard address, and they are looking into placing it as a predeploy as a workaround


[Bug]: Avatar not displaying on Edit Profile page - showing white circle

What happened?
When navigating to the Edit Profile page, the avatar is not displayed correctly. Instead, a white circle is shown where the avatar should be.
How to reproduce the bug
Log in to your account.
Upload an Avatar,
Navigate to the Edit Profile page.
Observe the avatar section.
Package Version
1.0.22
PHP Version
8.2.0
Laravel Version
11.0.0
Which operating systems does with happen with?
Windows
Notes

i have same issue but in local environment running with php artisan serve default port is 8000, solving with changging APP_URL=localhost to APP_URL=http://<IP_ADDRESS>:8000 in .env file and make sure storage folder can acessesed.
Dont know if this situation same with yours maybe this can be a referens for you.

im using herd

you need to change the variable in .env APP_URL=yourprojectname.test
run php artisan storage:link
run php artisan optimize:clear

yes it works thank you

i have same issue but in local environment running with php artisan serve default port is 8000, solving with changging APP_URL=localhost to APP_URL=http://<IP_ADDRESS>:8000 in .env file and make sure storage folder can acessesed.
Dont know if this situation same with yours maybe this can be a referens for you.

I have the Same problem as you but i can’t save my avatar , i’’ already with <IP_ADDRESS>:8000 what can i do


feat(trace): added event limiting for each resource

:tada: This PR is included in version 1.21.0 :tada:
The release is available on:

GitHub release
v1.21.0

Your semantic-release bot :package::rocket:


Added cloudbuild files

@davidrabinowitz How do we get the CODECOV_TOKEN?

/gcbrun

Replaced by PR #16


”Matei”, ”Bidiu”, ”Corvinești” are listed in the drop-down menu

Description:
When user writes ”Matei”, ”Bidiu”, ”Corvinești” the locations appear in the drop-down menu next to the comune and the county witch is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Matei"

Expected results
The location appears in the drop-down menu as "Matei, Bistrița-Năsăud (Matei)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Bidiu"

Expected results
The location appears in the drop-down menu as "Bidiu, Bistrița-Năsăud (Matei)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Corvinești"

Expected results
The location appears in the drop-down menu as "Corvinești, Bistrița-Năsăud (Matei)".


Matching rules for same sid multiple times

We are trying to match a set of rules in our system. These rules will have different states, and each state has conditional attached to it.
Though unlike the examples in the repo, we want to match a rule for a sid multiple times. In other words, each time the end state for a rule is reached, we want to reset its state and continue matching as many times as that sequence occurs.
A simplified state transition rule we are trying to match:
with statechart('rule0003'):

    with state('input'):
        @to('request')
        @when_all((m.event_type == 'A'))
        def request(c):
            print ('moving to request')

    with state('request'):
        @to('match')
        @when_all((m.event_type == 'I'))
        def match(c):
            print ('rule matched 0003')

    state('match')

We tried a bunch of solutions to get this working. Including using delete_state() and resetting the state information on Redis. And when deleting state information on Redis directly we have tried both deleting it at the last matched state, and deleting it after some unit time after it. We also used another external API to delete the state.
Though in all cases we are not able to continue matching a stream of same rules for an already matched sid. When we restart our rule engine, the Redis deletion seems to take full effect and it matches another ruleset of a previously matched sid. But it does not when the durable_rules API is still running.
Ability to match the same rulesets, again and again, is critical for our system. So would love to have your pointers on the right way to proceed.

Hi, thanks for asking the question. I few days ago I pushed a fix to delete cached state after calling deleteState. It should have helped the scenario you described. However, deleting state is an expensive operation. How about doing something like this?
with statechart('rule0003'):

    with state('start'):
        @to('input')
        def start(c):
            print ('starting')

    with state('input'):
        @to('request')
        @when_all((m.event_type == 'A'))
        def request(c):
            print ('moving to request')

    with state('request'):
        @to('input')
        @when_all((m.event_type == 'I'))
        def match(c):
            print ('rule matched 0003')

    @when_start
    def start(host):
        host.post('rule0003', {'event_type': 'A'})
        host.post('rule0003', {'event_type': 'I'})
        host.post('rule0003', {'event_type': 'A'})
        host.post('rule0003', {'event_type': 'I'})

I created a rule set which reverts back to the meter state after either the rule conditions satisfy or timeout occurs. What I have noticed is that if I do not post an event in the whenStart the timer does not fire. Is this a bug?
var d = require('durable');

d.statechart('deployment', function() {
    start: {
        to: 'meter'
        run: {
          startTimer('DeploymentTimer', 10)
          console.log('Timer start')
        }
    }

    meter: {
        to: 'reset'
        whenAll: {
          first = m.event == 'Update'
          second = m.error_rate > 5
        }
        run: {
          console.log('Suspicious software update detected' + JSON.stringify(first) + ' ' + JSON.stringify(second))
        }

        to: 'reset'
        whenAll: {
          timeout('DeploymentTimer')
        }
        run: console.log('Timer expired')
    }

    reset: {
        to: 'meter'
        run: {
          deleteState()
        }
    }

    whenStart: {
        // Events in a row will trigger the deployment rule
        // The timer fires repeatedly ONLY if the following 2 lines are commented out
        // post('deployment', { event: "Update" });
        // post('deployment', { error_rate: 10 });
    }
});

d.runAll();

What is the lifecycle of a statechart when it reaches a terminal state? Does the client need to explicitly delete it or keep track of its state to possible reuse it? What does deleteState() do?


Add Contributor Covenant

Merged as https://github.com/spring-projects/spring-amqp/commit/c8e06778d88469ebf261bf5013dbe791bc606fee


Expand TestBot + Add tests

Fixes #971
Fixes #972
Description
This PR expands TestBot to match the current CoreBot example from the Samples repo.
In addition:
Specific Changes

The MainDialog has been slightly refactored to accept a LuisHelper as a parameter (allowing it to be mocked for tests)
New Dialog unit tests have been added  in the tests/ folder using the botbuilder-testing library

Testing
Check out the repo
Run lerna run test - all tests should run and test
Also go to libraries/testbot and run npm run test to see them run individually.

Builds on #987

@ParadoxARG Can you help me  update the deployment scripts, which are now out of sync with what is in samples?

Hi Ben,
The tests are probably failing because this is reverting the changes of #954 where we created a new endpoint (/api/mybot) to match the DotNet implementation.
In DotNet the TestBot has an endpoint for an EchoBot and another endpoint for the Flight Assistant. The tests right now are configured to run against an EchoBot. We should replicate the same for JS and have one endpoint for the EchoBot(mybot) and another one for the CoreBot (dialogbot). Here’s the DotNet implementation.
We will be running some tests over this branch, and we will let you know when we have more information about it.

@ParadoxARG Oops, I didn't mean to regress that - I'll restore that feature and the simple echo that existed before.
But do you think this is what is causing the test fail? It seems to be something about botbuilder-testing missing on npm, but it should be getting it from the monorepo through lerna.

The test against the deployed TestBot will fail for sure without this endpoint, but as you mentioned we may be having another issue along with this. We will look into this tomorrow and run some tests against our pipeline.

I just put that endpoint back in place :)

Hi @ParadoxARG, can you use the real TestBot instead of mybot for your tests? that would simplify things in the code and make it less confusing. TestBot does real work as opposed to  mybot that is just an echo.


[Feature] Diarization support?

Could be interesting to include diarization support, so the LLM has the context of multiple speakers and which parts are spoken by who. I know deepgram already supports this in their transcription though, so maybe it's just a matter of changing up the settings on the api call and it's good to go? https://developers.deepgram.com/docs/diarization

Getting diarization from Deepgram is fairly simple like you said, a matter of providing the correct config settings.
The code would need to be adjusted to support from current You, Speaker, to You, Speaker-1, Speaker-2, ..... Speaker-N.
I would be happy to help anyone if they want to take this on.


cilium: fib lookup consolidation

This series reworks and consolidates all fib lookups in our BPF code to utilize common functionality.
For tc BPF, this means that redirect_neigh code can be used whenever neighbors cannot be resolved. XDP utilizes the BPF neighbor map as we cannot do this ad-hoc in this layer.
This affects KPR, standalone LB, NAT46x64 GW, DSR code.
Fixes: #22782
Out of scope in here: EDT fix

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

/ci-l4lb

(l4lb ci green)

/test

/test

/test

/test-1.16-4.9

/test-runtime

/test-1.24-5.4

/test-1.26-net-next

/test-1.25-4.19

@borkmann Please triage the CI failures instead of restarting until it passes. We have a bunch of recurring failures for which nobody opened an issue because everyone is just restarting.

/test

@borkmann Please triage the CI failures instead of restarting until it passes. We have a bunch of recurring failures for which nobody opened an issue because everyone is just restarting.

I did look at the sysdumps to see if there is some correlation with the patch series and whether the errors are persistent in the first place. Given L7 related, my thinking was that it might have been due to the passed fib_lookup params.

Superseeded by https://github.com/cilium/cilium/pull/23884 .


Bug check entitlement

Description

[x] check error catching
[ ] check source of error

About #3757
Checklist:

[x] PR title matches follow: (Feature|Bug|Chore) Task Name
[x] My code follows the style guidelines of this project
[x] I have followed all the instructions described in the initial task (check Definitions of Done)
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] I have added reference to a related issue in the repository
[ ] I have added a detailed description of the changes proposed in the pull request. I am as descriptive as possible, assisting reviewers as much as possible.
[ ] I have added screenshots related to my pull request (for frontend tasks)
[ ] I have pasted a gif showing the feature.
[ ] @mentions of the person or team responsible for reviewing proposed changes

@roma-hladilka @johnsmith-gooddollar the issue was at GoodWalletProvider line 119.
The checkentitlement(address) didnt work for new users. the bug in the contract has been fixed. should be ok now


wait for initializer to start before proceeding with e2e tests

The initializer configuration could block all deployments until the initializer pod is ready to to initialize resources. Update the e2e integration test to wait until the initializer pod is ready before proceeding with deploying the rest of the Istio runtime components and test apps.
This is intended to fix the following test timeout.
I1201 21:21:29.352] configmap "istio-inject" created
I1201 21:21:29.779] serviceaccount "istio-sidecar-initializer-service-account" created
I1201 21:21:29.916] deployment "istio-sidecar-initializer" created
I1201 21:21:30.376] service "istio-pilot" created
I1201 21:21:30.529] serviceaccount "istio-pilot-service-account" created
W1201 21:22:00.758] Error from server (Timeout): error when creating "STDIN": Timeout: request did not complete within allowed duration
W1201 21:22:00.760] E1201 21:22:00.759102     820 driver.go:181]
W1201 21:22:00.761]
W1201 21:22:00.761] =================== Failed infrastructure tests! =====================

@ayj: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ayj: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
d9a3c0462dc316f834c00c7be6f57692d9f9be8a
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

/lgtm


Add missing dependency to README

depends on ubuntu libgee-0.8-dev

Already in CONTRIBUTING.md :)


only aruco take off error

Hello Long time no see @okalachev
I am using px4 1.12.3 version firmware. Optical flow is set to false and I am testing using ipython

set it like this
navigate(x=0, y=0, z=1.0, speed=0.5, frame_id='body', auto_arm=True)
Give the take off command. The gas initially rises and then loses position.
aruco.launch file
<arg name="aruco_detect" default="true"/>
<arg name="aruco_map" default="false"/>
<arg name="aruco_vpe" default="false"/>
<arg name="placement" default="floor"/> <!-- markers placement: floor, ceiling, unknown -->
<arg name="length" default="0.22"/> <!-- not-in-map markers length, m -->
<arg name="map" default="map.txt"/> <!-- markers map file name -->

Doesn't it work if I don't use aruco_map?

And another bug is that if you don't set aruco_map to True, rviz doesn't output image subjects to aruco_dectect.

Hi! You can't fly in position mode with optical flow turned off and aruco vpe turned off, since the drone doesn't have the position source.

@okalachev thanks ~! I'm using ipython3 control but land position is strange
The command is using Land() and using aruco.

What do you mean land position is strange? Please, provide more details on that and, if possible, the flight logs.

@okalachev It seems to be a camera problem. Existing clover rpi camera outputs 40 fps, but jetson camera outputs 30 fps max. Could this be why the optical flow isn't working properly?

@okalachev aruco.launch aruco_detect         If not set to false, aruco detection will not work.

@youngjae41

It seems to be a camera problem. Existing clover rpi camera outputs 40 fps, but jetson camera outputs 30 fps max. Could this be why the optical flow isn't working properly?

No, there is no hard requirement to optical flow camera fps to work, 30 FPS is OK.

aruco.launch aruco_detect If not set to false, aruco detection will not work.

You can use an automated tool that checks your Clover's configuration and prints a full report: rosrun clover selfcheck.py.

@okalachev Sorry, misdirection. in the latest version
 <- set to false, aruco detection will not work.

You can use the above checking tool to diagnose some problems. Also there is log in /var/log/clover.log file, if aruco detection falls, there would be errors.

@okalachev Hello, is there a way to land on the Aruco Maker I want?

You can use aruco_X frame for that, like, navigate(x=0,y=0,z=0,frame_id='aruco_35').

@okalachev Entering Land() RTLs to the place where the aircraft first takek off. Has this ever happened?

@lgh5054, can you please reformulate your question? I don't get it.

@okalachev When entering land(), it does not land at the current location, but RTLs to the home point from which it first took off.

No, it should not work this way. Maybe it just drifted away for some reason when it was landing?

@okalachev i'm using v 1.14.0 relrease firmware

Sorry, this code was not written by us, you can try to contact its author https://t.me/tenessinum to get it.

@okalachev Hello Okalachev Found the problem.
When operating optical flow, even if you hold the drone with your hand and move its position, rviz will initialize it to 0,0,0 coordinates.
optical flow problem or px4 1.14.0 firmware problem?


Instructions for feed authentication are inaccurate - mavenFeedAuthenticate must be enabled

Authentication does NOT happen automatically ! You MUST have 'mavenFeedAuthenticate: true' option set in your Maven task definition inside azure-pipelines.yml. It is 'false' by deafult - check Maven task on GitHub

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

ID: 60230978-ce5b-6964-23ba-1dd31b1fa1c9
Version Independent ID: 9b1eb982-b07a-8b67-ab0b-b2a4d3dade12
Content: Use Maven artifact feeds - Azure Pipelines
Content Source: docs/pipelines/artifacts/maven.md
Product: devops
GitHub Login: @elbatk
Microsoft Alias: elbatk

I agree, this is a lot of extra work for what can be accomplished by adding 'mavenFeedAuthenticate: true' to the default Azure DevOps Pipeline Maven build.
These steps are needed to connect a local Maven install to the Azure DevOps Artifacts Maven feed, but not for pipeline builds.

@vvoinov Thank you for your feedback. The updated article will go live shortly.


Image pull fails

From the event log:
12s       1m        3         artifactory-pro-1-3gqjj   Pod                                          Warning   FailedSync   {kubelet nde01blu01}   Error syncing pod, skipping: failed to "StartContainer" for "artifactory-pro" with ImagePullBackOff: "Back-off pulling image \"jfrog-int-docker-open-docker.bintray.io/artifactory-pro/openshift:5.2.1.pro\""

@sbadakhc
Can you paste the logs of the container ?

Hi,
Please see below:
oc logs po/artifactory-rev-proxy-1-build
Cloning "http://gitlab.com/goern/artifactory-on-openshift.git" ...
error: build error: failed to fetch requested repository "http://gitlab.com/goern/artifactory-on-openshift.git" with provided credentials


Make ColorTypes, Distances optional dependencies.

Not sure what uses ColorTypes. Maybe it can be dumped altogether.
I think Distances is needed for clustering.jl and maybe nearest_neighbors.jl

I can confirm distances is needed for clustering and nearestneighbors.
ColorTypes can almost certainly be dumped
Re the first 2, what do you suggest? should MLJModels make everything optional? (inc e.g. Distributions and CategoricalArrays?)

With the exception of the packages ColorTypes, Distances, Parameters all other MLJModels [deps] are also [deps] of MLJBase (or part of julia Base). So I don't  really see any point in making them optional at this point.

should  we close this then?

resolved by PR #139


Support for files with (or without) diffing

It would be helpful if insta could also be used for managing file contents. For instance, some tests may produce CSV (and the plain text / diffing based on strings i great), but if other tests want to produce Parquet files (a binary format) they can't use insta.
How difficult would it be to have something like insta::assert_binary_file(<path>) and insta::assert_text_file(<path>)?

What would the behavior of this be when the mismatch happens?

It could be similar to https://docs.rs/goldenfile/1.1.0/goldenfile/ - output the diff (or diff hashes if the files are binary) and allow accepting to overwrite the expected file (or hash).

I would be accepting a patch for it but I assume the work required would be quite significant since everything in the system currently assumes unicode strings.

Closing this as duplicate of #196


single example won't start

The single example won't start, I think Cosmos SDK made a logging change. Getting this error when trying to start the example
Error: failed to parse log level (main:info,state:info,*:error): Unknown Level String: 'main:info,state:info,*:

yah, i've noticed it yesterday. quick fix is to remove AKASH_LOG_LEVEL config set

yah, i've noticed it yesterday. quick fix is to remove AKASH_LOG_LEVEL config set

cc @anilCSE

cc @anilCSE

Yeah, there are some changes to the log levels. Are we missing anything if we remove AKASH_LOG_LEVEL?

Yeah, there are some changes to the log levels. Are we missing anything if we remove AKASH_LOG_LEVEL?

Is there any link to whats changed?

Is there any link to whats changed?

Ref: https://github.com/cosmos/cosmos-sdk/pull/8072

Ref: https://github.com/cosmos/cosmos-sdk/pull/8072


Expose valueSerializer and valueDeserializer (and key) as beans.

🎁 Enhancement
Hi, I have implemented outbox/inbox pattern when it comes to eventing in our application. Basically we just store events in DB before sending/processing.
We use Avro format for storing events, and of course, we use io.confluent.kafka.serializers.KafkaAvroDeserializer and io.confluent.kafka.serializers.KafkaAvroSerializer.
Having said that, we want to store events in DB using avro format, because when i used JSON (and ObjectMapper) then in complex structures it was losing class information and e.g. array of (one of A, B, C) is becoming array of Objects which of course is causing deserialization issues. I will not go deep into details.
So next step is, of course, to reuse the serializers/deserializers that are created by kafka / kafka template / kafka producer factory / kafka producer / anything that creates this.
For now the only way to get it is to use reflection:
kafkaTemplate.getTheProducer().delegate.delegate.valueSerializer
Double delegate because one of them is TracingKafka (we use spring-sleuth)
As you can see this is not portable, unclean shitty way to get them.
Can you help me there?
(of course the other solution is to configure objectMapper but it is even less portable, please skip this idea)
Thanks :handshake:

The KafkaTemplate is based on the ProducerFactory where its implementation is a DefaultKafkaProducerFactory. And this one has a ctor like this:

	/**
	 * Construct a factory with the provided configuration and {@link Serializer}s.
	 * Also configures a {@link #transactionIdPrefix} as a value from the
	 * {@link ProducerConfig#TRANSACTIONAL_ID_CONFIG} if provided.
	 * This config is going to be overridden with a suffix for target {@link Producer} instance.
	 * @param configs the configuration.
	 * @param keySerializer the key {@link Serializer}.
	 * @param valueSerializer the value {@link Serializer}.
	 */
	public DefaultKafkaProducerFactory(Map<String, Object> configs,
			@Nullable Serializer<K> keySerializer,
			@Nullable Serializer<V> valueSerializer) {

So, you are good to configure your KafkaAvroDeserializer & KafkaAvroSerializer over there and reuse those beans whenever you need with your DB.
You don't need to worry about reflection and we don't need to expose those non-KafkaTemplate options.
Does it make sense to you?

From your point of view it is correct.
But this is how I "created" them so far:
      properties:
        schema.registry.url: http://confluent-cp-schema-registry.kafka.svc.cluster.local:8081
        specific.avro.reader: true
        key.subject.name.strategy: io.confluent.kafka.serializers.subject.TopicNameStrategy
        value.subject.name.strategy: io.confluent.kafka.serializers.subject.TopicNameStrategy

From my point of view now I would have to dig into internals of kafka and confluent, and figure out how to create serializers, of course with all the related stuff like post-configurations. Also when new version will be released, I need to check if my initialization is done properly, eventually add missing features (addtional post-configurations) on top of it.
I would prefer to have single mechanisms for that -- if you create it, then do it, otherwise force user to do it all the time + put post-configuration on top of user bean. Or am I wrong? :thinking:

We don't create. That's exactly a target Apache Kafka API:
KafkaProducer(Map<String, Object> configs, Serializer<K> keySerializer, Serializer<V> valueSerializer)

Therefore we just expose in Spring for Apache Kafka whatever is available for in the target Kafka client implementation.
Even if we would be able to expose an API you request, it is still going to be against reflection. Plus consider your situation with that Sleuth proxying. Without a public API in Apache Kafka client, we can't make a reliable public API in Spring for Apache Kafka.
Therefore a way Apache Kafka it suggests via ctor arguments for the KafkaProducer instead of configuration properties is the way to go. At least for now.
I mean when you request such a feature in Apache Kafka and it becomes available for any users, we are more than happy to expose such getters in Spring for Apache Kafka.
However I believe that one already belongs to DefaultKafkaProducerFactory and DefaultKafkaConsumerFactory if that.
Although I would stay with top-level bean configuration instead of non-transparent instantiation in the Kafka client by reflection from the properties.

Ok, get it! I will go with proposed approach, thanks!


justCreate ghrss

Could you add some details on what ghrss is and why it is needed? I'm not familiar with it.

Closing this PR. It appears to have been created by mistake, otherwise, please add more details and re-open.


Changes from .NET7 to .NET8

Obviously some changes either in the generator or in C# has taken place so that the current generated code does not compile anymore.
Just to name two example:

Windows.Win32.PInvoke.EnumDisplayMonitors(null, null, proc, 0);
and
bool isConnected = Windows.Win32.PInvoke.InternetGetConnectedState(out var x, 0);

where valid before. Now the are reporting
For 1: Argument 1: cannot convert from '' to 'Windows.Win32.Graphics.Gdi.HDC'
For 2: Argument 1 may not be passed with the 'out' keyword
These are the two methods that are generated, obviously the reserved was there before but now is gone. Is there a reason why this has changed?
internal static unsafe winmdroot.Foundation.BOOL InternetGetConnectedState(out winmdroot.Networking.WinInet.INTERNET_CONNECTION lpdwFlags)
internal static extern unsafe winmdroot.Foundation.BOOL InternetGetConnectedState(winmdroot.Networking.WinInet.INTERNET_CONNECTION* lpdwFlags, uint dwReserved);

Sure, I know the reason why the code does not compile anymore, but this means something must have changed in the generated code, but I couldn't figure out what has changed.
Just a few side notes: I do not have NativeMethods.json. I'm using version 0.3.18-beta on .NET 8, language version is not explicitly set (in the UI it shows latest, which for .NET8 means C#11.
Any help would be nice because it seems this is the only obstacle that prevents from going to .NET8.

See also #1014

Trying out 8.0 RC1 and inline arrays are no longer building.
internal unsafe readonly ReadOnlySpan<char> AsReadOnlySpan() => MemoryMarshal.CreateReadOnlySpan(ref Unsafe.AsRef(Value[0]), SpanLength);

Microsoft.Windows.CsWin32\Microsoft.Windows.CsWin32.SourceGenerator\Windows.Win32.char.InlineArrays.g.cs(117,117,117,125): error CS1620: Argument 1 must be passed with the 'ref' keyword

I'm not exatcly sure if it has to do with .NET8. I saw the problem when switching from version 0.2.46-beta to version 0.3.18-beta on NET8. So it worked with version 0.2.46-beta.

I'm not exatcly sure if it has to do with .NET8. I saw the problem when switching from version 0.2.46-beta to version 0.3.18-beta on NET8. So it worked with version 0.2.46-beta.
Update: Its seems to be a problem of one of the newer version of CsWin32. It also does not work on .NET7.

It works OK for me in .NET 7.0 and lower. With .NET 8.0 it doesn't work as Unsafe.AsRef has changed.

It works OK for me in .NET 7.0 and lower. With .NET 8.0 it doesn't work as Unsafe.AsRef has changed.

@Nuklon: Ok, that might be a different problem then.

When I target net8.0 using the 8.0.100-rc.1.23455.8 SDK, CsWin32 0.3.18-beta seems to work fine when NativeMethods.txt has this content:
EnumDisplayMonitors
InternetGetConnectedState

This is with LangVersion set to 11 as well as 12.
I'm going to need more specifics about how to repro the problem in order to fix it.

These are the two methods that are generated, obviously the reserved was there before but now is gone. Is there a reason why this has changed?

We remove reserved parameters from friendly overloads when they must always be 0.

@AArnott
It seems to work now with VS 17.8 Preview 2, with Preview 1 I was unable to compile WIN32_FIND_DATAW.
VS does warn for inline arrays now that it should be passed with the "in" keyword (CS9195), but it seems tracked in https://github.com/microsoft/CsWin32/issues/1014.

@AArnott: Thanks for looking into this.
EnumDisplayMonitors could before called this way:
Windows.Win32.PInvoke.EnumDisplayMonitors(null, null, proc, 0);
Now the compiler complains:
Argument 1: cannot convert from '<null>' to 'Windows.Win32.Graphics.Gdi.HDC'
I checked the two version and it seems 0.3.18-beta does not create the SafeHandle version anymore (see below the generated code for the two version). Is this a bug or was this intended?
0.2.46-beta
internal static unsafe winmdroot.Foundation.BOOL EnumDisplayMonitors(SafeHandle hdc, winmdroot.Foundation.RECT? lprcClip, winmdroot.Graphics.Gdi.MONITORENUMPROC lpfnEnum, winmdroot.Foundation.LPARAM dwData)

internal static extern unsafe winmdroot.Foundation.BOOL EnumDisplayMonitors(winmdroot.Graphics.Gdi.HDC hdc, [Optional] winmdroot.Foundation.RECT* lprcClip, winmdroot.Graphics.Gdi.MONITORENUMPROC lpfnEnum, winmdroot.Foundation.LPARAM dwData);

0.3.18-beta
internal static unsafe winmdroot.Foundation.BOOL EnumDisplayMonitors(winmdroot.Graphics.Gdi.HDC hdc, winmdroot.Foundation.RECT? lprcClip, winmdroot.Graphics.Gdi.MONITORENUMPROC lpfnEnum, winmdroot.Foundation.LPARAM dwData)

internal static extern unsafe winmdroot.Foundation.BOOL EnumDisplayMonitors(winmdroot.Graphics.Gdi.HDC hdc, [Optional] winmdroot.Foundation.RECT* lprcClip, winmdroot.Graphics.Gdi.MONITORENUMPROC lpfnEnum, winmdroot.Foundation.LPARAM dwData);

Regarding the InternetGetConnectedState, you are right, the exclusion of reserved parameters was the problem. It would be nice though if there would be a list of breaking changes, because it was not quite obvious from the (or is there some list and I haven't seen it?).


fix wrong usage of assertNotNull

Signature of assertNoNull() is taking "actual" as first parameter:
public static void assertNotNull(Object actual, String message) {
    AssertNotNull.assertNotNull(actual, message);
}

Signed-off-by: Davide Angelocola<EMAIL_ADDRESS>

@garydgregory can you please review this as well?

Coverage increased (+0.1%) to 89.251% when pulling 820cfd9af08897d64329051f8c86378a9367c88e on dfa1:fix-745 into 072fa707f7cd41a70bcec644e1b393e3955dcc75 on apache:master.


Logs.md incomplete

I've not finished downloading the data yet but gear_choice doesn't tell me the option for drive (i'm assuming its an automatic)

It's an automatic. gear choice will tell you which gear the transmission is in.


adapter crashes when adding more than one watchable device

Here the adapter crashes as soon as I add a second device for monitoring its online status:

host.bilbo	2016-11-15 21:40:30.088	info	Restart adapter system.adapter.tr-064.0 because enabled
host.bilbo	2016-11-15 21:40:30.088	error	instance system.adapter.tr-064.0 terminated with code 0 (OK)
tr-064.0	2016-11-15 21:40:30.084	info	terminating
tr-064.0	2016-11-15 21:40:30.082	error	at Object.onclosetag (/opt/iobroker/node_modules/iobroker.tr-064/node_modules/xml2js/lib/xml2js.js:447:26)
tr-064.0	2016-11-15 21:40:30.082	error	at Parser.emit (events.js:169:7)
tr-064.0	2016-11-15 21:40:30.082	error	at emitOne (events.js:77:13)
tr-064.0	2016-11-15 21:40:30.082	error	at Parser. (/opt/iobroker/node_modules/iobroker.tr-064/node_modules/xml2js/lib/xml2js.js:489:18)
tr-064.0	2016-11-15 21:40:30.082	error	at /opt/iobroker/node_modules/iobroker.tr-064/node_modules/tr-O64/lib/Service.js:267:17
tr-064.0	2016-11-15 21:40:30.082	error	at /opt/iobroker/node_modules/iobroker.tr-064/tr-064.js:263:21
tr-064.0	2016-11-15 21:40:30.082	error	at /opt/iobroker/node_modules/iobroker.tr-064/tr-064.js:412:9
tr-064.0	2016-11-15 21:40:30.082	error	at setActive (/opt/iobroker/node_modules/iobroker.tr-064/tr-064.js:401:14)
tr-064.0	2016-11-15 21:40:30.082	error	at CDevice.set (/opt/iobroker/node_modules/iobroker.tr-064/node_modules/soef/soef.js:819:24)
tr-064.0	2016-11-15 21:40:30.082	error	at add (/opt/iobroker/node_modules/iobroker.tr-064/node_modules/soef/soef.js:790:21)
tr-064.0	2016-11-15 21:40:30.082	error	TypeError: Cannot set property '_id' of undefined
tr-064.0	2016-11-15 21:40:30.080	error	uncaught exception: Cannot set property '_id' of undefined
tr-064.0	2016-11-15 21:40:28.431	info	starting. Version 0.1.7 in /opt/iobroker/node_modules/iobroker.tr-064, node: v4.6.2

Update soef library in the adapter directory to current version fixes this

should be fixed in the meantime?!


Add an option to hide the "jump to top" floating button.

Is your feature request related to a problem? Please describe.
The "jump to top" floating button is very easy to press accidentally while scrolling. If you press this, you will lose your place in the feed and all of the posts you were looking at are lost to the void, never to be found again. I have done this multiple times in the short time I have used this app, and it is starting to get frustrating.
Describe the solution you'd like
There should be an option to hide this floating button. Jumping to the top can still be easily done by pressing the name of the feed or pressing the home button, both of which are significantly harder to do accidentally.
Describe alternatives you've considered
This floating button could be removed entirely. I wouldn't miss it, though I'm sure there's someone out there who would complain if it were removed.
Additional context
I am on Android, but I imagine iOS has the same issue. This is not an issue for Web, but it wouldn't hurt to provide the option anyways. The compose floating button also has a similar issue, but it's not as big of a deal to accidentally press and there would need to be an alternative way to compose posts if that button were hidden.

I agree with this issue. The floating action button on the bottom left of the screen on the feed is distracting. It covers up the faces of users and is not helpful. To scroll to the top I can tap the app header. I would rather have a different type of UI that shows up only when there is new content at the top of the feed.

I agree with this - if I’m scrolling with my left hand, my thumb hits it way too many times and I lose my place in the feed. Just want to toggle it off, please!


these were assimilating all channels

Description
The comps count between what GSI takes in and what JEDI is taking in are wrong .. and indeed, I found out from running for Aug 2023 that JEDI is taking in MHS on N19 where GEOS-GSI does not ... because the database has these data turned off by then ...
Dependencies
None
Impact
none

Notice: this is not ready to go in ... I think I am missing a change to whatever place is responsible for defining the use_flag associated w/ MHS --- looking for where / how that's done.

code runs now ... but unfortunately it rejects all MHS obs ... need to look still

Eureka! This works now.


Feature request: Allow comma-seperated handles

Hi,
first of all: Nice plugin. To get colored matrix blocks is a pretty simple feature, but with great impact.
I use matrix blocks for website modules, for instance (such as a teaser tile, a newsletter subscription module etc.) and colored blocks are very helpful to keep the overview of all added modules.
Well, in my current case I have different modules that are similar. Therefore I would add all of these modules (respectively the handles of the matrix blocks) one by one to your plugin's settings and set the color for each.
Example:

Block Type Handle
CSS Background Color

module1
#c0ffee

module2
#c0ffee

module3
#c0ffee

module4
green

module5
green

To make this even easier I would like to add only one single color setting for multiple blocks at once. Let's say with comma-separated matrix block handles. Like so:

Block Type Handle
CSS Background Color

module1, module2, module3
#c0ffee

module4, module5
green

Would be awesome to have this feature. Would you mind adding that in near future? Thanks in advance for your reply.

Great suggestion, and thanks for the PR!

Nothing to thank for. Did it in my own interest… 💃 😉


Get wrong color from picamera API

I modified the AIY example "face_detection_camera.py" to do Face recognition.
https://youtu.be/zFWgmFdt5Dg
I can get the raw data of a frame with the picamera API camera.capture() and do Face recognition with OpenCV and intel NCS.
Now The execution time is a little slow and sometime I got the wrong color from camera.capture().
do you have any suggestion for this situation and performance?

[My code]
with PiCamera() as camera:
#Start the camera stream.
camera.resolution = (640, 480)
camera.framerate = 30
    rawCapture = PiRGBArray(camera)
    time.sleep(1)
    frame_count = 0

    image = np.zeros((480, 640, 3), np.uint8)

    with CameraInference(face_detection.model()) as inference:
        for i, result in enumerate(inference.run()):
            faces = face_detection.get_faces(result)
            camera.capture(rawCapture, format="bgr", use_video_port = False)
            image = rawCapture.array.copy()
    ....
    cv2.imshow('Face recognition', image)

Getting wrong color is pretty strange, I've never seen something like this with Pi camera. I think you should double check your image processing pipeline. Can you reliably reproduce this issue without OpenCV?

if I only call picamera camera.capture() without calling CameraInference().
The color is normal during the period.
Any time sync that I must care about for  CameraInference()?
Or you have any example that we can get the raw data for a frame during CameraInference()?

camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 30
rawCapture = PiRGBArray(camera, size=(640, 480))
time.sleep(0.1)
capture frames from the camera
while (1):
camera.capture(rawCapture, format="bgr", use_video_port = False)
image = frame.array
cv2.imshow("Frame", image)
key = cv2.waitKey(1) & 0xFF
rawCapture.truncate(0)
if key == ord("q"):
break

Hi
I mortify my code as below, and fix this problem now.
This's our demo for facial recognition with google AIY and inte NCS.
https://youtu.be/zQHOLmRjpek
[My code]
...
frameSize = (640,480)
vs = VideoStream(src=0,usePiCamera=True, resolution=frameSize, framerate=32).start()
defWidth = 640
defHeight = 480
time.sleep(2)
...
with CameraInference(face_detection.model()) as inference:
for i, result in enumerate(inference.run()):
faces = face_detection.get_faces(result)
frame = vs.read()
for face in faces:
fX, fY, fWidth, fHeight = transform(face.bounding_box)
if(fX > 0) and (fY > 0) and (fWidth -fX > 150) and (fHeight -fY > 150):
cv2.rectangle(frame, (fX, fY), (fWidth, fHeight), (0,255,0), 1)
roiImage = frame[fY:fHeight, fX:fWidth]
frame_count += 1
                    test_output = run_inference(roiImage, graph)

                    if (face_match(valid_output, test_output)):
                        found_match = True
                        cv2.putText(frame, "Rouyun",(fX+5,fHeight+5),cv2.FONT_HERSHEY_PLAIN,1.5,(255,255,255),2)
                    else:
                        found_match = False
                        cv2.putText(frame, "Unknown",(fX+5,fHeight+5),cv2.FONT_HERSHEY_PLAIN,1.5,(255,255,255),2)

            cv2.imshow('Face recognition', frame)
            key = cv2.waitKey(1) & 0xFF
            # if the `q` key was pressed, break from the loop
            if key == ord("q") or key == ord("Q") :
                break

vs.stop()

...

@rouyunpan Very nice project!


Can't see browser with launch

Not sure if this is a problem or I just don't know how to use foxr. I can launch a browser and take a screenshot as in the example, but even if I disable the headless mode I can't see the browser.
foxr.launch({
    headless: false,
    args: ['-marionette', '-safe-mode', '-no-remote', '-profile', '/tmp/firefox_test-test_123'],
    executablePath: '/my-path/firefox',
  });

This is not something that blocks my workflow, I can just open another window and check using screenshots, but feels a bit too troublesome 🤔 am I missing something?

Update: it was my own fault, not sure what happened, maybe I was wrapping something in a try/catch block, or it was an promise I wasn't handling correctly. Closing this issue now.

glad to help :)


add additional stats from mdstat

In the recovery line for mdstat, we can also track percentage complete, estimated time to completion, and current recovery write speed. This MR adds those additional stats.

We need to make sure this works for all kernels we support. If that's the case, LGTM!

This should gracefully handle different kernels...and I believe the mdstat file format hasn't changed in quite some time.

@discordianfish Is there a standard way to prove out the "kernels supported"? I know this works on 4.19, for example.

Typically it involves a lot of browsing the kernel source tree. :-(

Unfortunately I don't think we have a way. We should probably collect fixtures for multiple kernel versions. It's silly but I'd probably spin up a VM with e.g 2.6.23 and run tests there..

If that's the case...how did y'all validate this collector in the first place? While I appreciate that we should try to validate this as much as possible, it does fail gracefully on missing stats.

Lots of trial and error. The current mdstat fixture is a collection of various examples from bugs reported by users.


[BUG] clusterrole yurt-manager-role in yurt-manager helm chart lacks nodes/status resource

What happened:
The clusterrole yurt-manager-role in yurt-manager helm chart lacks permissions for nodes/status：
charts/yurt-app-manager/templates/clusterrole.yaml
If role of nodes/status resource is missing, the operation of yurt-manager to update the node status is prohibited.
What you expected to happen:
add nodes/status resources in charts/yurt-app-manager/templates/clusterrole.yaml
- apiGroups:
  - ""
  resources:
  - nodes
  # add this
  - nodes/status
  verbs:
  - get
  - list
  - patch
  - update
  - watch

How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
It seems that the helm chart of yurt-manager is automatically generated by openyurt-bot. I haven't found how to add this role in the code yet.
Environment:

OpenYurt version:
Kubernetes version (use kubectl version):
OS (e.g: cat /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

others
/kind bug

@qclc Thank you raising the issue. would you like to make a pull request to fix this bug?

@qclc Thank you raising the issue. would you like to make a pull request to fix this bug?
by the way, which controller in yurt-manager need to update node status?

Ok, the pr has been submitted. This will affect the nodelifecycle-controller of yurt-manager


Performance and accessibility fixes

compress the logo file
add main HTML element and fix associated CSS
vendor KoFi CSS so we can do safe linking

 Accessibility and SEO testing with Lighthouse