Use of different pattern board, board not generated using this repo

System information (version)
using docker on ubuntu 20.04
Vision system

Number of cameras => 2
Types of cameras => perspective
Multicamera configurations => overlapping
Configuration file => (i.e. *.yml)
Image sequences => ❔

number of images per camera = 1
if relevant and possible, please share image sequences

Describe the issue / bug
Can we use different calibration pattern (ChaRuCo) generated elsewhere, not using this repo, I have attached images for reference.
Getting this error: terminate called after throwing an instance of 'cv::Exception'
what():  OpenCV(4.2.0) ../modules/calib3d/src/calibration.cpp:3681: error: (-215:Assertion failed) nimages > 0 in function 'calibrateCameraRO'
Full log:
0000001 | 2023-05-05, 06:41:47.662046 [info] - Nb of cameras : 2   Nb of Boards : 1   Refined Corners : true   Distortion mode : 0
0000002 | 2023-05-05, 06:41:47.687069 [info] - Extraction camera 001
0000003 | 2023-05-05, 06:41:47.735920 [info] - Number of threads for board detection :: 2
0000005 | 2023-05-05, 06:41:49.000203 [info] - Extraction camera 002
0000006 | 2023-05-05, 06:41:49.029938 [info] - Number of threads for board detection :: 2
0000008 | 2023-05-05, 06:41:50.096146 [info] - Board extraction done!
0000009 | 2023-05-05, 06:41:50.096222 [info] - Intrinsic calibration initiated
0000010 | 2023-05-05, 06:41:50.096249 [info] - Initializing camera calibration using images
0000011 | 2023-05-05, 06:41:50.096258 [info] - NB of board available in this camera :: 0
0000012 | 2023-05-05, 06:41:50.096266 [info] - NB of frames where this camera saw a board :: 0
terminate called after throwing an instance of 'cv::Exception'
what():  OpenCV(4.2.0) ../modules/calib3d/src/calibration.cpp:3681: error: (-215:Assertion failed) nimages > 0 in function 'calibrateCameraRO'
Basically what I understand is that it is not able to detect corners.
Can you please help.

Thank you for your interest in this project.
I sincerely apologize for this delayed reply.
At this time, you cannot use Charuco board generated from another source.
It has to be generated directly from our toolbox using your configuration file. I can provide you with further assistance in this regard if you need it.
To be clear, your current test is falling because our toolbox does not recognize this arrangement of Charuco. As soon as you generate the pattern using MC-Calib, everything should work as advertised ;-)
Best regards and thank you again for testing this toolbox

Thanks for your wonderful work. The toolbox is really helpful.
I have a question about why we must use this toolbox to generate Charuco boards.
I found "cv::aruco::DICT_6X6_1000" used in the create_charuco_boards.cpp file. Is this the reason?
If I also use "cv::aruco::DICT_6X6_1000" in my own code to generate Charuco boards, could it work fine with this toolbox?

Thank you for your interest in this project. I sincerely apologize for this delayed reply. At this time, you cannot use Charuco board generated from another source. It has to be generated directly from our toolbox using your configuration file. I can provide you with further assistance in this regard if you need it. To be clear, your current test is falling because our toolbox does not recognize this arrangement of Charuco. As soon as you generate the pattern using MC-Calib, everything should work as advertised ;-) Best regards and thank you again for testing this toolbox

Thanks for your wonderful work. The toolbox is really helpful.
I have a question about why we must use this toolbox to generate Charuco boards.
I found "cv::aruco::DICT_6X6_1000" used in the create_charuco_boards.cpp file. Is this the reason?
If I also use "cv::aruco::DICT_6X6_1000" in my own code to generate Charuco boards, could it work fine with this toolbox?

I have changed   DICT_6X6_1000 to DICT_4X4_50 (My board configuration) in McCalib/include/McCalib.hpp file and build again, Now The algorithm is working fine and corners are detected. ENd to end calibration is also workust fine.
cv::Ptr<cv::aruco::Dictionary> dict_ = cv::aruco::getPredefinedDictionary(       cv::aruco::DICT_4X4_50); // load the dictionary that correspond to the                                  // charuco board
Thanks for this amazing project.

While it is theoretically possible to use the toolbox with patterns generated from other sources, it is difficult to guaranty that it will follow the same standard. For instance, someone faced problems with boards generated from calib.io and had to regenerate everything from MC-Calib.
Depending on the implementation, the ordering of the pattern might be widely different and cause problems. Honestly, it could probably be resolved by minor modifications — as long as the generation strategy from another source is known. For example, we could implement one new method to be compatible with patterns from calib.io, but we did not find the time to include such feature yet. Therefore, we recommend users to just generate the boards using the code embedded in the toolbox.
Also it would be great to have the possibility to use different types of boards like AprilGrid etc. Any new contributor ready to improve MC-Calib is very welcome ;-)
Thanks a lot for using MC-Calib, we are very pleased to see that our work is used by others. Do not hesitate to contact us again if you face any difficulties.


Segmentation fault (core dumped) in Glove.c

I'm trying to train Glove on a pretty big dataset, the newest wikidump (22G txt file). The total # of vocab that I'm training is 1.7 mil.
Every file (shuffle, cooccur, vocab_count) until glove runs smoothly without any memory error. (My RAM = 64G)
However, when I ran glove, I'm getting "Segmentation fault (core dumped)".
aerin@capa:~/Desktop/GloVe/build$ ./glove -input-file cooccurrence.shuf.bin -vocab-file vocab.txt -save-file glove300 -t-iter 25  -gradsq-file gradsq -verbose 2 -vector-size 300 -threads 1 -alpha 0.75 -x-max 100.0 -eta 0.05 -binary 2 -model 2
TRAINING MODEL
Read<PHONE_NUMBER> lines.
Initializing parameters...done.
vector size: 300
vocab size: 1737888
x_max: 100.000000
alpha: 0.750000
Segmentation fault (core dumped)

I tried with different # of threads as well: 1,2,4,8,16,32, etc. Nothing runs. Can someone please point me where to look? Thanks for this repository!
#Update#
I cut the number of vocabulary from 1.7 million to 1 million and glove.c runs without "segmentation fault" error. So it is a memory error. But I would love to learn how to resolve this error and be able to train a model on the larger dataset! Any comment will be highly valued. Thanks.

I am not sure It is a memory error, I am getting the exact same error on a cluster with 3Tb of RAM at my disposal. However I do agree that any comment on how to solve this would be highly appreciated!

I hope that my comments could help.
In my case, a small dataset (1.6 MB) has this problem, but a larger data (600MB) doesn't.
So I think memory is not the problem, but somehow related to the content of the data, which will explain why cutting your data works. @byorxyz

I have the same problem on my 150GB corpus, in running glove.c (I have downloaded glove from github).
I have 60 GB Memory and the program does not allocate more than 3 GB.

Just download the latest version from github, problem will be solved. Do not download glove from stanfold glove homepage.

Still persists to me.

I spent a while debugging a segfault that I thought was this problem, but I'd actually passed a directory as the -vocab-file argument (it was late...). So for future readers, double check your arguments more closely to make sure it's not a simple problem. I'll make a PR to catch the error-case I hit.
FWIW I spent some time in the glove.c trying to find where something might be going wrong if the cooccurrences file was too large. My only guess was that there might be an integer overflow? I doubt it though.
If you do hit a segfault, debugging should be quite easy. Set -threads 1 and start adding print statements to the glove.c file. I would suggest trying to print the index into the W array on line 127, like this:
       for (b = 0; b < vector_size; b++) {
           fprintf(stderr,"Accessing W. b+l1=%lld, b+l2=%lld\n", b+l1, b+l2);
           diff += W[b + l1] * W[b + l2]; // dot product of word and context word vector
        }

It's a beautifully short program, so I'm sure if the failing line is identified it can be fixed easily.

I also had this problem, but I had an approach to solve it.
Analysising my problem:

I did a comparison on running the text8 file verses my own file and realised that:
- i had alot more unique values than text8 has
- i included alot of random characters (i.e. full numbers, random string) which was not taken care of properly

Solution

when creating the corpus, create a more detailed tokenisation techique such that unwanted values are removed from the corpus.

Result
Successfully built my own glove Vector
Good luck!


No build tools flow

In the getting started section there’s a quote that says:

Node 4+ is supported, but 6+ is recommended to fully benefit from Slate. If you want the template files without the build tools, get the latest zip here.

Issue
This download gives you the src files; not a distribution folder.  So you would still need the build tools installed to use it.

This is confusing - do I need the build tools or not?
Should the link be to an already compiled theme? i.e. The dist version?

Suggestion

Re-write this section as two separate thoughts.
Clarify what the zip you're downloading is for (two options below)

Getting started

Node 4+ is supported, but 6+ is recommended to fully benefit from Slate.

The steps below walk through installing Slate globally and configuring your development theme to sync with your store.  You can [download a zip here](link to src files) of just the theme files, however you will require Slate's build tools to compile theme into a working theme.
-- or --
The steps below walk through installing Slate globally and configuring your development theme to sync with your store.  If you want the theme files without the build tools dependency, [get the latest zip here](link to dist files).

