[SPARK-48796][SS] Load Column Family Id from State Schema for VCF when restarting

What changes were proposed in this pull request?

Persisting the mapping between columnFamilyName to columnFamilyId in RocksDBCheckpointMetadata and RocksDBSnapshot. On load RocksDB will propagate the mapping and the maximum column family ID so far to the provider, and the RocksDBStateStoreProvider will populate its mapping of columnFamilyName and columnFamilyId, and use this for any columnFamily operations.
Why are the changes needed?

To enable the use of virtual column families, and the performance benefits it comes along with, with the TransformWithState operator
Does this PR introduce any user-facing change?

No
How was this patch tested?

Amended unit tests
Was this patch authored or co-authored using generative AI tooling?

No

Nits:

We could probably change the PR title name a bit as we are now not loading col family Id from State schema for VCF, instead we do that in RocksDB metadata file.
Could we enable this test in TransformWithStateSuite to see if it passes: https://github.com/apache/spark/blob/master/sql/core/src/test/scala/org/apache/spark/sql/streaming/TransformWithStateSuite.scala#L654


Add a contributing guide

As newbie, I'd like to help but I'm little bit lost I don't know where I can add/edit properties.

Here’s some text the Contributing guide could include:

The property/ directory contains the HTML descriptions of each property. For example, the explanation and examples for the align-content property is in property/align-content/index.html.

However, I am confused by seeing that the text in those HTML was apparently generated from Markdown, yet I don’t see any Markdown source files in the repo. It would be nice if the contributing guide either pointed to the Markdown files or explicitly said that while Markdown was used for the initial build, now we should edit the raw HTML.

@roryokane I think it was written in HTML, not markdown. But it missed some build scripts. For example, how to generate files in _includes/collections or _includes/lists?

@yuezk Here is why I think the text was originally written with Markdown:

_config.yml contains markdown: kramdown
a typo involving ** double-asterisks caused some text to be bolded incorrectly

@roryokane，you are right. 👍


Remove yanked gem dependency

@alebian
The find gem was yanked from rubygems. It seems that it was used to
traverse files in a directory.
Instead, the built in Dir method has been used

@yez Thank you for the contribution! I just modified this: Dir["#{path.chomp('/')}/**/*"] because it was not finding the files in the subfolders.

@yez Thank you for the contribution! I just modified this: Dir["#{path.chomp('/')}/**/*"] because it was not finding the files in the subfolders.

Glad you found it useful and nice catch on the sub directory bug. I wonder if adding a test to validate this would be beneficial?

Glad you found it useful and nice catch on the sub directory bug. I wonder if adding a test to validate this would be beneficial?

I think it would be, I will add it whenever I have a little time.


Review TTL-related fee in oracle txs

Alongside documentation update PR https://github.com/aeternity/protocol/pull/177, delivers https://www.pivotaltracker.com/story/show/159134621
TODO:

[x] Double check that tests make sense

I checked pruning and allowing setting zero relative TTL in some txs as showed in test cases is ok (pruned soon). Tracked as https://www.pivotaltracker.com/story/show/160018796

[x] Check completeness of doc
[x] Rebase on master (keeping DB folder bump) shortly before merge

CI job of unit tests failed:
  1) aec_peers_tests:aec_peers_test_/0
     Failure/Error: ?assertEqual(failed, Message)
       expected: failed
            got: "Message { getaddr , \"aeternity.com\" } not received"
     %% /home/builder/epoch/_build/test/lib/aecore/test/aec_peers_tests.erl:542:in `aec_peers_tests:test_multiple_peers_same_hostname_failures/0`
     Output:
     Output:

Python UAT tests failed:
integration.test_unsigned_tx.test_spend ...
Node dev1 starting
Starting node with config prefix EPOCH_CONFIG="/tmp/tmpG3sNjG/epoch.yaml"
Tx hash th$2quYTsawFP8nCocVVwZCSFdAsiqf4C5NNxzpMEtsB3MV79mNyu
Signed transaction tx$PVtiJ1egGwtdzBPB1q4xAak88y6QoPDvRsbgRt7srQUaubGeAGuJ8mpoScEU3vhSaqQ4bnc7jDipURnTMpvDseKmLTfc41D8qs52YiBRZ5VGrkcPNwQvDdeQNvK88ATwmq8PV2LrKEci3ZN3aSCQssdWnBZHTbGjGarxLUiRJHyapQSLZ4gsE8tpcn7LXkciVv5AzA1dVMyckgtKYMAdmpjW
ERROR

======================================================================
ERROR: integration.test_unsigned_tx.test_spend
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/builder/epoch/py/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/builder/epoch/py/tests/integration/test_unsigned_tx.py", line 264, in test_spend
    timeout_seconds=120, sleep_seconds=0.25)
  File "/home/builder/epoch/py/local/lib/python2.7/site-packages/waiting/__init__.py", line 18, in wait
    for x in iterwait(result=result, *args, **kwargs):
  File "/home/builder/epoch/py/local/lib/python2.7/site-packages/waiting/__init__.py", line 56, in iterwait
    raise TimeoutExpired(timeout_seconds, waiting_for)
TimeoutExpired: Timeout of 120 seconds expired waiting for <function <lambda> at 0x7f6f59b28410>

Rebased on master and force pushed.


Add 5th lsa in 2_LSA for logging lsa values

This PR includes the accommodation of the 5th line sensor array in 2_LSA folder for logging the lsa readings.

PR is mergeable.


Improve ureact::collect

Description

Paper about std::ranges::views::enumerate mentioned the following code:
std::vector<double> v;
enumerate(v) | to<std::vector>(); // std::vector<std::tuple<std::size_t, double>>
enumerate(v) | to<std::map>(); // std::map<std::size_t, double>

Currently ureact::collect supports only std::vector like containers that can be specialized with single type. It would be nice to have the possibility to collect pair-like values in associative containers like std::map.
It worth to check is it supported in existing ranges::to<> implementations.
Anyway, ureact::collect is dangerous and mostly meant to be used in testing code, so this feature is not important.

Test code have written to check the feature
TEST_CASE( "CollectAssociative" )
{
    ureact::context ctx;

    auto src = ureact::make_source<std::pair<std::string, int>>( ctx );
    auto src_tuple = ureact::transform(
        src, []( const auto& pair ) { return std::make_tuple( pair.first, pair.second ); } );

    ureact::signal<std::map<std::string, int>> collected_map;
    ureact::signal<std::map<std::string, int>> collected_map_2;

    SUBCASE( "Functional syntax" )
    {
        collected_map = ureact::collect<std::map>( src );
        collected_map_2 = ureact::collect<std::map>( src_tuple );
    }
    SUBCASE( "Piped syntax" )
    {
        collected_map = src | ureact::collect<std::map>;
        collected_map_2 = src_tuple | ureact::collect<std::map>;
    }

    src << std::pair( "A", 1 );
    src << std::pair( "B", 2 );
    src << std::pair( "C", 3 );

    using namespace std::string_literals;
    const auto expected = std::map{
        std::pair( "A"s, 1 ),
        std::pair( "B"s, 2 ),
        std::pair( "C"s, 3 ),
    };

    CHECK_EQ( collected_map.get(), expected );
    CHECK_EQ( collected_map_2.get(), expected );
}

std::to proposal https://open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf
auto l = std::views::iota(1, 10);

// create a vector with the elements of l
auto vec = ranges::to<std::vector<int>>(l); // or vector{std::from_range, l};

//Specify an allocator
auto b = ranges::to<std::vector<int, Alloc>>(l, alloc); // or vector{std::from_range, l, alloc};

//deducing value_type
auto c = ranges::to<std::vector>(l);

// explicit conversion int -> long
auto d = ranges::to<std::vector<long>>(l);

//Supports converting associative container to sequence containers
auto f = ranges::to<std::vector>(m);

//Supports converting sequence containers to associative ones
auto g = ranges::to<std::map>(f);

//Pipe syntaxe
auto g = l | ranges::view::take(42) | ranges::to<std::vector>();

//Pipe syntax with allocator
auto h = l | ranges::view::take(42) | ranges::to<std::vector>(alloc);

//The pipe syntax also support specifying the type and conversions
auto i = l | ranges::view::take(42) | ranges::to<std::vector<long>>();

// Nested ranges
std::list<std::forward_list<int>> lst = {{0, 1, 2, 3}, {4, 5, 6, 7}};
auto vec1 = ranges::to<std::vector<std::vector<int>>>(lst);
auto vec2 = ranges::to<std::vector<std::deque<double>>>(lst);

Some checks in the godbolt https://godbolt.org/z/jqePW8a7h. It seems that it is impossible to accept both concrete type and parameterized type at the same time if it is not an overloaded template function.
Optional passing of allocator is another can of worm I don't want to touch for now.

Update on godbolt https://godbolt.org/z/9hsvjfzfv.

Associative container support is added. But there is at least some ambiguity with std::map: it has both .insert() method that doesn't override previous values and operator[] that does override. It is not clear which behavior is desired. For now operator[] has bigger priority than .insert().

Closing for now. Reopen if further improvements are wanted


USPS91 numbers are associated with FedEx SmartPost

First of all, thanks for the great lib ❤
From my testing, a USPS91 number always instantiated with FedEx SmartPost class, due to the nature that they're sharing the same format.
For example:
irb(main):083:0> TrackingNumber.new('92001903060085300042901077')
=> #<TrackingNumber::FedExSmartPost:0x1fa838<PHONE_NUMBER>0085300042901077>

Unsure if it's the best way, but here's my workaround atm.
ORDER = [TrackingNumber::USPS91, TrackingNumber::FedExSmartPost]
tracking_numbers = TrackingNumber.detect_all(tracking_number)
sorted_tracking_numbers = ORDER.sort_by { |tracking_number| TRACKING_NUMBER_ORDER.index(tracking_number.class) || 99 }
sorted_tracking_numbers.first

The last big version update I made to this gem was addressing shared numbers like that, in that partnerships should be identified on detection.
https://github.com/jkeen/tracking_number#multiple-shippers--partnerships
TrackingNumber.new('420112139261290983497923666238').partners
=>
#<struct TrackingNumber::Base::PartnerStruct
 shipper=#<TrackingNumber::FedExSmartPost:0x730<PHONE_NUMBER>61290983497923666238>,
 carrier=#<TrackingNumber::USPS91:0x744<PHONE_NUMBER>61290983497923666238>>

