Failed to start nats streaming server

Steps to reproduce:
After a server reboot I'm getting the following error on InfluxDB startup:
2021-01-13T16:38:31.182037Z     error   Failed to start nats streaming server   {"log_id": "0Rg9e0yl000", "error": "nats: no servers available for connection"}
Error: nats: no servers available for connection
The command I'm using to start is:
/usr/local/bin/influxd --engine-path=/ifdata/engine --bolt-path=/ifdata/influxd.bolt
The error does not happen if I don't pass my persistent engine-path as a parameter
Environment info:

System info: Linux 4.18.0-193.14.3.el8_2.x86_64 x86_64
InfluxDB version: InfluxDB 2.0.2 (git: 84496e507a) build_date: 2020-11-19T03:59:35Z

Config:
Only non-default variables are the engine path and bolt path:
--engine-path=/ifdata/engine --bolt-path=/ifdata/influxd.bolt

Logs:
2021-01-13T16:38:31.138603Z     info    Starting retention policy enforcement service   {"log_id": "0Rg9e0yl000", "service": "retention", "check_interval": "30m"}
2021-01-13T16:38:31.138640Z     info    Starting precreation service    {"log_id": "0Rg9e0yl000", "service": "shard-precreation", "check_interval": "10m", "advance_period": "30m"}
2021-01-13T16:38:31.138861Z     info    Starting query controller       {"log_id": "0Rg9e0yl000", "service": "storage-reads", "concurrency_quota": 10, "initial_memory_bytes_quota_per_query":<PHONE_NUMBER>854775807, "memory_bytes_quota_per_query":<PHONE_NUMBER>854775807, "max_memory_bytes": 0, "queue_size": 10}
2021-01-13T16:38:31.139609Z     info    Configuring InfluxQL statement executor (zeros indicate unlimited).     {"log_id": "0Rg9e0yl000", "max_select_point": 0, "max_select_series": 0, "max_select_buckets": 0}
2021-01-13T16:38:31.182037Z     error   Failed to start nats streaming server   {"log_id": "0Rg9e0yl000", "error": "nats: no servers available for connection"}
Error: nats: no servers available for connection
See 'influxd -h' for help

@felipecanhedo thanks for the issue. can you try the latest 2.0.4 and see if this is still an issue?

Hi, I'm facing the same issue.
Mar  4 18:35:28 myHOST influxd[2102]: ts=2021-03-04T18:35:28.265180Z lvl=error msg="Failed to start nats streaming server" log_id=0SgdDP~W000 error="nats: no servers available for connection"
Mar  4 18:35:28 myHOST influxd[2102]: Error: nats: no servers available for connection
Mar  4 18:35:28 myHOST influxd[2102]: See 'influxd -h' for help
I'm running in a RPI and the version is 2.0.4 (influxdb2-2.0.4-arm64.deb)

@luizmendesalmeida does the problem also only affect you if you change the --engine-path? Or does it always happen?

Hi @danxmoran,
I didn't change anything.
It was a straightforward install.

Hi @russorat ,
In my case it was "fixed" by starting over with a fresh --engine-path. It was seemingly corrupted after a server reboot with the service running.

Hi,
I forgot to mention I have one 2.0.4 instance running properly in Debian 10.

A customer has reported that this error can happen if you hit the max-open-file limit on your system.
At minimum, we should attach a logger to the NATS server to allow for better debugging. If possible, the error message included in the log should be improved.

A customer has reported that this error can happen if you hit the max-open-file limit on your system.
At minimum, we should attach a logger to the NATS server to allow for better debugging. If possible, the error message included in the log should be improved.

i have that same problem. Yesterday influxdb stopped working, spewed out errors regarding too many open http connections. The interwebz said this was due to the limit of open files linux allowed (1024). I increased the value for both my user and docker user and now it throws this error.
Welp!

I'm getting the same error. First, there was an error about too many open files. Then I increased the limit from 1024 to ulimit -n 65536 and now getting this error as does @Ing-Med.

Well, it seems that adding LimitNOFILE=65536 to the influxdb.service file did the trick.

Well, it seems that adding LimitNOFILE=65536 to the influxdb.service file did the trick.

Thanks for telling us your solution! Unfortunately i am running influxdb on docker, so i wouldn't know where to add that parameter.
And unfortunately this happend to me again, so if no one is able to pull that magic rabbit out of their hats, i'm switching back to v1.


Fix IOError in Windows when downloading model

Fix #919
In Windows, tempfile behaves differently than in Linux.
Use BytesIO instead of tempfile since info.json is usually small.
Tested in Windows with default compression (tar.gz) and with curl -XPOST download.zip.  Both worked without issues.

I haven't tested it, but this definitely looks like the right solution to me. @Lucaszw can you review and merge?

Tested and everything seems to be working fine! Thanks @IsaacYangSLA !


particles in flexbox layout

Is it possible to use particles as a background in a flexbox layout? I cant seem to find anything.

Did you try it?
I had the same question yesterday, didn't take me long to find out you can :)
https://codepen.io/digisam/pen/yoQYdB

This helped me
canvas {   position: fixed;   top: 0;   left: 0; }

Did you try it?
I had the same question yesterday, didn't take me long to find out you can :)
https://codepen.io/digisam/pen/yoQYdB

But links ain't working tho.. can you help?

Did you try it?
I had the same question yesterday, didn't take me long to find out you can :)
https://codepen.io/digisam/pen/yoQYdB

But links ain't working tho.. can you help?

Yeah.. I figured it out that you need to add
position: absolute;
or
position: relative;
Both works!
What happened is that  remaining elements  got z-index smaller than the background but we can't just change the z-index 'cause then you wouldn't find the background or the links won't work..
Just randomly tried using position: relative and it works. Basically it rests the position as the element in the document flow, ig.

glad you sorted it
link seems to be working ok for me

You Made my Day!!

This worked fine for me.
canvas {
position: absolute;
left: 0;
overflow: hidden;
}

This worked fine for me. Give it a try..
canvas {      position: absolute;      top: 10vh;     left: 0;      overflow: hidden; }

#particles-js { position: absolute; width: 100%; height: 100%; z-index: auto}
it helped me!