I was also confused by this when reading the documentation. I opted to download the template files without the build tools because I have a custom gulp build process I use across dev platforms.
I still wanted the Slate sync commands because I find them useful.
I'm in strong favor of the 2nd description you listed to make things clearer. I also think the link should be to an already compiled theme (dist folder.) It will make it easier to get started instead of having to manually remove and restructure files within the src.


Rename persist option and its keys

Description
To configure the persistence of the image file I currently use the persist key in the plugin options. In the silicon.nvim plugin, this option is called output and I think this name is better because it is more generic.
Technical Requirements and Implementation Details
No response
Resources

silicon.nvim plugin documentation.

Acceptance Criteria

[x] persist option is renamed to output.
[x] persist.path option is renamed to output.directory.

Resolved by #bd288aa5a331830a8c359882a4d5b31856c3e354


Update xed

It has been a while since we last updated the xed build, and now we are bothered by some xed bugs:

https://github.com/Vector35/binaryninja-api/issues/4028
https://github.com/Vector35/binaryninja-api/issues/4033
https://github.com/Vector35/binaryninja-api/issues/4617

We should check and see if these are fixed in the latest xed build. If not, we should report them upstream

I tested the latest xed and none of the three issues are fixed. I feel like we should upstream these bugs and ask xed folks to fix them so that we can benefit from it.
Also, one aspect that is making xed complicated is that we need to generate these type info for the intrinsics: https://github.com/Vector35/arch-x86/blob/master/x86_intrinsic_cached_input_types.include. I left comment in https://github.com/Vector35/arch-x86/tree/master/code_generator so I do not need to re-invent the wheels, but it is taking me some time to actually get the patch working again, on top of the latest xed. If possible, I would also love to see a way to dump these types in a more straightforward way.

Update on these:
1 is believed to be a bug in xed, and I have created an issue for it: https://github.com/intelxed/xed/issues/319
2 is the intended behavior (though slightly less than desired), and I have closed it
3 is still being worked on, and I have ruled out the possibility of a xed bug. And it is probably due to some problems in our xed build process. So updateing xed would not help this.
In other words, updating xed itself would not help any these problems right now, so I am giving this issue a lower priority

I would like to defer the xed update until https://github.com/intelxed/xed/issues/319 is fixed -- which make sense because otherwise the update would not bring about any known improvements to the x86 support. I kinda expect the xed folks will be able to fix it relatively soon, so the wait would not be too long

Xed released https://github.com/intelxed/xed/commit/6d87b5481aa53b5ab1fc2b5a5622759c46746bf9 which fixes the "push r16" bug above

I am closing this now since the only issue left within it is https://github.com/Vector35/binaryninja-api/issues/4028


sqlite3_get_autocommit

I would like to find out if I'm in a transaction or not. How can I call this from node-sqlite3?

Closing as duplicate of https://github.com/TryGhost/node-sqlite3/issues/304


Fix signing flow for bindings with async signers

We need a wallet signer from iOS/Android/etc that can be async. However, uniffi currently does not allow async callback interfaces to be passed into Rust: https://github.com/mozilla/uniffi-rs/issues/1729.
Instead, this PR restructures the libxmtp initialization process such that Rust can pass the signing text up towards the application, have it be signed externally, and then receive the signature as part of the next method call. I've created a separate method, create_libxmtp_client, to avoid modifying the create_client method for now. The change in consumers looks as follows (pseudo-code), matching the changes in bindings_ffi/src/mls.rs.
Before:
struct Client {
  ...
}

client = await create_client(…, inbox_owner)
await client.register_identity()

After:
struct Client {
   ...
   text_to_sign() -> Option<String>
}

client = await create_libxmtp_client(…, account_address, legacy_identity_source, legacy_signed_private_key_proto)
if (text = client.text_to_sign()) {
   // Sign the text
}
await client.register_identity(signature_or_null)

Other notes:

legacy_identity_source refers to how the XMTP v2 key was obtained (more description in the code). legacy_signed_private_key_proto is the serialized SignedPrivateKey from the v2 PrivateKeyBundle. This change is not related, however I've included it in this PR so that consumers don't need to perform multiple migrations.
register_identity() is now idempotent - if a client has already registered before, calling it again will just no-op instead of erroring.
We now also won't write the identity to the database unless the registration succeeds, so in the event of network failure during registration, the next run of the app will just create a new identity and then register it.

I would suggest we eventually remove create_client entirely, because I think that using a blocking signing callback will cause issues for integrators. But happy to leave it in for now so that it doesn't immediately break people.

I would suggest we eventually remove create_client entirely, because I think that using a blocking signing callback will cause issues for integrators. But happy to leave it in for now so that it doesn't immediately break people.

This is a nice enough interface I can get on board with that.

Okay, so @nplasterer suggests that I just modify create_client() directly instead of making a separate create_libxmtp_client(), will do that and then land


huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name': 'projects/UNINEXT/bert-base-uncased'. Use repo_type argument if needed.

hello, when i use this command :
python3 projects/UNINEXT/demo.py --config-file projects/UNINEXT/configs/image_joint_r50.yaml --input assets/demo.jpg --output demo/detection.jpg --task detection --opts MODEL.WEIGHTS outputs/image_joint_r50/model_final.pth
encountered an error error like this:
huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name': 'projects/UNINEXT/bert-base-uncased'. Use repo_type argument if needed.

