IP masquerading not working correctly

Problem/Motivation
IP masquerading not working; cannot access other devices on my local area network
Expected behavior
traceroute <IP_ADDRESS> and get a reply
Actual behavior
traceroute stops at <IP_ADDRESS>
I used to run a wireguard client on debian. Since installing Home Assistant on my RPI4 I am trying to reproduce my wg config
here is my original config that worked
[Interface]
Address = <IP_ADDRESS>/24
PrivateKey = redacted
ListenPort = 51820
DNS = <IP_ADDRESS>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = redacted
Endpoint = mydomain.com:51820
AllowedIPs = <IP_ADDRESS>/24
PersistentKeepalive = 25

here is the actual config in the plugin
[interface]
private_key: redacted
address: <IP_ADDRESS>/24
dns:
  - <IP_ADDRESS>
post_up: >-
  iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE; iptables -A FORWARD -p
  tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
post_down: >-
  iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE; iptables -D FORWARD -p
  tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
mtu: 1420

[peer]
- public_key: redacted
  endpoint: mydomain:51820
  allowed_ips:
    - <IP_ADDRESS>/24
  persistent_keep_alive: "25"

I also tried changing the masquerading for the one of my original config replacing eth0 for end0 but nothing works
ip route list table main default
default via <IP_ADDRESS> dev end0  src <IP_ADDRESS>  metric 100
<IP_ADDRESS>/24 dev wg0 scope link  src <IP_ADDRESS>
<IP_ADDRESS>/23 dev hassio scope link  src <IP_ADDRESS>
<IP_ADDRESS>/23 dev docker0 scope link  src <IP_ADDRESS>
<IP_ADDRESS>/24 dev end0 scope link  src <IP_ADDRESS>  metric 100

ipv4 forwarding seems to be enabled
cat /proc/sys/net/ipv4/ip_forward
1

Should we be using iptables-legacy with the main system has iptables?
iptables -L nat
# Warning: iptables-legacy tables present, use iptables-legacy to see them
iptables v1.8.9 (nf_tables): chain `nat' in table `filter' is incompatible, use 'nft' tool.

FWIW I tweaked the rules and I can now at least ping the HA WG address:
post_up: >-
  iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE; iptables -A FORWARD -i
  wg0 -j ACCEPT
post_down: >-
  iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE; iptables -D FORWARD -i
  wg0 -j ACCEPT

I'm having less luck exposing the :8123 API though.

@stsquad I'm not sure if this will help you, but I finally just got this working for my setup (where I have a Wireguard peer on a VPS that I consider the "server" and I want to connect the Home Assistant as a peer):
post_up: >-
  ip route add <IP_ADDRESS>/32 via <IP_ADDRESS> dev eth0; ping -c1 -W1 <IP_ADDRESS>;
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
  iptables -t nat -A PREROUTING -d <IP_ADDRESS>/32 -j DNAT --to-destination <IP_ADDRESS>

Here, <IP_ADDRESS> is the IP of the computer running Home Assisant OS with the Wireguard addon (on my wifi network), <IP_ADDRESS> is IP associated with the the Docker network inside the Wireguard addon container, and <IP_ADDRESS> is the computer's IP on the Wireguard network. This setup lets me connect to Home Assistant at <IP_ADDRESS>:8123 from my phone and laptop which are also in the <IP_ADDRESS>/24 range. Hopefully something like that helps in your case! I've been spending hours and hours trying to get a good Wireguard addon config for this

After trying to achieve a similar setup (access to HA local network via this Wireguard Client add-on), I actually managed by using the Community Server add-on available on the add-on store in a client configuration. Sample configuration below.

<IP_ADDRESS>/24 ist the local subnet of my HA
server.com is the internet address of my actual Wireguard server
<IP_ADDRESS> is the VPN address of my actual Wireguard server
<IP_ADDRESS> is the VPN address of my HA

server
host: homeassistant.local (doesn't really matter)
addresses:
  - <IP_ADDRESS>
dns:
  - <IP_ADDRESS>
  - <IP_ADDRESS>
private_key: [HA private key]

peers
- name: server
  public_key: [server public key]
  addresses:
    - <IP_ADDRESS>
  allowed_ips:
    - <IP_ADDRESS>/24
  client_allowed_ips: []
  endpoint: server.com:51820
  persistent_keep_alive: 25

On the actual server the HA subnet needs to be added to the allowed IPs in the peer section for the HA:
AllowedIPs = <IP_ADDRESS>/32, <IP_ADDRESS>/24


failed to run without root privileges

I have tried to add udev rule:
echo "KERNEL==\"uinput\", GROUP=\"$USER\", MODE:=\"0660\"
KERNEL==\"event*\", GROUP=\"$USER\", NAME=\"input/%k\", MODE=\"660\"" \
| sudo tee /etc/udev/rules.d/99-$USER.rules

and add my username into input group:
sudo usermod -aG input $USER

However mouseless still failed to launch with below message:
ERRO[0000] Failed to init the virtual mouse: could not create relative axis input device: could not open device file
ERRO[0000] Exiting

my system details:
Operating System: Arch Linux
KDE Plasma Version: 5.27.5
KDE Frameworks Version: 5.106.0
Qt Version: 5.15.9
Kernel Version: 6.3.5-arch1-1 (64-bit)
Graphics Platform: X11
Processors: 8 × Intel® Core™ i7-3770 CPU @ 3.40GHz
Memory: 15.5 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 4000
Manufacturer: Intel
Product Name: B75A

Could you post your config and the command you use to start mouseless? I had the same error which was caused by my failing to set the config correctly. Check my config.

Yeah, that is weird. Did you try with rebooting?
Does /etc/udev/rules.d have to file you created and does it have the right content?
KERNEL=="uinput", GROUP="YOURUSER", MODE:="0660"
KERNEL=="event*", GROUP="YOURUSER", NAME="input/%k", MODE="660"

Yeah, that is weird. Did you try with rebooting?
Does /etc/udev/rules.d have the file you created and does it have the right content?
KERNEL=="uinput", GROUP="YOURUSER", MODE:="0660"
KERNEL=="event*", GROUP="YOURUSER", NAME="input/%k", MODE="660"

Thank you, you solved my problem.
With my another archlinux machine, I only added my user account into input group then I can run mouseless without root privilege. I did not realized that I should also add udev rule to get permission for virtual device(/dev/uinput).
After some checking, I found that it was because I installed steam in this machine and steam already included this rule in /usr/lib/udev/rules.d/70-steam-input.rules :
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", OPTIONS+="static_node=uinput"

Seem it would grant permission automatically to all logged-in users.

Arh! Interesting. I also had some issues dealing with both Ubuntu and Arch, and figured it out at some point but never wrote down what I did to fix it :)


Can not view the code quality and coverage metrics for this library.

Describe the Bug
Codacy URLs for code quality and code coverage metrics are stale or not configure correctly
I clicked on the provided badge URLs on the README.md for this repo.
https://www.codacy.com/app/fabiojose/sdk-javascript?utm_source=github.com&utm_medium=referral&utm_content=cloudevents/sdk-javascript&utm_campaign=Badge_Grade
https://www.codacy.com/app/fabiojose/sdk-javascript?utm_source=github.com&utm_medium=referral&utm_content=cloudevents/sdk-javascript&utm_campaign=Badge_Coverage
Got the following message from Codacy:
Something went wrong, we couldn't reach that repository
Could not find repository manual/fabiojose/sdk-javascript

Steps to Reproduce

click on code quality URL, or
click on code coverage URL

Expected Behavior
Should be able to view both code quality and coverage metrics for this open source library.

Good catch - thanks. The correct link for both is https://app.codacy.com/manual/cloudevents/sdk-javascript/dashboard


Move LogEventTracingProperties into Interop namespace

This is just a nitpick refactoring of an internal type that I think is better suited to the Interop namespace, which deals with mapping activities to log events, than the Instrumentation namespace, which is largely about observing and enriching activities.

Perhaps since this is only used by the enrichers, we could move it to SerilogTracing.Enrichers?
Interop is currently "interop with System.Diagnostics" - but it's a bit of a grab bag so not unhappy with this move, just thought it'd be worth pitching the Enrichers alternative too.

I’d be happy to move it into enrichers. My goal was mostly to get the noise out of Instrumentation.

Done!


Rename store zip file names

Following up with offline discussions. We should probably rename the runtime store zip files to match the installer names. This is not critical since the artifacts are only used internally and not intended to be used by customers. Also in this PR is the removal of nuspec and version.txt files used to build the Build.RS nukpg which we no longer need. Once we are happy with this change, I'll need to update Coherence-Signed and SetupCrossGen to look for the new file names.

@anurse We also decided to change the naming scheme for the lzma archives so it conforms to the other artifacts picked up by the CLI. This should be safe right?

This is for post-2.0? It would likely affect how the CLI pulls the LZMA, they'd need to use the updated name. /cc @livarcocc

Yes this is post 2.0. They are aware of this change and will be reacting to this change. (In fact, I believe they already have the reaction PR)


added modules - environment manager

Added the one line for "modules" - the original environment manager for shells. Widely used, supports many shells.

Yay! My first accepted pull request!

Wow! Congrats indeed. 🎉


How to set multiple sentinels?

In my system, I have multi-sentinels. How to set the environment "RQ_SENTINEL_HOST"?
https://github.com/mdawar/rq-exporter/blob/master/rq_exporter/utils.py#L48
This code support only one sentinel?

The RQ_SENTINEL_HOST env variable can be a list of Sentinel hosts separated commas, for example host1,host2,host3 and the port will be set for all the hosts using RQ_SENTINEL_PORT which defaults to 26379.
Sorry this was not documented, I'll make sure to add this info to the readme.

@mdawar  I think so. but my sentinels are not using the same port. They are using different ports.