^ what's supposed to happen
But it looks like that number you provided doesn't do that quite right for whatever reason, though. Hmm… I will look into it!

It seems like that number has a "Service Type" of 19, and the partners definition is only accepting service type 29.
https://github.com/jkeen/tracking_number_data/blob/01a17cf2021281fac452a20a1ad846c3780a0cf5/couriers/usps.json#L129
@maxhungry Is this the first number you've run into this problem with? I was under the impression that usps + fedex partnerships required SCNC=61 and ServiceType=29

We can see 1k+ trackings with a service type of 19. However, I believe it isn't a partnership. USPS is both the shipper & carrier.
The problem is that both USPS & FedEx use the same number format, and TracingNumber.new(t) returns FedEx instead of USPS because it simply returns the first valid matched.

We have a similar issue. I tried to use this workaround:
tracking_numbers = TrackingNumber.search("92001903060085300042901077")
tracking_number = tracking_numbers.reject(&:partner).first

tracking_number
=> #<TrackingNumber::USPS91:0x13a74<PHONE_NUMBER>0085300042901077>

However, I'm  pretty sure this is not advisable because:
tracking_numbers.map(&:partners)
=> [nil, nil]
tracking_numbers.map(&:partner)
=> [#<TrackingNumber::USPS91:0x13a88<PHONE_NUMBER>0085300042901077>, nil]


This domain is not registered with TinyMCE Cloud. Get a free API key to disable this message

Can you advise on how to use the API KEY to remove the “This domain is not registered with TinyMCE Cloud. Get a free API key to disable this message.” message?

Hello, we reviewed this issue and determined that it doesn't fall into the bug report or feature request category. This issue tracker is not suitable for support requests, please repost your issue on StackOverflow using tag angular.
If you are wondering why we don't resolve support issues via the issue tracker, please check out this explanation.


dsp: JsonObjectToContractAgreementMessageTransformer fails mapping ContractAgreement

Bug Report
Describe the Bug
An exception is thrown at line 59 because the object is not a JsonObject but a JsonArray that has the JsonObject as first item:
https://github.com/eclipse-edc/Connector/blob/4f76a8cd9db77678d44f2f0edfee9b896ab8664f/data-protocols/dsp/dsp-negotiation/dsp-negotiation-transform/src/main/java/org.eclipse.edc.protocol.dsp.negotiation.transform/to/JsonObjectToContractAgreementMessageTransformer.java#L59
Expected Behavior
A clear and concise description of what you expected to happen.
Observed Behavior
A clear and concise description of what happened instead.
Steps to Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Context Information
Add any other context about the problem here.

Used version [e.g. EDC v1.0.0]
OS: [e.g. iOS, Windows]
...

Detailed Description
If applicable, add screenshots and logs to help explain your problem.
Possible Implementation
You already know the root cause of the erroneous state and how to fix it? Feel free to share your thoughts.

.cf also the comment by @ndr-brt:
https://github.com/eclipse-edc/Connector/pull/2932#discussion_r1189970983_

@ndr-brt I think this has been resolved, can you verify?


Split prod and dev requirements

We currently built requirements using pip-compile, but with only one spec file.  So we're installing all our dev dependencies in production.  While not a big problem for this site, it would be cleaner to split those apart so we only install the necessary ones for production there.

Agreed -- I would like to use Poetry to manage the requirements for this project. It should offer that functionality.


Tests missing from npm release tarballs

I noticed that the official release tarballs on the npm registry do not include the test suite files, which means that one cannot run npm test to independently verify that the released code passes the test suite on one's own computer.  I think it would be good to adjust package.json to specify that the tests should be included in the release tarball.  Thoughts?
Thanks!

You can download the full releases from here: https://github.com/jashkenas/underscore/releases
npm is used to distribute only what is necessary to rely on underscore as a dependency of your own project.


Incorrect dependency graph after service dependency change

Environment

Seal version: main b59e15f928214861b85ca9ab6bd2089531a7cbd3
UI version: dev-9bb1b6c

To Reproduce
Steps to reproduce the behavior:

Deploy services as follows:

Delete the dependency between a and d.

Check the graph again. The dependency relationship was not updated.

Check services table.

Check service_relationships table before deleting dependency.

Check service_relationships table after deleting dependency.

It only delete one path, not all relevant paths.

Environment

Walrus version: main b0c3bd4666d7e891f3713760d3223998d4388a0f
UI version: dev-3b160ec

Test Result: pass

create services: d2 -> c -> b2 -> a
delete c -> b2
delete b2-> a


Feature request

Yesterday I was testing intel_gpu_top utility in linux which gives some information & has an option to output json with -J flag
I wanted to write a script using this functionality using gron.. That utility constantly outputs in json which looks like this:
	"period": {
		"duration": 1000.323144,
		"unit": "ms"
	},
	"frequency": {
		"requested": 649.790024,
		"actual": 649.790024,
		"unit": "MHz"
	},
	"interrupts": {
		"count": 8.997093,
		"unit": "irq/s"
	},
	"rc6": {
		"value": 85.332937,
		"unit": "%"
	},
	"power": {
		"value": 0.192778,
		"unit": "W"
	},
	"engines": {
		"Render/3D/0": {
			"busy": 0.000000,
			"sema": 0.000000,
			"wait": 0.000000,
			"unit": "%"
		},
		"Blitter/0": {
			"busy": 0.000000,
			"sema": 0.000000,
			"wait": 0.000000,
			"unit": "%"
		},
		"Video/0": {
			"busy": 0.000000,
			"sema": 0.000000,
			"wait": 0.000000,
			"unit": "%"
		}
	}
}

My problem with is that it stops after reading the first value outputted by the tool. then the process stops... I want it to constantly
show the output..
Example:
json = {};
json.engines = {};
json.engines["Blitter/0"] = {};
json.engines["Blitter/0"].busy = 0.000000;
json.engines["Blitter/0"].sema = 0.000000;
json.engines["Blitter/0"].unit = "%";
json.engines["Blitter/0"].wait = 0.000000;
json.engines["Render/3D/0"] = {};
json.engines["Render/3D/0"].busy = 0.000000;
json.engines["Render/3D/0"].sema = 0.000000;
json.engines["Render/3D/0"].unit = "%";
json.engines["Render/3D/0"].wait = 0.000000;
json.engines["Video/0"] = {};
json.engines["Video/0"].busy = 0.000000;
json.engines["Video/0"].sema = 0.000000;
json.engines["Video/0"].unit = "%";
json.engines["Video/0"].wait = 0.000000;
json.frequency = {};
json.frequency.actual = 0.000000;
json.frequency.requested = 0.000000;
json.frequency.unit = "MHz";
json.interrupts = {};
json.interrupts.count = 0.000000;
json.interrupts.unit = "irq/s";
json.period = {};
json.period.duration = 0.007298;
json.period.unit = "ms";
json.power = {};
json.power.unit = "W";
json.power.value = 0.000000;
json.rc6 = {};
json.rc6.unit = "%";
json.rc6.value = 0.000000;

It formats the output only one time and the stops but I want to do it constantly
Is their some shell trick that can be used to do this (or a new feature)
Thank you
@albonycal

Not sure if I understood the question right, but maybe watch might help here?
E.g. place this script in /tmp/script.sh and give it executable rights. The script reads the uptime of the computer and creates a simple JSON document with the help of jq. Of course any additional steps, such as filtering the output and re-creating a JSON document with ungron could be done here as well.
#!/bin/bash
jq -c --null-input --arg uptime $(uptime | awk -F' ' '{ print $1 }') '{ uptime: $uptime }' | gron

Then run watch -n 1 /tmp/script.sh. The output is updated every 1 second.


Implement MQTT Client "timeout" setting