you install Pretrained Weights
(https://github.com/MasterBin-IIAU/UNINEXT/blob/master/assets/DATA.md)
Pretrained Weights
Language Model (BERT-base)
mkdir -p projects/UNINEXT/bert-base-uncased
cd projects/UNINEXT/bert-base-uncased
wget -c https://huggingface.co/bert-base-uncased/resolve/main/config.json
wget -c https://huggingface.co/bert-base-uncased/resolve/main/vocab.txt
wget -c https://huggingface.co/bert-base-uncased/resolve/main/pytorch_model.bin
cd ../../..
Visual Backbones
mkdir -p weights
cd weights
R50
wget -c https://dl.fbaipublicfiles.com/detectron2/ImageNetPretrained/torchvision/R-50.pkl
ConvNeXt-Large
wget -c https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_384.pth
Convert ConvNeXt-Large
cd ..
python3 conversion/convert_convnext.py --source_model weights/convnext_large_22k_1k_384.pth --output_model weights/convnext_large_22k_1k_384_new.pth
python3 projects/UNINEXT/convert_pth2pkl.py weights/convnext_large_22k_1k_384_new.pth weights/convnext_large_22k_1k_384_new.pkl
ViT-Huge
wget -c https://dl.fbaipublicfiles.com/detectron2/ImageNetPretrained/MAE/mae_pretrain_vit_huge_p14to16.pth

@panchengl Hi, as @changsubi said, please first download the pretrained weights of language model and our image_joint_r50 model

thank you very much for your reply, the anwser solved my problem @MasterBin-IIAU @changsubi


[Stretch] DAG: Multiple inputs and outputs

[] Syntax for the Runefile  --out

@Ge-te  needs a few more variables in outputs. He has to follow up

Duplicate of #68.


Bug: scheduler's critically delayed event processing has positive feedback loop

Environment
Prod (occurred twice recently)
Steps to reproduce
Hard to reproduce locally - requires odd circumstances under a lot of load. AFAICT we've only seen it occur at startup — probably because that's when there's the most stuff going on.
The general idea of the triggering behavior is this:

For some reason, event processing in the scheduler gets delayed (whether that's because of weird behavior at startup, or some other failure mode)
Some VM pod start events are delayed enough that the VMs are deleted before the events are handled
While handling those events:

We don't see the VM in the local VM store (because it doesn't exist)
Thinking the store is out of date, we Relist() — this can take ~2s
After relisting, the VM is still not in the store, so we return error

Because relisting takes so long, more events get delayed, so we handle more pod start events after the VM was deleted, so we cause even more delays

Note that this is also because we only handle a single event at a time, so waiting for 2s handling one event holds up the entire queue.
(Originally, that's because otherwise we'd have to be careful to avoid out of order start/stop events - there's ways around this, though).
Other logs, links

initial discussion in slack
logs link

Tasks
- [ ] #853
- [ ] #854
- [ ] #863

Skipping duplicate Relist()s is somewhat complex, but is provably a solution here. Processing events in parallel allows us to make the problem small enough that we never reach the critical threshold of a positive feedback loop.

Assigning @Omrigan and removing myself to reflect that remaining work will be via #863 (and #865), rather than #853.

Done via #863


Improve async_producer tests and prep for more

implement a mockProduceResponse
fix decoding of produceRequests (bless my foresight in making getSubset a
method on the packetDecoder)
collapse three of the simpler existing producer tests into one as a
proof-of-concept

Heavily influenced by Maxim's recent work on the consumer tests.
@Shopify/kafka cc @horkhe

I have mixed feelings about collapsing the tests into one. It's way less repetitive, but there's usually different behavior around [0, 1, many] instances of the concepts involved, and now we're only testing the "many" scenario.
This is a very generic comment; I don't know if that actually makes any difference in this particular case.

but there's usually different behavior around [0, 1, many] instances of the concepts involved

For brokers and partitions and flushes, 0/1 are just degenerate cases of many, I don't think they really have their own behaviour.

:ship:

Upon reflection I removed the test collapsing for now; better to do it right and make sure all cases are covered. Will ship the other components of this on :green_apple:.


Add the methods 'pdf', 'cdf' and 'draw_samples' to MultivariateDistribution

Add 3 methods to the class MultivariateDistribution

pdf(x: vector where it should be evaluated): Joint probability density function.
cdf(x: vector where it should be evaluated): Joint cumulative distribution function.
draw_sample(n: how many data points should be drawn): Draws a sample from the distribution.

These methods would complete the class. In addition they could be used to enable us to implement differently structured probabilistic models. Currently we only offer the conditional modeling approach, but in the future we could implement for example probabilistic models based on kernel density estimation, the principle component analysis or the Nataf model. No matter how the probabilistic model is defined, the user could call pdf() cdf() or draw_sample().

draw_sample is currently being implemented in this branch: https://github.com/virocon-organization/viroconcom/tree/direct_sampling_and_imports

To implement the direct sampling contour method, draw_sample() was implemented. It is in this pull request: https://github.com/virocon-organization/viroconcom/pull/68
In this pull request, also pdf() and cdf() placeholders were created. I'll implement these two functions in a new branch.

Implemented and merged.


map juiceshop

https://github.com/juice-shop/juice-shop/issues/1970#issuecomment-1504057666

👋 https://github.com/juice-shop/juice-shop/issues/1970#issuecomment-1563062295

fixed in #274


Better error message for absent /etc/setuid and /etc/setgid

Ah, well, it's already fixed in master :)


Java API methods not directly compatible with Scala API objects

The addition of Scala API to Gatling is great, but in its current form it doesn't seem like it's possible to bring Java into an existing project written using Gatling's Scala API. While I tested and confirmed possibility of compilation of Gatling project including both Java and Scala code (including enforcement of compiling Scala code first), the Java API methods only consume Java API 'wrapper' classes. This means that to bring Java into the project I would have to rewrite entire shared configuration.
Let's say I have a Scala object with shared configuration details, like io.gatling.core.controller.inject.open.OpenInjectionStep simulation load configuration used in multiple Scala simulations. Then I want to use it in my new Java simulation, but the API will only allow setUp(scn.injectOpen(io.gatling.javaapi.core.OpenInjectionStep ... steps)).
Now, I've been going through the source files of Java API and I see that most of these classes are simple wrappers including Scala object as a private member! They just hide it behind a private (in many cases) constructor and static methods. I assume that's in order to enforce Scala DSL-like usage. For some reason though, these wrapper classes have toScala method to export underlying Scala object. This means that I could use Java code in Scala, but not the other way around.
Because of the Java's type erasure, I cannot make a generic method to access these hidden constructors without a bloated case-by-case code that effectively makes me rewrite my original configuration.
Now, the most transparent solution allowing for most seamless use would be to overload all these methods to allow usage of the original Scala objects since unwrapping of these Scala objects happens in Java API anyway (io.gatling.javaapi.core.ScenarioBuilder.injectOpen). An alternative solution would be to make constructors in all Java wrapper classes public, but this would obviously lead to more redundant code.

I'm afraid Java and Scala DSL interoperability is not something we'll ever do.

Now, I've been going through the source files of Java API and I see that most of these classes are simple wrappers including Scala object as a private member!
Now, the most transparent solution allowing for most seamless use would be to overload all these methods to allow usage of the original Scala objects since unwrapping of these Scala objects happens in Java API anyway (io.gatling.javaapi.core.ScenarioBuilder.injectOpen). An alternative solution would be to make constructors in all Java wrapper classes public, but this would obviously lead to more redundant code.

Those are implementation details that we could change. What if in a future version we decide to do the other way around and implement the Scala DSL on top of the Java one as it becomes the most popular one?

This means that to bring Java into the project I would have to rewrite entire shared configuration.

No. This is only something you have to do if you want to have shared components. Not everyone's use case.
And then, that's something you can achieve in a matter of minutes-hours at worst. If you really don't want to do it yourself, that's something we can do for you with a contract. All in all, it would be way more efficient to migrate everything than having us trying to implement Java and Scala DSL interop.

AFAIK, the interoperability is there, and will be as long as one DSL builds on top of another, regardless of implementation details - there is just a decision to allow the users to have it or not (or something in between as it is now). Allowing interoperability means allowing Java devs into an existing project and less time spent on learning new language alongside new framework, so I guess not just my use case. Anyway there are dozens of factors I do not know about and the decision is not mine so thanks for the response and your point of view.


Bluepill 5.9.0 macOS build failure on Catalina and Mojave

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_XCTTestIdentifierSet", referenced from:
      objc-class-ref in bplib(SimulatorHelper.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

relates to

Homebrew/homebrew-core#80210

full build log, https://github.com/Homebrew/homebrew-core/runs/2938927320

What version of Xcode is being used?


Either drop cooperative equality or write better tests for it

So @rklaehn discovered that Rational(1, 2) == 0L (despite Rational(1, 2) != 0).
I'm pretty sure this is a bug in Scala's cooperative equality, but obviously we don't have tests in place to catch this. We need to either have better tests and coverage for this feature, or we should drop cooperative equality.

Make sure to audit the following:

Algebraic
Complex
FixedPoint
Jet
Natural
Number
Quaternion
Rational
Real
SafeLong
UByte
UShort
UInt
ULong

I've written ScalaCheck tests at work for a DSL, as well using QuickCheck for verifying Functor laws - https://github.com/kevinmeredith/brentyorgey_upenn_class_hw/blob/master/Typeclassopedia/EvilFunctor.hs.
I'd be interested in writing up tests. Could you please tell me where to read more about cooperative equality? I googled for it, but found nothing.

I'm not sure there is a single article, but cooperative equality refers to the universal equals and hashCode methods that all Java objects (and thus all Scala objects) support.
def equals(other: Any): Boolean
def hashCode: Int

The general thing that Scala tries to achieve with cooperative equality is that you can compare different number types and they will compare equal (and hash to the same value) in most cases (e.g. if both values represent the same signed 32-bit integer).
The task here is pretty big since naïvely it means testing the cartesian product of all the types listed (plus Scala's built-in types, e.g. Int or BigInt). But I feel like we can diagonalize our testing, at least in terms of priority. Also, I think it's OK to punt on "hard" comparisons and just return false.
Does this make sense?

I believe that I understand what you're looking for.
Here's my first commit for adding commutativity tests - https://github.com/kevinmeredith/spire/commit/86c654aca890839b09a43d1f27e4eeef112359ac.

sbt output:

[info] Compiling 1 Scala source to C:\Users\k\Workspace\spire\tests\target\scala-2.11\test-classes...
[info] + Algebraic.commutative +: OK, passed 100 tests.
[info] + Algebraic.commutative *: OK, passed 100 tests.

I'm expecting to write a set of properties, against which all of your above types may be tested.
My plan is to finish adding tests for Algebraic. Then, figure out how to write a method that takes a type, i.e. Algebraic, Complex, etc., and then either (1) returns a set of Properties or (2) returns Unit, checking all of the properties.
Please let me know if I'm on the right path or not. Thanks

That sounds good -- one suggestion would be to mention equality since we also expect addition, multiplication, etc. to be commutative.

Haha nevermind, I was misreading the output, you are one step ahead of me.
I think this is the right approach. Thanks!

Thanks for this and continued guidance!
I got help on ScalaCheck's mailing list about how to handle multiple implicits - directly use a Gen[T] - https://groups.google.com/forum/#!topic/scalacheck/YWZGn0Wrtws.
Then, I updated the Algebraic property-based tests:
https://github.com/kevinmeredith/spire/blob/coop_eq_issue_405/tests/src/test/scala/spire/laws/CooperativeEquality.scala
For these tests, it showed output that indicates there's not cooperative equality with Double and BigInt:
[info] Compiling 1 Scala source to C:\Users\k\Workspace\spire\tests\target\scala-2.11\test-classe
Checking Algebraic's Commutativity for Addition and Multiplicate with Int
+ OK, passed 100 tests.
+ OK, passed 100 tests.
+ OK, passed 100 tests.
Checking Algebraic's Commutativity for Addition and Multiplicate with Double
! Falsified after 0 passed tests.
> ARG_0: ~-4.60332879E-178
> ARG_1: ~-2.30320822E-111
! Falsified after 76 passed tests.
> ARG_0: ~2.61371229E-213
> ARG_1: ~-2.15779404E-146
+ OK, passed 100 tests.
Checking Algebraic's Commutativity for Addition and Multiplicate with BigInt
! Falsified after 2 passed tests.
> ARG_0: ~1.83740757E-172
> ARG_1: ~3.56361957E-191
! Falsified after 26 passed tests.
> ARG_0: ~3.17642014E-255
> ARG_1: ~4.50060265E-124
+ OK, passed 100 tests.

I'll continue working on testing out Algebraic's cooperative equality for Rational, Long, and BigInt.

Issued https://github.com/non/spire/pull/436.
For Algebraic and 1-2 other types, using arbitrary BigDecimal values (in property-based tests) did not complete after a few minutes, so I excluded them.

Hmm, I'm confused why the Travis CI build failed:
[error] /home/travis/build/non/spire/tests/src/test/scala/spire/laws/cooperative_equality/AlgebraicCoopEqProp.scala:23: type mismatch;
[error]  found   : spire.math.Rational
[error]  required: spire.math.Algebraic
[error]   } yield Rational(num, den)
[error]                   ^
[error] one error found
[error] (tests/test:compileIncremental) Compilation failed

I git pull origin master into my working branch, deleted my ~/.ivy2 directory, and then re-built successfully with:
cd spire
sbt
project core
test:compile


Hotfix. Put back a default count * metric

did you test this in explore v1 and v2? i don't see why it would work for one and not the other, but would be good to double check.


client_secret corrected?

I guess you saw that it was alright inside the function. but I follow why you would initially get confused and think that it was broken.


Added cancel status in enum

###Added enum Cancel in articlestatus enum file
This PR deals with issue no. #248

We are not accepting outside collaborators at the moment


chore(deps): update cli template dependency

update cli template dependency
GH-1929
Description
update cli template dependency
Fixes #1929
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Intermediate change (work in progress)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Checklist:

[ ] Performed a self-review of my own code
[ ] npm test passes on your machine
[ ] New tests added or existing tests modified to cover all changes
[ ] Code conforms with the style guide
[ ] API Documentation in code was updated
[ ] Any dependent changes have been merged and published in downstream modules

@Surbhi-sharma1 are these latest versions ?
can these be merged


hipLaunchKernel, hipLaunchParm are deprecated, and shall be removed.

Let's mark these as deprecated for now, so that users have time to adapt. I've just stumbled across internal examples being written in the present time and still using hipLaunchParm, which is outright ghastly, so the only way to get rid of these is to completely remove them in 2.x.

@bensander no, hence why the only function that is going to be removed is only marked deprecated for now, and the text says "completely remove them in 2.x".


use environment variable to select link target

As discussed in pingcap/tikv#198 and considering the solutions other native crates have chosen (sfackler/rust-openssl#653), let's use environment variable to check link target.

CC https://github.com/pingcap/kvproto/pull/198

ping

How do we use now if we want to link static gRPC?

It will build and link to gRPC statically by default.

LGTM
PTAL @overvenus

ping


Transaction signatures

Private keys should not be sent to miners, need to find a way to make it so a digital signature is sent!!!!

Sign = hashed(priv + salt) + salt
pub = hashed(priv + salt)


Spoilers in chat break dubs

halp

Haven't worked on bugs yet; I've been working on this god-forsaken thing: 069bf5b

Haven't worked on bugs yet; I've been working on this god-forsaken thing: 069bf5b

Oooooh, that seems nice! I assume its purpose is to hide posts you don't want to see?

no longer a valid issue in chatbox++ v2


CentraLite Systems, Inc/Lowe's Iris Smart Plug 3210-L

Is your problem within Home Assistant (Core or Z-Wave JS Integration)?
NO, my problem is NOT within Home Assistant or the ZWave JS integration
Is your problem within ZWaveJS2MQTT?
NO, my problem is NOT within ZWaveJS2MQTT
Checklist

[X] I have checked the troubleshooting section and my problem is not described there.

[X] I have read the changelog and my problem was not mentioned there.

Describe the bug
What causes the bug?
Attempting to include the device
What do you observe?
Inclusion fails.
What did you expect to happen?
For the device to be included as a repeater in the network
Steps to reproduce the behavior:

Click "+ Add Device"
Plug the outlet in and toggle the outlet on and off using the button on the front of the device

Device information
Manufacturer: CentraLite Systems, Inc
Model name: Smart Plug 3210-L
Device is a Zigbee outlet with a Z-wave repeater. Zigbee control and reporting works without issue (Zigbee2MQTT).
How are you using node-zwave-js?

[ ] zwavejs2mqtt Docker image (latest)
[ ] zwavejs2mqtt Docker image (dev)
[ ] zwavejs2mqtt Docker manually built (please specify branches)
[ ] ioBroker.zwave2 adapter (please specify version)
[X] HomeAssistant zwave_js integration  (please specify version)
[ ] pkg
[ ] node-red-contrib-zwave-js (please specify version, double click node to find out)
[ ] Manually built from GitHub (please specify branch)
[ ] Other (please describe)

Which branches or versions?
version: 0.1.65
Did you change anything?
no
If yes, what did you change?
No response
Did this work before?
Yes (please describe)
If yes, where did it work?
Device worked previously with Samsung SmartThings hub.
Attach Driver Logfile
zwave_js.log

status = Failed

Usually means there is a connectivity issue during the initial communication between the stick and the node.
We don't get more insight what it is, but the stick location is a frequent cause of this.
Start by following these steps: https://zwave-js.github.io/node-zwave-js/#/troubleshooting/connectivity-issues?id=general-troubleshooting
If that doesn't help, you can try these things:

bring the device closer
power cycle both the device and the stick (restart is not enough)

My Z-Wave stick is on an extension, elevated away from my other equipment. I tried adding the device while it was within two feet of the stick after power cycling, no change.

zwave_js(1).log
Since opening this issue, I have successfully added a different device farther away from the stick and on the outside of my house, so I don't think
What are the odds that this is just an issue with my device? It's admittedly been several years since I used it with my SmartThings hub. Honestly not worth a ton of effort to get it working. I only have the one and not a ton of Z-Wave devices that need a repeater anyway.

What are the odds that this is just an issue with my device?

Really can't tell. The communication that leads to the "failed" status is unfortunately hidden from us and can only be observed with a Zniffer (separate stick with special firmware and a Windows software to capture network traffic).
Two more things you could try, then I'm out of ideas:

start an exclusion, then actuate the device as if you wanted to include it. Then retry the inclusion
factory reset it, then retry the inclusion

I have this device myself. Although I have not paired the zwave portion of the plug the steps don't seem right. The steps shown are to pair the zigbee part. IIRC in order to pair the zwave extender we need to hit the power button very fast about 8 times to get it to pulse like a heartbeat to indicate the zwave portion is pairing. It is very tricky to get the zwave part to pair in my own experience so I usually don't pair it.
For reference here is a forum post from a different product that also mentions the pairing differences in zwave vs zigbee for this device: https://community.hubitat.com/t/iris-3210-l-integration-issue/34938/3
One more from a different site for the same device: https://community.smartthings.com/t/release-iris-smartplug-z-wave-repeater-with-diagnostics/111183/99

@dshokouhi Wow. That worked. Paired in seconds, first try, with no issues. Thanks for chiming in!


Update extension.ts

Fix implementation of change in https://github.com/vadimcn/vscode-lldb/commit/78ae949b027381c3ac65a215b195c590e65fbf00
use correct lldbPath executable variable in the launchDebugServer command.

Thanks!


DCD-1294 security fix quickstart Bitbucket

Security vulnerabilities:
Added proper resources to IAM policies and remove public access on RDS DB instances.

Have we performed a backward compatibility test with these changes i.e what happens if a stack created prior to these changes, is then updated with these changes?

I testes the changes with two scenarios, create a new stack, and update the existing stack using the changes in this PR. The changes which required recreate an object is already rolled out and the existing changes are backward compatible.


Topicpicker 2

New Dependencies:
Radium (used for styling of react components)
Install with npm install radium
Topicpicker Component Acceptance Criteria:

TextThresher shows a list of topics for this TASK.
The current Selected Topic is visually obvious by making the background of that Topic match the Topic color.
The first topic is shown as the selected topic (e.g., a bounding box or visual indicator).
Each topic is clearly associated with a distinct highlight color which is visible at all times.  The Front-end displays all topics provided.
The design maximum is 8 topics, but this is not enforced by front-end.
Topics are on a fixed, non-scrolling menu that does not scroll with the article.

Side Notes

Sorry for the two 'stash' commits - when I was trying to checkout a different branch I had to first commit any changed work. Norman has since taught me a way of opening a file from a different branch that avoids switching branches. I will avoid these kind of annoying commits in the future.

This passes the TopicPicker criteria and I reviewed the code in detail. Looks good to me. :+1:
Once everyone has had a chance to review, I would like to squash commits manually to preserve commit authorship.


tests, sriov: Do not configure pod network IPv6 on fedora-login

Sriov tests doesn't need to configure ipv6 for pod network,
as they don't check deafault pod network.
Moreoever in case we do need to config it, the right way
will be to use NetworkData, as it would also solve
potential misconfiguration that using hardocoded eth0
might lead to.
Signed-off-by: Or Shoval<EMAIL_ADDRESS>None

/cc @EdDev

Rebased

Addressed comments.
The configuration that was removed, is the default pod network one, that both not needed for sriov tests,
and also doesn't use the right method as you suggested, which is to use NetworkData, instead
using hardcoded eth0, which is prone to errors.
Updated description to reflect that.

Thanks Edy
/cc @qinqon
can you please take a look ?

/approve

Thanks Alona


Add active unit election

Overview
Add active unit election and a simple integration test.
Rationale
This PR only implements the active unit election and does not handle standby/active units. Therefore, all units are handling the requests and acting like active units.
A unit is ready to become active if its status is "ok". The status is communicated through a service domain, with a TXT record: status.service.test.
This allows us to rely solely on the preinstalled dig utility to check for unit statuses.
This service zone needs to be added to the unit right away, that's why we call the update_zonefile_and_reload() function at the end of the installation process.
Checklist

[x] The charm style guide was applied
[x] The contributing guide was applied
[x] The changes are compliant with ISD054 - Managing Charm Complexity
[x] The documentation is generated using src-docs
[x] The documentation for charmhub is updated
[x] The PR is tagged with appropriate label (urgent, trivial, complex)

Nice, I left two questions. I liked how the PR is described (Rationale)!


javah requires JVM 11

when invoking sbt javah (plugin version 1.4.1) on Java 8 I'm getting below error:
[error] stack trace is suppressed; run last javah for the full output
[error] (javah) java.lang.UnsupportedClassVersionError: ch/jodersky/sbt/jni/javah/JavahTask has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

The same on Java 11 works. Is it possible to compile plugin for 1.8 target?

@rpiotrow I see this err only when I import project via IntelijIDEA, are you sure that's not the scala plugin issue?

I have checked that on a project just cloned from the repo (so IntelliJ IDEA could not do here anything) and the problem is present.
Repository: https://github.com/CitrineInformatics/ecos-java-scala
Console:
$ git clone git@github.com:CitrineInformatics/ecos-java-scala.git

$ cd ecos-java-scala

$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

$ sbt
[info] welcome to sbt 1.3.13 (AdoptOpenJDK Java 1.8.0_292)
[info] loading global plugins from /Users/kpalcowski/.sbt/1.0/plugins
[info] loading settings for project ecos-java-scala-build from plugins.sbt ...
[info] loading project definition from /private/tmp/ecos-java-scala/project
[info] Compiling 1 Scala source to /private/tmp/ecos-java-scala/project/target/scala-2.12/sbt-1.0/classes ...
[info] loading settings for project root from build.sbt ...
[info] set current project to ecos (in build file:/private/tmp/ecos-java-scala/)
[info] sbt server started at local:///Users/kpalcowski/.sbt/1.0/server/04a1e2064d1c70fd3e52/sock
sbt:ecos> javah
[info] Compiling 3 Scala sources to /private/tmp/ecos-java-scala/target/scala-2.12/classes ...
[info] Headers will be generated to /private/tmp/ecos-java-scala/src/native/include
[error] stack trace is suppressed; run last javah for the full output
[error] (javah) java.lang.UnsupportedClassVersionError: ch/jodersky/sbt/jni/javah/JavahTask has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
[error] Total time: 5 s, completed May 27, 2021 12:44:37 PM
sbt:ecos>

@rpiotrow yes that’s what I mean; try the sbt shell without IDEA and with JDK8. It works for me in CI & laptop without IDEA.

@rpiotrow checkout CI builds here https://github.com/PDAL/java tests pass though it uses jdk8 >_>

@pomadchin I do not see invocation of sbt javah in https://github.com/PDAL/java/blob/master/.github/workflows/actions.yml. I have cloned that repo and I'm getting the same error:
$ sbt
[info] welcome to sbt 1.4.6 (AdoptOpenJDK Java 1.8.0_292)
[info] loading global plugins from /Users/kpalcowski/.sbt/1.0/plugins
[info] loading settings for project java-build from plugins.sbt ...
[info] loading project definition from /private/tmp/java/project
[info] loading settings for project root from build.sbt ...
[info] set current project to pdal-jni (in build file:/private/tmp/java/)
[info] sbt server started at local:///Users/kpalcowski/.sbt/1.0/server/c4d1948923b70ee90a5b/sock
[info] started sbt server
root > native/javah
[error] stack trace is suppressed; run last native / javah for the full output
[error] (native / javah) java.lang.UnsupportedClassVersionError: ch/jodersky/sbt/jni/javah/JavahTask has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
[error] Total time: 0 s, completed May 27, 2021 5:15:54 PM

@rpiotrow oh im blind; you're right 🤦 I see where is this issue comes from now.

The issue should be gone with the fresh release https://github.com/sbt/sbt-jni/releases/tag/v1.5.0, let me know if it still an issue for you!

And don't forget to change from ch.jodersky to com.github.sbt
addSbtPlugin("com.github.sbt" % "sbt-jni" % "1.5.0")


Dates with year > 10000 are not validated correctly

Laravel Version: 5.8.8
PHP Version: 7.3.1
Database Driver & Version: MySQL 5.7.25

Description:
MySQL DATE and DATETIME columns only support year values up to 9999, so it makes sense to validate incoming dates. But dates with year > 10000 still pass all validation checks. This is because the date is passed to PHP strtotime(), and strtotime() ignores the first 4 digits if year has more than 4 digits, e.g. '10001-01-01' is interpreted as '1-01-01'.
Steps To Reproduce:
$ php artisan tinker
Validator::make(['date'=>'10001-01-01'], ['date' => 'date|before:9999-12-31'])->passes()
=> true
Expected result: false

This is because the date is passed to PHP strtotime(), and strtotime() ignores the first 4 digits if year has more than 4 digits, e.g. '10001-01-01' is interpreted as '1-01-01'.

...so that's a PHP bug then? I dont see what Laravel can do here, the docs clearly start the date validation is using PHP strtotime under the hood...?

From the PHP docs:

For 64-bit versions of PHP, the valid range of a timestamp is effectively infinite, as 64 bits can represent approximately 293 billion years in either direction.

So it should technically work on 64 bit systems. But since it fails on https://3v4l.org/45etH I assume it's indeed a limitation of strtotime. 3v4l probably uses a 32 bit system and if that's a common one I don't believe we can do much about this.

I would like to see that as a problem in the year 9999

@lkreher I do agree with you on that point but it's extremely hard to check on this because there are so many formats that needs to be taken into account. It's hard to know if the the date being passed in question contains a year and that this year is of a value higher than 9999.

@lkreher I do agree with you on that point but it's extremely hard to check on this because there are so many formats that needs to be taken into account. It's hard to know if the the date being passed in question contains a year and that this year is of a value higher than 9999.

I now see what's happening: strtotime is interpreting '10001-01-01' as '10:00 1-01-01'. Maybe I can find some workaround by appending 00:00 to each date field. So yes, this is definitely a PHP bug (or undocumented feature).
For now I wrote my own date validation that checks for 5 digits leading up to a dash before calling the original date validation. Other formats are working as expected, it's just the dash-format that seems to be misinterpreted by strtotime.

What is the reason of closing the bug without taking any step to fix it? I disagree with @laurencei on the note what is being used under the hood. It is not mandatory to use that php function to validate date.
I found the issue on the log while MySQL rejected the value. @driesvints can you please let me know if there is any solution of this issue or are you suggesting to stop using the date rule?

@nasirkhan

I disagree with laurencei on the note what is being used under the hood. It is not mandatory to use that php function to validate date.

Please feel free to submit a PR that you believe will solve the issue if you have an option. But the point is that the date validation is what PHP itself supports - so is it a bug in PHP?

I solved this problem by validating that the date does not have more than 10 characters of lognitude
'data.birthdate' => 'required|date|max:10'


feat(toolkit): ensure consistent zip files

Zip files were not consistent across deploys resulting in unnecessary S3 uploads and stack updates.
Ensure consistency by appending files in series (guarantees file ordering in the zip) and reseting
dates (guarantees same hash for same content).
Closes #1997, Closes #2759

Pull Request Checklist

[ ] Testing

Unit test added (prefer not to modify an existing test, otherwise, it's probably a breaking change)
CLI change?: coordinate update of integration tests with team
cdk-init template change?: coordinated update of integration tests with team

[ ] Docs

jsdocs: All public APIs documented
README: README and/or documentation topic updated
Design: For significant features, design document added to design folder

[x] Title and Description

Change type: title prefixed with fix, feat and module name in parens, which will appear in changelog
Title: use lower-case and doesn't end with a period
Breaking?: last paragraph: "BREAKING CHANGE: <describe what changed + link for details>"
Issues: Indicate issues fixed via: "Fixes #xxx" or "Closes #xxx"

[ ] Sensitive Modules (requires 2 PR approvers)

IAM Policy Document (in @aws-cdk/aws-iam)
EC2 Security Groups and ACLs (in @aws-cdk/aws-ec2)
Grant APIs (only if not based on official documentation with a reference)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.

Not 100% sure how to correctly unit test this... but I can confirm that I finally have the (no changes) message from the cli across deploys for stacks containing Lambda functions.

Got inspiration from here https://github.com/serverless/serverless/blob/d69d57ea0976544ced0714104fb8774d41d72089/lib/plugins/package/lib/zipService.js


error converting to datetimeoffset

Hi,
I kept getting errors while trying to run "2fa.exe list".
The error was happening in DateTimeOffsetJsonConverter.cs file.
I divided by 1000 (assuming it was in milliseconds instead of seconds and got it to work for me)
public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
    long milliseconds = reader.GetInt64();
    long seconds = milliseconds / 1000;
    return DateTimeOffset.FromUnixTimeSeconds(seconds);
}

Hi,
Great, the fix you put on the seconds works for me now. (I've zero experience in C# and Visual Studio so I was just playing around trying to get this program to work somehow for me :) )
I did a breakpoint at the line you mentioned and I got the following version at the top of the JSON
"version": 3
My phone is pretty old so maybe I've some old lastpass version. It says "LastPass Authenticator 2.15.0" when I go go into "About" on the mobile device.
I have two lastpass accounts, one personal and one enterprise account. Was having the same problem when trying with both of those accounts.

I did a breakpoint at the line you mentioned and I got the following version at the top of the JSON
"version": 3

Oh, wow! I get version 1 😅  But I'm on iOS. It's version is <IP_ADDRESS>91...
I guess we can assume this is fixed then.
I know I'm asking for A LOT, but would you mind sending me a redacted version of your JSON? You can change emails, secrets etc. all to XXX or something, and I only need about an entry or 2, 3 maybe just to see if there are more differences in your JSON compared to mine.
If not, that's ok too.

Hi, sure thing. Here is a redacted json.
I specified all the fields that don't have value as string. Otherwise all the xxxx are string values.
{
    "deviceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "deviceSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "localDeviceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "deviceName": "xxxxxxx",
    "version": 3,
    "accounts": [

        {
            "accountID": "xxxxxxxxxxxxx",
            "lmiUserId": "",
            "issuerName": "xxxxx",
            "originalIssuerName": "xxxx",
            "userName"<EMAIL_ADDRESS>            "originalUserName"<EMAIL_ADDRESS>            "pushNotification": false,
            "secret": "XXXXXXXXXXXXXXXXX",
            "timeStep": 30,
            "digits": 6,
            "creationTimestamp": xxx (int 13 character long, sometimes 6. Had few amazon accounts, some had 6 and some had 13),
            "isFavorite": false,
            "algorithm": "SHA1",
            "folderData": {
                "folderId": int,
                "position": int
            }
        },
        {
            "accountID": "xxxxxxxxxxxxxx",
            "lmiUserId": "",
            "issuerName": "Microsoft",
            "originalIssuerName": "Microsoft",
            "userName": "xxxxxxxxxx",
            "originalUserName": "xxxxxxxxxxx",
            "pushNotification": false,
            "secret": "xxxxxxxxxx" (microsoft was the only one that was all lowercase letters),
            "timeStep": 30,
            "digits": 6,
            "creationTimestamp": xxx (int 13 character long),
            "isFavorite": true,
            "algorithm": "SHA1",
            "folderData": {
                "folderId": int,
                "position": int
            }

    ],
    "folders": [
        {
            "id": 1,
            "name": "xxxxxxxxx",
            "isOpened": true
        },
        {
            "id": 0,
            "name": "xxxxxxxxxx",
            "isOpened": true
        }
    ]
}

Great! Thanks! That is very helpful. I see some immediate differences (I don't have the folders, the pushNotification and folderData at first glance), so I can try to accommodate for that.
Thank you very much! I'll close this issue since the problem has been solved and I'll see what I can do to (more) properly parse version 3.

Yeah it is weird, like in few of my keys it is on this form
,"creationTimestamp":100002,
"creationTimestamp":1690057483552,
then in other keys
I am "pretty" sure the shorter version is in older keys. Some of them have the exact same provider (just different accounts). But the one I added earlier to my authenticator seem to have these 7 digit timestamps.

"creationTimestamp":100002

That almost doesn't even look like a date... Weeeeeeird.

Yeah, my thoughts too. It was just incremental, the next one was 100003 and then at at the end. Like they are referencing to some other data..

Yeah, my thoughts too. It was just incremental, the next one was 100003 and then 1000004 and so on. Like they are referencing to some other data..

@urrpurr It seems like LastPass has changed something; I can't decrypt the file anymore. Can you? Does this still work for you? (Create a backup of your vault and try a refresh please?)

See 545365175bb7397e42a8156cfe50bc16396da93f


[ai-sdk] [docs] map out ai semantic conventions and how it maps to openinference

Vercel AI SDK Semantic Conventions to OpenInference Semantic Conventions
The following is a map from the current Vercel AI SDK semantic OpenTelemetry semantic conventions to the OpenInference semantic conventions
Vercel AI SDK Semantic Conventions
OpenInference Semantic Conventions
Vercel captures some basic info for LLM, embedding, and tool calls Additionally, they capture more specific data depending on which AI SDK function (e.g., generateText) you are calling.

Vercel Attributes
OpenInference Attributes
Additional Info

-------

LLM Spans

ai.model.id
llm.model_name

ai.model.provider
N/A

ai.request.headers.*
N/A
Can use OTEL semconv (http.request.header.\<key\>)

ai.settings.maxRetries
N/A

ai.telemetry.functionId
name
This is not an LLM function this is the id of the function called in application code

ai.telemetry.metadata.*
metadata

ai.usage.completionTokens
llm.token_count.completion

ai.usage.promptTokens
llm.token_count.prompt

resource.name
name
this is set in the same way as ai.telmetry.functionId (see above)

ai.prompt
input.value
input.mime_type=text/plain

ai.result.text
output.value

ai.result.toolCalls
llm.output_messages.message.tool_calls
This is on result for vercel, but might make sense for us to put on llm.input_messages.message

ai.finishReason
N/A

ai.settings.maxToolRoundtrips
llm.invocation_parameters
This could go in invocation parameters

operation.name
name
This is a combination of the SDK function called (e.g., ai.generateText) and the functionId (see above)

ai.prompt.format
N/A
The format of the prompt. Not sure exactly what this means maybe how template variables are specified. This comes from ai.generateText.doGenerate TODO look into what this value could be.

ai.prompt.messages
llm.input_messages

ai.schema
N/A
This is captured on the generateObject functionDescription: Stringified JSON schema version of the schema that was passed into the generateObject function

ai.schema.name
N/A
(see above)

ai.schema.description
N/A
(see above)

ai.result.object
output.value
use with output.mime_type=application/json

ai.settings.mode
N/A
This is captured on the generateObject functionDescription: the object generation mode

-------

Embedding Spans

ai.model.id
embedding.model_name

ai.model.provider
N/A

ai.request.headers.*
N/A
Can use OTEL semconv (http.request.header.\<key\>)

ai.settings.maxRetries
N/A

ai.telemetry.functionId
name
This is not an LLM function this is the id of the function called in application code

ai.usage.tokens
N/A
For embeddings we don't currently track tokens but do capture the vectorVercel Explanation of this attribute: the number of tokens that were used

resource.name
name
this is set in the same way as ai.telmetry.functionId (see above)

ai.value
embedding.text

ai.embedding
embedding.vector

ai.values
embedding.embeddings.{i}.embedding.text

ai.embeddings
`embedding.embeddings.{i}.embedding.vector

-------

Tool call spans

ai.toolCall.name
tool.name

ai.toolCall.id
N/A
OpenInference does not currently capture this

ai.toolCall.args
tool.parameters
Although named args from vercel their description is:the parameters of the tool call

ai.toolCall.output
output.value
output.mime_type="application/json"Only available from vercel if "tool call is successful and the result is serializable"

Standardized gen_ai Attributes
Vercel also specifies some "standardized gen_ai attributes". Presumably those are referring to these https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/, however the links in their docs (see link above) are broken and there is a slight mismatch in the conventions. That being said, below is the mapping of the gen_ai attributes as outlined currently in the Vercel documentation (which is not exhaustive when compared to the link above) to OpenInference semantic conventions.

gen_ai Attributes
OpenInference Attributes
Additional Info

gen_ai.request.model
llm.model_name

gen_ai.response.finish_reasons
N/A

gen_ai.system
N/A
Otherwise known as the provider (e.g., openai)

gen_ai.usage.completion_tokens
llm.token_count.completion
This does not match the conventions in the spec linked above, there this is called gen_ai.usage.completion_tokens

gen_ai.usage.prompt_tokens
llm.token_count.prompt
This does not match the conventions in the spec linked above, there this is called gen_ai.usage.input_tokens

closing as complete see note above / package and mapping here https://github.com/Arize-ai/openinference/tree/main/js/packages/openinference-vercel


PORTC on CH32V003A4M6?

Hey,
the CH32V003A4M6 doesn't have the GPIOs exposed that are used by default. I tried to use PORTC with PC1, PC2 and PC4 instead.
Here is what I changed to try the bootloader:
usb_config.h:
#define USB_DM 1
#define USB_DP 2
#define USB_DPU 4
#define USB_PORT GPIOC

bootloader.c:
    // GPIO D3 for input pin change.
    USB_PORT->CFGLR =                                                                          // GPIOD -> USB_PORT
        (GPIO_CNF_IN_PUPD)<<(4*1) |  // Keep SWIO enabled.
        (GPIO_Speed_In | GPIO_CNF_IN_PUPD)<<(4*USB_DM) |  //PD3 = GPIOD IN
        (GPIO_Speed_In | GPIO_CNF_IN_PUPD)<<(4*USB_DP) |  //PD4 = GPIOD IN
        (GPIO_Speed_50MHz | GPIO_CNF_OUT_PP)<<(4*USB_DPU);

    // Configure the IO as an interrupt.
    AFIO->EXTICR = 2<<(USB_DP*2); //PORTD.3 (3 out front says PORTD, 3 in back says 3)         // 3 -> 2 (port-id?)
    EXTI->INTENR = 1<<USB_DP; // Enable EXT3
    EXTI->FTENR = 1<<USB_DP;  // Rising edge trigger

    // This drive GPIO5 high, which will tell the host that we are going on-bus.
    USB_PORT->BSHR = 1<<USB_DPU;                                                               // GPIOD -> USB_PORT

    // enable interrupt
    NVIC_EnableIRQ( EXTI7_0_IRQn );

The DPU is handled correctly (High for few secs), but I think the interrupt is not triggered. I see signals on DP/DM but I think they are just coming from the host. They don't change when I disconnect DP/DM from the MCU.

getting closer
rv003usb.h
#define USB_GPIO_BASE GPIOC_BASE         // GPIOD_BASE -> GPIOC_BASE

Now windows reports Invalid Configuration Descriptor instead of Device Descriptor Request Failed.

So, I looked at the USB communication with my Logic analyzer. It looks like all packets coming from the chip don't start with a proper SYNC. It always reads 0x02 or 0x03 instead of 0x01. So I actually think the first bit of the SYNC is missing 🤔

that is very interesting.  I am not sure why that would be.  I wonder if we don't actually support both ways for the DPU first.  @duk-37 do you have any feedback on this?

that is very interesting.  I am not sure why that would be.  I wonder if we don't actually support both ways for the DPU first.  @duk-37 do you have any feedback on this?

I can try to replicate this on my end but this does seem extremely weird. An immediate first thought might be that these pins have some other peripheral (e.g. MC0) attached to them and that that's causing weirdness, but I can't say for sure.

I may try again with one of these boards https://www.aliexpress.com/item/1005005338043150.html and the default pins on PORTD. But last time I tried I got nothing. DPU works and pulls D- high for few seconds, but there is no reply to the host packets.

Okay, I used one of these boards with the default bootloader again. Got nothing. I swapped D+/D- (DP now on D3, DM on D4) and now I get communication.
Windows reports Invalid Configuration Descriptor but the logic analyzer shows me at least a valid DATA0 Packet from the device with idVendor and idProduct.

I get the same result when I use the code adapted for PORTC on that board / CH32V003F4U6 (QFN). I need to swap D+/D- with respect to the code to get communication and Windows still reports Invalid Configuration Descriptor
portc_datapins_swapped.zip

Well, I now get the same result also on the CH32V003A4M6 with PORTC when I swap D+/D- (first sync bit missing makes perfectly sense when these are swapped ;) )

Hmm, I'm also now having issues working on Port C (0 for DP, 1/2 for data).
Did you find any proper bugs?
Very cool you found it all though!

I am using it normally by connecting USB to port-C. It has not been measured using a logic analyzer, and the MCU models and settings identified are as follows. I hope it's a reference.

CH32V003J4M6 (soic-8)

CH32V003F4PU (tssop-20)

#define USB_DM 2 // USB D+ signal (PC2)
#define USB_DP 1 // USB D- signal (PC1)

Whelp... I feel foolish. I never realized the DPU was misconfigured, to be required to be on PORTD.  Still figuring out what's going on.
Does yours work or not on PORT C?

What other changes did you have to make to get your system enumerating?

Btw I fixed PORT C / other ports operation in 8e10190

So... I now tried your CH32V003FUN board with the proper resistors installed

33R on PD4 to D-
33R on PD3 to D+
1K5 on PD4 to PD5

I also used your original bootloader code from last week with your default gpios.
I won't get proper enumeration. Windows says Invalid Configuration Descriptor (I use nirsoft USBLogView btw.)
I now pulled your latest changes for rv003usb and ch32v003 fun and now the bootloader won't compile anymore:
../rv003usb/rv003usb.S: Assembler messages:
../rv003usb/rv003usb.S:54: Error: illegal operands `la a5,GPIO((GPIO_TypeDef*)(((0x40000000)+0x10000)+0x1400))_BASE'
../rv003usb/rv003usb.S:567: Error: illegal operands `la a5,GPIO((GPIO_TypeDef*)(((0x40000000)+0x10000)+0x1400))_BASE'
make: *** [../ch32v003fun/ch32v003fun/ch32v003fun.mk:27: bootloader.elf] Error 1

Whelp... I feel foolish. I never realized the DPU was misconfigured, to be required to be on PORTD. Still figuring out what's going on for me.

btw. DPU is a really confusing name for the D- Pull-Up.
On low speed USB, the D- signal needs a Pull-Up.
On full speed USB, the D+ signal needs a Pull-Up.

Here is the communication I get with your default bootloader on the ch32v003fun:
ch32v003fun_bootloader_invalid_descriptor.zip
Looks exactly like what I already got and posted above for PORTC and PORD on my other two development boards 🤔

Okay, so I booted a Linux Live-CD and there I see it enumerate properly as HID Device in dmesg. Both, your CH32V003FUN and my CH32V003A4M6 on PORTC.
So it's a windows issue all the time? Here is the communication from the linux machine:
ch32v003fun_bootloader_linux.zip

So actually it also works on a different Windows 10 Dell Notebook, but not on my Windows 10 Surface Pro 7 (neither on the Surface itself, nor on the Dock). I'm confused now...

Okay, so actually everything works except for the bootloader on my Surface Pro 7 and 6.
I tried the bootloader on 3 other Windows PCs and it enumerates.
I also tried the demo_composite_hid and it works with PORTC on CH32V003A4M6 an all devices, including both Surface.
So thx for a37efc3a6135e50a762dd7dd4b969f263f466059 and sorry for the confusion afterwards. Lets continue that in https://github.com/cnlohr/rv003usb/issues/24


[App Check] Add short-lived token support to Debug Provider

Added a constructor to GACAppCheckDebugProvider with a limitedUse parameter; when YES, this requests a short-lived App Check token with a TTL of 5 minutes.
Note: This is blocked on backend support.
#no-changelog

This is implemented as of https://github.com/firebase/firebase-ios-sdk/pull/12067.


Possibly serious performance issues

This line
      zio.Runtime.default.unsafeRun(routeWithDependencies)

in    src/main/scala/com/kzs/lab/ws/package.scala (line 15) blocks the theard until the result is ready and can seriously affect performance

Probably wrong repo for this issue, we don't even have this package


move to grunt-browserify, with fix for node tcp shim

Little code health exercise: move to grunt-browserify 5.x.
This revision is based on browserify 13 - the only incompatibility I've seen is that toArrayBuffer was removed; however, since Buffer now implements the Uint8Array interface I was able to just access its buffer field which is probably a little faster:
https://github.com/substack/node-browserify/blob/master/changelog.markdown#1300
BTW, some background on why they removed that method:
https://github.com/nodejs/node-v0.x-archive/issues/7609#issuecomment-42903457

This change is

:thumbsup:


The links appear not to work

I generated a link from the following sample:

This is the link
However, upon clicking, it takes me to another sample

The external= parameter seems to be missing.


reshape "yout" array

<<When I want to plot a dimpulse response(plt.plot(tout,yout)) , I encounter this error(in 100 samples):
"ValueError: x and y must have the same first dimension, but have shapes (100,) and (1, 100, 1)".
tout and yout must have the same dimensions for plotting the impulse response.>>
Reproducing code example:
<<
num = [1 , 0.5]
 den = [ 1, -1.8*np.cos(np.pi/16) , 0.8]

 dtf = signal.TransferFunction(num,den, dt=0.1)

 t ,y = signal.dimpulse(dtf)

plt.plot(t,y)
>>

Error message:
<<ValueError                                Traceback (most recent call last)
<ipython-input-19-ad8d2169fb53> in <module>()
----> 1 plt.plot(t,y)

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\pyplot.py in plot(*args, **kwargs)
   3259                       mplDeprecation)
   3260     try:
-> 3261         ret = ax.plot(*args, **kwargs)
   3262     finally:
   3263         ax._hold = washold

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
   1715                     warnings.warn(msg % (label_namer, func.__name__),
   1716                                   RuntimeWarning, stacklevel=2)
-> 1717             return func(ax, *args, **kwargs)
   1718         pre_doc = inner.__doc__
   1719         if pre_doc is None:

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in plot(self, *args, **kwargs)
   1370         kwargs = cbook.normalize_kwargs(kwargs, _alias_map)
   1371
-> 1372         for line in self._get_lines(*args, **kwargs):
   1373             self.add_line(line)
   1374             lines.append(line)

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _grab_next_args(self, *args, **kwargs)
    402                 this += args[0],
    403                 args = args[1:]
--> 404             for seg in self._plot_args(this, kwargs):
    405                 yield seg
    406

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _plot_args(self, tup, kwargs)
    382             x, y = index_of(tup[-1])
    383
--> 384         x, y = self._xy_from_xy(x, y)
    385
    386         if self.command == 'plot':

E:\Users\mohammad\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _xy_from_xy(self, x, y)
    241         if x.shape[0] != y.shape[0]:
    242             raise ValueError("x and y must have same first dimension, but "
--> 243                              "have shapes {} and {}".format(x.shape, y.shape))
    244         if x.ndim > 2 or y.ndim > 2:
    245             raise ValueError("x and y can be no greater than 2-D, but have "

ValueError: x and y must have same first dimension, but have shapes (100,) and (1, 100, 1)>>

Scipy/Numpy/Python version information:
<<Output from 'import sys, scipy, numpy; print(scipy.__1.1.0__, numpy.__version__, sys.version_info)'>>

dimpulse returns a tuple even for the SISO outputs, and needs to be taken out from the tuple. Thus use plt.plot(t,y[0])
From the docstring
Returns
-------
tout : ndarray
    Time values for the output, as a 1-D array.
yout : ndarray
    Impulse response of system.  Each element of the tuple represents
    the output of the system based on an impulse in each input.

There is an obvious mistake in the documentation quoted above.  It should be
yout : tuple

A clearer explanation of the organization of the data in yout would be helpful.  Of course, a few examples that demonstrate the use of the function, including cases that show the different possible shapes of the arrays in yout, would also be nice to have in an "Examples" section of the docstring. :)

I think instead of tuple it should have returned a 3D array anyways too.


feat(remote): Implement lazy distributed feature

This is an experimental feature and it may be removed or updated in a breaking manner at any time. Use at your own risk.
Basically, all it does it retrieve the endpoint statuses from another remote host before returning the endpoint statuses. You may specify an endpoint prefix to prefix the name of all endpoints coming from a given remote instance with a string.
remote:
  instances:
    - endpoint-prefix: "myremoteinstance-"
      url: "https://status.example.org/api/v1/endpoints/statuses"

Relevant: #64

Codecov Report

Merging #307 (15e6107) into master (7daf2b5) will decrease coverage by 0.74%.
The diff coverage is 44.08%.

@@            Coverage Diff             @@
##           master     #307      +/-   ##
==========================================
- Coverage   84.58%   83.84%   -0.75%
==========================================
  Files          54       54
  Lines        3770     3812      +42
==========================================
+ Hits         3189     3196       +7
- Misses        449      480      +31
- Partials      132      136       +4

Impacted Files
Coverage Δ

client/client.go
73.07% <ø> (ø)

config/config.go
76.37% <22.22%> (-2.82%)
:arrow_down:

controller/handler/endpoint_status.go
42.57% <40.84%> (-13.31%)
:arrow_down:

controller/handler/handler.go
82.75% <66.66%> (ø)

controller/controller.go
95.45% <100.00%> (ø)

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 7daf2b5...15e6107. Read the comment docs.


Freezes when changing desktop background image

When files window is open and I right click on desktop to select 'Next Desktop Background', the Files app completely freezes.
How to recreate issue:

Please reopen following the issue template


Auto cluster with EC2 Auto-scale up/down

Hi,
i am using auto cluster plugin with EC2 Auto Scale Group (ASG).
encountered clustering issues in a scenario, a EC2 instance was member of a cluster, but it was terminated and re-launched (as part of scale-up/down) with same host name and trying to join same cluster.
Our EC2 hostnames are derived from IP address and ASG picks available ip-address with in the subnet. so it is possible to re-launch a host with same name which was previously terminated and member of same cluster.
Here is my scenario.

Started with ASG size 1, EC2 launched ip-204-71-137 and rabbit started successfully
Updated ASG size to 3, EC2 launched two more instances ip-204-71-139, ip-204-71-155, they both joined cluster with ip-204-71-137.
Updated ASG size bak to 1, EC2 terminated ip-204-71-139 and ip-204-71-155. so one node ip-204-71-137 is left in cluster .
Updated EC2 ASG size to 3, EC2 launched two more instances ip-204-71-139 , ip-204-71-156.  EC2 recycled ip-204-71-139 as it was previously terminated.   ip-204-71-156 joined rabbit cluster(ip-204-71-137) without any issues, but auto-cluster plugin recognized that ip-204-71-139 is Already member of cluster ['rabbit@ip-204-71-137','rabbit@ip-204-71-156', 'rabbit@ip-204-71-155','rabbit@ip-204-71-139'] and tried to start rabbit on 137 and failed.

Here is the full log on ip-204-71-137 from second launch ..
=INFO REPORT==== 3-Feb-2016::20:48:20 ===
autocluster: Registering node with consul
=INFO REPORT==== 3-Feb-2016::20:48:20 ===
Resetting Rabbit
=INFO REPORT==== 3-Feb-2016::20:48:22 ===
Already member of cluster: ['rabbit@ip-204-71-137','rabbit@ip-204-71-156',
'rabbit@ip-204-71-155','rabbit@ip-204-71-139']
=INFO REPORT==== 3-Feb-2016::20:48:25 ===
msg_store_transient: using rabbit_msg_store_ets_index to provide index
=INFO REPORT==== 3-Feb-2016::20:48:25 ===
msg_store_persistent: using rabbit_msg_store_ets_index to provide index
=WARNING REPORT==== 3-Feb-2016::20:48:25 ===
msg_store_persistent: rebuilding indices from scratch
=INFO REPORT==== 3-Feb-2016::20:48:25 ===
started TCP Listener on [::]:5671
=INFO REPORT==== 3-Feb-2016::20:48:26 ===
started SSL Listener on [::]:5672
=INFO REPORT==== 3-Feb-2016::20:48:26 ===
autocluster: Starting Consul Health Check TTL Timer
=INFO REPORT==== 3-Feb-2016::20:48:28 ===
Management plugin started. Port: 15672
=INFO REPORT==== 3-Feb-2016::20:48:28 ===
stopped SSL Listener on [::]:5672
=INFO REPORT==== 3-Feb-2016::20:48:28 ===
stopped TCP Listener on [::]:5671
=INFO REPORT==== 3-Feb-2016::20:48:29 ===
Error description:
{could_not_start,rabbitmq_management,
{{shutdown,
{failed_to_start_child,rabbit_mgmt_sup,
{'EXIT',
{{shutdown,
[{{already_started,<10869.1317.0>},
{child,undefined,rabbit_mgmt_db,
{rabbit_mgmt_db,start_link,[]},
permanent,4294967295,worker,
[rabbit_mgmt_db]}}]},
{gen_server2,call,
[<0.569.0>,{init,<0.567.0>},infinity]}}}}},
{rabbit_mgmt_app,start,[normal,[]]}}}

At least for the case where the instance is shut down cleanly, as opposed to crashing, the node can disconnect from the cluster with rabbitmqctl reset during the shutdown process.

I think it is bug on RabbitMQ side
Clean shutdown node is able to join the cluster once it is restarted.
But in the sceraio when EC2 instance is terminated, re-launched with same host name with fresh installation and re-join cluster, rabbitmqctl join_cluster thinks that node is already member of the cluster (based on the exiting cluster status ), without considering the fact that re-joining node has no idea about existing cluster node and starts node normally without actually join cluster.
I think RabbitMQ should be intelligent enough to join exiting cluster nodes and re-joining node as re-joining node explicitly invoking join-cluster.
I opened a discussion on this in rabbitmq google groups
https://groups.google.com/forum/m/#!topic/rabbitmq-users/-1gw9ZYHGyw
I think rabbit

I believe this is actually a "feature" of rabbitmq, not a bug, but I also believe that rabbitmq (or autocluster) should have a config option that turns off this check and allows nodes to join as long as an active node of the same name isn't currently running in the cluster,
With OpsWorks, at least, you can add a recipe that's run prior to termination that removes the node from the cluster before shutting down.  Like I said, this doesn't solve the issue of a crashed node; it only helps those that are shut down cleanly.

autocluster is actually doing its job right,

register the node with consul,
application:stop(rabbit),
mnesia:stop(),
rabbit_mnesia:reset(),
rabbit_mnesia:join_cluster(lists:nth(1, Alive),
mnesia:start(),
rabbit:start(),

but on rabbit_mnesia:join_cluster(lists:nth(1, Alive) call, RabbitMQ code rabbit_mnesia.erl line number  207  thinks that re-joining node is Already member of cluster, starts node without actually joining cluster.
=INFO REPORT==== 3-Feb-2016::20:48:20 ===
autocluster: Registering node with consul
=INFO REPORT==== 3-Feb-2016::20:48:20 ===
Resetting Rabbit
=INFO REPORT==== 3-Feb-2016::20:48:22 ===
Already member of cluster: ['rabbit@ip-204-71-137','rabbit@ip-204-71-156',
'rabbit@ip-204-71-155','rabbit@ip-204-71-139']

reason why i am thinking it is rabbit bug is, rabbit_mnesia:join_cluster() is not actually joining node with cluster and not even throwing error.

I think you're right -- autocluster performs a reset(), which calls reset_gracefully(), which calls leave_cluster().  This normally works if rabbitmq is up and running and already joined to the cluster (the leave_cluster() call propagates to the other nodes), but doesn't work if it can't start up (management plugin crashing on startup) or it isn't already joined to the cluster (which a fresh node isn't while it's booting but before calling a join_cluster).  This appears to be a "chicken-and-egg" situation where either reset or join_cluster needs to change to behave a little differently at startup (vs. when it's called from rabbitmqctl).

Thanks for your findings. We'd consider adding a new function that does what this plugin needs for 3.6.x. For 3.7.0, we hope to have the same functionality in the core.

I released 0.5.0 today, which adds the support to remove dead nodes from the cluster.

@gmr , I am using RabbitMQ 3.6.6 on Erlang 19.1.3 and autocluster 0.6.1 plugin and it seems that when a node goes down, RabbitMQ does not remove it from the replication list automatically, do you know maybe why ?