Preview build fails consensus checkpoint on Windows

It's been reported that the latest windows build fails the consensus checkpoint at block 320000:

I've reproduced by testing a --startclean on mainnet, on Windows, on a build based on our latest (8eb3afa9f12bdebb610b611a89254f639169baaf) and can confirm this does indeed stop parsing with a checkpoint failure at block 320000 when run on mainnet.
2015-09-03 05:28:39 VerifyCheckpoint(): consensus hash mismatch - expected 0b510ba8e4ba26e563337053922b31a4f2ec78eac62f73b4b70bad7d026a0b65, received 256f98ab9c32cc643abe94b03b014c984586c535a03ea84311d843966cee0562
2015-09-03 05:28:39 Shutting down due to failed checkpoint for block 320000 (hash<PHONE_NUMBER>00000015aab005b28a326ade60f07515c33517ea5cb598f28fb7ea)
2015-09-03 05:29:23 Shutdown requested, stop scan at block 320001 of 320004

Running the same commit on Linux does not encounter any consensus failures when run with --startclean on mainnet.

Linux & Windows differ on the math for crowdsale purchase 8fbd96005aba5671daf8288f89df8026a7ce4782a0bb411937537933956b827b.
Linux:
parseTransaction(block=315312, 2014-08-12 20:56:54 idx= 1149); txid: 8fbd96005aba5671daf8288f89df8026a7ce4782a0bb411937537933956b827b
	------------------------------
	         version: 0, class B
	            type: 0 (Simple Send)
	        property: 2 (TMSC)
	           value: 30.00000000
update_tally_map(18fMQUB86vgx3WaQnYBdx5D2d5zYN8zKtd, 2=0x2, -3000000000, ttype=0): before=5000000000, after=2000000000
update_tally_map(1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT, 2=0x2, +3000000000, ttype=0): before=0, after=3000000000
INVESTMENT SEND to Crowdsale Issuer: 1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT
logicHelper_CrowdsaleParticipation(): granting via crowdsale to user:<PHONE_NUMBER>8.67978007 2 (TMSC)
logicHelper_CrowdsaleParticipation(): granting via crowdsale to issuer:<PHONE_NUMBER>.86797800 2 (TMSC)
update_tally_map(18fMQUB86vgx3WaQnYBdx5D2d5zYN8zKtd,<PHONE_NUMBER>=0x80000030, +8384883669867978007, ttype=0): before=0, after=8384883669867978007
update_tally_map(1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT,<PHONE_NUMBER>=0x80000030, +838488366986797800, ttype=0): before=0, after=838488366986797800
eraseMaxedCrowdsale(): ERASING MAXED OUT CROWDSALE from address=1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT, at block 315312 (timestamp:<PHONE_NUMBER>), SP:<PHONE_NUMBER> (Test token: 48 : 0x80000030)
eraseMaxedCrowdsale(): 2014-08-12 20:56:54
eraseMaxedCrowdsale(): 1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT : id=2147483696=80000030; prop=2, value=<PHONE_NUMBER>000, deadline: 1916-08-16 11:28:32 (1479B99E560)
updateSP(): updated entry for SP<PHONE_NUMBER> successfully
recordTX(8fbd96005aba5671daf8288f89df8026a7ce4782a0bb411937537933956b827b, valid=YES, block= 315312, type= 0, value=<PHONE_NUMBER>)

Windows:
parseTransaction(block=315312, 2014-08-12 20:56:54 idx= 1149); txid: 8fbd96005aba5671daf8288f89df8026a7ce4782a0bb411937537933956b827b
	------------------------------
	         version: 0, class B
	            type: 0 (Simple Send)
	        property: 2 (TMSC)
	           value: 30.00000000
update_tally_map(18fMQUB86vgx3WaQnYBdx5D2d5zYN8zKtd, 2=0x2, -3000000000, ttype=0): before=5000000000, after=2000000000
update_tally_map(1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT, 2=0x2, +3000000000, ttype=0): before=0, after=3000000000
INVESTMENT SEND to Crowdsale Issuer: 1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT
logicHelper_CrowdsaleParticipation(): granting via crowdsale to user:<PHONE_NUMBER>6.53967730 2 (TMSC)
logicHelper_CrowdsaleParticipation(): granting via crowdsale to issuer:<PHONE_NUMBER>.00808077 2 (TMSC)
update_tally_map(18fMQUB86vgx3WaQnYBdx5D2d5zYN8zKtd,<PHONE_NUMBER>=0x80000030, +8384883669653967730, ttype=0): before=0, after=8384883669653967730
update_tally_map(1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT,<PHONE_NUMBER>=0x80000030, +838488367200808077, ttype=0): before=0, after=838488367200808077
eraseMaxedCrowdsale(): ERASING MAXED OUT CROWDSALE from address=1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT, at block 315312 (timestamp:<PHONE_NUMBER>), SP:<PHONE_NUMBER> (Test token: 48 : 0x80000030)
eraseMaxedCrowdsale(): 2014-08-12 20:56:54
eraseMaxedCrowdsale(): 1CXnRrBm3NezYeAcu555Ubu7swwKsn26dT : id=2147483696=80000030; prop=2, value=<PHONE_NUMBER>000, deadline: 1916-08-16 11:28:32 (1479B99E560)
updateSP(): updated entry for SP<PHONE_NUMBER> successfully
recordTX(8fbd96005aba5671daf8288f89df8026a7ce4782a0bb411937537933956b827b, valid=YES, block= 315312, type= 0, value=<PHONE_NUMBER>)

Highlighted:
-Linux:
-granting via crowdsale to user:<PHONE_NUMBER>8.67978007 2 (TMSC)
-granting via crowdsale to issuer:<PHONE_NUMBER>.86797800 2 (TMSC)
+Windows:
+granting via crowdsale to user:<PHONE_NUMBER>6.53967730 2 (TMSC)
+granting via crowdsale to issuer:<PHONE_NUMBER>.00808077 2 (TMSC)

With verbose logging:

Ubuntu x64
Windows x64