The Paho MQTT Client class has a "timeout" value that currently is not set by the RSC Service.
This parameter is described by the author of the Paho CPP library (in issue #152) as follows:
"The C++ client object is synchronous and will block until an operation completes - any operation, including connect, disconnect, publish a message, etc. The client::set_timeout() sets the upper bound for all of those operations so that the application doesn't block and hang forever if one operation fails to complete. This is a user parameter since the value should be different depending on the underlying type of network and connection. (Higher for a satellite phone, lower for a LAN, perhaps).
The value is a wait timeout in the C++ wrapper library. If it fails, the operation could still silently complete some time later, So it is best to set this at a higher value and use it as a last resort."

Implemented in version 1.1.1


Add support for persistent player

This isn't intended as a request to merge into your codebase, rather to show you what I've done to support the Drupal Ajax Links API that Core Publisher is using now. Over the course of getting it to work on Core Publisher, there were a couple steps.

I removed the require.js support a while ago, as it seemed overkill for this.

Calling autoInit() from within the factory created race conditions if the script was loaded before the appropriate div (or p) was put onto the page. This was resolved by waiting for the DOMContentLoaded event and then calling autoInit(). As a result, I had to expose autoInit() as a function on pym.

Core Publisher makes use of the Drupal Ajax Links API, which doesn't trigger DOMContentLoaded instead triggering a jQuery event called pi_ajax_links_api_page_loaded. This is only accessible by setting up a jQuery-based event listener. So, we look for the existence of pi_ajax_links_api in the Drupal settings as an indication this event is available.

Core Publisher has a nasty way of stripping/converting   into a blank space, then not showing it on the page. This was the original reason for having to use

 instead of a straight div tag. However, this has two issues with it:

Pym sometimes seems to convert the   to a simple space on save, then strip it on display. UGH!
Having a blank space makes it not visible when embedded in a raw page.

To solve this, I switched to having a placeholder
_
 and having pym replace the children with the iframe, rather than using append.

I reverse-engineered the Drupal Ajax Links API from the unminified javascript loaded from a core publisher-based station, but I can't seem to find any good documentation about it. So, there is probably a better way to check for having it turned on. I'm hoping to get NPR DS to chime in on whether there is a better way to detect this.
I've tested this on all of our clients, both with Core Publisher and without, with jQuery and without, and with Persistent Player and without.
Of course, would love any comments/thoughts/etc.

Hey @coreyhaines, I'm going to reach out this week. We've let this slip badly and I apologize. I'd like to coordinate though, so we can get it back on track.

Hey folks. I'm leaving this to document the behavior we're seeing on Core Publisher with the Persistent Player turned on, using the Hearken fork of pym.js
We're using v0.4.11 - 2016-06-07 of the Hearken fork of pym.

If you land on a page with an embed, the embed loads. if you use page navigation to get to other pages with embeds, they load as well.

Example: Load this page. The pym-embedded table at the bottom of the story will load. Click the byline "Brent Jones" at the top of the page, and click on the second story ("Five things to know about the St. Louis region from the new Census numbers"). The embeds in this story will load.

If you land on a page without an embed and then use page navigation to get to a page with an embed, the embed will not load. If  you refresh the page, the embed will load.

Example: Load this page, then click on the first story ("Can Missouri's vehicle stops report lead to laws with sharper teeth?"). The pym-embedded table at the bottom of the story won't load (there will be an underscore). Refresh the page. The table will load.

If you land on a page without an embed and then use page navigation to get to a page with an embed, the embed will not load. If you use page navigation to get to another page with an embed, it loads.

Example: Load this page, then click on the first story ("Can Missouri's vehicle stops report lead to laws with sharper teeth?"). The pym-embedded table at the bottom of the story won't load (there will be an underscore). Click the byline "Brent Jones" at the top of the page, and click on the second story ("Five things to know about the St. Louis region from the new Census numbers"). The embeds in this story will load.

Hi @eads ! Thanks! Looking forward to chatting. I've been keeping our fork up to date and adding some features for ourselves. I'm getting the feeling that more and more organizations are starting to use our fork. I know that you all have a lot on your plate, and I'm interested in having a chat about potentially taking over maintenance.

@brentajones Yeah, I'm talking to NPR DS, and I think we have found the main problem. PP sends their page transition event too early, so the scripts don't have time to load. :( This is a pain, and once I verify it, then we can put in a request to get it changed to send after everything is loaded. I'm hoping to verify it this weekend, the put in the request next week.


Wrong option for postgres volume mounts in compose files

Both in the local.yml and production.yml compose file, the postgres mounts are defined like this
volumes:
    - production_postgres_data:/var/lib/postgresql/data:Z
    - production_postgres_data_backups:/backups:z

However, why is the z/Z option there?
docker-compose v2.4.1, even complains about this, reporting the following warning:
mount of type `volume` should not define `bind` option

That's because the syntax defines a volume mount but the z/Z option is for bind mounts and that's incompatible. Shouldn't the option be removed?

FWIW, I've started seeing this warning on macOS too


WIP: refactor: use absolute include paths

What type of PR is this?
/kind cleanup
/kind design
/kind feature
Any specific area of the project related to this PR?
/area libscap
/area libpman
/area libsinsp
/area tests
Does this PR require a change in the driver versions?
What this PR does / why we need it:
This PR proposes to enhance the maintainability of the libs components by updating the include paths for libsinsp, libscap, and driver. The motivation behind this proposal is to improve readability of the code and provide a more explicit and organized structure for including header files.
The proposed patch brings:

Clarity of Ownership:
Using a more verbose include path ensures clear identification of the owner of each header file. This helps in understanding the origin and purpose of included headers at a glance avoids any possible ambiguity (e.g. utils.h from libsinsp or utils.h from libscap)

Streamlined CMake Configuration:
The proposed include paths will align with a more streamlined CMake configuration. Only a minimal set of directory will be included: the LIBS_DIR (/userspace), the driver directory (/driver), and some dynamically generated directories (such as ${PROJECT_BINARY_DIRECTORY}/driver/src/ where the generated driver_config.h is placed). This minimizes the risk of including unnecessary or conflicting headers. Furthermore, given that the proposed change will touch the cmake setup, probably could be worth adopt a more modern approach replacing the global include_directories with the more granular target_include_directories approach.

Specifically, I propose transitioning from the current convention:
#include "strl.h"
#include "sinsp.h"
#include "sinsp_int.h"
#include "chisel.h"
#include "chisel_api.h"
#include "filter.h"
#include "filterchecks.h"

to a more explicit format:
#include <libscap/strl.h>
#include <libsinsp/sinsp.h>
#include <libsinsp/sinsp_int.h>
#include <chisel/chisel.h>
#include <chisel/chisel_api.h>
#include <libsinsp/filter.h>
#include <libsinsp/filterchecks.h>

Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
I understand this can be disruptive for some of the adopters of the Falco libs, so this PR acts as a POC and is totally open to feedback and opinions. Overall, the drive for this is to make the libs a more long-sustainable and high-quality codebase.
To illustrate the viability and benefits of the proposed change, I have implemented a patch in my branch of falco. Please find the link to the branch below:

https://github.com/therealbobo/falco/tree/cleanup-relative-import-paths

Does this PR introduce a user-facing change?:
libs consumers have to change the include paths.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: therealbobo
Once this PR has been reviewed and has the lgtm label, please assign andreagit97 for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

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

/milestone 0.15.0

This is amazing @therealbobo . +1 on my end, this is quite a big leap toward making the libs true maintainable libraries.

LGTM label has been added.  Git tree hash: 552dba48d4c37be9e3ba9999b4d2febae86fa3da

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, therealbobo
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97]

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

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, incertum, therealbobo
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,incertum]

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


Add support for dynamic island bezels

For these bezels:
iPhone 14 pro
iPhone 14 Pro max
Let me know if you would like help with this.
Thanks for the sketch doc 🥰

iPhone 15? 😬(This is the best screenshot maker out there btw, thanks!)


rez-context broken for FileSystemCombinedPackageResource

If you try to call rez-context when a FileSystemCombinedPackageResource is active, you get a traceback:
Traceback (most recent call last):
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/bin/rez-context", line 3, in <module>
    run("context")
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/_main.py", line 107, in run
    returncode = opts.func(opts, opts.parser, arg_groups[1:])
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/context.py", line 134, in command
    rc.print_info(verbosity=opts.verbose)
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/resolved_context.py", line 645, in print_info
    if not os.path.exists(pkg.root):
  File "/usr/local/python-2.7.4/lib/python2.7/genericpath.py", line 18, in exists
    os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found

The immediate issue is that Combined resources have a root of "None" - so, if this is an allowed value, we need to check for this before feeding into pkg.root.
The larger issue, though, is that there's no clear / consistent way of answering the question, "Where did this package come from?" (or where is it installed) for all packages.

Closing this issue as it is addressed in resources2 branch.
There, packages/variants have a 'uri' property that does describe where the package comes from, whether that be a file or something else (potentially a database, with future additions of new package repository types).

Hmm... actually, this bug report was FOR the resources2 branch. I pulled the latest, and checked, and it's still present:
Traceback (most recent call last):
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/bin/rez-context", line 3, in <module>
    run("context")
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/_main.py", line 107, in run
    returncode = opts.func(opts, opts.parser, arg_groups[1:])
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/context.py", line 139, in command
    source_order=opts.source_order)
  File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/resolved_context.py", line 656, in print_info
    if not os.path.exists(pkg.root):
  File "/usr/lib64/python2.7/genericpath.py", line 18, in exists
    os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found

Ah right you are - I'll sort this next week.
A
Sent from my iPhone

On Apr 10, 2015, at 3:27 PM, Paul Molodowitch<EMAIL_ADDRESS>wrote:
Hmm... actually, this bug report was FOR the resources2 branch. I pulled the latest, and checked, and it's still present:
Traceback (most recent call last):
File "/Volumes/sv-dev01/devRepo/paulm/rez-src/bin/rez-context", line 3, in
run("context")
File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/_main.py", line 107, in run
returncode = opts.func(opts, opts.parser, arg_groups[1:])
File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/cli/context.py", line 139, in command
source_order=opts.source_order)
File "/Volumes/sv-dev01/devRepo/paulm/rez-src/src/rez/resolved_context.py", line 656, in print_info
if not os.path.exists(pkg.root):
File "/usr/lib64/python2.7/genericpath.py", line 18, in exists
os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found
—
Reply to this email directly or view it on GitHub.

Made this pull request as a potential fix for this issue:
https://github.com/nerdvegas/rez/pull/172
However, it's not an ideal solution - read the comment for thoughts / possible alternative ideas.


Ditch IPFS PubSub in favor for a VerneMQ (A Distributed MQTT Broker)

Hey!
So as cool as this implementation of Orbit DB is, I think it can be improved.
IPFS PubSub is a cool feature, but I think for a decentralized database, having a dedicated broker such as VerneMQ  would be better.

Thanks for the suggestion - unfortunately none of the OrbitDB maintainers have the bandwidth to switch the pubsub implementation over right now since we're working on 1.0 (see #819).
Happy to review a PR if you want to put the suggestion into code, but closing this in the meantime.

I think it would be cool to have a way to insert single or multiple customizable ways to advertise heads similar to how other modules of orbitdb can be swapped with custom parts.

Ok, let's keep this open for consideration

Building on what @tabcat said. I think this is also important when thinking of security. If content has to be kept private it would be worth while to have a pluggable transport for private orbit-db databases.

We shouldn't ditch  (as in replace with something else) the current default pubsub module. There are several reasons why Libp2p-based pubsub is and should be the default pubsub system.
However, it is possible already to pass in broker module to OrbitDB, which would be used instead of the default ipfs-pubsub module. As long as the given broker implements the same API as orbit-db-pubsub, it should work with any messaging system.

This needs to be made into an SCP that includes:

A generalized API for any sort of pubsub interaction
An example "plugin" or "adapter" that implements said API. MQTT is a fantastic candidate for such an example.


Fix host config in config TOML.

Fix Issue-1594 (in edinburgh)
This is to fix the inadvertent value of localhost being used instead of edgex-sys-mgmt-agent in the (res/docker) configuration.toml for sys-mgmt-agent.

Note that the corresponding fix (for Issue-1594) for master has a separate PR: PR-1612, which has a separate build job associated with it.

Codecov Report

Merging #1613 into edinburgh will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           edinburgh    #1613   +/-   ##
==========================================
  Coverage      17.01%   17.01%
==========================================
  Files             78       78
  Lines           8817     8817
==========================================
  Hits            1500     1500
  Misses          7167     7167
  Partials         150      150

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 c28b77d...8913c84. Read the comment docs.


How Can I find out the ID for the Virtual Report Suite?

Issue in help/components/vrs/c-workflow-vrs/vrs-view.md
How Can I find out the ID for the Virtual Report Suite? It seems like it would make sense to document on this page