@caimaoy how do you think we should add support for multiple sentinel hosts with different ports?
I don't think we should pass the ports in a different env variable, the host string should have the ports included for each host host1:1234,host2:4567,host3:8910, what do you think?

@caimaoy You can now use multiple Sentinel hosts with different ports using version v2.1.0.
For example: sentinel1,sentinel2:23680,sentinel3:23681 if the port is not specified like in sentinel1, then the port set with --sentinel-port or RQ_SENTINEL_PORT will be used which defaults to 26379.


Using torsion safe scalars for ed25519.

Added new method for torsion safe scalar from big int and Checks for torsion safe properties and test.

Hi @durgesh-pandey, thanks for contribution!
Correct me if I'm wrong - from what I understood from the thread you pointed out in the code, the purpose of safe representation is to protect against accident multiplication by torsion point. More formally, if a' is Torsion-safe representation of a, then a = a' (mod l) and a  G = a' G, but a' T = 0 so multiplication at T doesn't leak any information.
curv library is protected against accident multiplication at T, more specifically any Point is guaranteed to have no T component (see guarantees section).
Is there any other reason to have conversion to Torsion-safe representation?

Hey @survived , thanks for having a look at this.
You are right on the points you mentioned about torsion-safe representatives.
Apart from this, using a torsion-safe representative as a scalar for ed25519 may remove some of the bit clamping requirements along with having properly defined arithmetic operations that bit clamping may not have. This also helps in HKD. Even though HKD can be implemented on bit clamped scalars in BIP32 style, there have been some concerns about its security.
For more details, have a looks at this issue  from ed25519 and links in discussion:  https://github.com/ZenGo-X/multi-party-eddsa/issues/4

I see the point — you need safe representation to replace bit clamping. The only property that safe representation may provide is protection against multiplication at Torsion base. Why not just remove bit clamping?

I think main problem arises in HD key derivation.
As mentioned at 1 & 2, when you allow Long path key derivation, overflow may occur, at that point either you choose to stop deriving new keys in that path (this check should be properly added in key derivation logic, still it limits the key which can be derived in a path)  or choose to do mod l or mod 2^256 operations, both of which leads to some form of key recovery attacks. Doing addition mod 8l is properly defined and torsion safety essentially implements that allowing proper HD key derivation in a given path.

Sounds good, but all the operations are still mod \ell, not mod 8*\ell — ie. any arithmetic operation with torsion safe scalar produces scalar mod \ell. Do I correctly understand that we need to enable arithmetic mod 8*\ell to have profit from torsion safe scalars?

Currently torsion safe scalars contradict with the design of the library. Specifically, ECScalar must be mod group_order (ie. mod \ell), that's stated in the documentation. In order to add torison safe scalars, we need to redesign scalars, properly define arithmetic, comparison, etc.
Having scalars mod 8*\ell is tricky, eg. consider comparison: since scalars are mod 8*\ell, it's possible to construct 8 different representation of the same scalar, they behave similarly in arithmetic, but they are actually different. Currently, in order to test equality of two scalars, we just compare their memory representation. With scalars mod 8*\ell, we will have to take both scalars mod \ell first (assuming that arithmetic&comparison remains to be mod \ell).

Yes, you are right. That's why when we use also use the torsion safety property, it is recommended to choose only torsion safe scalar every time we choose an ed25519 scalar, i.e. when a scalar is given or need to be chosen, it is required to convert it to torsion safe representative and then use it. We added torsion safe property in our internal code which is forked from the very old version of your curv lib and that's why I created this PR for you guys' convenience after the discussion in the issue thread for the ed25519 crate I mentioned above. It's your decision to merge it in lib or keep it for later or simply discard it if no torsion safety feature is going to be added in this lib.


312-landing-page-integration

Hey all! I'm just gonna merge this into 401-landing-page now and then merge 401-landing-page into main 🎉 ✨
Thanks for the amazing work! We got the first dataset down 🔥 🔥 🔥 👏 !!


Fix appsDirectory default when the application is configured

Change the plugin's default value for appsDirectory from always "dropins" to
"apps" if the  or  element is defined in the server configuration. Otherwise defaults to "dropins".

The appsDirectory parameter is injected in both InstallAppMojoSupport and CreateServerMojo for export config.  Consider if the extra parameters added to CreateServerMojo can be added to a super class.  The install app code will be responsible for deciding where the app should be installed if the appsDirectory parameter is not set.

This issue is resolved by RP #169


Convert LoggingEventIds to enum

Let's convert the huge list of constants in LoggingEventIds.cs to an enum to these 2 advantages:

Compiler will enforce that we don't accidently introduce duplicate IDs, this is very common because we always append to this list and just use the next number
Avoid having an extra point where we define the ID and a string representing the event. We can just ask the runtime for the enum name and so the code will always match the event names produced at runtime.

The motivation for this is to avoid having to worry about and verify that we don't introduce conflicting IDs in 2 PRs that add an event to this list.

Too bad C# doesn't allow cast operators as extension methods, then you wouldn't need to explicitly cast or call Id().

I'd also settle for calling an extension method to define a case in a switch statement.

Too bad C# doesn't allow cast operators as extension methods, then you wouldn't need to explicitly cast or call Id().

I'd also settle for calling an extension method to define a case in a switch statement.

I suppose an available solution is to switch on (logEvent.EventId)logEvent.EventId so that the multiple int casts are not necessary.

I suppose an available solution is to switch on (LoggingEventIds)logEvent.EventId so that the multiple int casts are not necessary.

I like that suggesting, I'm going to do it.

/backport to release/6.0

/backport to release/6.0


IPAM doesn't honor the pool provided in AutoAssignArgs + UT changes

Fixes #244

(This is out of scope for 2.0-beta)

@matthewdupre updated the tests as discussed with @caseydavenport. Tests fail without the fix now, and pass with the fix.  PTAL


Container engine memory leak

Describe the bug
Memory leak in containers cache in container engine. Containers that exited are not erased from the cache because of the mutex lock.
Introduced by following changes:
https://github.com/falcosecurity/libs/commit/33b47e92cf97b1df162c282a48906c7bbb0ab4ef
How to reproduce it
While sinsp-example is running add and remove containers while adding debug statements somewhere here https://github.com/falcosecurity/libs/blob/master/userspace/libsinsp/container.cpp#L94, maybe also reduce the DEFAULT_INACTIVE_CONTAINER_SCAN_TIME_S to 1 second. You will see that containers that exited are not properly deleted, because we first have to extract the node out for later destruction after the lock, see https://devblogs.microsoft.com/oldnewthing/20201112-00/?p=104444
Tried to follow this tutorial, but first for some reason even tho we added C++17 standard I am not having access to the standard libraries of c++17, curious to learn how to handle it as then we can call .extract on the map node.
Other suggestions @gnosek as you are way more knowledgeable and I am not advancing here to fix the bug.

Before I take a deep look at it, this line looks wrong:
https://github.com/falcosecurity/libs/commit/33b47e92cf97b1df162c282a48906c7bbb0ab4ef#diff-0b9f04fd797523bf7465503b515f794972719a6c83c696f1b749b7ba1b9169c0R87
@incertum, can you try the following patch to see if it changes anything?
- containers->erase(it++);
+ it = containers->erase(it);

No that is not fixing it I actually tried it at first. This is a great post that explains why you need delayed destruction because of the lock https://devblogs.microsoft.com/oldnewthing/20201112-00/?p=104444.
Btw yes that line definitely needs changing to the secure and best coding practice anyways, but as said it won't fix the leak.