It starts to differ here:
 calculateFundraiser: ratio *= satoshi_precision_ =<PHONE_NUMBER>1687949365000000000
 calculateFundraiser: ratio /= maxCreatable =<PHONE_NUMBER>78212887156
 calculateFundraiser: issuerTokens_int = issuerTokens_int * precision_ =<PHONE_NUMBER>880722669000000000000
 calculateFundraiser: issuerTokens_int *= satoshi_precision_ =<PHONE_NUMBER>88072266900000000000000000000
-calculateFundraiser: issuerTokens_int /= ratio =<PHONE_NUMBER>86797800
-calculateFundraiser: createdTokens_int = MAX_INT_8_BYTES - issuerTokens_int =<PHONE_NUMBER>867978007
-user:<PHONE_NUMBER>867978007
-issuer:<PHONE_NUMBER>86797800
+calculateFundraiser: issuerTokens_int /= ratio =<PHONE_NUMBER>00808077
+calculateFundraiser: createdTokens_int = MAX_INT_8_BYTES - issuerTokens_int =<PHONE_NUMBER>653967730
+user:<PHONE_NUMBER>653967730
+issuer:<PHONE_NUMBER>00808077

I tested different types of the boost::multiprecision library, and all of them have issues on Windows:
BOOST_AUTO_TEST_CASE(big_checked_int128_t)
{
    using boost::multiprecision::checked_int128_t;

    PrintToConsole("checked_int128_t:  max: %s\n",
            boost::lexical_cast<std::string>(std::numeric_limits<checked_int128_t>::max()));

    checked_int128_t num("131099371288072266900000000000000000000");
    checked_int128_t denom("156352045478212887156");
    checked_int128_t result = num / denom;
    checked_int128_t expected("838488366986797800");

    PrintToConsole("checked_int128_t:  %s / %s = %s (expected: %s)\n",
            boost::lexical_cast<std::string>(num),
            boost::lexical_cast<std::string>(denom),
            boost::lexical_cast<std::string>(result),
            boost::lexical_cast<std::string>(expected));

    BOOST_CHECK_EQUAL(expected, result);
}

I tested int128_t, int256_t, int1024_t and cpp_int.
All fail on Windows x64:

https://travis-ci.org/OmniLayer/omnicore/jobs/78651844#L2357-L2357

While it's fine with other OS:

https://travis-ci.org/OmniLayer/omnicore/jobs/78651843#L1587-L1594

This is critical, because, if simple calculations even within the range of int128_t fail, then it may also affect the MetaDEx.

This is critical, because, if simple calculations even within the range of int128_t fail, then it may also affect the MetaDEx.

Yep, if we can't trust up to int128_t that's a big problem :(
Can we get away without integer signing?  If so I wonder whether the existing implementations of uint160 and uint256 from uint256.h/uint256.cpp would serve our purposes?

This is an awesome idea!
The following checks all pass:

BOOST_AUTO_TEST_CASE(uint256_from_uint64_t)
{
    uint64_t number = 103242;

    base_uint<256> a(number);

    BOOST_CHECK_EQUAL(number, a.GetLow64());
}

BOOST_AUTO_TEST_CASE(uint256_add)
{
    uint64_t number_a = 103242;
    uint64_t number_b = 234324;
    uint64_t number_c = number_a + number_b;

    base_uint<256> a(number_a);
    base_uint<256> b(number_b);
    base_uint<256> c = a + b;

    BOOST_CHECK_EQUAL(number_c, c.GetLow64());
}

BOOST_AUTO_TEST_CASE(uint256_sub)
{
    uint64_t number_a = 503242;
    uint64_t number_b = 234324;
    uint64_t number_c = number_a - number_b;

    base_uint<256> a(number_a);
    base_uint<256> b(number_b);
    base_uint<256> c = a - b;

    BOOST_CHECK_EQUAL(number_c, c.GetLow64());
}

BOOST_AUTO_TEST_CASE(uint256_mul)
{
    uint64_t number_a = 503242;
    uint64_t number_b = 234324;
    uint64_t number_c = number_a * number_b;

    base_uint<256> a(number_a);
    base_uint<256> b(number_b);
    base_uint<256> c = a * b;

    BOOST_CHECK_EQUAL(number_c, c.GetLow64());
}

BOOST_AUTO_TEST_CASE(uint256_div)
{
    uint64_t number_a = 9;
    uint64_t number_b = 4;
    uint64_t number_c = number_a / number_b;

    base_uint<256> a(number_a);
    base_uint<256> b(number_b);
    base_uint<256> c = a / b;

    BOOST_CHECK_EQUAL(number_c, c.GetLow64());
}

Nice :)  Would you be able to run up a cross-platform test via Travis like you did earlier but instead using uint256?

This is what I'm going to test soon! :)
We might even just kick the boost includes, add a typedef and we're almost good to go.

Alright, as early test I just copied the crowdsale participation into the test:

crowdsale_participation_tests.cpp

Build ongoing:

https://travis-ci.org/OmniLayer/omnicore/builds/78739662

The overview will show errors due to OmniJ, which is unrelated. We have to look at the logs and see, whether the Boost tests (via make check) pass.

Assuming it does work (and I'm positive), then I'm going to restructure all uses of cpp_int and int128_t.
It's straight forward for plain int128_t, while we have to see what the actual ranges are for cpp_int.
It's probably a bit more tricky for the MetaDEx due to the rational number wrapper, but it seems so much easier compared to finding a solution for the general problem here.. (did I say you're the best!? hehe)

YES! The unit tests passed!

YES! The unit tests passed!

Awesome, thanks mate that's great!!!

I'm going to restructure

Thank you bud, really appreciated :)

Issue on 0.0.99-0.10
Windows Build from:
https://github.com/OmniLayer/omnicore/blob/omnicore-0.0.10/doc/metadextestingguide.md

Hey @nanomo, thanks for testing!
The preview hosted on omnichest.info does not include all fixes, which are part of the main branch. At the end of the week we're expecting to publish a release candidate and new binaries.
But just to confirm: do you also see the checkpoint error for block 320000, or another block?