Anyone able to look at this?? It's been 9 months and would be very useful to add to the documentation

@kritikality - I had checked with engineering, and there is no way to get the VRS ID from the interface. Otherwise I would have most certainly indicated this option.  I will, however, add the API option to the documentation.

@kritikality - also, would you mind sharing your use case with us so that we can see how you are using this ID, thanks.

Bottom of the FAQ: https://experienceleague.adobe.com/docs/analytics/components/virtual-report-suites/vrs-faq.html?lang=en#virtual-report-suites

HI @MicaPete - I know of at least one way of finding the report suite ID in Adobe Analytics.   I thought there would be a simpler way, but here it is.

Open a workspace Project
Click on the Report Suite Selector
Type anything in the search box
The IDs appear under the name

Please do not use this screenshot as it belongs to a client!
Also, please note I am not familiar at all with the API (and neither are many other uesrs).  I cannot work out how to get the Virtual Report Suite ID from the documentation you have added. I can only see the definition.

That’s awesome, Kristi! Thanks for sharing.
I will add this to the doc on Monday.
--
Regards,
Meike
From: Kristi Barrow @.>
Date: Thursday, May 13, 2021 at 7:14 PM
To: AdobeDocs/analytics.en @.>
Cc: Meike Peters @.>, Mention @.>
Subject: Re: [AdobeDocs/analytics.en] How Can I find out the ID for the Virtual Report Suite? (#128)
HI @MicaPetehttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicaPete&data=04|01|mepeters%40adobe.com|2c7ae200ab824e7bac1808d9167596d1|fa7b1b5a7b34438794aed2c178decee1|0|0|637565516564402146|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=BoVplTwqqYLJzGMNKlJ9dVGJnu8XTOi6%2BMeSE5MtzMQ%3D&reserved=0 - I know of at least one way of finding the report suite ID in Adobe Analytics. I thought there would be a simpler way, but here it is.

Open a workspace Project
Click on the Report Suite Selector
Type anything in the search box
The IDs appear under the name
[image]https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F62052599%2F118206248-74f8d480-b4a5-11eb-99da-85fabfc42ccb.png&data=04|01|mepeters%40adobe.com|2c7ae200ab824e7bac1808d9167596d1|fa7b1b5a7b34438794aed2c178decee1|0|0|637565516564412138|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=wD31vvjwBzfcxV8hAl9rgTnb2tqEED%2FlbrEH9C3SenQ%3D&reserved=0

Please do not use this screenshot as it belongs to a client!
Also, please note I am not familiar at all with the API (and neither are many other uesrs). I cannot work out how to get the Virtual Report Suite ID from the documentation you have added. I can only see the definition.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAdobeDocs%2Fanalytics.en%2Fissues%2F128%23issuecomment-840930235&data=04|01|mepeters%40adobe.com|2c7ae200ab824e7bac1808d9167596d1|fa7b1b5a7b34438794aed2c178decee1|0|0|637565516564412138|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=C9IKLMLZ%2FR69jZF0xLbkMmE%2F6S4tWN%2Fsv0Djb8Cj%2BcQ%3D&reserved=0, or unsubscribehttps://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAEVQK7LPRLED2RLJQ4IIR4DTNR2ONANCNFSM4P5XNGSQ&data=04|01|mepeters%40adobe.com|2c7ae200ab824e7bac1808d9167596d1|fa7b1b5a7b34438794aed2c178decee1|0|0|637565516564422130|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=lMiJmjp0N0wQ6byfs3eH9rcIQVgHlNNKXGv%2FFr5uk5w%3D&reserved=0.

Thanks @MicaPete - I see the documentation has been updated! :)


log does not write until process is stopped

the log file does not get written to when god process is running in the background until i killed the process.
here is my command for running god:
ruby /home/alex/.rvm/gems/ruby-2.1.2/bin/god -c streaming_watcher.god
here is my streaming_watcher.god:
God.watch do |w|
  w.name = "streaming_watcher"
  w.start = "/home/alex/.rvm/rubies/ruby-2.1.2/bin/ruby /home/alex/removed/bin/streaming_watcher.rb"
  w.log = "/home/alex/removed/log/streaming_watcher.log"
  w.env = { 'RAILS_ROOT' => "/home/alex/removed", 'RAILS_ENV' => "production" }
  w.keepalive
end

the file /home/alex/removed/log/streaming_watcher.log has nothing added to it if i watch it via tail -f until i kill the god process. then everything gets written to it...

I've landed here while looking for solution to the same problem but completely unrelated to this Gem, I'm using basic Ruby's Logger and I had to add the second line on this snippet for it to work:
file         = File.open('/var/log/thisistotallyalogfile.log', File::WRONLY | File::APPEND | File::CREAT) file.sync = true logger       = Logger.new(file, 'daily') logger.level = Logger::INFO
decided to try after the STDOUT.sync = true comment if the same would apply to the file handler and it did :)


this becomes any inside function within object when using generic method types that extends + syntax highlighting breaks

🔎 Search Terms
this object any, this object scope any, this becomes any inside method inside object
🕗 Version & Regression Information
I'm using TypeScript 5.5 and this is the first time I've faced this issue. Please check the playground linked below.
⏯ Playground Link
https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts
💻 Code
https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts
import bcrypt from 'bcryptjs';
import { Schema, Types, model } from 'mongoose';

const userRoleNameEnum = ['king', 'magistrate', 'citizen', 'child'] as const;

const userSchema = new Schema(
  {
    _id: {
      type: Schema.Types.ObjectId,
      default: () => new Types.ObjectId(),
    },
    username: {
      type: String,
      required: true,
      unique: true,
      trim: true,
    },
    email: {
      type: String,
      required: true,
      unique: true,
      match<EMAIL_ADDRESS>'Must match an email address!'],
    },
    password: {
      type: String,
      required: true,
      minlength: 5,
    },
    role: {
      type: {
        name: { type: String, enum: userRoleNameEnum },
        locations: [String],
      },
      required: true,
    },
  },
  {
    methods: {
      /**
       * Checking if a given matches the current one.
       */
      async isCorrectPassword(password: string) {
        return await bcrypt.compare(password, this.password);
      },

      /**
       * Getting the user's resources by query.
       */
      async getResources(resourceType: keyof App.Models.UserPopulatePaths) {
        return (
          await this.populate<App.Models.UserPopulatePaths>(resourceType)
        )[resourceType] as App.Models.UserPopulatePaths[typeof resourceType];
      },

      /**
       * Getting the user's resources by query.
       */
      async getResourcesV2<
        const TResourceType extends keyof App.Models.UserPopulatePaths,
      >(resourceType: TResourceType) {
        return (await this.populate<TResourceType>(resourceType))[
          resourceType
        ] as App.Models.UserPopulatePaths[TResourceType];
      },

      /**
       * This works.
       */
      async thisWorks() {
        return this.populate('something');
      },
    },
  },
);

const User = model('User', userSchema);

export default User;

🙁 Actual behavior
When I introduce the getResourcesV2 method to the object scope, I am not getting info on the three this vars (see https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts#L51, https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts#L61, https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts#L70).
The method is found here: https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/models/user.ts#L58-L64.
🙂 Expected behavior
I should get the type of the this built-in variable, but I'm getting any instead (plus, the syntax highlighting breaks). Try removing or commenting the getResourcesV2 method to see the changes. I also tried removing the const modifier from the getResourcesV2 generic type TResourceType, but to no success.
Additional information about the issue
I'm not sure if I've messed up the syntax or something, but I think I might have found a very specific/exotic bug in TypeScript.

We'd need a repro that is self-isolated (i.e. not dependent on the mongoose types, which are extremely complex, or any other dependencies for that matter) in order to investigate.

@RyanCavanaugh that's fair. Will try to do a more vanilla repro. Thanks!

I've tried replicating a vanilla example for this issue and there were no problems. Thanks for your support!

However, I will add that syntax highlighting breaks when the following syntax is present:

If you'd like, the code for the above snipped can be found here: https://github.com/alexwork1611/typescript-this-keyword-bug-investigation/blob/main/src/test.ts#L25.
Forwarding this issue to Mongoose.


Write swift version of Life of a Plan doc

https://github.com/material-motion/material-motion-runtime-objc/blob/develop/guides/Life of a plan (objc).md

🎊 My diff is ready for review at http://codereview.cc/D1606


feat: Add new API to deploy to cloudflare pages to get network version info

@rdoria1 looks good to me, but could you please explain me how it works :) How are we going to be keeping track of evmapp versions and update .json file or we do not need to worry about it?
Thank you in advance

@rdoria1 looks good to me, but could you please explain me how it works :) How are we going to be keeping track of evmapp versions and update .json file or we do not need to worry about it?
Thank you in advance

Sure thing! So after a discussion with @lander86, we actually want to do this manually for now because automatizing at this point isn't really possible/ideal (if a new version comes out, we don't necessarily want it to be the official new release that partners will fetch from that endpoint) eventually when the workflow is clear we will want to automatize it.

hi guys next time please always open a pr against development branch first
A merge to master should be performed only when a new release is created, and coordinated with myself and @lander86


Amplify.configure()'s cognito call fails when user-signin does not support unauth users

Minor bug: shows up in the web console as a failed POST:
POST https://cognito-identity.us-east-2.amazonaws.com/ 400 (Bad Request)

Steps:

Configure a MobileHub project with the User sign-in feature enabled and required.
Add a web app to the project, initialize with create-react-app and awsmobile pull
Add Amplify.configure(awsmobilejs) as usual.
Run npm start and examine the web console.

I would expect Amplify to notice that sign-in is required, and not attempt any Cognito calls prior to sign-in.
Amplify 0.2.6 does not seem to use the aws_mandatory_sign_in element of aws-exports.js.

@ceich thanks for your feedback!

@ceich this bug has been fixed in the latest release. Please feel free to reopen the issue if neccessary.

I no longer see this at configure() time, but do see this and another error at federated login time. Do you want me to submit a new issue, or to reopen this one?

I do see this when call
AwsAuth.configure({
  identityPoolId: 'xxx',
  region: 'xxx',
  userPoolId: 'xxx',
  userPoolWebClientId: 'xxx',
  mandatorySignIn: false,
});