I read that post and while I agree with the premise, I don't see how it would cause a memory leak. A deadlock, sure, but I just can't see how we'd end up with leaking memory because of the lock. Can you describe such a scenario to me?
(if you look at the rationale https://devblogs.microsoft.com/oldnewthing/20201111-00/?p=104439 linked from your post, you'll also see it boils down to introducing a deadlock).
Does reverting https://github.com/falcosecurity/libs/commit/33b47e92cf97b1df162c282a48906c7bbb0ab4ef fix the leak?

Btw yes that line definitely needs changing to the secure and best coding practice anyways, but as said it won't fix the leak.

I'm pretty sure that line is UB as it is and I can totally imagine it causing a memory leak or a crash (it was buggy before too, but the UB may have manifested in a different way).

Maybe the easiest is could you try on master yourself? Containers are just not being removed even when changing to it = containers->erase(it);?
I did not yet revert https://github.com/falcosecurity/libs/commit/33b47e92cf97b1df162c282a48906c7bbb0ab4ef, but I suppose it would then work again as it's then a normal unordered map again. I figured I rather ask you here first before investing too much time.

So what's the debug output you added and what are you getting?
For me it looks fine even without the iterator fix (I know I'm lucky here):
The container appears (not yet present in the container table but present in a threadinfo):
07-26 13:08:27.964286 Finding containers still in use
07-26 13:08:27.964346 Container 7548c946a23c in use
07-26 13:08:27.964455 Scanning 0 containers
07-26 13:08:27.964457 Done scanning containers, 0 active

The container is alive:
07-26 13:08:28.964571 Finding containers still in use
07-26 13:08:28.964622 Container 7548c946a23c in use
07-26 13:08:28.964724 Scanning 1 containers
07-26 13:08:28.964726 Container 7548c946a23c still in use
07-26 13:08:28.964727 Done scanning containers, 1 active

etc. etc.
The container exits:
07-26 13:08:37.965799 Finding containers still in use
07-26 13:08:37.965967 Scanning 1 containers
07-26 13:08:37.965969 Container 7548c946a23c no longer in use
07-26 13:08:37.965994 Done scanning containers, 0 active

The %d active comes from containers->size() so the map really is empty then.

Maybe the easiest is could you try on master yourself? Containers are just not being removed even when changing to it = containers->erase(it);?

It sure was easiest, it involved only a several hour debugging session involving kernel mode null derefs from eBPF :P

I did not yet revert 33b47e9, but I suppose it would work again as it's then a normal unordered map.

It's still a normal unordered map behind the mutex :man_shrugging:

I figured I rather ask you here first before investing too much time.

Same.

"Memory leak" here means containers are not removed from the map, we keep growing memory as new containers come up on the node.

Yes, that would make perfect sense when we're mishandling the iterator.
This is what I'm running:
diff --git a/userspace/libsinsp/container.cpp b/userspace/libsinsp/container.cpp
index 71ae7e06c..fe8e38772 100644
--- a/userspace/libsinsp/container.cpp
+++ b/userspace/libsinsp/container.cpp
@@ -78,19 +78,23 @@ bool sinsp_container_manager::remove_inactive_containers()

 		threadinfo_map_t* threadtable = m_inspector->m_thread_manager->get_threads();

+		g_logger.format(sinsp_logger::SEV_CRITICAL, "Finding containers still in use");
 		threadtable->loop([&] (const sinsp_threadinfo& tinfo) {
 			if(!tinfo.m_container_id.empty())
 			{
 				containers_in_use.insert(tinfo.m_container_id);
+				g_logger.format(sinsp_logger::SEV_CRITICAL, "Container %s in use", tinfo.m_container_id.c_str());
 			}
 			return true;
 		});

 		auto containers = m_containers.lock();
+		g_logger.format(sinsp_logger::SEV_CRITICAL, "Scanning %d containers", containers->size());
 		for(auto it = containers->begin(); it != containers->end();)
 		{
 			if(containers_in_use.find(it->first) == containers_in_use.end())
 			{
+				g_logger.format(sinsp_logger::SEV_CRITICAL, "Container %s no longer in use", it->first.c_str());
 				sinsp_container_info::ptr_t container = it->second;
 				for(const auto &remove_cb : m_remove_callbacks)
 				{
@@ -100,9 +104,11 @@ bool sinsp_container_manager::remove_inactive_containers()
 			}
 			else
 			{
+				g_logger.format(sinsp_logger::SEV_CRITICAL, "Container %s still in use", it->first.c_str());
 				++it;
 			}
 		}
+		g_logger.format(sinsp_logger::SEV_CRITICAL, "Done scanning containers, %d active", containers->size());
 	}

 	return res;
diff --git a/userspace/libsinsp/examples/test.cpp b/userspace/libsinsp/examples/test.cpp
index 69775ab37..ccc4d8933 100644
--- a/userspace/libsinsp/examples/test.cpp
+++ b/userspace/libsinsp/examples/test.cpp
@@ -337,6 +337,9 @@ int main(int argc, char** argv)
 	sinsp inspector;
 	dump = plaintext_dump;

+	g_logger.set_severity(sinsp_logger::SEV_NOTICE);
+	g_logger.add_stderr_log();
+
 #ifndef _WIN32
 	parse_CLI_options(inspector, argc, argv);

diff --git a/userspace/libsinsp/settings.h b/userspace/libsinsp/settings.h
index c79618a57..6167e03e2 100644
--- a/userspace/libsinsp/settings.h
+++ b/userspace/libsinsp/settings.h
@@ -47,7 +47,7 @@ limitations under the License.
 //
 // How often the container table is scanned for inactive containers
 //
-#define DEFAULT_INACTIVE_CONTAINER_SCAN_TIME_S 30
+#define DEFAULT_INACTIVE_CONTAINER_SCAN_TIME_S 1

 //
 // How often the users/groups tables are scanned for deleted users/groups

Can you give it  a try and let me know what it logs?

Thanks @gnosek :pray: now this is starting to get really strange ... let me explain.
First I used my branch from this PR https://github.com/falcosecurity/libs/pull/1228.
Added you changes on top with exception of changing g_logger init to g_logger.add_stdout_log();.
Left the change it = containers->erase(it);. Simulated docker run -it ubuntu:latest bash and then exited.
When running a condition that does not produce any outputs, I get what you get.
[x]$ sudo ./libsinsp/examples/sinsp-example -b driver/bpf/probe.o -f "(evt.type=container and proc.name=bogus)" -o "*%evt.dir %proc.name %proc.exepath %container.id %container.start_ts %container.duration %container.image.repository"
-- Try to open: 'bpf' engine.
driver/bpf/probe.o
-- Engine 'bpf' correctly opened.
-- Start capture
07-26 18:18:25.982359 Finding containers still in use
07-26 18:18:25.982401 Scanning 1 containers
07-26 18:18:25.982404 Container 94d01972a073 no longer in use
07-26 18:18:25.982521 Done scanning containers, 0 active
07-26 18:18:26.990748 Finding containers still in use
07-26 18:18:26.991435 Scanning 0 containers
07-26 18:18:27.965773 Finding containers still in use
07-26 18:18:27.966407 Scanning 0 containers
07-26 18:18:28.972020 Finding containers still in use
07-26 18:18:28.972676 Scanning 0 containers
07-26 18:18:29.977574 Finding containers still in use
07-26 18:18:29.978279 Scanning 0 containers
07-26 18:18:30.983600 Finding containers still in use
07-26 18:18:30.984298 Scanning 0 containers
07-26 18:18:31.988900 Finding containers still in use
07-26 18:18:31.989576 Scanning 0 containers
07-26 18:18:32.966386 Finding containers still in use
07-26 18:18:32.966986 Scanning 0 containers

Now when I produce some new output logs I get these symptoms that suggest we are not removing the containers:
[x]$ sudo ./libsinsp/examples/sinsp-example -b driver/bpf/probe.o -f "(evt.type=container)" -o "*%evt.dir %proc.name %proc.exepath %container.id %container.start_ts %container.duration %container.image.repository"
-- Try to open: 'bpf' engine.
driver/bpf/probe.o
-- Engine 'bpf' correctly opened.
-- Start capture
{"container.duration":442307454,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":">","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:33.366055 Finding containers still in use
07-26 18:19:33.366097 Scanning 1 containers
07-26 18:19:33.366101 Container df88a49732b5 no longer in use
07-26 18:19:33.366226 Done scanning containers, 0 active
{"container.duration":25347366701,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:34.374737 Finding containers still in use
07-26 18:19:34.375470 Scanning 1 containers
07-26 18:19:34.375493 Container df88a49732b5 no longer in use
07-26 18:19:34.375875 Done scanning containers, 0 active
{"container.duration":26347777099,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:35.350305 Finding containers still in use
07-26 18:19:35.350944 Scanning 1 containers
07-26 18:19:35.350967 Container df88a49732b5 no longer in use
07-26 18:19:35.351311 Done scanning containers, 0 active
{"container.duration":27348238519,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:36.357573 Finding containers still in use
07-26 18:19:36.358256 Scanning 1 containers
07-26 18:19:36.358280 Container df88a49732b5 no longer in use
07-26 18:19:36.358607 Done scanning containers, 0 active
{"container.duration":28348653233,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}

Hmm what should we look into next? Maybe now I am thinking the issue is elsewhere? Glad we are having the discussion here first! WDYT?

Thanks @gnosek :pray: now this is starting to get really strange ... let me explain.
First I used my branch from this PR https://github.com/falcosecurity/libs/pull/1228.
Added you changes on top with exception of changing g_logger init to g_logger.add_stdout_log();.
Left the change it = containers->erase(it);. Simulated docker run -it ubuntu:latest bash and then exited.
When running a condition that does not produce any outputs, I get what you get.
[x]$ sudo ./libsinsp/examples/sinsp-example -b driver/bpf/probe.o -f "(evt.type=container and proc.name=bogus)" -o "*%evt.dir %proc.name %proc.exepath %container.id %container.start_ts %container.duration %container.image.repository"
-- Try to open: 'bpf' engine.
driver/bpf/probe.o
-- Engine 'bpf' correctly opened.
-- Start capture
07-26 18:18:25.982359 Finding containers still in use
07-26 18:18:25.982401 Scanning 1 containers
07-26 18:18:25.982404 Container 94d01972a073 no longer in use
07-26 18:18:25.982521 Done scanning containers, 0 active
07-26 18:18:26.990748 Finding containers still in use
07-26 18:18:26.991435 Scanning 0 containers
07-26 18:18:27.965773 Finding containers still in use
07-26 18:18:27.966407 Scanning 0 containers
07-26 18:18:28.972020 Finding containers still in use
07-26 18:18:28.972676 Scanning 0 containers
07-26 18:18:29.977574 Finding containers still in use
07-26 18:18:29.978279 Scanning 0 containers
07-26 18:18:30.983600 Finding containers still in use
07-26 18:18:30.984298 Scanning 0 containers
07-26 18:18:31.988900 Finding containers still in use
07-26 18:18:31.989576 Scanning 0 containers
07-26 18:18:32.966386 Finding containers still in use
07-26 18:18:32.966986 Scanning 0 containers

Now when I produce some new output logs I get these symptoms that suggest we are not removing the containers:
[x]$ sudo ./libsinsp/examples/sinsp-example -b driver/bpf/probe.o -f "(evt.type=container)" -o "*%evt.dir %proc.name %proc.exepath %container.id %container.start_ts %container.duration %container.image.repository"
-- Try to open: 'bpf' engine.
driver/bpf/probe.o
-- Engine 'bpf' correctly opened.
-- Start capture
{"container.duration":442307454,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":">","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:33.366055 Finding containers still in use
07-26 18:19:33.366097 Scanning 1 containers
07-26 18:19:33.366101 Container df88a49732b5 no longer in use
07-26 18:19:33.366226 Done scanning containers, 0 active
{"container.duration":25347366701,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:34.374737 Finding containers still in use
07-26 18:19:34.375470 Scanning 1 containers
07-26 18:19:34.375493 Container df88a49732b5 no longer in use
07-26 18:19:34.375875 Done scanning containers, 0 active
{"container.duration":26347777099,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:35.350305 Finding containers still in use
07-26 18:19:35.350944 Scanning 1 containers
07-26 18:19:35.350967 Container df88a49732b5 no longer in use
07-26 18:19:35.351311 Done scanning containers, 0 active
{"container.duration":27348238519,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}
07-26 18:19:36.357573 Finding containers still in use
07-26 18:19:36.358256 Scanning 1 containers
07-26 18:19:36.358280 Container df88a49732b5 no longer in use
07-26 18:19:36.358607 Done scanning containers, 0 active
{"container.duration":28348653233,"container.id":"df88a49732b5","container.image.repository":"ubuntu","container.start_ts":1690395548000000000,"evt.dir":"<","proc.exepath":"container:df88a49732b5","proc.name":"container:df88a49732b5"}

In summary, there are much deeper intricacies in the libsinsp state that re-add the containers here just because of trying to operationalize the exit events ... as on master when running it it's also ok.
Hence need to check on the parser better ... :/ will update the ticket title accordingly.

@gnosek pushed to https://github.com/falcosecurity/libs/pull/1228 (also adjusting the better practice it handling to at least get a bit more value out of this discussion).
Probably should also add better logging while here as well ... basically your suggestions.
Could we turn this into a design discussion?
What I don't understand is why we add a container to the cache on notify_new_container and then again buried in parse_container_json_evt which probably is not wise to overload a function responsible for parsing with this functionality. Likely it fixes something, but it makes me wonder if a cleanup/redesign wouldn't be more sustainable?

@gnosek pushed to https://github.com/falcosecurity/libs/pull/1228 (also adjusting the better practice it handling to at least get a bit more value out of this discussion).
Probably should also add better logging while here as well ... basically your suggestions.
Could we turn this into a design discussion?
So, we add a container to the cache on notify_new_container and then again buried in parse_container_json_evt which probably is not wise to overload a function responsible for parsing with this functionality.
Because I suppose now it has the updated / parsed info?
It makes me wonder if a cleanup/redesign wouldn't be more sustainable?


overwrote some TODO descriptions for #231

overwrote some TODO descriptions for #231
definitions provided by https://gold.jgi.doe.gov/help via @emileyfadrosh

@turbomam Please update the changelog.

Ideally we would have an enum for each path component, but for now just
listing a few key examples would go a long way to elucidating these
On Fri, Jan 14, 2022 at 6:38 AM Mark A. Miller @.***>
wrote:

@.**** commented on this pull request.
In src/schema/nmdc.yaml
https://github.com/microbiomedata/nmdc-schema/pull/239#discussion_r784893340
:

@@ -796,27 +796,27 @@ slots:
ecosystem:
is_a: gold_path_field
description: >-

 TODO

 An ecosystem is a combination of a physical environment (abiotic factors) and all the organisms (biotic factors) that interact with this environment. The abiotic factors play a profound role on the type and composition of organisms in a given environment. The GOLD Ecosystem at the top of the five-level classification system is aimed at capturing the broader environment from which an organism or environmental sample is collected. The three broad groups under Ecosystem are Environmental, Host-associated, and Engineered. They represent samples collected from a natural environment or from another organism or from engineered environments like bioreactors respectively. See GOLD terminology at https://gold.jgi.doe.gov/help.

Good point
For some of the Gold Ecosystem Classification Levels, I don't think the
first sentence alone provides enough description. But I have moves the
examples into comments
For example I don't find
Ecosystem subtypes represent further subdivision of Ecosystem types into
more distinct subtypes
informative at all.
I have added a statement like
Ecosystem type is in position 3/5 in a GOLD path.
to each of the descriptions.
—
Reply to this email directly, view it on GitHub
https://github.com/microbiomedata/nmdc-schema/pull/239#discussion_r784893340,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAMMOOYQQPRKC6R6GAZPZDUWAYNJANCNFSM5LXFRUGA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID:
@.***>


Create a search only through the BitTorrent network

Creating a search without a server, search downloads through the hash.
For example: If the title(name) of any download calculate the hash, then you can search without trackers, you can look directly into the network by UDP.
How it works: Everyone who creates seed should input the naming of 3-5 titles, each of which will be determined by the hash. These hashes are to be assigned to the seed. Example hashes for the titles: "Terminator", "Terminator 2", "Терминатор", "Терминатор 2".
When searched, it must be performed to compare and contrast hashes seeds. Example: when searching display a list of all the names that have a only one certain desired hash, ie in the table are displayed when searching for a different distribution of the hash (which is defined by its name), each line is a separate distribution of torrents.
.
The result is a search engine that is not possible to block on any tracker. None of the copyright.
.
And of course it is obvious that this is a very complex function.
But the meaning of it is that if it is. It client will not be just the same as everyone. It client will be at 4 heads above all the clients together.
A very large popularity.
.
The creation of such a function is similar to the invention Bitcoins.

As I understand you're trying invent DHT.


Forecasting: "Time to train" and "Horizon" functional are deleted on the Train page, is it expected?

System Information (please complete the following information):
Windows OS: Windows-11-Enterprise-21H2
ML.Net Model Builder 2022: <IP_ADDRESS>2103 (Main Build)
Microsoft Visual Studio Enterprise: 2022(17.3.6)
.Net: 6.0
Describe the bug

On which step of the process did you run into an issue:
"Time to train" and "Horizon" functional are deleted on the Train page.

Data Source
https://testpass.blob.core.windows.net/test-pass-data/forecasting.csv
To Reproduce
Steps to reproduce the behavior:

Select Create a new project from the Visual Studio 2022 start window.
Choose the C# Console App (.NET Core6.0) project template.
Add model builder by right click on the project.
Select Forecasting scenario.
On Data page, select the data source and choose sinx column as label.
On the Train page, you will see that "Time to train" and "Horizon" functional are deleted.

Expected behavior
I want to know whether is this expected?
Screenshot

@LittleLittleCloud confirmed us it is a bug.

The bug has been fixed on the latest main build: <IP_ADDRESS>3101


Add Windows Pypy2/Pypy3 testing

Adding the following lines under an if clause should work:
Pypy2:
(New-Object Net.WebClient).DownloadFile('https://bitbucket.org/pypy/pypy/downloads/pypy-4.0.1-win32.zip', "$env:appveyor_build_folder\pypy3-2.4.0-win32.zip")
7z x pypy-4.0.1-win32.zip | Out-Null
$env:path = "$env:appveyor_build_folder\pypy-4.0.1-win32;$env:path"

Pypy3:
(New-Object Net.WebClient).DownloadFile('https://bitbucket.org/pypy/pypy/downloads/pypy3-2.4.0-win32.zip', "$env:appveyor_build_folder\pypy3-2.4.0-win32.zip")
7z x pypy3-2.4.0-win32.zip | Out-Null
$env:path = "$env:appveyor_build_folder\pypy3-2.4.0-win32;$env:path"

Resolved


RFE: Add supported API versions API

As an automator of things using TO, I want a generic endpoint with a consistent url I can query to know what versions of the API are supported by TO.  This allows me to add better safeties as an API consumer to know how to communicate with TO across breaking changes in the API.  For example: if I have a script which calls the 1.1 api, at a future date when that is removed I will have better information than just getting 4xx/5xx errors back.

the 1.1 api, at a future date when that is removed
We shouldn't be removing old minor versions, within a major. We should support all minor versions, within a major, and we should support one major version back, i.e. 1.xis deprecated when 2.0 exists, and removed when 3.0 exists.

But definitely +1 on a "supported API versions" endpoint. That especially helps other components fall back, when updating their requests, so they don't have to be upgraded at the same time as TO.
For example, we need to change the Router to call new /api/1.4/ endpoints instead of /internal. It'd be super-helpful to have a defined way to determine if 1.4 exists, and fall back to the old /internal if it doesn't.

I'm considering writing a new access method for the /api endpoint, using OPTIONS that would return a list of all supported methods and endpoints separated by newlines e.g.
GET /api/1.1/ping
GET /api/1.1/cdns
PUT /api/1.1/cdns
POST /api/1.1/cdns
DELETE /api/1.1/cdns
⋮
GET /api/1.2/ping
GET /api/1.2/cdns
PUT /api/1.2/cdns
POST /api/1.2/cdns
DELETE /api/1.2/cdns

+1
OPTIONS isn't well-defined, so anything it returns is going to be proprietary. But I'm not strictly opposed to it.
Which makes me agree, since it isn't well-defined, returning something as simple as possible is best.
It seems verbose, and a lot of duplication, but it makes it as easy as possible to use, e.g. users can simply string.Find(myRoute) or string.Find("api/1.5") to determine if a route or API version exists. And duplicate text compresses extremely well, so the gzip will be small.
Since the API itself is JSON, I'd also support returning JSON if the client sends an Accept: application/json header. Something like:
{ "api": "1.2",
  "routes": [
    { "path": "/cdns",
      "methods": ["GET", "POST"] },
    { "path": "/deliveryservices/{{id}}/sslkeys",
      "methods": ["GET"],
      "example": "GET /api/1.2/deliveryservices/42/sslkeys"},
    ]
  }
}

I don't think the structure is necessary here, to warrant the parsing complexity. But since the API is JSON, it might make it a little easier for some users, to use the same decode function for everything.

I'd be ok with just a simple GET response with an array of version strings, not even endpoints specifically because that should be defined by the api spec at that version.

Honestly I think trying to get into methods and endpoints makes it significantly more complicated than it needs to be.  As a user of the native client libraries, you only really need '1.1/1.2/1.3/etc'.

I think trying to get into methods and endpoints makes it significantly more complicated than it needs to be

In the code? No, it's really easy to get that information out of the Go HTTP router.

As a user of the native client libraries

But we shouldn't just support our own Go/Python clients. The HTTP API should be easy to use directly, and for people to write their own clients for.
And even for our own client, again, I have no confidence we won't break SemVer; IMO it'd be better even for our own client, to verify the actual endpoint is in the OPTIONS request. It'd make life easier, and issues around that far easier to track down.

I'd be ok with just a simple GET response with an array of version strings, not even endpoints specifically because that should be defined by the api spec at that version.

I want endpoints, for 2 reasons:

that's a great theory, but I don't have any confidence that we won't break Semantic Versioning in practice.
Even if we don't, it's much easier for someone hitting those HTTP endpoints to immediately see "oh, that endpoint isn't in this version", than having to look up the docs every time, which they can't possibly  memorize. It just makes people's lives easier.
The performance doesn't matter. Even with all the endpoints of every version, we're talking about kilobytes, especially gzipped

It feels like we're doing something wrong with API versioning if you have to ask if every method/endpoint is available before you try to issue your request.

Not before. But maybe after, if it fails with a 404 or 501.

That would be harder to add to our existing native client libraries.  On startup, I need to know what class to instantiate based on what API version I can negotiate.
Maybe the answer is that these are two different things.  Maybe both /api/version and /api/version?full is appropriate.

That would be harder to add to our existing native client libraries. On startup, I need to know what class to instantiate based on what API version I can negotiate.

That's not difficult, with the endpoint as-proposed. On startup, the client can request that endpoint and search for the text /api/*/, put the result in a Set, and there are your API versions. It's a fairly simple function: https://play.golang.org/p/kiO4rMpG_5S

I'm thinking more about the native python client code rather than the golang one.

Ok https://repl.it/repls/ObedientSilverQueryoptimizer :P

I have a proposal in line with

"Maybe the answer is that these are two different things."

but I don't think query parameters are the answer. From RFC 7231 Section 4.3.7:

"The OPTIONS method requests information about the communication options available for the target resource..."

and Section 4.3.1:

"The GET method requests transfer of a current selected representation for the target resource."

With these in mind, I'd suggest that OPTIONS method return the valid communication options - i.e. the supported API versions - and the GET method return a representation of the API - the set of routes of which it is composed.

I have a working prototype of my first suggestion here

As a developer, I'd like to see something like the following:
[{
		"method": "GET",
		"endpoint": "/api/1.1/asns"
	},
	{
		"method": "GET",
		"endpoint": "/api/1.1/asns/*"
	},
	{
		"method": "DELETE",
		"endpoint": "/api/1.1/cachegroupparameters/*/*"
	}
]

In response to an unversioned endpoint: /available_api.

In hindsight, I think diving into endpoint specifics over-complicates things.  A lot of concern with an unversioned API endpoint would be that like any endpoint the payload can change and thus break clients making requests (which is valid).  A simple list of strings with the version number is sufficient.  The promise being that the strings themselves once created are immutable until the day they're removed indicating that the version they represent is no longer available.  If other aspects such as supported, unsupported, deprecated wish to be conveyed they would be additional entries until the day they're removed (i.e. ['2.x','3.0.1','4.0','2.x deprecated','5.0 unstable <some kind of id> in case something cares which it shouldn't'] which eventually becomes ['3.0.1','4.0','5.0'] etc.).  It's not as great as something more structured or granular, but hopefully out of the simplicity we can avoid problems down the road needing to express things differently, thus breaking an unversioned api.  Any client should be able to query that and more gracefully degrade or internally downshift/upshift the instantiated client code version used because it knows the magic strings it was developed against to support.  As a bonus this unversioned enpoint serves as a runtime, code-based form of documentation as to what's available in a given release.

Another thing we could do is have OPTIONS /api/ tell you what versions there are, and OPTIONS /api/{{version}} tell you what routes it has. The more complex data is actually versioned, that way, and is still available if needed while keeping the simpler information available outside of the versioning it describes.
I have no idea how useful that could possibly be, since I don't think anything I maintain would ever make use of it. But something to think about.


Update experimental-channel.md

Fixes AppWindow.Window with Window.AppWindow. See the original spec to ensure correctness.

When this is ready to merge, do you mind adding a writer (which could be me) as reviewer or assignee. Thank you! :)
-Steve

@stevewhims It looks like I don't have the perms to add you or another writer as an assignee or reviewer, but this is ready to merge :)


Add files via upload

nesfield.txt
Please check this out, ty!

@Ishwor-Dulal nesfield.txt I am sorry, I have to close the request without merging, because you made a mistake in a request and did not specify any filepath. Please ensure that you are familiar with this repository rules located at the bottom of this page and make a new correct request. Thank you for your understanding!

hi, can you explain what I did wrong? Im pretty sure i included everything
I could about my university. I really need this license for my java programs
On Fri, Apr 28, 2023 at 9:18 AM Philip Torchinsky @.***>
wrote:

Closed #17376 https://github.com/JetBrains/swot/pull/17376.
—
Reply to this email directly, view it on GitHub
https://github.com/JetBrains/swot/pull/17376#event-9120632324, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AXQMOOFMU4XPL3HNXUSN3FTXDM3CJANCNFSM6AAAAAAXOGNY3M
.
You are receiving this because you were mentioned.Message ID:
@.***>


docs: create a style guide for error messages

Creates an initial style guide for user-facing error messages. The guide is based on the style guide from V8.

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

I'd be happy to take a first pass at the std to see if it conforms to these rules. I'd start by looking at places an error is raised. Let me know if you think this would help?

I've updated the CONTRIBUTING.md with the suggestions that @kt3k had. I also took a pass at the io/ folder in a second commit on this PR. If you like this approach, I can do some of the other folders too. Or if you would prefer I can file them in different PRs.

Most other part looks good to me

Linking https://github.com/denoland/std/issues/5574

Linking:

Normalize error message grammar #5574

Thanks for linking! I've added a table to the issue that lists all the packages. I'll take a stab at the other ones once we're happy with the style and I return to some more stable internet.

While updating a few more error messages, I think having either comma , or colon : for additional information makes sense. In some cases, it flows much better with commas. For example:
Messagepack decode came across an invalid type for a key of a map, keys must be a number or a string

vs
Messagepack decode came across an invalid type for a key of a map: keys must be a number or a string

I've filed another PR with a few more folders (toml, msgpack & crypto). I'm not sure if you want all the commits here, or if it's easier to review / merge if we split them up.

To maintainers (@iuioiua, @bartlomieju): What commit tag should we be using for these style changes of error messages? fix, docs, or refactor?

The docs changes in .github/CONTRIBUTING.md should be it's own PR with the enforcing of these rules in other PRs.

Historically, the changing of these error messages have been refactors.

The docs changes in .github/CONTRIBUTING.md should be it's own PR with the enforcing of these rules in other PRs.
That's fair. I created separate commits so that should be easy. I wanted to include a few changes so we could see how these error messages look. I'll separate the initial commit into its own PR.

Historically, the changing of these error messages have been refactors.
I can update the commit message to use refactor instead of fix. The first commit should be doc I guess, as it's the documentation change.

To maintainers (@iuioiua, @bartlomieju): What commit tag should we be using for these style changes of error messages? fix, docs, or refactor?

I'm fine with refactor

Ooops, sorry, closed by accident 😓

Would you like me to pull out the changes to the error messages in the io folder and leave this PR simply for creating the style guide? I typically --amend commits and make each commit (and message) the way I like it and then FF merge instead of squashing all the commits in a PR when merging. This way I can see the way each commit will look before merging, it's a bit more work, but it ensures that the commit & commit message are reviewed together.
But if you would prefer, I can pull out the io commit from this PR, create a separate PR for that and then we can just focus on the style guide here? Let me know.


added discord notification for ci

https://github.com/DiscordHooks/travis-ci-discord-webhook
This might be worth checking out?


[libyuv] Missing includes

libyuv has a libyuv.h header placed in the include directory, but it's only a "container" header and all includes are in /libyuv subdirectory. This subdirectory is not copied from build dir though.

Just to clarify, in order to solve this problem, the /libyuv subfolder needs to be copied to the /include directory?

Yes. I believe the original CMakeLists.txt file did exactly that, but the port has a fix_cmakelists.patch patch file attached that changes it to just that single header file. I didn't want to just change that back since I don't know the intent of the author behind it.

Hi @chrisaverage thanks for posting this issue. This issue has been fixed. Please try to update vcpkg and use it.


Feat/belongs to filter

Support for Laravel 11
Drop Support for Laravel 9
New BelongsTo-Filter
Improved convenient laravel/prompts based make-command


Handle subscription peer add/remove events

Part of #135
https://zulip.com/api/get-events#subscription-peer_add
https://zulip.com/api/get-events#subscription-peer_remove
This issue is for handling when subscribers on a subscription are being modified. subscription op:add, subscription op:remove and subscription op:update are being handled as part of #187

These events will become relevant only in a future where we start tracking the data that they update, namely the list of other subscribers to each channel.
If we do add such a data structure, we'll naturally go and handle the events that update it; that's the pattern for implementing new pieces of the Zulip data model in general. So I think there isn't an independent task to be tracked here, and isn't a need for this issue to track it.
Instead, if at some point we decide to add a feature that would use that data, we'll file issues as needed to describe what that feature needs.


Linux user namespacing documentation, bad link

File: engine/security/userns-remap.md, CC @gbarr01
s/user-namespace-known-restrictions/user-namespace-known-limitations/ here:
https://github.com/docker/docker.github.io/blame/master/engine/security/userns-remap.md#L128

Also, the second sentence in this paragraph doesn't quite make sense:
https://github.com/docker/docker.github.io/blame/master/engine/security/userns-remap.md#L259

User namespaces are an advanced feature and require coordination with other
capabilities. For example, if volumes are mounted from the host, file ownership
must be pre-arranged need read or write access to the volume contents.

Closing this ticket due to its age, and the impending refactor. If you think this is in error, feel free to reopen. Thanks!

@L-Hudson I cannot re-open the issue.  The issue still exists.


Wrong meters in Hook for Fence roam

Given this command
sethook myhook http://<IP_ADDRESS>:9999/ nearby cars fence roam boundies * 100
I am expecting objects within 100 meters (coord accuracy is 6 digits after comma):
Boundies is multipolygon:
get boundies ca_bounds_poly.10875 $2660 {"type":"MultiPolygon","coordinates":[[[[-121.947456,38.527096] ......
Car is of Point type:
{"type":"Point","coordinates":[-121.828979,38.529581]}
The problem is that meters distance value, received via hook, is far beyound 100 meter:
{"command":"set","detect":"roam","hook":"myhook","key":"cars","time":"2016-12-09T15:12:48.39966697Z","id":"car","object":{"type":"Point","coordinates":[-121.828979,38.529581]},"nearby":{"key":"boundies","id":"ca_bounds_poly.10875","meters":4231.607357356878}}
So 4231 meter >> fence roam radius 100 meters

I would like to reproduce this error. Would it be possible for you provide the complete ca_bounds_poly.10875 object?

Sure:
{"type":"MultiPolygon","coordinates":[[[[-121.947456,38.527096],[-121.944623,38.528933],[-121.942422,38.532466],[-121.941547,38.533068],[-121.940285,38.533384],[-121.932773,38.531503],[-121.929447,38.530381],[-121.925323,38.529705],[-121.921099,38.529555],[-121.919771,38.529914],[-121.914104,38.529534],[-121.908969,38.529576],[-121.904146,38.530942],[-121.900484,38.532378],[-121.897076,38.532928],[-121.893784,38.533429],[-121.89113,38.535097],[-121.888421,38.537819],[-121.885882,38.53876],[-121.883609,38.53905],[-121.88139,38.538197],[-121.876077,38.538043],[-121.87172,38.538484],[-121.867439,38.537435],[-121.86514,38.537553],[-121.861323,38.538495],[-121.857289,38.538096],[-121.853738,38.536794],[-121.851237,38.536791],[-121.848797,38.536609],[-121.84406,38.535238],[-121.839293,38.533374],[-121.832557,38.529757],[-121.825143,38.529296],[-121.821703,38.528287],[-121.81333,38.526023],[-121.809213,38.526883],[-121.799949,38.527103],[-121.795187,38.526943],[-121.789846,38.524492],[-121.785811,38.523074],[-121.783582,38.523459],[-121.783034,38.52701],[-121.779698,38.529912],[-121.776353,38.530195],[-121.771403,38.532345],[-121.768726,38.530937],[-121.768504,38.530819],[-121.768156,38.527178],[-121.767053,38.526183],[-121.7651,38.525856],[-121.760281,38.528294],[-121.756669,38.529633],[-121.748911,38.530954],[-121.744628,38.532936],[-121.738594,38.537704],[-121.738076,38.537535],[-121.737442,38.537421],[-121.735903,38.537531],[-121.734715,38.537526],[-121.732588,38.536352],[-121.730339,38.536001],[-121.728923,38.535963],[-121.728134,38.536069],[-121.724225,38.535914],[-121.723156,38.53515],[-121.72194,38.534875],[-121.719821,38.535219],[-121.713358,38.537705],[-121.712034,38.537962],[-121.710568,38.537043],[-121.710207,38.535749],[-121.707976,38.535399],[-121.706354,38.533441],[-121.706143,38.532034],[-121.704655,38.532194],[-121.704351,38.530418],[-121.700735,38.527427],[-121.697311,38.52685],[-121.694677,38.527054],[-121.695153,38.522772],[-121.695348,38.510995],[-121.695797,38.487615],[-121.693639,38.487604],[-121.693707,38.452193],[-121.761322,38.452511],[-121.762122,38.445153],[-121.804133,38.4454],[-121.803958,38.469175],[-121.803874,38.483182],[-121.803808,38.488592],[-121.823692,38.472936],[-121.823603,38.4728],[-121.825025,38.471894],[-121.836669,38.462815],[-121.840922,38.459519],[-121.849365,38.45295],[-121.858539,38.445839],[-121.913036,38.446056],[-121.913544,38.446433],[-121.915606,38.446597],[-121.915564,38.453328],[-121.915572,38.467503],[-121.923711,38.4678],[-121.923911,38.500564],[-121.925996,38.499985],[-121.927894,38.503403],[-121.9323,38.501888],[-121.946083,38.526769],[-121.947456,38.527096]]]]}

@tidwall I believe the deal is geojson/multipolygon.go, function:
func (g MultiPolygon) CalculatedPoint() Position {
        return g.CalculatedBBox().center()
}

As a quick suppose - meters in a hook representing distance between car and boundy centroid.
While expected is the distance between car and nearest boundary of multipolygon  ca_bounds_poly.10875.
But the questino is how to distinguish 2 different cases:

car is out of  ca_bounds_poly.10875, but less then 100 meters to boundary. I think expected distance here is the distance to boundary
car is anywhere inside multipolygon. I believe expected distance here is zero

Little correction - it is not a centroid - but a center of exterior bbox containing the ca_bounds_poly.10875

This is a limitation of the ROAM command. It was designed to work primarily with a point-to-point relationship. For large geometries, the center of the object's bounding box is used.
The original design of the command was to fill the need of a vehicle pickup app (person-to-car), and a proximity social network app (person-to-person). In both cases the objects are small enough to be represented as a single point.
That being said, I can certainly see use cases for including polygons for boundaries.

car is anywhere inside multipolygon. I believe expected distance here is zero
This would be pretty low hanging fruit. Tile38 could return the value of zero when inside the polygon.

car is out of ca_bounds_poly.10875, but less then 100 meters to boundary. I think expected distance here is the distance to boundary

This one is a little more difficult because Tile38 does not support polygon buffering right now. I filed the issue #79 a few weeks back that should work in your case, but it's not trivial because it would require a custom implementation of the Minkowski Sum algorithm in Go.
I think that Tile38 should support both cases and I added them to the roadmap.


Add Device tree support for I2C Slave Drivers

This PR is a continuation of #5224 to switch to Device Tree support instead of static kconfig.

Codecov Report

Merging #8604 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #8604   +/-   ##
=======================================
  Coverage   64.17%   64.17%
=======================================
  Files         429      429
  Lines       41157    41157
  Branches     6925     6925
=======================================
  Hits        26413    26413
  Misses      11587    11587
  Partials     3157     3157

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cd1111e...c784a97. Read the comment docs.

Do you expect to add commits for DT support?

Closing this. @Mierunski will open a separate PR once ready.


Send + Sync Commit Question

I've been playing with this crate for a gdext rust Godot project.
Before the Send + Sync commit for Component requirement, I was able to store Gd<> objects into a component struct like
#[derive(Component)]
struct Node2DComponent(Gd);
After the Send + Sync commit this is no longer possible because Gd<> doesn't implement Send + Sync.
Is Flecs running pipelines multi-threaded? I.e. even if the the system itself is set to single-threaded there's still possible multi-threaded access to a component from another system? If that is the case I can see where this would cause unexpected behavior.  I haven't toyed with this enough to add enough systems for it to be an issue yet.
Obviously if you're forced into single threaded because you're storing position data in a Gd that's forced single-threaded you're losing out on a lot of performance potential of ECS, but for systems where you're not trying to squeeze every last bit of performance you can it's quite convenient.
I've tested the performance on doing sync query loops to say, update Node2D.SetPosition from a Position component every frame, but even optimized that still consumes about 0.5-1ms of a frame for 2k entities. I guess the other alternative is doing a MultiMesh rendering system?

That was a bad implementation on my part, beforehand, it was being implemented on all component types unsafely within flecs_rust, which was a mistake. Now it requires the User to do so correctly themself, if needed.
You can still implement Send and Sync on the types by doing so unsafely when you're sure it's not a problem.
unsafe impl Send for ...
unsafe impl Sync for ...

Is Flecs running pipelines multi-threaded? I.e. even if the the system itself is set to single-threaded there's still possible multi-threaded access to a component from another system? If that is the case I can see where this would cause unexpected behavior. I haven't toyed with this enough to add enough systems for it to be an issue yet.

Flecs is not running multiple pipelines multi-threaded. Technically speaking it is possible, but you have to be very careful. It's not something that is done generally speaking.
Yes a component can be accessed in multi-threaded context from another system.

I've tested the performance on doing sync query loops to say, update Node2D.SetPosition from a Position component every frame, but even optimized that still consumes about 0.5-1ms of a frame for 2k entities. I guess the other alternative is doing a MultiMesh rendering system?

1ms for 2000 entities? That seems horrendous. I'm not sure what's going wrong there? If you have a test case for me to test out, I can take a look.
For reference, this is the performance I get on an M3 max macbook:
1024 tables 1M entities query over 2 components Position and Velocity doing pos.x += vel.x, same with y

time:   [331.51 µs 335.22 µs 339.37 µs]

Previously you were putting a non send type in a component, now that is correctly disallowed since you could access it from other threads. As I mentioned before, you could mark it unsafely if they are sure they won't access it incorrectly, otherwise you can store the data outside the ECS and sync it manually which I think is what you were saying in the last bit, not sure


elm.Packages: Regenerate elm packages

Just routine update of nodejs based elm packages using generate script.

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@domenkozar I think this one might be good to go -- it includes mostly patch revision updates in transitive dependencies.

@GrahamcOfBorg build elmPackages


Merge branches 'main' and 'main' of https://github.com/TRaSH-/Guides-…

…Synology-Templates
Update qbitmanage.yml
Pull request
Purpose
Detailed description why you created this Pull Request.
Approach
If this Pull Request is created to solve a issue explain how does this change address the problem?
Open Questions and Pre-Merge TODOs
Check all boxes as they are completed

[ ] Use github checklists. When solved, check the box and explain the answer.

Learning
If you add a new template for a application take a look at DockSTARTer for examples being I used them as base for the others templates
Requirements
Check all boxes as they are completed

[x] These changes meet the standards for contributing.
[ ] I have read the code of conduct.

Update qbitmanage.yml


Dashboard keeps disconnecting

Dashboard socket keeps disconnecting from the server, this will cause some commands to not get through first time they're issued. Possible solution is to keep the connection up by sending heartbeat every few seconds.

Looks like devtool is the problem here. When the server is running with node alone it works fine, but as soon as I run it through devtool it's dropping connection every couple of seconds.
Sending heartbeat messages is not working.
So the only possible solution for now it not to run the server through devtool.


Change getService() to throw error when service does not exist

Added hasService() method to allow for optional services
debug off = fires an error and returns null

fixes #89

Verified that @j3tan has signed the CLA. Thanks for the pull request!

@jdivock @nzakas - please check this out to see if this works as you would expect it to.

+2


How to improve calendar render performance?

Library information:

Version: 1.1.0
View or Compose module: View

Question:
Please tell me how I can improve my performance by improving my logic.
Hi. I'm a Korean developer who came yesterday!
First of all, thank you for providing a powerful library. I support your powerful library in Korea.
This is an explanation of my logic.

Import data to be drawn on the calendar by API call.
Initialize what is needed (DayBinder, monthScrollListener etc..) )
UpdateMonthConfiguration() -> setupAsync() -> scrollToDate() call to default setting of calendar
When scrollToDate() is completed, bind() is called, addOnScrollListener is called, and monthScrollListener is called.
The inside of Class DayBinder.bind() sets the data in the following order.
Date setting in TextView.text
imageView Visible, Gone to output on-offable icons to display on the calendar.
Set the date text for DayOwner.THIS_MONTH and other things
CoroutineScope(Dispatchers.Default).Launch{} for draw icons on the calendar as data.
in forEach, using withContext(Dispatchers.Main) for set visible -> for icon render on calendar
Rendering icon using forEach total 3 times
It is executed in this way. Whenever swiping left and right, the API is called inside the monthScrollListener and executed in the order of 1 to 10 to render the calendar.

Like the issue I posted yesterday, I want to change the row of the calendar with vertical scrolls!
I want to see a calendar that unfolds without performance issues.
I want you to help me!
I also upload code snippets in case you don't understand the questions due to the translation quality.
override fun bind(container: DayViewContainer, day: CalendarDay) {
    container.day = day // for dayView.setOnClickListener{}
    container._binding.apply {
        calendarDayText.text = day.date.dayOfMonth.toString()

        // setting View's Gone
        mainWalkIconView.beGone()
        subWalkIconView.beGone()
        subWalkIconView2.beGone()
        subWalkIconView3.beGone()
        vaccineImageView.beGone()
        groupImageView.beGone()

        if (historyCalendarView.maxRowCount != 1) {
            if (day.owner == DayOwner.THIS_MONTH) {
                calendarDayText.setTextColor(
                    getColor(
                        context,
                        R.color.font_black
                    )
                )
            } else {
                calendarDayText.setTextColor(
                    getColor(context, R.color.font_light_gray)
                )
            }
        }

        val rowCnt = historyCalendarView.maxRowCount
        CoroutineScope(Dispatchers.Default).launch {
            walkListForDaySetting.forEach { item ->
                if (item.walkDate == day.date.toString()) {
                    if (day.owner == DayOwner.THIS_MONTH) {
                        withContext(Dispatchers.Main) {
                            // setting icon View Visible & View BackgroundTint Color
                            mainWalkMarker.beVisible()
                            mainWalkMarker.backgroundTintList =
                                ColorStateList.valueOf(
                                    ContextCompat.getColor(
                                        requireContext(),
                                        colorList[user]
                                    )
                                )

                            // ... sub Views Setting

                        }
                    }
                }
            }
            if (rowCnt != 1) {
                if (day.owner == DayOwner.THIS_MONTH) {
                    vaccineListForDaySetting.forEach { item ->
                        if (item.vaccineDate == day.date.toString()) {
                            withContext(Dispatchers.Main) {
                                vaccineImageView.beVisible()
                            }
                        }
                    }

                    assembleListForDaySetting.forEach { item ->
                        if (item.groupDate == day.date.toString()) {
                            withContext(Dispatchers.Main) {
                                groupImageView.beVisible()
                            }
                        }
                    }
                }
            }
        }
    }
}

Doing any sort of work in onBind() is a bad idea as this will be called for each day in the month (approx 30!), you can use the calendar scroll listener and load the data then call notifyMonthChanged() so the bind will be called again and you can use the data. The idea is based on how RecyclerView works.

I didn't exactly understand the guide you told me.
I only do drawing in bind().
When monthScrollListener is called, it is understood that bind() is called for rendering next month (or previous month).
So I call the API for importing data from monthScrollListener next month.
When the API receives the result data, it calls notifyCalendarChanged(). The reason why it is not notifyMonthChanged() is that you also need to draw icons on inDates and outDates.
I mean, in bind(), only the visible and Gone processing of View for drawing and color setting.
What should I improve on?

Hi, I see you are launching coroutines in the bind function, you should not do that. Anyway, I'm sorry but you have to figure out what you are not doing right, It is hard for me to provide suggestions without having the full source code to figure out what is going on. Kindly read the documentation to better understand the available properties. I will close this issue.


fix: reset cpms metric on change

CPMS metric is not cleaned up when the instance type in cpms changes.
Fixes: https://issues.redhat.com/browse/OSD-22497
Tested against stage.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 56.66%. Comparing base (174e7ef) to head (a0f1b16).

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #140      +/-   ##
==========================================
+ Coverage   56.58%   56.66%   +0.08%
==========================================
  Files          11       11
  Lines         539      540       +1
==========================================
+ Hits          305      306       +1
  Misses        220      220
  Partials       14       14

Files
Coverage Δ

pkg/metrics/aggregator.go
81.11% <100.00%> (+0.10%)
:arrow_up:

/lgtm


Getting all gray images when training Plenoptic dataset  with general MLP setting

Hi, I was trying out both HexPlane and Hexplane_slim. However, the plenoptic dataset only works with Hexplane_slim. Please help me to resolve this issue.
my nv3d.yaml file looks like this.
systems:
basedir: "./logs"
vis_every: 5000
model:
N_voxel_init: 262144
time_grid_init: 31
time_grid_final: 300
upsampling_type: aligned
upsample_list: [70000, 140000, 210000]
update_emptymask_list: [50000, 100000, 150000, 220000]
fusion_one: "multiply"
fusion_two: "multiply"
density_n_comp: [12, 12, 12]
app_n_comp: [24, 24, 24]
fea2denseAct: softplus #relu
app_view_pe: 2
app_fea_pe: 2
TV_weight_density: 0.0005
TV_weight_app: 0.0005
data:
datadir:"./Datasets_3D/Neural_3D_Video/coffee_martini"
dataset_name: neural3D_NDC
scene_bbox_min: [-2.5, -2.0, -1.0]
scene_bbox_max: [2.5, 2.0, 1.0]
N_vis: 5

Hi. Can you try to change fusion_two from multiple to sum? If both of them are multiply, you may want to have a better initialization value for the plane to control the magnitude of valued.


Support for dynamic method types

I may be reading the source wrong, but it doesn't seem possible to have dynamic handlers. For instance, I would like to do something like this:
for _, (method, pattern, handler) := range routes.Adhoc {
    goji.HandleUntyped(web.ValidMethodsMap[method], "/" , handler)
}

I imagine there is a reason you kept so many useful methods private, but I'm having trouble seeing a way around this. Any suggestions?

Or something more syntactically correct...
for _, route := range routes.Adhoc {
    goji.HandleUntyped(web.ValidMethodsMap[route.Method], route.Pattern, route.Handler)
}

I've kept those methods and variables private because I view them as an implementation detail and not as part of the public API. If you're looking to maintain a data structure with a list of Goji routes this isn't super great, but luckily writing a little adapter isn't so bad (~20 lines or so).
Beyond API cleanliness (which definitely is important to me), the reason I don't want to expose handleUntyped is because for performance reasons it doesn't handle non-standard methods very gracefully. I wouldn't want to expose so sharp of an edge in the API.

I'm going to close this issue out as a wontfix—it's very easy (albeit verbose) to stub this out on the client side, and my reasons for keeping Goji's innards hidden still stand. Feel free to re-open the issue or open a new one if you have any other questions though!


Add signal::signal_handler_disconnect()

5sec

Though that SourceId need used, was wrong

👍 from me too.

Thanks!


Replacing solutions-architect to cloudone-community

Cloud One Service
select one or multiple if applicable
[x] Common
[ ] Workload Security
[ ] Application Security
[ ] Network Security
[ ] File Storage Security
[ ] Container Security
[ ] Conformity
[ ] Open Source Security
Proposed Changes

Replacing solutions-architect to cloudone-community
Retaining the solutions-architect naming in the S3 URL found in /Common/Integration/Deployment/cdk-cloudformation-deploy/README.md

Retaining the solutions-architect naming in the S3 URL found in /Common/Integration/Deployment/cdk-cloudformation-deploy/README.md


Plugin to Jenkins?

Hi,
I am finding a Jenkins plugin to view modernizer results.
Thanks,

@raulvillalbamedina As far as I know, a Jenkins plugin does not exist.  Happy to help anyone trying to write one!


curly bracket is missing

add one curly bracket to the Line 138.

@yuna-s : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Verified with JSON validator; merging. Thanks @yuna-s.


refactor

Refactor def.exec to return lsp.CompletionItem[]
Add annotations and fix typo
Remove no longer needed check
getcompletion() return proper results even if has range.

I'd checked the behavior. Thank you. Merging.


Fix incompatibility with Angular 8

Stencil version 1.8.0 and greater use Typescript version 3.7.
Stencil with Typescript version 3.7 is known to generate definition files that are incompatible with Angular 8. It will be supported again only in Angular 9, which in turn is beading edge.
I suggest to downgrade the used stencil version to 1.7.5 until either Angular 9 or a patched Stencil version gets released.
Relevant issue: https://github.com/ionic-team/stencil/issues/2062

Stencil version 1.8.0 and greater use Typescript version 3.7.
Stencil with Typescript version 3.7 is known to generate definition files that are incompatible with Angular 8. It will be supported again only in Angular 9, which in turn is beading edge.
I suggest to downgrade the used stencil version to 1.7.5 until either Angular 9 or a patched Stencil version gets released.
Relevant issue: ionic-team/stencil#2062

It looks like this issue is not receiving any attention from the Stencil team. I ended up forking the Stencil repo and rolling back the TS3.7 upgrade. This works for now but I notice that the new compiler support is using some of the new features of TS3.7 (e.g. optional chaining) so this will not be an option with 1.8.x versions of Stencil once they switch over to the new compiler.

@robinsummerhill thanks for sharing your previous efforts with TS3.7 and Stencil. It is understandable that the Stelcil team is very busy pushing other issues forward.
I'm, however, wondering if this could be a reoccurring issue for every typescript minor/major release. Do you think it makes sense to add an abstraction to the compiler support, so that it is able to target arbitrary typescript versions (e.g. through a parameter or other npm-mechanisms)?
Or in other words, Stencil would use two versions of Typescript:

the one that is used by the library itself and is fixed
the one that is used to generate TS definition files and is configurable somehow

@RCBiczok Now that Angular 9 has been released with Typescript 3.7 support, this issue is less of a problem for us - although other library vendors may still need to support Angular 8.
As for future problems with Typescript updates - I'm hoping that the Typescript team has learned their lesson on introducing breaking changes with no backwards-compatible workaround (and especially not in minor releases). This issue has caused a lot of headaches for many library vendors (not just Stencil/Angular) and I'm sure they have received a lot of grief from developers.
Also - I hope that the Stencil team doesn't jump to new Typescript versions the moment they are released but waits to see if there are problems first.
But I can hope...
Apparently - there is also some work going on to create a tool to convert 3.7 d.ts files to 3.5 d.ts files. This could be included as part of the Stencil build chain when working.


Add (temporary) timeline

tentative: individual edits to GOVERNANCE.md by Fri 5/26; work on merging edits week of 5/29


find a node by Node Label or atleast add all nodes in a list

pass path like var path="Root/folder1/pathfolder" so that it shoud expand till that pathfolder
I can create json till the pathfolder like with treedata used with label and children
this can be done easily be finding the node and making it selected but how will I find the node using the path like above or even with json of above path note: tree is working find I just want to expand the tree upto the pathfolder

No questions from entire issues listed on github are answered!


WillPopScope onWillPop  is no longer getting triggered on a root page. Flutter 3.24.3

Steps to reproduce
Add a WillPopScope on a route at the root. Tap the android system back button.
The method onWillPop should get  triggered.
but the method is not getting triggeredAndroid
Expected results
onWillPop should get triggered
Actual results
onWillPop is not getting triggered
Code sample
Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.3, on macOS 14.5 23F79 darwin-arm64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2021.1.1)
[✓] VS Code (version 1.93.1)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

Hi @spiderion, please provide a complete minimal reproducible code sample so that we can properly investigate this issue.
Thank you

I can't provide code, maybe this is related. https://github.com/flutter/flutter/issues/140869
It started happening with the new flutter version.

Hi @spiderion, are you using go_router? Also, the code sample doesn't have to be your project code. Just a complete runnable sample that reproduces the issue so that we can properly investigate the issue.

Hi @danagbemava-nc , No I am not using go_router,
I am using WillPopScope/PopScope.
This happens with android only and when I press the android system back button the app just exists without triggering the callbacks.
I tried to build a sample on a new project but I can't reproduce on a new project.
Does that mean that the issue in my code only?
Can we wait to see if anyone else has the same bug?

Hi @spiderion, what version of android are you using? Do you have android: enableOnBackInvokedCallback=true in your AndroidManifest.xml file?

Hi @danagbemava-nc, I have tested with android 14 and android 12 and the issue was the same.
I tried this with android:enableOnBackInvokedCallback="false" and true and no difference there.

HI @danagbemava-nc , I am diving deep into the root of the issue and I found out that adding a global key to the PopScope makes the callback work.
Widget pageScaffold(SectionIndexDataState data) {
return PopScope(
key: GlobalKey(), // this part makes the  onPopInvokedWithResult be triggered again
canPop: false,
onPopInvokedWithResult: (bool didPop, result) async {
print('Pop Invoked $popInvoked');
popInvoked++;
data.onWillPop.call(false, null);
},
child: _scaffold(data.index, data.sections));
}
But of course now I have some side effects on pages being rebuilt

I think I fixed my issue.
The problem was that I was creating a GlobalKey() on every set state in my flutter widget tree.
Although with the old flutter was working fine in the new fluter was causing an issue.


Enable etcd clustering when behind proxy

In the scenario when we want to connect two analyzers as follows:
analyzer (client) ----> proxy ----> analyzer (server)
To support this the following enhancements are needed
(1)
Analyzer (client) needs to be able to set per peer crenetials:
etcd:
  peers:
  - analyzer1:
       url: http://proxy.ibm.com:2379
       user: <user>
       password: <password>
       cookie:
         <key1>: <value1>
         <key2>: <value2>

(2)
Analyzer (server) can set address(s) it advertises (when a client connects to it):
etcd:
  proxy: proxy.ibm.com

(3)
Analyzer (server) can set both client and peer (default is client+1) ports
etcd:
  server: <IP_ADDRESS>:2379
  peer: <IP_ADDRESS>.2380

package main

import (
    "log"
    "go.etcd.io/etcd/clientv3"
    "time"
)

func main() {
    cfg := clientv3.Config{
        Endpoints:   []string{"http://proxy.ibm.com:2379"},
        Username:    "exampleUser",
        Password:    "examplePass",
        DialTimeout: 5 * time.Second,
    }

    client, err := clientv3.New(cfg)
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    // Example usage of the client
    _, err = client.Put(context.Background(), "key", "value")
    if err != nil {
        log.Fatal(err)
    }
}


resolves #438 Substitute env variables in config file

resolves #438 Substitute env variables in config file: allows to use env variable in services definitions

Hi @Tony-Sol
Thanks for the PR, the lint check is failing.
I'm more than happy to merge it if u can fix the lint failure.

@navidys sure :)
seems to have fixed it

@navidys it's finally all good ^_^

LGTM


governance/core: make naming convention configurable

This PR introduces the usage of the provider aztfmod/azurecaf which makes naming of Azure resources more configurable.
The idea is that we make prefixes and suffixes of resources names configurable using azurecaf_name through variables (NOTE: we are using the data source, not the resource). If the variables are not configured, our defaults will be applied. Since we can't nest variables (using one variable as the default for another) we also have to use some local black magic to get it working.
The main idea is that someone should be able to configure everything very granularly and by doing it the way I've done it we enable someone to configure ONLY suffixes or prefixes for a specific resource type. As an example, someone would be able to disable suffixes for azure_key_vault and that would remove the unique suffix from only the key vault resources but nothing else.
Adding the following to the governance-regional module would disable suffixes only for azurerm_key_vault:
  resource_name_overrides = {
    azurerm_key_vault = {
      suffixes = []
    }
  }

This has the negative side effect that if someone wants to change something on EVERYTHING (like adding something after environment) it would need to be configured on each of the resources. This is something we could solve with even more logic, but not sure if it's worth the additional complexity.
My opinion is that the readability of most things actually improve using this change, but the complexity is a bit worse. We don't need the huge string interpolations for Azure AD groups and applications anymore which makes them a bit more sane to look at.
I've been testing it out in the lab and seems to be working OK, but see this as an example to discuss it's merits and if we want to do this for governance and core.
Related to #501

I've made a change based on feedback from @phillebaba, changing from resource to data which makes this a non-breaking change. I've also moved all the locals black magic to a separate module.

I've made the changes I could find for the core module as well. Please review and discuss.


Redefinition of module 'CommonCrypto'

Hi,
Getting too many issues after installed the pod --  pod 'JSONWebToken' --- is it still working with the latest version or not?

Im also getting multiple (around 23) compiler errors when I attempt building my Swift 5 app with JWT installed. Anyone found the issue?

I also faced the same issue.
Did you find the solution?

This was resolved with the way in the following link.
https://github.com/kylef/JSONWebToken.swift/issues/116


DO-1198/validator workflow

Implement Validator Workflow
Description
Add a question for validator_address.
Add a systemapi call to the identiy endpoint.
ToDo

[x] Update prompt question to give more information about how to obtain validator address
[ ] Add a link to the documentation on validator_address and how to obtain it.
[ ] Test identity endpoint and provide example output in Docs -> blocked by search for a working image that implements this endpoint
[ ] Anything to implement for RADIXDLT_CONSENSUS_USE_GENESIS_FOR_VALIDATOR_ADDRESS ?

Example response from identity endpoint:
{"public_key_hex": "03c9387bb913b372e8a92cfe489352edc13b8b43803cf00c861bdb95a5dc467da5", "node_address": "node_tdx_20_1q0yns7aezweh969f9nly3y6jahqnhz6rsq70qryxr0detfwuge7622jmf22", "node_uri": "radix://node_tdx_20_1q0yns7aezweh969f9nly3y6jahqnhz6rsq70qryxr0detfwuge7622jmf22@<IP_ADDRESS>:30000", "node_name": "no...7622jmf22", "node_id": "NodeId[03c9387bb913b372e8a92cfe489352edc13b8b43803cf00c861bdb95a5dc467da5]", "validator_name": "03c9387bb9", "consensus_status": "NOT_CONFIGURED_AS_VALIDATOR"}


Device Orietntaion issue

Hi,
i have device orientation issue when i run app on my andriod mobile(apk)

That i fixed with Editing Stylesheet...