Yes, its in the same block:
015-10-27 09:06:09 parseTransaction(block=319979, 2014-09-10 10:48:53 idx= 492); txid: 1a2aa1abae78cc7102432d2561752e3ddea5bb3c75f28b296209f917a04cdf81
2015-10-27 09:06:09 	------------------------------
2015-10-27 09:06:09 	         version: 0, class B
2015-10-27 09:06:09 	            type: 0 (Simple Send)
2015-10-27 09:06:09 	        property: 28 (SP token: 28)
2015-10-27 09:06:09 	           value:<PHONE_NUMBER>0
2015-10-27 09:06:09 update_tally_map(1EHZnScrDaRxnzTMWaBbXmDW4VHafqNnME, 28=0x1C, -90000000000, ttype=0): before=1762181200000000, after=1762091200000000
2015-10-27 09:06:09 update_tally_map(1PtyUTBHEjsSYZsZD7Z7X4DgZ41DhtbUG8, 28=0x1C, +90000000000, ttype=0): before=0, after=90000000000
2015-10-27 09:06:09 recordTX(1a2aa1abae78cc7102432d2561752e3ddea5bb3c75f28b296209f917a04cdf81, valid=YES, block= 319979, type= 0, value=<PHONE_NUMBER>0)
2015-10-27 09:06:11 VerifyCheckpoint(): consensus hash mismatch - expected 0b510ba8e4ba26e563337053922b31a4f2ec78eac62f73b4b70bad7d026a0b65, received 256f98ab9c32cc643abe94b03b014c984586c535a03ea84311d843966cee0562
2015-10-27 09:06:11 Shutting down due to failed checkpoint for block 320000 (hash<PHONE_NUMBER>00000015aab005b28a326ade60f07515c33517ea5cb598f28fb7ea)
2015-10-27 09:06:11 Shutdown requested, stop scan at block 320001 of 320002
2015-10-27 09:06:11 Exodus balance after initialization: 12935.59467744
2015-10-27 09:06:34
Omni Core shutdown completed
2015-10-27 09:06:34 Shutdown time: 2015-10-27 09:06:34

Hi guys - I was talking to @CraigSellars on Skype about this very issue yesterday!

The preview hosted on omnichest.info does not include all fixes

That's correct, but it does include #223

Yes, its in the same block # 320000, this its the version Omni Core version v<IP_ADDRESS>-b50c70e (64-bit)

The preview version currently on OmniChest is based on d62b0a9 - I just double checked to be sure:
2015-10-29 01:41:24 Build date: 2015-09-08 02:25:08 +0200, based on commit: d62b0a9
Could you please update to the preview currently hosted at OmniChest?  You would just need to re-download the file from the OmniChest from the links you noted in the MetaDEx testing guide.
Thanks for testing, please let us know how you get on! :)
Z

from the same place i downloaded the file "omnicore-<IP_ADDRESS>-dev-win64-setup" on 9/1/2015 now that file is not available to download, instead i downloaded today 10/29/2015 the file "omnicore-<IP_ADDRESS>-dev-win64" and i can confirm the bug is fixed, what a mess of versions :D
and... everithing this work and test to see that i have a balance of 0 OMNI from the bug bounty:
https://github.com/OmniLayer/omnicore/issues/216
LOL
thanks all you guys for the help

Yes, we removed the x64 setup temporarily because the build results were not deterministic and we wanted the build process to generate the same results and be repeatable by anyone.
Great to hear the bug is fixed for you :)
FYI regarding versions, these are development preview builds of 0.0.10 and so are labelled <IP_ADDRESS> - they're all previews of the same version (though we can determine the build by the commit ID).
Sorry to hear you haven't received your bounty yet, I've pinged Patrick and if we haven't heard anything by the next weekly meeting I'll raise it with the team.
Thanks again for testing!

I completely agree re: versioning. For the next time, I suggest we bump the version for each published version, even if it's a preview and not a proper release, instead of using the .9.99 scheme.


Can it be used with beacon? What are other usecases.

The readme isnt really clear to me.

I'll try to write some more in the readme.
The basic idea is that it turns your device into a "beacon" so that other users nearby can discovery you (and visa-versa)
It can _not _ be used with other existing beacon implementations.


goog.importScript_(goog.basePath + "deps.js");

Steps to reproduce:

build library
include via script tag
see an error popping up from the following line: goog.importScript_(goog.basePath + "deps.js");

What's this about?

does it work even with the error? or does it abort?

it seems to work even with the error, at least i haven't seen it breaking.

ah, then yea, the reason is because closure is looking for the deps file (which says where to find different files when goog.require()). I think this shouldn't happen when goog.COMPILED is true. How did you build the library? as the instructions?

yup :)

ok, Im syncing the codebases so will try to fix this on the way

did it fix it?

please reopen if its still a problem


[ImGui] Invalid texture data drawn on modal popups

axmol version: https://github.com/axmolengine/axmol/commit/a39b2e87db08fc506280ebab5f2d923832f4f9b2
devices test on:
developing environments

NDK version: r23c
Xcode version: 14.2+
Visual Studio:

VS version: 2022 (17.9+)
MSVC version: 19.39+
Windows SDK version: 10.0.22621.0+

cmake version:
Steps to Reproduce:

Attempting to draw an image within a modal popup results in invalid texture data:

See "Got visual Glitches?" in https://github.com/ocornut/imgui/releases/tag/v1.86
PR with fix will be up shortly.

With the fix in #2052 this is the output:


Update quantization to use tensor subclasses

Summary: In torchao, we are migrating our quantization flows from module swap to tensor subclasses. The existing Int8DynActInt4WeightQuantizer will be deprecated in the near future in favor of quantizing using the quantize_ API, so we should do the same in torchtune. This quantizer is currently only used by QAT, which also recently migrated to a tensor subclass implementation.
This also changes the eval script slightly since models quantized through the torchao tensor subclasses are expected to be loaded with assign=True (see this test). We should load the model similarly in torchtune.
 My main question is whether there is any logic that's BC breaking (i.e. can I run this as is on ao's 0.3.1, latest nightly, and anything in between?)