if I don't pass identityPoolId, I would not see the error. The problem is that I cannot know what's wrong here, the body of the 400 response is just an alien string to me

It seems that I should set mandatorySignIn to true, then the error will go.

+1

It's because if you have the identitypoolId then Amplify will automatically try to get a guest credentials for you which will lead to that http request failing because you didn't turn the mandatorySignIn to true.

Could not find any the mandatory option.
This is what worked for me:
in: amplify/backend/auth/[PROJECT]/parameters.json
set: "allowUnauthenticatedIdentities": true

@SplicePHP it's in the configuration: https://aws-amplify.github.io/amplify-js/media/authentication_guide.html#manual-setup


Strange behavior under linux

Hi, it's Ubuntu 20.04 here, let's start.
Everything works as it should until the moment when DreamDaemon goes into deadlock. Spontaneously, even if there is no mapload happens, however loading of maps (I mean creation of new z-levels or changing turfs to space and back) can speed up encounter of this.
Hangup occurs without any runtimes and crashes. Nothing happens at all, the server just freezes tightly with 0 cpu load and same memory usage (about 1500 megs, but sometimes more, sometimes less). SIGUSR2 also doesn't work, but it should display backtrace and other info into DD output, what means it is completely dead. So, SIGBUS on DD works though and all I could get in log from it was this information:
Backtrace after loading 15 gateways:
BUG: Crashing due to an illegal operation!
proc name: New (/datum/gas_mixture/New)
  source file: gas_mixture.dm,27
  usr: null
  src: /datum/gas_mixture (/datum/gas_mixture)
  call stack:
/datum/gas_mixture (/datum/gas_mixture): New(0)
/datum/pipeline (/datum/pipeline): reconcile air()
/datum/pipeline (/datum/pipeline): process()
Гипер-Атмос (/datum/controller/subsystem/air): process pipenets(0)
Гипер-Атмос (/datum/controller/subsystem/air): fire(0)
Гипер-Атмос (/datum/controller/subsystem/air): ignite(0)
Master (/datum/controller/master): RunQueue()
Master (/datum/controller/master): Loop(2)
Master (/datum/controller/master): StartProcessing(0)

Backtrace for BYOND 514.1589 on Linux:
Generated at Fri Oct 14 10:58:14 2022

DreamDaemon [0x8048000, 0x0], [0x8048000, 0x804bd94]
linux-gate.so.1 [0xf7f30000, 0xf7f30b40], [0xf7f30000, 0xf7f30b49]
linux-gate.so.1 [0xf7f30000, 0xf7f30b70], [0xf7f30000, 0xf7f30b70]
linux-gate.so.1 [0xf7f30000, 0xf7f30b40], [0xf7f30000, 0xf7f30b49]
libc.so.6 0xffe70, 0xffe9b (syscall)
libauxmos.so [0xf4f79000, 0x0], 0x1426b
libauxmos.so [0xf4f79000, 0x0], 0x58077
libauxmos.so 0x73fd0, 0x742d9
libauxmos.so [0xf4f79000, 0x0], 0xc3bc7
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x313903
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343e3a
libbyond.so [0xf7895000, 0x0], 0x318b4d
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x313903
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x313903
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x313903
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x313903
libbyond.so [0xf7895000, 0x0], 0x330412
libauxmos.so [0xf4f79000, 0x0], 0xc3c43
libauxlua.so [0xc79fe000, 0x0], 0x121256
libbyond.so [0xf7895000, 0x0], 0x332644
libbyond.so [0xf7895000, 0x0], 0x343559
libbyond.so [0xf7895000, 0x0], 0x315c47
libbyond.so [0xf7895000, 0x0], 0x330412

Recent proc calls:
/proc/__detect_auxtools
/proc/__detect_auxtools
/proc/__detect_auxtools
/proc/__detect_auxtools
/datum/gas_mixture/New
/datum/pipeline/proc/return_air
/datum/pipeline/proc/reconcile_air
/datum/pipeline/process
/proc/__detect_auxtools
/proc/__detect_auxtools
/proc/__detect_auxtools
/proc/__detect_auxtools
/datum/gas_mixture/New
/datum/pipeline/proc/return_air
/datum/pipeline/proc/reconcile_air
/datum/pipeline/process

Another backtrace log looks same and blames on /datum/gas_mixture/New too, but that happened without gateway spam loading, just during normal round.
Yes, I tried to use different auxmos revisions after 2.0.0 on 514.1575, 1583 and 1585 with some modifications, but with similar result as above.
Maybe it's also because we don't use the reactions hook, only "katmos", but the old version on the commit 91708eb5cf289f2176630ab168d7d4f9da830523 works without any hangups on 514.1575. On version 514.1589 works the same, though after adding crutches to the old library, maybe it will be useful for someone: https://github.com/frosty-dev/auxmos/tree/assblast
Since I could not find a working server on the latest version, I decided to use the code from several repositories using this library, for example:
https://github.com/yogstation13/Yogstation/pull/13479;
https://github.com/Citadel-Station-13/Citadel-Station-13/pull/15864;
https://github.com/BeeStation/BeeStation-Hornet - we use supercruise from them since extools which creates funny crashtest for atmos;
Our repo with latest auxmos is: https://github.com/frosty-dev/white/tree/0945d9327a82e160cab7a34f1f6336a652916f0a
Our auxmos (changed auxtools repo to mothblocks pr for 1588+ sigs compatibility): https://github.com/frosty-dev/auxmos
I don’t know, maybe we have too shitty code, but still I thought it right to report at least something, maybe this will help you.
Any auxmos revisions works as expected on Windows, tbh.

it may be caused by you loading maps on initialized turfs without setting the turfs to sleep. are you sure this is a linux-only bug?

Could also be __detect_auxtools still sucking for linux

@jupyterkat here is backtrace with latest https://github.com/BeeStation/auxmos on the https://github.com/frosty-dev/white
bt.txt

probably related to this https://github.com/Amanieu/parking_lot/issues/212

i know that's the issue, but your backtrace provides me with nothing useful, i said backtrace on all the threads?

sorry, here is it
gdb.txt

@Valtosin You might want to try this version, @Lohikar modified it to use a channel instead of a vector. Worked fine in local testing but I've not been able to reproduce this issue myself, being primarily on Windows (and it doesn't happen in WSL2 for me).
https://github.com/out-of-phaze/auxmos/releases/tag/v2.3.0-channel

https://github.com/out-of-phaze/auxmos/releases/tag/v2.3.0-nonthreaded-resize
Try this one.

This one works perfectly, no runtimes about atmos and no deadlocks. Neat. I forgot to check if atmos works at all, but I hope it does.

I tested it locally, gases moved properly, burned properly, and I didn't suffocate to death on spawning in. Planetary atmos also appeared to work.

So, now it crashes on prod just because after a while, when this runtime appears:
[20:57:36] Runtime in spaceman_dmm.dm,32: Could not read Value(1, 18657).air
  proc name: auxtools stack trace (/proc/auxtools_stack_trace)
  src: null
  call stack:
  auxtools stack trace("Could not read Value(1, 18657)...")
  Auxtools Callbacks (/datum/controller/subsystem/callbacks): fire(0)
  Auxtools Callbacks (/datum/controller/subsystem/callbacks): ignite(0)
  Master (/datum/controller/master): RunQueue()
  Master (/datum/controller/master): Loop(2)
  Master (/datum/controller/master): StartProcessing(0)

I'll try to reproduce this also.

Right, entirely possible that I botched the modification in some subtly broken way. Literally all I did was move it out of a task and into the main thread, so maybe some references held by other threads are getting lost in the shuffle when the gas mixtures vector resizes?

So, no crashes for about two weeks. I think it's probably fixed for linux?


Normalizing aspects when computing Layout fig_inches

This fixes a bug when adjusting aspects in a Layout and setting the aspect_weight to a non-zero value. The previous bug made it incredibly fiddly to get the plot spacing in a gridded layout with non-square aspects right. Now when setting aspect_weight=1 you should always get a plot without excessive whitespace.

Wow, does this already address what I just said was possible at the start of my comment in https://github.com/ioam/holoviews/pull/444?  I.e., will the plot Jean-Luc drew at the top be what actually happens automatically when combining things that have the shapes (aspect ratios) shown there?

@jbednar This will really help make it easier to use the current system but this is not quite the same as properly nested Layouts. Right now, Layouts do not nest by design (they simple concatenate).
Otherwise, yes this makes it much easier to define the sort of Layout I showed in the PR - in fact that is exactly the layout we were trying to get working better!

Wow, does this already address what I just said was possible at the start of my comment in #444? I.e., will the plot Jean-Luc drew at the top be what actually happens automatically when combining things that have the shapes (aspect ratios) shown there?

Yes as long as those aspect_weight has been set to 1 and the aspect ratios have been set explicitly as I do not try to infer data derived aspect ratios. Example:
%%opts Area [aspect=3] Image [aspect=0.7] Layout [aspect_weight=1]
np.random.seed(13)
img = hv.Image(np.random.rand(10,10))
area = hv.Area(np.random.rand(10))
(img + img + area + area).cols(2)

Excellent!  That's a big step forward in usability (e.g. for many of Jean-Luc's thesis plots). I guess the tick/label generation code doesn't know about the axis squashing, and thus generates too many ticks and labels?

Bit annoyed as I'd thought I'd done this when I originally implemented all this but it seems I didn't commit it and it's not actually been working properly ever since (this was pre-1.3). Also the only reason aspect_weight isn't a boolean respect_aspects or similar is because this bug made it really hard to achieve a good layout. Glad it's finally fixed though.

Makes sense.  I always thought this should be easily fixable!  (Not that I ever dived into the code to try to fix it myself...)

I guess the tick/label generation code doesn't know about the axis squashing, and thus generates too many ticks and labels?

Right, it's easy enough to change them yourself and I'd rather not complicate the layout code much more for now, better to wait until we decided what we decide on to improve layouts in general.

Makes sense, though I actually don't know how to change them, so it's not easy for me.  Plus when people start changing them, their code will have those specific fixes in each plot, causing forwards compatibility problems for them when they later upgrade to where we fix them more generally.

Plus when people start changing them, their code will have those specific fixes in each plot, causing forwards compatibility problems for them when they later upgrade to where we fix them more generally.

Explicitly setting xticks or yticks will always take precedence over some automatically derived setting. The valid formats for xticks are integers for the number of ticks, a list of positions, or a list of tuples specifying (position, label).

Tests are passing, which means we're not actually testing this anywhere. I'll add an example to Containers once this is merged.

Ok, I'm really happy this is working well (again?). Definitely a great thing to have in 1.4.2.


⚠ Bofrost.at has degraded performance

In 27b3c86, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1544 ms

Resolved: Bofrost.at performance has improved in d5ad055 after 42 minutes.


Should compare between configuration files and what exists

Currently:

if a resource is removed from config files it won't be removed from vault when the tool is run
if an already existing user is updated it will also generate a new password for them

Instead we should have:

Comparison of existing entities in vault and entities in the config is made, and reconciled
If a user already exists instead of replacing them it should just update their policies but leave them with the same password

Agree.

FYI... can't list users in Vault so hard to reconcile them:
https://github.com/hashicorp/vault/issues/111
for the moment will look at reconciling by relying on reading user details from kubernetes secrets (will work for application vault logins anyway...)

This has been implemented now. It uses details of vault user secrets in kubernetes to reconcile users


[Nexus] - Add JAVA_TOOL_OPTIONS as env variable to nexus_proxy container

Hello,
Would it be possible to add a new env variable called JAVA_TOOL_OPTIONS to the env part for nexus_proxy container on the helm chart?
The reason is this way we can manage the Java options for memory on this pod like it's done for the main nexus container.
Specs for the nexus_proxy, based on the docker image quay.io/travelaudience/docker-nexus-proxy
https://github.com/travelaudience/nexus-proxy#environment-variables
It would go something like this:
On the deployment-statefulset.yaml file
- name: JAVA_TOOL_OPTIONS
     value: {{ .Values.nexusProxy.env.javaOptions | quote }}

Example on values file would be something like:
- name: JAVA_TOOL_OPTIONS
     value: "-Xms3G -Xmx3G -XX:MaxDirectMemorySize=3G

Fir the moment I've tested adding the setting directly on the deployment and the new settings can be checked out on the pod itself using:
java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

Thanks for your help

Ay,
I've created a pull request for it : https://github.com/Oteemo/charts/pull/263 :)


Upgrade babel-plugin-webpack-loaders to 0.3.2

This might fix appveyor issue. https://github.com/istarkov/babel-plugin-webpack-loaders/issues/21
Anyway, can we have greenkeeper to keep deps up to date ? @MoOx

Thanks.
Adding greenkeeper.


multiline and multistatement parsing and evaluation

support for multiline and multi statements

removed _ prefix from function names
multiple statements in same-line parsing and evaluation
multiline statements parsing and evaluation

please squash.

already squashed :)


Add Preferences Support

I took what @ChrisMorrisOrg started, get some feedback from #62 and this is what you get.
Its not as clean as i want, but is what i get.
Feel free to comment.
The whole idea is to implement a preference section with reusable components (file selector, text, checkbox) and pass parameters to them.
The only active right now is Download Path (help text needs rewording)

Also, commented is a checkbox preference (Tray disable) which is not working, but you can comment out and see how the pref is saved.

You can also see how a section will be displayed
@dcposch @feross feel free to use the branch to make the change you want.

k, i'm merging this today and we can fix it on master
@grunjol @ChrisMorrisOrg thanks for the work!

Nice!!

Nice to see this merged.
As you said, we have a lot of work to do now. First step, define and homogenize styles.


Topics to cover

[ ] What is an MPI communicator. What is the difference between MPI.COMM_WORLD and MPI.COMM_SELF.
[x] Introduction to ipyparallel (#6)
[ ] How scatter gather works for MPI.COMM_WORLD.
[ ] How alltoall works and how alltoallv works
[ ] Neighbourhood communicators, and how they differ from the "standard" ones
[ ] Create_dist_graph.
[ ] alltoallv for neigh comms, how this can be efficiently used

One question: what's the right level of detail and explanation? e.g. in #6 I implemented examples from an existing tutorial. It seems a bit silly to copy/paste everything from there, but what I have so far is the bare minimum (no explanation, only external links).
When adapting an existing tutorial, I think it probably makes sense to:

include a brief high-level description of what is covered (i.e. what is send/recv, what is it for)
link to existing tutorial with reference for more detail
add any discussion specific to us that's not in the original (e.g. Python types, numpy, buffers)

I think we should also come up with a clear description of who our tutorial is for, and how it is distinct from vs links to other tutorials.

Here is the resource that Jørgen posted: https://newfrac.gitlab.io/newfrac-fenicsx-training/05-dolfinx-parallel/dolfinx-parallel.html
How about creating an "MPI for Dolfinx" tutorial similar to the above link? That one's outdated in terms of the dolfinx version, the code doesn't work with the newest dolfinx version.

What I had in mind was to make a tutorial that is more interactive that the once we have mentioned previously. Those usually have a program in one cell/block, such as
from mpi4py import MPI
import dolfinx
import dolfinx.io

# DOLFINx uses mpi4py communicators.
comm = MPI.COMM_WORLD

def mpi_print(s):
    print(f"Rank {comm.rank}: {s}")

# When you construct a mesh you must pass an MPI communicator.
# The mesh will automatically be *distributed* over the ranks of the MPI communicator.
# Important: In this script we use dolfinx.cpp.mesh.GhostMode.none.
# This is *not* the default (dolfinx.cpp.mesh.GhostMode.shared_facet).
# We will discuss the effects of the ghost_mode parameter in the next section.
mesh = dolfinx.UnitSquareMesh(comm, 1, 1, diagonal="right", ghost_mode=dolfinx.cpp.mesh.GhostMode.none)
mesh.topology.create_connectivity_all()

mpi_print(f"Number of local cells: {mesh.topology.index_map(2).size_local}")
mpi_print(f"Number of global cells: {mesh.topology.index_map(2).size_global}")
mpi_print(f"Number of local vertices: {mesh.topology.index_map(0).size_local}")
mpi_print("Cell (dim = 2) to vertex (dim = 0) connectivity")
mpi_print(mesh.topology.connectivity(2, 0))

or they are split into static chunks, such as
https://mpitutorial.com/tutorials/mpi-send-and-receive/
I think we should follow how MPI tutorial does their code (but make it actually executable by using python and ipynb). And make sure we explain in detail what we are doing.


fix: transfer-sol get amount

There is not a typo here, so your PR is not going to be approved/merged.
The href value reading as: ${baseHref}&amount={amount} uses the string literal {amount} as a template string for the action/blink clients to replace with the value input by the user. Rather than your suggestion of putting in a specific value of the variable amount. So if your PR was merged, it would actually break.
Thanks for looking into issues though :)


Redis connection may be disconnected after a certain period of time

My teammate is testing Clipper with the private k8s cluster, he found a critical bug after some long tests.
The redis connections (redis - mgmt_frontend, redis - query_frontend) might be broken if there is no action during 30 minutes of starting Clipper cluster. The reason for this problem is that the session persistence time of SWLB is set to be short for our k8s cluster.
To resolve this problem, we have to turn on ‘tcp keepalive’ option in redox. I’m going to create a PR this monday.

Closed with #717


The system cannot find the file specified

ffmpeg-python does not work for me, not even the examples.

I tried using it in my own script and it threw the error. I tried running the example script, get_video_thumbnail.py, and it threw the same error. The files exist. I tried using absolute and relative paths, and neither changed anything. The problem tends to be on the .run() line, but I've noticed that in some cases, for unknown reasons, the issue was on the .output() line.
I'm using Windows 10, and I'm running PowerShell as an administrator.

Hello, please check my check my comment  Originally posted by @solaris7x in https://github.com/kkroening/ffmpeg-python/issues/392#issuecomment-662977896
Hope it helps


Unsupported hardware error is misleading

[W NNPACK.cpp:79] Could not initialize NNPACK! Reason: Unsupported hardware.

CPU: AMD A8-7650K Radeon R7 4C+6G (4) @ 3.300GHz
GPU: AMD ATI Radeon RX 5500/5500M / Pro 5500M
OS: Manjaro Linux
Drivers: free

The program works, but it is not obvious after this error.
Probably add Warning: before error message?

This is related to your GPU and pytorch, This thread shows to to hide it, they suggest

You can pass USE_NNPACK=0 to the setup.py following the instructions to build from source from here


How to specify position: fixed?

isFixed – doesn't explain a lot.

I think we should not support this:

it is very simple to do this just by having a scrollable view inside a view that has the same size as the window. anything that should be "fixed" can be done as a child of the view that contains the scrollable one
It is fundamentally broken in iOS, and flaky in other browsers
it is kind of a weird feature. being able to really easily change the size of your things according to the window size, there is no reason not to go with the "fullscreen view" with the scrollable view inside approach, which is more robust

Also the "view with scrollable view inside" approach can be demoed and tested in divs, and does not require weird iframes or anything like that. and works in web and native.


Beer song fails CI