Good question. I haven't tested an older version of ao, but this change is needed to run the full end-to-end flow after the QAT subclass refactor. If there are concerns about breaking BC, maybe we should wait until we upgrade to torchao 0.5.0? (expected maybe mid-September)

Hi @ebsmothers, I think this is ready from my side. I saw that the torchao version is actually removed from pyproject.toml. Do we expect torchtune to only work with the latest version? Either way I tested the quantization and eval with both the module swap QAT (old torchao version) and the tensor subclass QAT (latest torchao version) and both work. Please take another look. Thanks.

@andrewor14 thanks for the ping. Yeah currently we will install whatever the latest stable version of torchao is. This is what we do in our CI and what we recommend our users to do as well (ofc we also support nightlies). So yes, the latest version of torchao should be sufficient here.

Just curious, does this work with FSDP2 recipes? Trying out INT8 mixed-precision with torchtune and I saw that in distributed recipes, load state dict uses assign=True, which will override the tensor subclass.
https://github.com/pytorch/torchtune/blob/ee343e61804f9942b2bd48243552bf17b5d0d553/torchtune/training/_distributed.py#L346
This is because we call torchao's quantize_() before loading state dict. @andrewor14 Did you check that the subclass ops are actually called?
One fix for this is to add DTensor support for quantize_() API (https://github.com/pytorch/ao/issues/803), which allows us to do quantize_() after fully_shard() and load state dict.


Remove non-public cluster setting from docs

Fixes DOC-9138
Summary of changes:

Remove mention of the non-public cluster setting kv.allocator.load_based_lease_rebalancing.enabled from the customer-facing docs for all supported versions.

As of this writing the supported versions of CRDB are: v22.1, v22.2, v23.1 (and we've also removed this mention from the docs for the upcoming v23.2)

cc @williamkulju FYI


[openmvs] build failure

Operating system
Ubuntu 22.04
Compiler
No response
Steps to reproduce the behavior
`vcpkg install openmvs`

Failure logs
[DEBUG] 1000: execute_process(curl --fail -L https://gitlab.gnome.org/GNOME/gtk/-/archive/3.24.38/gtk-3.24.38.tar.gz --create-dirs --output /home/vcpkg/downloads/GNOME-gtk-3.24.38.tar.gz.350643.part)
[DEBUG] 1000: cmd_execute_and_stream_data() returned 22 after 30063734 us
error: Missing GNOME-gtk-3.24.38.tar.gz and downloads are blocked by x-block-origin.
error: https://gitlab.gnome.org/GNOME/gtk/-/archive/3.24.38/gtk-3.24.38.tar.gz: curl failed to download with exit code 22
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

curl: (22) The requested URL returned error: 504

[DEBUG] /source/src/vcpkg/base/downloads.cpp(1030):
[DEBUG] Time in subprocesses: 30063734us
[DEBUG] Time in parsing JSON: 1us
[DEBUG] Time in JSON reader: 0us
[DEBUG] Time in filesystem: 194us
[DEBUG] Time in loading ports: 0us
[DEBUG] Exiting after 30 s (30064124us)

CMake Error at scripts/cmake/vcpkg_download_distfile.cmake:32 (message):

      Failed to download file with error: 1
      If you are using a proxy, please check your proxy setting. Possible causes are:

      1. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable
         to `https://address:port`. This is not correct, because `https://` prefix
         claims the proxy is an HTTPS proxy, while your proxy (v2ray, shadowsocksr
         , etc..) is an HTTP proxy. Try setting `http://address:port` to both
         HTTP_PROXY and HTTPS_PROXY instead.

      2. If you are using Windows, vcpkg will automatically use your Windows IE Proxy Settings
         set by your proxy software. See https://github.com/microsoft/vcpkg-tool/pull/77
         The value set by your proxy might be wrong, or have same `https://` prefix issue.

      3. Your proxy's remote server is out of service.

      If you've tried directly download the link, and believe this is not a temporary
      download server failure, please submit an issue at https://github.com/Microsoft/vcpkg/issues
      to report this upstream download server failure.

Call Stack (most recent call first):
  scripts/cmake/vcpkg_download_distfile.cmake:270 (z_vcpkg_download_distfile_show_proxy_and_fail)
  scripts/cmake/vcpkg_from_gitlab.cmake:113 (vcpkg_download_distfile)
  ports/gtk3/portfile.cmake:9 (vcpkg_from_gitlab)
  scripts/ports.cmake:192 (include)

error: building gtk3:x64-linux failed with: BUILD_FAILEDSee https://learn.microsoft.com/vcpkg/troubleshoot/build-failures?WT.mc_id=vcpkg_inproduct_cli for more information.
Elapsed time to handle gtk3:x64-linux: 30 s
Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
  https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+gtk3
You can submit a new issue at:
  https://github.com/microsoft/vcpkg/issues/new?title=[gtk3]+Build+error+on+x64-linux&body=Copy+issue+body+from+%2Fhome%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md

Additional context
For repo sources: gdk-pixbuf, pango, and gtk
The download phase of the install results in 504. I don't know if the recent outage affected them but it would be great to have fall back sources when the primary fails. In this case GNOME keeps a read only github that mirrors their gitlab.
So when
curl --fail -L https://gitlab.gnome.org/GNOME/gtk/-/archive/3.24.38/gtk-3.24.38.tar.gz --create-dirs --output /home/vcpkg/downloads/GNOME-gtk-3.24.38.tar.gz
fails it then tries
curl --fail -L https://github.com/GNOME/gtk/archive/refs/tags/3.24.38.tar.gz --create-dirs --output /home/vcpkg/downloads/GNOME-gtk-3.24.38.tar.gz

Check the error message and it turns out that an error occurred during gtk download. Please ensure that the network is unobstructed and confirm that the gtk download website can be opened normally.

Check the error message and it turns out that an error occurred during gtk download. Please ensure that the network is unobstructed and confirm that the gtk download website can be opened normally.

I wasn't able to access it before. Now it works and is accessible, but i guess my point still stands. If there are multiple sources available, it would be great to be able to use the fallbacks until all fallbacks have been exhausted instead of just giving up on the first failure.

I wasn't able to access it before. Now it works and is accessible, but i guess my point still stands. If there are multiple sources available, it would be great to be able to use the fallbacks until all fallbacks have been exhausted instead of just giving up on the first failure.

We only obtain source code from the upstream official website, and other sources cannot guarantee the uniformity of the code.

Thanks for posting this issue. Please reopen this issue if this is still a problem for you.


Question: what is the state of the project?

... but especially with respect to "nodeless" Kubernetes options such as Virtual Kubelet

Does this still apply?
Thanks

@rbitia have any of the issues that have prevented this from working as expected with VK or virtual nodes been addressed? (All those issues were not on the Osiris side.)

I was actually wondering if the issues that were preventing this from working were documented somewhere? I can't seem to fin them.


switch to using pathlib.Path everywhere

for readability, consistency

what would "everywhere" look like?

[ ] in csv module

I guess we could raise an extra polite FileNotFound error for csv_filename if it's parents don't exist yet?

[ ] in notmat, textgrid and phn modules, for loading files?

no, notmat uses pathlib via evfuncs now, textgrid package does whatever it does, phn just reads straight from text files <- which is one place where we could at least validate that the file exists? Not sure we need to bother though? Errors will be similar, not much we can add to FileNotFound

[ ] in validation._parse_file()

this function would be better named validate_extension; it uses PurePath just to check if something isinstance of a path, but doesn't do anything else we need to change

[ ] in notmat, textgrid and phn modules where we use os to try and do some extra path cleaning;

I don't think switching to pathlib actually helps us here, because there's still issues with Path.absolute() and Path.resolve() as described here: https://discuss.python.org/t/pathlib-absolute-vs-resolve/2573/19

I'm going to close this for now because it's not like there's any major bugs it would fix or huge benefits we'd get, and a lot of the changes would be obviated by a switch to a class-based format system anyway


Caching doesn't work with AutologinSession

There seems to be a problem with the cache and AutologinSession. After a completed run we get:
Traceback (most recent call last):
  File "/home/dbosk/.local/bin/ladok", line 8, in <module>
    sys.exit(main())
  File "/home/dbosk/.local/lib/python3.10/site-packages/ladok3/cli.py", line 340, in main
    args.func(ls, args)
  File "/home/dbosk/.local/lib/python3.10/site-packages/ladok3/data.py", line 158, in command
    for student, component, grade, time in data:
  File "/home/dbosk/.local/lib/python3.10/site-packages/ladok3/data.py", line 19, in extract_data_for_round
    results = ladok.search_reported_results_JSON(
  File "/home/dbosk/.local/lib/python3.10/site-packages/ladok3/__init__.py", line 332, in search_reported_results_JSON
    response = self.put_query(
  File "/home/dbosk/.local/lib/python3.10/site-packages/ladok3/__init__.py", line 114, in put_query
    return self.session.put(
  File "/home/dbosk/.local/lib/python3.10/site-packages/requests/sessions.py", line 647, in put
    return self.request("PUT", url, data=data, **kwargs)
  File "/home/dbosk/.local/lib/python3.10/site-packages/weblogin/__init__.py", line 50, in request
    for handler in self.__handlers:
AttributeError: 'AutologinSession' object has no attribute '_AutologinSession__handlers'

Turns out that requests.Session has a method __getstate__ that overrides the default. Since we don't define a new one in AutologinSession, that one is used --- and that one doesn't include the .__handlers attribute from AutologinSession.


Incorrect path in for captured system_info.txt

INFO:root:           ! call "postprocess" from<EMAIL_ADDRESS>INFO:root:         ! call "postprocess" from<EMAIL_ADDRESS>INFO:root:       ! cd /home/anandhu
INFO:root:       ! call<EMAIL_ADDRESS>from tmp-run.sh
WARNING: sudo permission is needed for some of the below commands
sudo numactl --hardware
sudo sysctl -a
System information has been saved to /home/anandhu//home/anandhu/system_info.txt

@anandhu-eng this is fixed right?

Yes @arjunsuresh , closing the issue


Merklee threes in Besu

Hi, we have a problem with our Besu nodes, they run out of space after a while, they consume a lot of disk space. I have read somewhere that with the use of Merklee Trees it is possible to solve this issue. I have not found anything in the documentation about this issue, is it possible with Hyperledger Besu to work with this technology?
Thanks

Hi, I think what you are searching is the --Xdata-storage-format=BONSAI argument. That's still an experimental feature and not recommended for production. You can find experimental/unstable features by usign the --Xhelp flag.
https://consensys.net/blog/news/bonsai-tries-a-big-update-for-small-state-storage-in-hyperledger-besu/

@damianlluch does this answer your question?


Added several links

This is great! Thanks for Contributing to AlgoWiki, have some 🌮 🌯 🍰  from AlgoWIki Team. 😄
Keep Contributing.
~
Vikesh


NRE when opening a tree in Bonsai Designer

Create a tree
Create a custom node
Add it to the tree
Remove the custom node

NullReferenceException: Object reference not set to an instance of an object Bonsai.Designer.BonsaiCanvas.CreateNode (Bonsai.Core.BehaviourNode behaviour) (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiCanvas.cs:49) Bonsai.Designer.BonsaiCanvas.ReconstructEditorNode (Bonsai.Core.BehaviourNode behaviour) (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiCanvas.cs:198) Bonsai.Designer.BonsaiCanvas.ReconstructEditorNodes (System.Collections.Generic.IEnumerable1[T] behaviours) (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiCanvas.cs:189)
Bonsai.Designer.BonsaiCanvas..ctor (Bonsai.Core.BehaviourTree tree) (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiCanvas.cs:27)
Bonsai.Designer.BonsaiEditor.SetBehaviourTree (Bonsai.Core.BehaviourTree tree) (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiEditor.cs:360)
Bonsai.Designer.BonsaiWindow.BuildCanvas () (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiWindow.cs:218)
Bonsai.Designer.BonsaiWindow.OnEnable () (at Assets/3rdParty/BonsaiBehaviourTree/Editor/BonsaiWindow.cs:61)`

Add Pull Request https://github.com/luis-l/BonsaiBehaviourTree/pull/28 to fix issue


Determine if the table is in with query, if so, it doesn't need catalog/schema in session context

StatementAnalyzer#visitTable should analyze if table is in WITH-Query, if so, it doesn't need to use toCatalogSchemaTableName

legacy issue.


Quiz Field support

Hi there
Great plugin but it does not support the "Quiz" Add-on in Gravity Forms...
Will you be able to add this functionality?
Thanks

is this an add-on plugin? how are quiz fields generated?

yes it is a Gravity Forms supported add-on ...
the fields are generated within gravity form: https://www.gravityforms.com/add-ons/quiz/

ok, let me see how that plugin adds their fields. i believe it’ll just require a filter

Hi again
Just following up on this - have you been able to create a solution/update yet?
Thanks


Support new bootstrap method in Flutter 3.22

Checklist

[X] The issue can be reproduced in the auth0_flutter sample app (or N/A).
[X] I have looked into the Readme, Examples, and FAQ and have not found a suitable solution or answer.
[X] I have looked into the API documentation and have not found a suitable solution or answer.
[X] I have searched the issues and have not found a suitable solution or answer.
[X] I have searched the Auth0 Community forums and have not found a suitable solution or answer.
[X] I agree to the terms within the Auth0 Code of Conduct.

Description
Description:
With the release of Flutter 3.22, the method for bootstrapping has changed, as outlined in the official documentation: Flutter Web Bootstrapping. As a result, the Auth0 integration no longer works with this new method.
Issue:
• The previous bootstrap method is now deprecated and will soon stop functioning entirely.
• The Auth0 package needs to be updated to support the new bootstrapping method introduced in Flutter 3.22.

Request:
Please provide support for the new bootstrap method in Flutter 3.22. This is crucial to ensure continued compatibility and functionality of Auth0 with Flutter web applications.
Thank you for your attention to this matter.
Reproduction
1 - Follow the guide to update the bootstrapping in: https://docs.flutter.dev/platform-integration/web/bootstrapping
2 - Try to build an web application with auth0_flutter: 1.7.2
Additional context
No response
auth0_flutter version
1.7.2
Flutter version
3.22
Platform
Web
Platform version(s)
No response

I'm facing the same issue. Auth0 becomes completely unusable for web and is critical for my workflow

Any updates on this?

Hi @EduardoYamauchi, @amangsingh, @Solano-Furlan,
Apologies for the delay in looking into this,
I've just tried using the flutter sdk version 1.7.2 with the flutter versions 3.22.0 & 3.24.0 in both debug, release modes and everything is working as expected, can anyone of you help us with a reproducible example or steps to reproduce ?

I tested again using:

auth0_flutter: 1.7.2
Flutter (Channel stable, 3.24.2, on macOS 14.6.1 23G93 darwin-arm64).

And everything's is working as expected. I'm closing this issue, if you still having some issue related with the new bootstrap please send me a message to re-open.
Thank you.

I’m reopening this issue due to the following error:
TypeError: Cannot read properties of undefined (reading 'Auth0Client')
packages/auth0_flutter/src/web/auth0_flutter_plugin_real.dart 30:25  initialize
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54   runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5   _async
packages/auth0_flutter/src/web/auth0_flutter_plugin_real.dart 27:26  initialize
packages/auth0_flutter/auth0_flutter_web.dart 56:44                  onLoad
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54   runBody

This error occurs randomly only when switching to the new bootstrap mode.
Steps to reproduce (on web):

Add the required line for the web version in the index.html (following the documentation):

<script src="https://cdn.auth0.com/js/auth0-spa-js/2.0/auth0-spa-js.production.js" defer></script>

Run the following lines:

void main() async {
  var auth0Client = Auth0Client();
  await auth0Client.auth0Web!.onLoad();
}

I have been patiently waiting for the resolution of the WASM issue, which has now been open for 4 months since June. This is particularly important as it relates to performance and security of our applications.

simply removing defer resolves it for me
<script src="https://cdn.auth0.com/js/auth0-spa-js/2.0/auth0-spa-js.production.js"></script>


[typescript-graphql-request] Missing Headers type import

Describe the bug

To Reproduce
Steps to reproduce the behavior:

My GraphQL schema:

type Foo {
  id: ID!
}

type Query {
  foo: Foo!
}

My GraphQL operations:

query test {
  foo {
    id
  }
}

My codegen.yml config file:

schema: ./schema.gql
documents: ./src/**/*.gql
overwrite: true
generates:
  ./src/index.ts:
    plugins:
      - typescript
      - typescript-operations
      - typescript-graphql-request
    config:
      rawRequest: false
      skipTypename: true
      namingConvention:
        transformUnderscore: true

Expected behavior
Generate TypeScript code without any errors.
Environment:

OS: Windows 10
@graphql-codegen/...:

{
    "@graphql-codegen/cli": "^1.20.0",
    "@graphql-codegen/introspection": "^1.18.1",
    "@graphql-codegen/typescript": "^1.20.0",
    "@graphql-codegen/typescript-operations": "^1.17.13",
    "@graphql-codegen/typescript-graphql-request": "^3.0.0",
    "graphql": "^15.4.0"
}

NodeJS: 14

Additional context
I think it is related to #4793 because it import Headers when rawRequest: true but not by default or rawRequest: false.

Fixed, and it will be available in the next release (very soon!)

Fixed, and it will be available in the next release (very soon!)

Fixed in<EMAIL_ADDRESS>

Fixed in<EMAIL_ADDRESS>

@dotansimha The fix actually created another problem which I reported in #5459

@dotansimha The fix actually created another problem which I reported in #5459


Piece image is too large

Dear @yashwanthambati !
Thanks for your contribution.
I have reviewed your code in PR 32. However this does not make sense, I will research more this further and will make changes as soon as possible.


Ther German site has some issues

good: https://docs.microsoft.com/en-us/onedrive/b2b-sync
with errors : https://docs.microsoft.com/de-de/onedrive/b2b-sync
Placeholders #A0 #A1
enclosed a picture, where Information are wrong!

@HansBrender Thank you for submitting feedback and contributing to the docs. We are currently investigating this.
@Officeglobal - Could you kindly help with this issue? Thanks!

@HansBrender thank you for reporting this, it seems to be a very odd issue with the machine translation tool.  I can see that the issue is occurring in multiple German OneDrive articles.   I am following up with tool owners and hopefully they can fix it soon.  If not, I'll get these articles human translated.


export core functionality as a C library for language bindings

To allow for easier creation of bindings for other languages.

Initial simplistic bindings for C and python are available in https://github.com/pkgcraft/pkgcraft/tree/bindings providing access to extremely basic atom parsing support.
Currently python uses cython wrapping on top of the exported C interface, but it might be prudent to switch to using pyo3 once the performance differential is closer (creating class objects and function calls are somewhat slower at the moment under pyo3).

Closing since initial support for basic atom parsing in C and python now merged.


Freeze on vue SPA application

hi,
ive migrate our app to vue SPA template and mostly everything works great except for a small annoying problem that everyone is complaining...
We have a data table with 2000 entries (10 columns of data), reading the data takes ms. However when pushing all the data into a observable collection the UI locks for a few seconds and sometimes it never recovers.. the workaround we found is to kill ChromiumFxRenderProcess.exe which forces the ui to render. However sometimes some users describe that doesnt work always and they have sometimes a white screen after killing.
This is not easy to reproduce, but the larger the dataset is in the data table the higher seems the chance of friezes
@David-Desmaisons have u ever experienced this behaviour and ways of  reducing the likelyhood of occuring in production
thanks in advanced
jorge costa

Use ObservableCollection AddRange to batch all the changes, this should result in a performance boost.

hum, can try. but also people observe crashs that i have just experienced also

and i must be missing something really obvious hovever the addrange extensions doesnt work with observablecollections

hum, can try.
You definitivelly should trye. The performance improvemnt should be very important if you are adding the 2000 items at once.

Regarding the stack you are sharing, this probably the consequence of ahving chromium being unresponsive due to heavy CPU computation.

Check https://github.com/NeutroniumCore/Neutronium/blob/master/Tests/UniversalTests/HTMLBindingTests/Helper/ObservableRangeCollection.cs

ok that works nicely! add to move all those background tasks but seems the overall result is a much more responsive start. thanks for the hint.

just out of curiosity -> yours ObservableRangeCollection.cs or

hum! some side effect.... running the addrange works ok in constructuror. however if pushing refresh button results in a single element added in table. The addrange however doesnt seem to be the issue since the collection contains the full 2000 elments

do i need do so somthing to get the table showing the complete list

To improve performance:

Create ViewModel as small as possible:
-public property should only be the ones needed to be displayed in the UI
-use internal or bindable false attribute for other properties if needed
Make your ViewModel readonly (no getter for property)  whenever possible=> Neutronium will not create observers on the js side that will reduce the memory consumpution.
Batch changes on array with range updates

yep, thanks. the application is very performant.. the only thing thats is a bit slow and causing issues is the data table that i cant really remove data.
of course i could move all the logic to the c# side.. but the vuetify datable is super fast filtering stuff when the data reaches the view. so would be cool to keep it.

@David-Desmaisons  1.5.2 fixes the issue with addrange, ive figure it out since there was already open ticket about the problem. however the application is still not reliable!
however the locks dont seem to be solved! i think i am using all the recomended perf tips above:
        private async Task ReadCasesFromDisk(string tafCasesBasePath, bool force)
        {
            if (string.IsNullOrEmpty(GitService.GetCurrentTafDevBasePath()))
            {
                return;
            }

            messageLogger.PublishMessage("Loading Cases... Please Wait");
            this.FtcsCasesFiltered.Clear();
            this.cachedTestCases.Clear();
            this.TableLoading = true;
            this.Running = true;

            ICollection<TestCase> casesFromDisk =
                await Task.Run(() =>
                {
                    return CaseDbService.GetCasesFromDisk(tafCasesBasePath, this.messageLogger, this.ActionOnSelectCaseChanged, force);
                });

            messageLogger.PublishMessage($"Loaded {casesFromDisk.Count} from Disk");
            // normal list, private
            this.cachedTestCases.AddRange(casesFromDisk);

            // observable range collection, casesFromDisk > 2k elements
            this.FtcsCasesFiltered.AddRange(casesFromDisk);
            this.TableLoading = false;
            this.Running = false;

            messageLogger.PublishMessage($"Ui Updated {casesFromDisk.Count}");
        }

Loading the data from disk is not a issue, its mostly the chromium renderer that struggles with so much data!
29/03/2020 14:52:46 : Ui Updated 2089
29/03/2020 14:52:46 : Loaded 2089 from Disk
29/03/2020 14:52:46 : Loading Cases... Please Wait
29/03/2020 14:52:25 : Ui Updated 2089
29/03/2020 14:52:25 : Loaded 2089 from Disk

So the ui locks, and only after killing the render process the ui gets back! Some intersting obeservations, if i try to record with showmore for example i cant reproduce the issue! You havent observe this beavhiour earlier?

if i try to record with showmore
What do you mean?

ok manage to take  a recording with showmore showing the issue:
see video inside zip.
20200329_232420.zip
this is the crash:
>	mscorlib.dll!System.ThrowHelper.ThrowKeyNotFoundException()	Unknown
 	mscorlib.dll!System.Collections.Generic.Dictionary<int, System.__Canon>.this[int].get(int key)	Unknown
 	ChromiumFX.dll!Chromium.Remote.RemoteConnection.ReadLoop()	Unknown
 	ChromiumFX.dll!Chromium.Remote.RemoteConnection.ReadLoopEntry()	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)	Unknown
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()	Unknown

I will relase a new version shortly. Please try to reproduce with the new version.


Create skyward.yml

Adds or updates the following companies, events, or universities:

Skyward
(No publicly visible news - I am an employee)

Create Skyward.yml


[PE-D][Tester E] find_supplier (find by tags)

This command as mentioned in the UG should give me Supplier number 3 because he has a tag halal. Unfortunately, no suppliers came out.

Labels: type.FunctionalityBug severity.Medium
original: pangrwa/ped#15

Update supplier descriptor to include tags and check for tag equality