Uses recursion and string templates with COND.
https://github.com/exercism/abap/runs/4762476583?check_suite_focus=true
Checking beer-song exercise...
beer-song /solution /output
beer-song: testing...
initialize: 26ms
syntaxAndDownport: 69714ms
Docker total runtime: 70.49 seconds
./bin/test: 50: [: 1c1: unexpected operator
1c1
< {"version":1,"status":"error","message":"./zcl_beer_song.clas.abap[32, 10] - Variable \"TEMP1\" contains unknown: UNDEFINED not found, lookup (unknown_types) [E]
abaplint: 1 issue(s) found"}
\ No newline at end of file
---
> {"version":1,"status":"pass"}
\ No newline at end of file

fixed, closing


(openssl.light) path not set during choco install

Expected Behavior
choco install adds an entry to the path to either the default install dir/bin or the custom install dir/bin
Current Behavior
no path entry is made
Possible Solution
Add an Install-ChocolateyPath
Steps to Reproduce (for bugs)

cinst -y openssl.light
restart shell
write-host $env:path
no entry for openssl

Context
you have to manually add the path to use openssl via the cli
Your Environment

Package Version used: <IP_ADDRESS>000000
Operating System and version: windows 7
Chocolatey version:
Install/uninstall gist:

I'll be sending a PR for this shortly


update auto distribute

update auto-distribute for ppo
run as :
mpirun -n 8 python train.py --episode 1000 --device_target GPU --enable_distribute True --worker_num 8
get 8 workers (1 learner and 7 actors)

These two commits should be merged into a single one.


Add compiler('cuda') to ucxx builds.

Some build failures have been occurring on CUDA 12. This PR fixes the builds by adding a build dependency on compiler('cuda') for CUDA 12 in the ucxx package.
Also includes changes from #107.
-- Found Threads: TRUE
CMake Error at /opt/conda/conda-bld/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/cmake/rmm/rmm-config.cmake:157 (thrust_create_target):
  Unknown CMake command "thrust_create_target".
Call Stack (most recent call first):
  /opt/conda/conda-bld/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/cmake/ucxx/ucxx-dependencies.cmake:23 (find_package)
  /opt/conda/conda-bld/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/cmake/ucxx/ucxx-config.cmake:81 (include)
  CMakeLists.txt:28 (find_package)

-- Configuring incomplete, errors occurred!
Traceback (most recent call last):
  File "/opt/conda/conda-bld/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.10/site-packages/skbuild/setuptools_wrap.py", line 666, in setup
    env = cmkr.configure(
  File "/opt/conda/conda-bld/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeho/lib/python3.10/site-packages/skbuild/cmaker.py", line 357, in configure
    raise SKBuildError(msg)

/merge

Thanks all! 🙏


chore: add note lookupv3 default configs

This PR:

Adds new default configuration for NoteLookupCommand.
Change NoteLookupCommand to respect default configuration.
Fixes breaking tests that are affected by the new configuration.
Adds migration (placeholder until release version is confirmed) for new configuration.

This looks good. Just a heads up that we should normally avoid leaving commented parts in the code and instead do a separate task for the migration. Can you add a backlog item to do the config migration?

This looks good. Just a heads up that we should normally avoid leaving commented parts in the code and instead do a separate task for the migration. Can you add a backlog item to do the config migration?

My bad. I'll add a backlog to clean it up / do the actual config migration.


hotfix: move streams application reset tool from tools to core

=> required to remove core dependency from tools

anyof @ewencp @ijuma @enothereska @gwenshap @sriramsub @guozhangwang @dguy @miguno

A few things:

Can we have a JIRA for this? Generally, we want to track changes that cause a new RC in the release notes.
Can someone familiar with this tool test that it still works as expected?
Can someone send an email to the RC thread explaining that we need a new RC along with the reasoning?

So after discussion of public API, this seems fine as long as we can address @ijuma's points.

It would be great to address the remaining points so that we can respin a new RC for <IP_ADDRESS>. As far as I can tell, they are:

Update the PR title to have the JIRA id (i.e. KAFKA-4008)
Retest that the tool still works after this change
Update javadoc of the tool to make it clear that the class is not public API, people should not expect compatibility (i.e. the package name is likely to change and there may be other incompatible changes) and the script should be used if compatibility is desired (phrased in a better way).

@ijuma @ewencp
Added one commit to update JavaDoc.
Changed PR title.
Integration test passed locally. Also tested successfully via command line.

LGTM


[PDN issue] How to match/align the power grids of macros with the power grids of the die

Description
Hi, I am trying to do a manual macro placement with OpenLane. When the macros are relatively large, the manual macro placement was implemented well. However, with the same top design, I made each macro to be placed relatively smaller, i.e. changed the FP_PDN_VPITCH and FP_PDN_HPITCH to smaller value like 10 or 20, then I met the errors shown in the end. I believe it is the issue of mismatching the power grids between small macros and the whole die. Since I try to set the pitch values to make the grids to be aligned but it still showed some errors. May I know how to solve such a mismatching issue? Any suggestions? Thanks!
Environment
python3 ./env.py issue-survey
WARNING: issue-survey appears to be running inside the OpenLane
container.

This makes it difficult to rule out issues with your
environment.

Unless instructed specifically to do so, please run this command
outside the OpenLane container.
---

Kernel: Linux v4.15.0-189-generic
Distribution: centos 7
Python: v3.6.8 (OK)
OpenLane Git Version: 4476a58407d670d251aa0be6a55e5391bb181c4e
pip: INSTALLED
python-venv: INSTALLED
---
PDK Version Verification Status: OK
---
Git Log (Last 3 Commits)

4476a58 2022-07-29T16:03:10+02:00 Sky130 Enhancements (#1240) - Mohamed Gaber -  (HEAD -> master, tag: 2022.07.30, origin/master, origin/HEAD)
4f63c8c 2022-07-27T17:26:27+02:00 Various CI Fixes (#1235) - Mohamed Gaber -  (tag: 2022.07.28)
0b55101 2022-07-26T20:37:20+02:00 [BOT] Update openroad_app (#1219) - Openlane Bot -  (tag: 2022.07.27)
---
Git Remotes

origin	https://github.com/The-OpenROAD-Project/OpenLane.git (fetch)
origin	https://github.com/The-OpenROAD-Project/OpenLane.git (push)

Reproduction Material
issue_reproducible.zip
Expected behavior
The manual macro placement with small macro designs should pass the PDN step and be implemented without error all the way to the end.
Logs
[STEP 7]
[INFO]: Generating PDN...
[ERROR]: during executing openroad script /openlane/scripts/openroad/pdn.tcl
[ERROR]: Log: designs/fpga_core/runs/RUN_2022.08.10_02.40.12/logs/floorplan/7-pdn.log
[ERROR]: Last 10 lines:
[INFO ODB-0130]     Created 78 pins.
[INFO ODB-0131]     Created 10431 components and 29537 component-terminals.
[INFO ODB-0133]     Created 979 nets and 1840 connections.
[INFO ODB-0134] Finished DEF file: /openlane/designs/fpga_core/runs/RUN_2022.08.10_02.40.12/results/floorplan/fpga_core.def
[INFO PDN-0001] Inserting grid: stdcell_grid
[WARNING PDN-0178] Remaining channel (5.2800, 540.0000) - (994.3000, 580.0000) on met4 for nets: VGND
[WARNING PDN-0178] Remaining channel (99.7200, 540.0000) - (821.3200, 580.0000) on met4 for nets: VGND
[ERROR PDN-0179] Unable to repair all channels.
PDN-0179
child process exited abnormally

[ERROR]: Creating issue reproducible...

Without looking at your test case I would guess you have channels between your macros that are too small.  Would you include a screen shot around the areas reported in the warnings.

Without looking at your test case I would guess you have channels between your macros that are too small. Would you include a screen shot around the areas reported in the warnings.

Thanks for the reply! Sure, please find the screenshots below:
[WARNING PDN-0178] Remaining channel (5.2800, 540.0000) - (994.3000, 580.0000) on met4 for nets: VGND

[WARNING PDN-0178] Remaining channel (99.7200, 540.0000) - (821.3200, 580.0000) on met4 for nets: VGND

Actually, I do not quite understand what/where the "channels" are. The screenshots are just taken based on the indication of the warning messages. Are the "channels" gaps between macros or something else?

The channel is the region between macros.  I've highlighted it:

I think this dimension is too small and you can't fit a power strap in there.  If you spread the macros a bit further apart in Y I think it will resolve the issue.

The channel is the region between macros. I've highlighted it:
I think this dimension is too small and you can't fit a power strap in there. If you spread the macros a bit further apart in Y I think it will resolve the issue.

Thanks! I increased the spacing but stuck on some issue in PDN step for a long time. Finally I find a way to solve the issue of PDN by using advanced power grid settings.

Hi, I am experiencing a similar error and was wondering what steps you took to solve the issue using the advanced power grid settings. Thanks!

Hello, Could you help me with these questions?

What did you do to generate these images?

I mean, how can I see image like that of my own design?

@Baungarten-CINVESTAV You can open the design in the OR gui.  I don't know which flow you are using but the basic function is "openroad -gui" and then load your design.


Ask a question about version comparison

https://stackoverflow.com/a/53387532
https://jsfiddle.net/vanowm/p7uvtbor/
I can't comment in stackoverflow, sorry to bother you here.Your idea is great, it solved my problem, thank you very much.
But 1.5-dev should be less than 1.5-beta
But it will return 1.5-dev > 1.5-beta
Your code:
const compareVersions = ((prep, l, i, r) => (a, b) =>
{
    a = prep(a);
    b = prep(b);
    l = Math.max(a.length, b.length);
    i = 0;
    r = i;
    while (!r && i < l)
        //convert into integer, uncluding undefined values
      r = ~~a[i] - ~~b[i++];

    return r < 0 ? -1 : (r ? 1 : 0);
})(t => ("" + t)
    // treat non-numerical characters as lower version
    // replacing them with a negative number based on charcode of first character
  .replace(/[^\d.]+/g, c => "." + (c.replace(/[\W_]+/, "").toUpperCase().charCodeAt(0) - 65536) + ".")
    // remove trailing "." and "0" if followed by non-numerical characters (1.0.0b);
  .replace(/(?:\.0+)*(\.-\d+(?:\.\d+)?)\.*$/g, "$1")
    // return array
  .split("."));

Modified code:
Added a channel array so that channels can be handled more accurately.
const compareVersions = (a: string, b: string) => {
  const prep = (version: string) => {
    const channelOrder = ['dev', 'alpha', 'beta', 'rc']
    const channelRegex = new RegExp(`(?:-|\\s)(${channelOrder.join('|')})|$`, 'gi')
    return version
      .toLowerCase()
      .replace(channelRegex, (_, m) => {
        const position = m ? channelOrder.indexOf(m.toLowerCase()) : channelOrder.length
        return '.' + (position >= 0 ? position + 1 : channelOrder.length + 1)
      })
      .replace(/[^.\d]+/g, '.0.')
      .split('.')
      .map((v) => (v === '' ? 0 : parseInt(v, 10)))
  }

  const v1 = prep(a)
  const v2 = prep(b)
  const length = Math.max(v1.length, v2.length)

  for (let i = 0; i < length; i++) {
    const num1 = i < v1.length ? v1[i]! : 0
    const num2 = i < v2.length ? v2[i]! : 0
    if (num1 !== num2) {
      return num1 < num2 ? -1 : 1
    }
  }
  return 0
}

Yeah, it's not perfect, unfortunately there is no "standard" for this type of versioning.
You probably should post your own version there, so others might benefit from it.

Also, dev before beta is arguable. In my understanding, dev and nightly (which I'd think are same thing) would be closer to the final than alpha or beta.
Just for fun here is reply from Copilot AI:

Alpha, Beta, Release Candidate (RC), Stable/Production, Nightly, Dev/Development, Snapshot, Gamma, Delta, EAP (Early Access Program), LTS (Long-Term Support), GA (General Availability).
and from Chat GPT4:
Pre-Alpha, Alpha, Beta, Beta 2, Release Candidate (RC), RC 2, Dev (Development), Nightly, General Availability (GA), Stable, Patch Release, Minor Update, Major Update, Long Term Support (LTS), Maintenance Release, End of Life (EOL)

Also, dev before beta is arguable. In my understanding, dev and nightly (which I'd think are same thing) would be closer to the final than alpha or beta.

Thank you for your response, @vanowm.
I appreciate the clarification and understand the complexity involved in version comparison, especially when non-standard versioning practices are utilized.
Based on our discussion, I suggested implementing a custom priority system configured to better handle version sequences. I've tried to apply this idea in my code modifications, but I'm still encountering some issues. My depth of understanding in JavaScript might not be sufficient to effectively resolve these.
Also, I believe it would be beneficial to share this comparison function under your answer on Stack Overflow, as you suggested.
Your approach to version comparison is excellent. Thank you very much for your assistance and for sharing your expertise.


frostdb: add compactorPool to limit compaction goroutines

This commit adds a worker pool of goroutines (runtime.NumCPU by default) per database that will iterate over all the tables in that database and attempt to perform a compaction every defined sweep interval (100ms by default).
The compaction logic has not been modified.
This PR also adds a compacting atomic boolean to the granule so that no two goroutines attempt to compact the same granule. Previously, I think this was the case because the only atomic that was checked was pruned, which is only set once the granule has been pruned from the index.
Closes #119

I think that's a great idea @maxbrunet, thanks for the suggestion.

I think overall I'm fine with this change, my only question is if we considered instead of doing a sweep, we do a notify? Where after adding to a granule and determining it requires compaction we send that granule pointer over on a channel to the compaction pool? Notify might be more responsive, obviously does have the drawback of potentially blocking on the channel writes.

Yep! #119 has some discussion on this and the main takeaway is that we want to keep the insert path non-blocking. Another option is to use condition variables, but those still acquire locks to signal and it'd be to trigger a sweep rather than sending the pointer anywhere. I think an interval sweep style is probably a good approach for now since it's tunable.

I think overall I'm fine with this change, my only question is if we considered instead of doing a sweep, we do a notify? Where after adding to a granule and determining it requires compaction we send that granule pointer over on a channel to the compaction pool? Notify might be more responsive, obviously does have the drawback of potentially blocking on the channel writes.

Yep! #119 has some discussion on this and the main takeaway is that we want to keep the insert path non-blocking. Another option is to use condition variables, but those still acquire locks to signal and it'd be to trigger a sweep rather than sending the pointer anywhere. I think an interval sweep style is probably a good approach for now since it's tunable.

Sounds great to me


feat: add-content-tabs-in-code-examples-in-reference-section

Description
We've a bunch of code snippets / examples on KeptnMetricsProvider and KeptnTaskDefinition CRD reference pages that are listed vertically.

This PR groups related examples in tabs as instructed in the issue.
Creates slugified anchor tags for each tab ensuring we don't have any broken reference on the page.

slugify: !!python/object/apply:pymdownx.slugs.slugify
       kwds:
         case: lower

Here's the Video Preview:
Screencast from 09-02-24 04:18:31 PM IST.webm
Fixes #2922
Checklist

[x] My PR fulfills the Definition of Done of the corresponding issue and not more (or parts if the issue is separated
into multiple PRs)
[x] I used descriptive commit messages to help reviewers understand my thought process
[x] I signed off all my commits according to the Developer Certificate of Origin (DCO)
see Contribution Guide
[x] My PR title is formatted according to the semantic PR conventions described in
the Contribution Guide
[x] My code follows the style guidelines of this project (golangci-lint passes, YAMLLint passes)
[x] I have performed a self-review of my code
[ ] My changes result in all-green PR checks (first-time contributors need to ask a maintainer to approve their test runs)

Hi @mowies, I've made the required changes.
The spell checker actions is failing: kwds is not a recognized word.

This probably can be ignored ;)

Hi @mowies, I've made the required changes. The spell checker actions is failing: kwds is not a recognized word.
This can be ignored ;)

Hi @vishalvivekm thank you for contribution! :)
Please add kwds into the recognized words list. The list is present in .github/actions/spelling/expect.txt
Thank you!

@mowies I've done the required changes, the Spell Checker workflow is failing though.

Hi @mowies, I've made the required changes. The spell checker actions is failing: kwds is not a recognized word.
This can be ignored ;)

Hi @vishalvivekm thank you for contribution! :)
Please add kwds into the recognized words list. The list is present in .github/actions/spelling/expect.txt
Thank you!

Thanks @odubajDT, it was helpful and all checks are passing! :)

No problem :) Can you please have a look also on the failing yaml and markdown lint checks? Thank you!

Thank you! I fixed the yaml one.
For Markdown lint checks:
There are two types of issues that the action highlightes:

MD051/link-fragments Link fragments should be valid [Context: "[Example 3: functionRef for a python-runner runner](#example-3-functionref-for-a-python-runtime-runner)"]
It's happening due to the changes like :

Before: ### Example 3: functionRef for a python-runtime runner
After: === "Example 3: functionRef for a python-runtime runner"

These aren't really an issue in my opinion as the extension:
  - pymdownx.tabbed:
      alternate_style: true
      slugify: !!python/object/apply:pymdownx.slugs.slugify
        kwds:
          case: lower

generates the corresponding anchor tags ( i.e. in this case example-3-functionref-for-a-python-runtime-runner) for each content tab on runtime and I've checked 'em all.

2nd type:  [Expected: fenced; Actual: indented]
So for content tab, mkdocs necessarily requires same indentation for either plain text or code snippets in markdown.
Now, if we fence the plain text too, we'll lose the original formatting and it will look like this:

Ideally and ( currently ) it looks like :

Given the explanation above, I think it makes sense to go ahead and disable these specific markdown lint checks in the sections of the two pages, where changes are made.

[MD051] link-fragments - Link fragments should be valid
[MD046] code-block-style - Code block style

Please let's try to fix the MD linter errors. Here are the logs from the test
docs/docs/reference/crd-reference/taskdefinition.md:38:1 MD007/ul-indent Unordered list indentation [Expected: 4; Actual: 2]
docs/docs/reference/crd-reference/taskdefinition.md:47:5 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:50:1 MD007/ul-indent Unordered list indentation [Expected: 4; Actual: 2]
docs/docs/reference/crd-reference/taskdefinition.md:54:5 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:92:11 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:96:11 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:209:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:212:121 MD013/line-length Line length [Expected: 120; Actual: 137]
docs/docs/reference/crd-reference/taskdefinition.md:212:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:228:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:230:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:257:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:259:121 MD013/line-length Line length [Expected: 120; Actual: 137]
docs/docs/reference/crd-reference/taskdefinition.md:259:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:265:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:267:121 MD013/line-length Line length [Expected: 120; Actual: 139]
docs/docs/reference/crd-reference/taskdefinition.md:267:23 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:280:19 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:282:121 MD013/line-length Line length [Expected: 120; Actual: 132]
docs/docs/reference/crd-reference/taskdefinition.md:282:19 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:297:19 MD033/no-inline-html Inline HTML [Element: a]
docs/docs/reference/crd-reference/taskdefinition.md:299:121 MD013/line-length Line length [Expected: 120; Actual: 132]
docs/docs/reference/crd-reference/taskdefinition.md:299:19 MD033/no-inline-html Inline HTML [Element: a]

MD033/no-inline-html Inline HTML [Element: a]

Hi, to avoid the MD051( why is this happening I've explained in this comment: https://github.com/keptn/lifecycle-toolkit/pull/3005#issuecomment-1935866062 ):
MD051/link-fragments Link fragments should be valid
[Context: "[Example 3: functionRef for a python-runner runner](#example-3-functionref-for-a-python-runtime-runner)"]

I've used html anchor tags like this:
Example 3: functionRef for a python-runtime runner

which is now causing MD033/no-inline-html Inline HTML [Element: a] and at some places: MD013/line-length Line length as the elements have length >= 120 .
We'll have to allow  in the markdown, can I disable these linters for the anchor tags in the page using  syntax,  @odubajDT ?

MD033/no-inline-html Inline HTML [Element: a]

Hi, to avoid the MD051( why is this happening I've explained in this comment: #3005 (comment) ):
MD051/link-fragments Link fragments should be valid
[Context: "[Example 3: functionRef for a python-runner runner](#example-3-functionref-for-a-python-runtime-runner)"]

I've used html anchor tags like this:
Example 3: functionRef for a python-runtime runner

which is now causing MD033/no-inline-html Inline HTML [Element: a] and at some places: MD013/line-length Line length as the elements have length >= 120 . We'll have to allow  in the markdown, can I disable these linters for the anchor tags in the page using  syntax, @odubajDT ?

@vishalvivekm let's try to add the  element to the list of allowed elements here and see if it works for our use-case.
Regarding the line length, it should be ok to disable the line-length markdownlint check but only for that particular lines. Let's please not do that for bigger blocks.

All done @odubajDT

Thank you for your contribution!

:smile:
Thanks to you too, for offering your help and additional resources :sunglasses:

@vishalvivekm this looks already so much better 🚀 ! I was wondering if it makes sense to tab by example instead of by runtime. Most of the example use cases are present for both runtimes, and I think that would be an easier way to see each possible configuration...
eg.
Inline ex (both python and deno) Httpref ex (both)
and so on...
It is a bit difficult to search the page for specific examples right now

Makes sense @RealAnna , thank you for the review.
I'll go ahead and make changes.

@vishalvivekm this looks already so much better 🚀 ! I was wondering if it makes sense to tab by example instead of by runtime. Most of the example use cases are present for both runtimes, and I think that would be an easier way to see each possible configuration...
eg.
Inline ex (both python and deno) Httpref ex (both)
and so on...
It is a bit difficult to search the page for specific examples right now

Makes sense @RealAnna , thank you for the review. I'll go ahead and make changes.

done :heavy_check_mark: