Task dialogs!

As spec'd out in #94, TaskDialogs are coming soon to FluentAvalonia! There have been some design changes from the original spec, but I think you'll like them - some changes came from the from the proposal in WinUI's repo linked to in the original issue. I've focused on customization with the dialogs to ensure they allow you to easily do what you need them to, without making them a nightmare.
One big change compared to ContentDialogs, is that TaskDialogs can launch in their own modal dialog window. This utilizes CoreWindow, which now has some additional features to properly handle the caption buttons for dialog states (i.e., the min and max/restore buttons are hidden). Unfortunately for Mac/Linux, you'll get the default behavior for dialog windows in Avalonia, which may still show the minimize button. The benefit for this though is you're no longer bound to the app window dimensions.
For platforms that don't support windows, TaskDialog falls back to the ContentDialog behavior and uses the OverlayLayer. I've included the ContentDialog animation and shadows for this scenario too. You can also force this behavior on windowing platforms if you'd like.
Here's what they look like:

Yes, that is a ProgressBar built into the dialog - it supports normal and indeterminate, and can be set to show an error state (turns red) or suspended state (turns yellow).
The footer area has a few visibility options (never, auto, and always). Never is self-explanatory. Always means the footer content shows without the "More Details" button. Auto means the footer area can be expanded open with the "More Details" button. The labels "More Details" and "Less Details" are resources, thus you can easily change them by just overriding that resource
TaskDialog buttons and commands are created by you using abstractions (TaskDialog creates the actual controls), but just about everything is able to be updated while the dialog is showing - thus you can react and dynamically change the content as needed. The only thing you can't do is add or remove buttons/commands after showing. That is not supported and will not be.
It does support a default button (which can either be a button or a command), and the Enter key will respond to that. Escape will also close the dialog. Keyboard navigation within the dialog though is limited to default Tab behavior for now.
Known issues / design decisions:

I know the icons in the buttons are mis-aligned with the text. There's a couple issues with the symbol font I need to look at (alignment, anti-aliasing) that I think is behind this - just need the time.
Despite having the icon and description properties (inherited), checkboxes and radiobuttons in the command area ignore these. This was a design decision and will not change at this time.

There's a couple issues with the symbol font I need to look at (alignment, anti-aliasing) that I think is behind this - just need the time.

Hm, let me know if you need me to look at something here. Hopefully it is a problem that can be solved without too much trouble. Its possible to custom position glyphs in FontForge but its always tricky getting the scripts to work. Its also not feasible to do that for each glyphs for maintainability concerns.
That said, the glyphs for standard controls seem to be positioned just fine? That uses the same symbols font for ComboBox, etc as you know.

Just FYI for fluent v2 styles (example ContentDialog) the middle content area is the light color background and then the header and bottom buttons are dark backgrounds. Right now you have the header with the light color background. So while it looks good, and is the way things were done historically, it doesnt quite match Fluent v2.
Awesome control though. Looking really good!

There's a couple issues with the symbol font I need to look at (alignment, anti-aliasing) that I think is behind this - just need the time.

Hm, let me know if you need me to look at something here. Hopefully it is a problem that can be solved without too much trouble. Its possible to custom position glyphs in FontForge but its always tricky getting the scripts to work. Its also not feasible to do that for each glyphs for maintainability concerns.
That said, the glyphs for standard controls seem to be positioned just fine? That uses the same symbols font for ComboBox, etc as you know.

So the alignment issue seems to a combination of things. 1) It does seem like the symbols render unevenly, at least when placed in a Viewbox, either its not centered or the baseline is just naturally high. 2) Segoe UI family has a lower baseline - which makes it seem lower when VerticalAlignment=Center.

In order from LTR:
SymbolIcon,
SymbolIcon,
SymbolIcon,
TextBlock with FluentSystemIcons-Regular
TextBlock with Segoe UI Variable Text
FluentSystemIcons seems to render fine, so I think it might be something with FontForge? Or this is entirely correct, and margins are in order. Elsewhere, I think lack of Viewbox and just being absolutely positioned via margins hides this issue
Aliasing is an issue I've seen though since switching. The three that stand out to me are the Dismiss and ArrowLeft icons are rendering too thick:

and the Navigation icon's middle line is rendering 1px off:

This I haven't had a chance to figure out whether it's FontForge, my rendering, or Skia acting up though. I need to go back and check if I had this issue when using the FluentSystemIcons font.

Just FYI for fluent v2 styles (example ContentDialog) the middle content area is the light color background and then the header and bottom buttons are dark backgrounds. Right now you have the header with the light color background. So while it looks good, and is the way things were done historically, it doesnt quite match Fluent v2.
Awesome control though. Looking really good!

That's a design decision on my part. I originally had it like the ContentDialog, but I didn't like how monochrome the whole thing looked, so I added a lighter color to the header. The buttons are still a darker color though. It It's a lightweight styleable resource, so it can always be overridden. I'm open to other thoughts, but I think it helps lift the dialog up, and helps distinguish that this is an entirely different control from the ContentDialog, not just a light enhancement.

That's a design decision on my part. I originally had it like the ContentDialog, but I didn't like how monochrome the whole thing looked, so I added a lighter color to the header. The buttons are still a darker color though. It It's a lightweight styleable resource, so it can always be overridden. I'm open to other thoughts, but I think it helps lift the dialog up, and helps distinguish that this is an entirely different control from the ContentDialog, not just a light enhancement.

I think the way you have the ContentDialog styles now are perfect

I was having issues with even PathIcon alignment within Viewbox in the past with Avalonia. If you tried using the path from the ComboBox in Avalonia itself would it appear similar? I just want to make sure the issue is only with text.
I also checked the glyph alignment in FluentAvalonia/WinSymbols3 TTF fonts with:
https://fontdrop.info/#/?darkmode=true and
https://torinak.com/font/lsfont.html
But I don't see anything grossly wrong. A few glyphs could be repositioned a pixel or two to better center them. However, I'm not sure how Microsoft does the build and they might have some transforms there. FontForge is also automatically transforming the SVG and I don't think I can configure too much during source import (unless I modified the SVG xml). Afterwards, things can be adjusted though. Here is how it currently works: https://github.com/robloo/SymbolIconManager/blob/ef66959fc07af0101cc3eede34d63408597d3f18/Source/Models/FontBuilder.cs#L160-L180
Concerning the difference in size, I think that is just the size variation chosen for Segoe UI Fluent. The smaller, 14, 16, etc. variants have wider strokes than 20px/24px which is what was used. Of course the sources for these glyphs are not actually the same either so it could be a design decision difference between Windows / Fluent UI System as well.

I was having issues with even PathIcon alignment within Viewbox in the past with Avalonia. If you tried using the path from the ComboBox in Avalonia itself would it appear similar? I just want to make sure the issue is only with text.
I also checked the glyph alignment in FluentAvalonia/WinSymbols3 TTF fonts with: https://fontdrop.info/#/?darkmode=true and https://torinak.com/font/lsfont.html
But I don't see anything grossly wrong. A few glyphs could be repositioned a pixel or two to better center them. However, I'm not sure how Microsoft does the build and they might have some transforms there. FontForge is also automatically transforming the SVG and I don't think I can configure too much during source import (unless I modified the SVG xml). Afterwards, things can be adjusted though. Here is how it currently works: https://github.com/robloo/SymbolIconManager/blob/ef66959fc07af0101cc3eede34d63408597d3f18/Source/Models/FontBuilder.cs#L160-L180
Concerning the difference in size, I think that is just the size variation chosen for Segoe UI Fluent. The smaller, 14, 16, etc. variants have wider strokes than 20px/24px which is what was used. Of course the sources for these glyphs are not actually the same either so it could be a design decision difference between Windows / Fluent UI System as well.

I'm gonna do a deeper look into this later and if I find anything I'll open up an issue on your SymbolIconManager repo and we can continue our discussion there. But I agree there's nothing too out of place anywhere, it just in certain situations

v1.3-beta package will be released shortly after merging. There's a few more bug fixes to do before full v1.3 package, but beta package will now make TabView and TaskDialog available outside of master. More on the v1.3 next week


Initial_HAP_Invalid_ProviderOne_ID_Failure.xml

github-2471.zip
TestNG Version
7.3.0
Expected behavior
Suites Slave-1 and Slave-2 should run in parallel
Actual behavior
Suites Slave-1 and Slave-2 run in sequence
Is the issue reproducible on runner?

[ ] Shell
[ ] Maven
[ ] Gradle
[ ] Ant
[x] Eclipse
[ ] IntelliJ
[ ] NetBeans

Test case sample

Zip file attached (after bug creation)

This is the same as issue 1686 which was closed because insufficient reproduceable example with expected behavior was not provided. I have provided a full, simplified, example. Below is the output, Tests 1x and 2x should run in parallel, but are run in series (at least that is the requested behavior, how to do that). Note that I have modified the original print routine to take a message, then run it once when entering, and once when exiting, after a short pause (1 second sleep). What we want to see is for the test 1x starts to be interspersed with the test 2x starts.
[RemoteTestNG] detected TestNG version 7.3.0
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
...
... TestNG 7.3.0 by CÃ©dric Beust<EMAIL_ADDRESS>...
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 1
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 1
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-1686-test-11
Tests run: 4, Failures: 0, Skips: 0
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 1
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 1
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-12
Tests run: 4, Failures: 0, Skips: 0
===============================================
github-2471-slave-suite-1
Total tests run: 8, Passes: 8, Failures: 0, Skips: 0
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 14 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 15 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 15 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 14 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 15 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 14 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 14 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 15 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 15
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 14
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 15
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 14
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-22
Tests run: 4, Failures: 0, Skips: 0
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-21
Tests run: 4, Failures: 0, Skips: 0
===============================================
github-2471-slave-suite-2
Total tests run: 8, Passes: 8, Failures: 0, Skips: 0
===============================================
github-2471-master-suite
Total tests run: 16, Passes: 16, Failures: 0, Skips: 0

This is the same as issue 1686 which was closed because insufficient reproduceable example with expected behavior was not provided. I have provided a full, simplified, example. Below is the output, Tests 1x and 2x should run in parallel, but are run in series (at least that is the requested behavior, how to do that). Note that I have modified the original print routine to take a message, then run it once when entering, and once when exiting, after a short pause (1 second sleep). What we want to see is for the test 1x starts to be interspersed with the test 2x starts.
[RemoteTestNG] detected TestNG version 7.3.0
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
[TestNGContentHandler] [WARN] It is strongly recommended to add "" at the top of your file, otherwise TestNG may fail or not work as expected.
...
... TestNG 7.3.0 by CÃ©dric Beust<EMAIL_ADDRESS>...
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 1
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 1
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-1686-test-11
Tests run: 4, Failures: 0, Skips: 0
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 1 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 1 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 1
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 1
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-12
Tests run: 4, Failures: 0, Skips: 0
===============================================
github-2471-slave-suite-1
Total tests run: 8, Passes: 8, Failures: 0, Skips: 0
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 14 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 15 Message: Test 1 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 15 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.one()> running on Thread : 14 Message: Test 1 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 15 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 14 Message: Test 2 started
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 14 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase1.two()> running on Thread : 15 Message: Test 2 done
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 15
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.one()> running on Thread : 14
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 15
Suite: , TestName: , MethodName: <com.rationaleemotions.TestCase2.two()> running on Thread : 14
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-22
Tests run: 4, Failures: 0, Skips: 0
PASSED: one
PASSED: two
PASSED: one
PASSED: two
===============================================
github-2471-test-21
Tests run: 4, Failures: 0, Skips: 0
===============================================
github-2471-slave-suite-2
Total tests run: 8, Passes: 8, Failures: 0, Skips: 0
===============================================
github-2471-master-suite
Total tests run: 16, Passes: 16, Failures: 0, Skips: 0

@ZathrasOne - Can you also let us know how are you executing the test? I noticed that you have checked eclipse.
Just to be absolutely sure, please run the tests from the maven command line using mvn clean test and share your experience.

@ZathrasOne - Can you also let us know how are you executing the test? I noticed that you have checked eclipse.
Just to be absolutely sure, please run the tests from the maven command line using mvn clean test and share your experience.

@ZathrasOne - I have debugged this using the sample that you shared and I have noticed that the code path here is being invoked.
So this re-iterates that the suites are being run in parallel. You can setup breakpoint in the same place and then run this via the IDE and see this for yourself.
Closing this issue since there's nothing much to be done from TestNG side.


LoadQirByteCode

Adds a public function to the AssemblyLoader that can extract QIR byte code from dlls created by the compiler.
This method is used in runtime PR: https://github.com/microsoft/qsharp-runtime/pull/658

/azp run


Handle disconnected nodes

Is there a way to handle for nodes that aren't connected to the main branch? I guess I'm asking whether it is possible to show two disconnected networks in the same interactive viewer. Currently if not all nodes are connected they are drawn on top of each other.

Which graph algorithm did you try?

I'm using the BuchheimWalkerAlgorithm but I didn't think to try and use the others.

Looks like it works with the SugiyamaAlgorithm which is good enough for my purposes. But might be something you want to look at in the future.

The FruchtermanReingoldAlgorithm allows it as well but it sometimes throws the disconnected network way out away from the main network.

Good to know. The feature would not be available for BuchheimWalker which is for tree layout mostly. So I am closing this


Bookshelfjs ORM How to get or see SQL statement its building

When building ORM query, I want to see what the actual (raw) query is that is executed.
For example in Rails we can do like this:
User.where(name: 'Oscar').to_sql
# => SELECT "users".* FROM "users"  WHERE "users"."name" = 'Oscar'

This feature present in Bookshelfjs? or any other way to get this?

Hi @raj-optisol
You can use .query().toSQL() or  .query().toString(). But achieving exact result as inRails is a bit more complicated as queries may be not complete. The cause is that many statements get applied just before performing the query in Bookshelf. For example Bookshelf relations behave so. Also many plugins use events to apply query statements. If you want to debug the queries then I would suggest you to use Knex#debug instead. For example
model.query(function(qb) {
  qb.debug(true);
}).fetch()

It prints the debug info in the console.

@vellotis  Thanks for your response..  Ok then any idea for building feature like in Rails to_sql ??

If you run with DEBUG=knex:query it will print queries but it will be something like:
  knex:query select "users".* from "users" where "company_id" = ? limit ? +3ms

If you need to see more - you can patch current code and add custom logging:
var util = require('util');
var knexClient = require('knex/lib/client');
var origQuery = knexClient.prototype.query;
knexClient.prototype.query = function (connection, obj) {
  console.log(`SQL: ${obj.sql}  --  ${util.inspect(this.prepBindings(obj.bindings))}`);
  return origQuery.apply(this, arguments);
};

Output will be:
SQL: select "users".* from "users" where "company_id" = ? limit ?  --  [45, 1]

But what if you'd like to get a hold of the generated SQL without executing it – just like knex toString() function. How would you go about implementing it?

It is not so simple. NodeJS is all about events. Query can be modified by Model fetching event. That means we do not have the full query before it is really being fetched, sent to knex and handled by the DB.
This means refactoring the current codebase to support this feature. As this is Open Source project it lives it's life along with the needs of its developers who are willing contribute.
As I like to say:

Open Source is the best thing that could have happened. (because it is free and you could implement fixes yourself)
Open Source is the worst thing to be happening. (because it is free and nobody else is going to solve your specific problem for you)

If you do not have query modifications by events you could use just model.query().toString()

Yes, events changes stuff, but finally knex will create the query and send it to db. What I am looking for is a way to expose knex's toString function in bookshelf so that knex returns the query rather than send it to db.
Not implementing a new toString-function in bookshelf

@cjnqt Is this for testing purposes?

I guess it would be good for testing, but my use case is this:
I work with financial data and use transactions a lot. Sometimes I'd like wrap a large amount of queries within a transaction, and in these cases the regular syntax for transactions are cumbersome.
I first tried to simply write a long SQL-query for these cases (BEGIN; QUERY1; QUERY2; ...; COMMIT) but knex parameter binding (knex.raw(sql, {bindings}) requires that the provided sql only contains one query. So instead I'd like to write:
var sql = [
'BEGIN',
bookshelf.model('User').forge().save({some:data}).toString(),
bookshelf.knex.raw( 'SOME RAW SQL', {data: bindings}).toString(),
bookshelf.model('Other').forge().save({some:data}).toString(),
... many more queries here...
'COMMIT'
].join('; ')

knex.raw( sql ).then(...)

Why don't you use Bookshelf::transaction?

When I want to a wrap a looooot of statements in a transaction, using Bookshelf::transaction gets quite messy.
But https://github.com/tgriesser/knex/issues/1681  looks really promising!

Closed because of incativity and possibly not an issue.

@vellotis is it possible to write to 2 seperate Databases in a single transaction?
I'm trying to create a system where a record of every sql query is saved in an external DB.

You should create a new issue for this question. But...
It would be the best if these two databases have their own way to perform replication. It shouldn't be a responsibility of business logic.
But if you still wan't it to be a business logic then as a transaction it is not possible. You could listen knex query-response event and put your own replication in place.

sorry for the lack of response thank you @vellotis


SDP update getting started with rebuild instructions

Few partners had the issue of code updates not being properly reflected in the code. Adding these instructions.

Preview is available here:http://developers-pr225.previews.kube001.services.stellar-ops.com


FAIL: TestTxnWriteFail

=== RUN   TestTxnWriteFail
2016-05-20 06:05:40.712844 I | etcdserver: name = node2727028312981969055
2016-05-20 06:05:40.712954 I | etcdserver: data dir = /tmp/etcd551644292
2016-05-20 06:05:40.713065 I | etcdserver: member dir = /tmp/etcd551644292/member
2016-05-20 06:05:40.713129 I | etcdserver: heartbeat = 10ms
2016-05-20 06:05:40.713199 I | etcdserver: election = 100ms
2016-05-20 06:05:40.713284 I | etcdserver: snapshot count = 0
2016-05-20 06:05:40.713362 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21532
2016-05-20 06:05:40.713470 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21531
2016-05-20 06:05:40.713543 I | etcdserver: name = node3807024210026896221
2016-05-20 06:05:40.713675 I | etcdserver: data dir = /tmp/etcd375866387
2016-05-20 06:05:40.713758 I | etcdserver: member dir = /tmp/etcd375866387/member
2016-05-20 06:05:40.713861 I | etcdserver: name = node8889113302011076440
2016-05-20 06:05:40.713989 I | etcdserver: data dir = /tmp/etcd550152278
2016-05-20 06:05:40.714083 I | etcdserver: member dir = /tmp/etcd550152278/member
2016-05-20 06:05:40.714165 I | etcdserver: heartbeat = 10ms
2016-05-20 06:05:40.714258 I | etcdserver: heartbeat = 10ms
2016-05-20 06:05:40.714356 I | etcdserver: election = 100ms
2016-05-20 06:05:40.714454 I | etcdserver: snapshot count = 0
2016-05-20 06:05:40.714549 I | etcdserver: initial cluster = node2727028312981969055=http://<IP_ADDRESS>:21531,node3807024210026896221=http://<IP_ADDRESS>:21533,node8889113302011076440=http://<IP_ADDRESS>:21535
2016-05-20 06:05:40.714694 I | etcdserver: election = 100ms
2016-05-20 06:05:40.714800 I | etcdserver: snapshot count = 0
2016-05-20 06:05:40.714926 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21536
2016-05-20 06:05:40.715033 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21535
2016-05-20 06:05:40.715186 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21534
2016-05-20 06:05:40.715342 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21533
2016-05-20 06:05:40.715490 I | etcdserver: initial cluster = node2727028312981969055=http://<IP_ADDRESS>:21531,node3807024210026896221=http://<IP_ADDRESS>:21533,node8889113302011076440=http://<IP_ADDRESS>:21535
2016-05-20 06:05:40.715625 I | etcdserver: initial cluster = node2727028312981969055=http://<IP_ADDRESS>:21531,node3807024210026896221=http://<IP_ADDRESS>:21533,node8889113302011076440=http://<IP_ADDRESS>:21535
2016-05-20 06:05:40.752477 I | etcdserver: starting member 6fac80429b1976f1 in cluster d909c0d7b220e389
2016-05-20 06:05:40.752782 I | raft: 6fac80429b1976f1 became follower at term 0
2016-05-20 06:05:40.752865 I | raft: newRaft 6fac80429b1976f1 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-20 06:05:40.752915 I | raft: 6fac80429b1976f1 became follower at term 1
2016-05-20 06:05:40.752993 I | etcdserver: starting member e43be156984881f7 in cluster d909c0d7b220e389
2016-05-20 06:05:40.753215 I | raft: e43be156984881f7 became follower at term 0
2016-05-20 06:05:40.753306 I | raft: newRaft e43be156984881f7 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-20 06:05:40.753363 I | raft: e43be156984881f7 became follower at term 1
2016-05-20 06:05:40.761315 I | etcdserver: starting member aea1f3ff542bdddf in cluster d909c0d7b220e389
2016-05-20 06:05:40.761671 I | raft: aea1f3ff542bdddf became follower at term 0
2016-05-20 06:05:40.761862 I | raft: newRaft aea1f3ff542bdddf [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-20 06:05:40.761993 I | raft: aea1f3ff542bdddf became follower at term 1
2016-05-20 06:05:40.784310 I | etcdserver: set snapshot count to default 10000
2016-05-20 06:05:40.784490 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-20 06:05:40.790548 I | etcdserver: set snapshot count to default 10000
2016-05-20 06:05:40.790820 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-20 06:05:40.793215 N | etcdserver: added local member 6fac80429b1976f1 [http://<IP_ADDRESS>:21531] to cluster d909c0d7b220e389
2016-05-20 06:05:40.793997 N | etcdserver: added member aea1f3ff542bdddf [http://<IP_ADDRESS>:21535] to cluster d909c0d7b220e389
2016-05-20 06:05:40.795219 N | etcdserver: added member e43be156984881f7 [http://<IP_ADDRESS>:21533] to cluster d909c0d7b220e389
2016-05-20 06:05:40.800231 I | rafthttp: the connection with e43be156984881f7 became active
2016-05-20 06:05:40.801097 I | rafthttp: the connection with 6fac80429b1976f1 became active
2016-05-20 06:05:40.805315 N | etcdserver: added member 6fac80429b1976f1 [http://<IP_ADDRESS>:21531] to cluster d909c0d7b220e389
2016-05-20 06:05:40.805648 I | rafthttp: the connection with aea1f3ff542bdddf became active
2016-05-20 06:05:40.805748 I | etcdserver: set snapshot count to default 10000
2016-05-20 06:05:40.806592 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-20 06:05:40.806818 I | rafthttp: the connection with 6fac80429b1976f1 became active
2016-05-20 06:05:40.808301 N | etcdserver: added member aea1f3ff542bdddf [http://<IP_ADDRESS>:21535] to cluster d909c0d7b220e389
2016-05-20 06:05:40.809172 N | etcdserver: added local member e43be156984881f7 [http://<IP_ADDRESS>:21533] to cluster d909c0d7b220e389
2016-05-20 06:05:40.809874 N | etcdserver: added member 6fac80429b1976f1 [http://<IP_ADDRESS>:21531] to cluster d909c0d7b220e389
2016-05-20 06:05:40.810303 N | etcdserver: added local member aea1f3ff542bdddf [http://<IP_ADDRESS>:21535] to cluster d909c0d7b220e389
2016-05-20 06:05:40.810741 N | etcdserver: added member e43be156984881f7 [http://<IP_ADDRESS>:21533] to cluster d909c0d7b220e389
2016-05-20 06:05:40.811601 I | rafthttp: the connection with aea1f3ff542bdddf became active
2016-05-20 06:05:40.813333 I | rafthttp: the connection with e43be156984881f7 became active
2016-05-20 06:05:40.843427 I | raft: 6fac80429b1976f1 is starting a new election at term 1
2016-05-20 06:05:40.843549 I | raft: 6fac80429b1976f1 became candidate at term 2
2016-05-20 06:05:40.843612 I | raft: 6fac80429b1976f1 received vote from 6fac80429b1976f1 at term 2
2016-05-20 06:05:40.843685 I | raft: 6fac80429b1976f1 [logterm: 1, index: 3] sent vote request to aea1f3ff542bdddf at term 2
2016-05-20 06:05:40.843754 I | raft: 6fac80429b1976f1 [logterm: 1, index: 3] sent vote request to e43be156984881f7 at term 2
2016-05-20 06:05:40.844951 I | raft: aea1f3ff542bdddf [term: 1] received a MsgVote message with higher term from 6fac80429b1976f1 [term: 2]
2016-05-20 06:05:40.845043 I | raft: e43be156984881f7 [term: 1] received a MsgVote message with higher term from 6fac80429b1976f1 [term: 2]
2016-05-20 06:05:40.845192 I | raft: e43be156984881f7 became follower at term 2
2016-05-20 06:05:40.845268 I | raft: aea1f3ff542bdddf became follower at term 2
2016-05-20 06:05:40.845330 I | raft: e43be156984881f7 [logterm: 1, index: 3, vote: 0] voted for 6fac80429b1976f1 [logterm: 1, index: 3] at term 2
2016-05-20 06:05:40.845416 I | raft: aea1f3ff542bdddf [logterm: 1, index: 3, vote: 0] voted for 6fac80429b1976f1 [logterm: 1, index: 3] at term 2
2016-05-20 06:05:40.845957 I | raft: 6fac80429b1976f1 received vote from aea1f3ff542bdddf at term 2
2016-05-20 06:05:40.846021 I | raft: 6fac80429b1976f1 [quorum:2] has received 2 votes and 0 vote rejections
2016-05-20 06:05:40.846095 I | raft: 6fac80429b1976f1 became leader at term 2
2016-05-20 06:05:40.846158 I | raft: raft.node: 6fac80429b1976f1 elected leader 6fac80429b1976f1 at term 2
2016-05-20 06:05:40.846695 I | raft: raft.node: aea1f3ff542bdddf elected leader 6fac80429b1976f1 at term 2
2016-05-20 06:05:40.847134 I | raft: raft.node: e43be156984881f7 elected leader 6fac80429b1976f1 at term 2
2016-05-20 06:05:40.849514 I | etcdserver: published {Name:node2727028312981969055 ClientURLs:[http://<IP_ADDRESS>:21532]} to cluster d909c0d7b220e389
2016-05-20 06:05:40.850589 I | etcdserver: published {Name:node8889113302011076440 ClientURLs:[http://<IP_ADDRESS>:21536]} to cluster d909c0d7b220e389
2016-05-20 06:05:40.850991 I | etcdserver: published {Name:node3807024210026896221 ClientURLs:[http://<IP_ADDRESS>:21534]} to cluster d909c0d7b220e389
2016-05-20 06:05:40.851059 I | etcdserver: setting up the initial cluster version to 3.0
2016-05-20 06:05:40.851975 N | membership: set the initial cluster version to 3.0
2016-05-20 06:05:40.852442 N | membership: set the initial cluster version to 3.0
2016-05-20 06:05:40.852597 N | membership: set the initial cluster version to 3.0
2016-05-20 06:05:40.868305 E | rafthttp: failed to read aea1f3ff542bdddf on stream Message (net/http: request canceled)
2016-05-20 06:05:40.868385 I | rafthttp: the connection with aea1f3ff542bdddf became inactive
2016-05-20 06:05:40.953143 I | raft: aea1f3ff542bdddf is starting a new election at term 2
2016-05-20 06:05:40.953352 I | raft: aea1f3ff542bdddf became candidate at term 3
2016-05-20 06:05:40.953458 I | raft: aea1f3ff542bdddf received vote from aea1f3ff542bdddf at term 3
2016-05-20 06:05:40.953606 I | raft: aea1f3ff542bdddf [logterm: 2, index: 8] sent vote request to 6fac80429b1976f1 at term 3
2016-05-20 06:05:40.953747 I | raft: aea1f3ff542bdddf [logterm: 2, index: 8] sent vote request to e43be156984881f7 at term 3
2016-05-20 06:05:40.953851 I | raft: raft.node: aea1f3ff542bdddf lost leader 6fac80429b1976f1 at term 3
2016-05-20 06:05:40.954786 I | raft: e43be156984881f7 [term: 2] received a MsgVote message with higher term from aea1f3ff542bdddf [term: 3]
2016-05-20 06:05:40.954943 I | raft: e43be156984881f7 became follower at term 3
2016-05-20 06:05:40.955097 I | raft: e43be156984881f7 [logterm: 2, index: 8, vote: 0] voted for aea1f3ff542bdddf [logterm: 2, index: 8] at term 3
2016-05-20 06:05:40.955206 I | raft: raft.node: e43be156984881f7 lost leader 6fac80429b1976f1 at term 3
2016-05-20 06:05:40.955894 I | raft: aea1f3ff542bdddf received vote from e43be156984881f7 at term 3
2016-05-20 06:05:40.955994 I | raft: aea1f3ff542bdddf [quorum:2] has received 2 votes and 0 vote rejections
2016-05-20 06:05:40.956122 I | raft: aea1f3ff542bdddf became leader at term 3
2016-05-20 06:05:40.956243 I | raft: raft.node: aea1f3ff542bdddf elected leader aea1f3ff542bdddf at term 3
2016-05-20 06:05:40.957164 I | raft: raft.node: e43be156984881f7 elected leader aea1f3ff542bdddf at term 3
2016-05-20 06:05:40.958724 E | rafthttp: failed to dial 6fac80429b1976f1 on stream MsgApp v2 (dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:40.958848 I | rafthttp: the connection with 6fac80429b1976f1 became inactive
2016-05-20 06:05:40.958978 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21531) of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:40.959147 W | etcdserver: cannot get the version of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:40.972053 E | rafthttp: failed to dial 6fac80429b1976f1 on stream MsgApp v2 (dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:40.972214 I | rafthttp: the connection with 6fac80429b1976f1 became inactive
2016-05-20 06:05:41.293534 I | v2http: enabled capabilities for version 3.0.0
2016-05-20 06:05:41.311396 I | v2http: enabled capabilities for version 3.0.0
2016-05-20 06:05:44.963000 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21531) of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:44.963277 W | etcdserver: cannot get the version of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:48.967789 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21531) of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:48.967959 W | etcdserver: cannot get the version of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:52.970492 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21531) of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
2016-05-20 06:05:52.970736 W | etcdserver: cannot get the version of member 6fac80429b1976f1 (Get http://<IP_ADDRESS>:21531/version: dial tcp <IP_ADDRESS>:21531: getsockopt: connection refused)
--- FAIL: TestTxnWriteFail (12.42s)
	txn_test.go:78: timed out waiting for txn to fail

@heyitsanthony @xiang90
What kind of error do we expect to get here? https://github.com/coreos/etcd/blob/master/clientv3/integration/txn_test.go#L71
resp, err := kv.Txn(ctx).Then(clientv3.OpPut("foo", "bar")).Commit()

We send this request after we establish the client with clientv3.NewKV(cli) and stop the etcd node. Most of the time, the error is rpc error: code = 2 desc = grpc: the client connection is closing from this line https://github.com/coreos/etcd/blob/master/etcdserver/etcdserverpb/rpc.pb.go#L2035. If it takes more than 1-second to stop the etcd node, I observe this error grpc: timed out trying to connect from the same gRPC code path. This issue happens when the server somehow fails to return these two errors in 12 second.
I have been trying to reproduce this, but this seems like a gRPC issue, since this happens after we set up gRPC connection. For OUR test case (since the test is in clientv3 package), I still think we should set client side context timeout, rather than waiting for server to return error.
Any thoughts?
Thanks.

@gyuho The test is supposed to check that if the server connection is lost while trying to do a txn, the client will detect that and return an error; I don't think the precise error matters much. Using a ctx timeout defeats the purpose of the test since it will possibly trigger on the ctx timeout instead of the disconnect.

@heyitsanthony You are right. I will investigate more. Thanks!

I have been trying to reproduce (running over 10,000 rounds) but cannot reproduce. Might have to wait for this to happen again in semaphore CI, since it will have better logs.

@gyuho here's the logs https://semaphoreci.com/coreos/etcd/branches/pull-request-5464/builds/5

@heyitsanthony Thanks!
Pasting here:
=== RUN   TestTxnWriteFail
2016-05-28 00:32:48.493269 I | integration: launching node4890084730240107037 (unix://localhost:node4890084730240107037.sock)
2016-05-28 00:32:48.494095 I | integration: launching node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:32:48.494473 I | integration: launching node2216460087929149329 (unix://localhost:node2216460087929149329.sock)
2016-05-28 00:32:48.514269 I | etcdserver: name = node4890084730240107037
2016-05-28 00:32:48.514320 I | etcdserver: data dir = /tmp/etcd513148213
2016-05-28 00:32:48.514356 I | etcdserver: member dir = /tmp/etcd513148213/member
2016-05-28 00:32:48.514385 I | etcdserver: heartbeat = 10ms
2016-05-28 00:32:48.514409 I | etcdserver: election = 100ms
2016-05-28 00:32:48.514435 I | etcdserver: snapshot count = 0
2016-05-28 00:32:48.514467 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21326
2016-05-28 00:32:48.514495 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21325
2016-05-28 00:32:48.514551 I | etcdserver: initial cluster = node2216460087929149329=http://<IP_ADDRESS>:21327,node4890084730240107037=http://<IP_ADDRESS>:21325,node5637448722635423475=http://<IP_ADDRESS>:21323
2016-05-28 00:32:48.514865 I | etcdserver: name = node5637448722635423475
2016-05-28 00:32:48.514907 I | etcdserver: data dir = /tmp/etcd956283822
2016-05-28 00:32:48.514946 I | etcdserver: member dir = /tmp/etcd956283822/member
2016-05-28 00:32:48.514974 I | etcdserver: heartbeat = 10ms
2016-05-28 00:32:48.515002 I | etcdserver: election = 100ms
2016-05-28 00:32:48.515029 I | etcdserver: snapshot count = 0
2016-05-28 00:32:48.515063 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21324
2016-05-28 00:32:48.515098 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21323
2016-05-28 00:32:48.515159 I | etcdserver: initial cluster = node2216460087929149329=http://<IP_ADDRESS>:21327,node4890084730240107037=http://<IP_ADDRESS>:21325,node5637448722635423475=http://<IP_ADDRESS>:21323
2016-05-28 00:32:48.515256 I | etcdserver: name = node2216460087929149329
2016-05-28 00:32:48.515297 I | etcdserver: data dir = /tmp/etcd141558544
2016-05-28 00:32:48.515332 I | etcdserver: member dir = /tmp/etcd141558544/member
2016-05-28 00:32:48.515359 I | etcdserver: heartbeat = 10ms
2016-05-28 00:32:48.515386 I | etcdserver: election = 100ms
2016-05-28 00:32:48.515408 I | etcdserver: snapshot count = 0
2016-05-28 00:32:48.515455 I | etcdserver: advertise client URLs = http://<IP_ADDRESS>:21328
2016-05-28 00:32:48.515485 I | etcdserver: initial advertise peer URLs = http://<IP_ADDRESS>:21327
2016-05-28 00:32:48.515540 I | etcdserver: initial cluster = node2216460087929149329=http://<IP_ADDRESS>:21327,node4890084730240107037=http://<IP_ADDRESS>:21325,node5637448722635423475=http://<IP_ADDRESS>:21323
2016-05-28 00:32:48.538407 I | etcdserver: starting member 2f60caad9ce091e9 in cluster 15f3f7546f78db91
2016-05-28 00:32:48.538602 I | raft: 2f60caad9ce091e9 became follower at term 0
2016-05-28 00:32:48.538673 I | raft: newRaft 2f60caad9ce091e9 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-28 00:32:48.538722 I | raft: 2f60caad9ce091e9 became follower at term 1
2016-05-28 00:32:48.539685 I | etcdserver: starting member e669529ac5ff32e7 in cluster 15f3f7546f78db91
2016-05-28 00:32:48.539837 I | raft: e669529ac5ff32e7 became follower at term 0
2016-05-28 00:32:48.539907 I | raft: newRaft e669529ac5ff32e7 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-28 00:32:48.539947 I | raft: e669529ac5ff32e7 became follower at term 1
2016-05-28 00:32:48.541055 I | etcdserver: starting member 5281ddf5029be584 in cluster 15f3f7546f78db91
2016-05-28 00:32:48.541188 I | raft: 5281ddf5029be584 became follower at term 0
2016-05-28 00:32:48.541234 I | raft: newRaft 5281ddf5029be584 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-05-28 00:32:48.541262 I | raft: 5281ddf5029be584 became follower at term 1
2016-05-28 00:32:48.568630 I | etcdserver: set snapshot count to default 10000
2016-05-28 00:32:48.568701 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-28 00:32:48.573091 N | etcdserver: added local member 2f60caad9ce091e9 [http://<IP_ADDRESS>:21325] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.573470 N | etcdserver: added member 5281ddf5029be584 [http://<IP_ADDRESS>:21323] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.573810 N | etcdserver: added member e669529ac5ff32e7 [http://<IP_ADDRESS>:21327] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.577390 I | etcdserver: set snapshot count to default 10000
2016-05-28 00:32:48.577452 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-28 00:32:48.584061 I | etcdserver: set snapshot count to default 10000
2016-05-28 00:32:48.584142 I | etcdserver: starting server... [version: 3.0.0-beta.0+git, cluster version: to_be_decided]
2016-05-28 00:32:48.584931 I | rafthttp: the connection with 2f60caad9ce091e9 became active
2016-05-28 00:32:48.586208 N | etcdserver: added member 2f60caad9ce091e9 [http://<IP_ADDRESS>:21325] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.587513 I | integration: launched node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:32:48.587843 N | etcdserver: added local member 5281ddf5029be584 [http://<IP_ADDRESS>:21323] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.588455 N | etcdserver: added member e669529ac5ff32e7 [http://<IP_ADDRESS>:21327] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.589929 I | rafthttp: the connection with 2f60caad9ce091e9 became active
2016-05-28 00:32:48.591135 N | etcdserver: added member 2f60caad9ce091e9 [http://<IP_ADDRESS>:21325] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.591342 I | integration: launched node4890084730240107037 (unix://localhost:node4890084730240107037.sock)
2016-05-28 00:32:48.591722 N | etcdserver: added member 5281ddf5029be584 [http://<IP_ADDRESS>:21323] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.592325 N | etcdserver: added local member e669529ac5ff32e7 [http://<IP_ADDRESS>:21327] to cluster 15f3f7546f78db91
2016-05-28 00:32:48.592982 I | integration: launched node2216460087929149329 (unix://localhost:node2216460087929149329.sock)
2016-05-28 00:32:48.594871 I | rafthttp: the connection with 5281ddf5029be584 became active
2016-05-28 00:32:48.599024 I | rafthttp: the connection with e669529ac5ff32e7 became active
2016-05-28 00:32:48.600279 I | rafthttp: the connection with e669529ac5ff32e7 became active
2016-05-28 00:32:48.601239 I | rafthttp: the connection with 5281ddf5029be584 became active
2016-05-28 00:32:48.630687 I | raft: 2f60caad9ce091e9 is starting a new election at term 1
2016-05-28 00:32:48.630778 I | raft: 2f60caad9ce091e9 became candidate at term 2
2016-05-28 00:32:48.630831 I | raft: 2f60caad9ce091e9 received vote from 2f60caad9ce091e9 at term 2
2016-05-28 00:32:48.630894 I | raft: 2f60caad9ce091e9 [logterm: 1, index: 3] sent vote request to 5281ddf5029be584 at term 2
2016-05-28 00:32:48.630948 I | raft: 2f60caad9ce091e9 [logterm: 1, index: 3] sent vote request to e669529ac5ff32e7 at term 2
2016-05-28 00:32:48.631491 I | raft: 5281ddf5029be584 [term: 1] received a MsgVote message with higher term from 2f60caad9ce091e9 [term: 2]
2016-05-28 00:32:48.631607 I | raft: 5281ddf5029be584 became follower at term 2
2016-05-28 00:32:48.631673 I | raft: 5281ddf5029be584 [logterm: 1, index: 3, vote: 0] voted for 2f60caad9ce091e9 [logterm: 1, index: 3] at term 2
2016-05-28 00:32:48.631721 I | raft: e669529ac5ff32e7 [term: 1] received a MsgVote message with higher term from 2f60caad9ce091e9 [term: 2]
2016-05-28 00:32:48.631876 I | raft: e669529ac5ff32e7 became follower at term 2
2016-05-28 00:32:48.631978 I | raft: e669529ac5ff32e7 [logterm: 1, index: 3, vote: 0] voted for 2f60caad9ce091e9 [logterm: 1, index: 3] at term 2
2016-05-28 00:32:48.632334 I | raft: 2f60caad9ce091e9 received vote from 5281ddf5029be584 at term 2
2016-05-28 00:32:48.632427 I | raft: 2f60caad9ce091e9 [quorum:2] has received 2 votes and 0 vote rejections
2016-05-28 00:32:48.632515 I | raft: 2f60caad9ce091e9 became leader at term 2
2016-05-28 00:32:48.632588 I | raft: raft.node: 2f60caad9ce091e9 elected leader 2f60caad9ce091e9 at term 2
2016-05-28 00:32:48.633144 I | raft: raft.node: 5281ddf5029be584 elected leader 2f60caad9ce091e9 at term 2
2016-05-28 00:32:48.633228 I | raft: raft.node: e669529ac5ff32e7 elected leader 2f60caad9ce091e9 at term 2
2016-05-28 00:32:48.637481 I | etcdserver: published {Name:node4890084730240107037 ClientURLs:[http://<IP_ADDRESS>:21326]} to cluster 15f3f7546f78db91
2016-05-28 00:32:48.639986 I | etcdserver: published {Name:node2216460087929149329 ClientURLs:[http://<IP_ADDRESS>:21328]} to cluster 15f3f7546f78db91
2016-05-28 00:32:48.641791 I | etcdserver: published {Name:node5637448722635423475 ClientURLs:[http://<IP_ADDRESS>:21324]} to cluster 15f3f7546f78db91
2016-05-28 00:32:48.643606 I | etcdserver: setting up the initial cluster version to 3.0
2016-05-28 00:32:48.644916 N | membership: set the initial cluster version to 3.0
2016-05-28 00:32:48.645609 N | membership: set the initial cluster version to 3.0
2016-05-28 00:32:48.645681 N | membership: set the initial cluster version to 3.0
2016-05-28 00:32:48.659581 I | integration: stopping node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:32:48.662768 E | rafthttp: failed to read 2f60caad9ce091e9 on stream MsgApp v2 (net/http: request canceled)
2016-05-28 00:32:48.662867 I | rafthttp: the connection with 2f60caad9ce091e9 became inactive
2016-05-28 00:32:48.686720 W | etcdserver: failed to send out heartbeat on time (exceeded the 10ms timeout for 5.775802ms)
2016-05-28 00:32:48.686785 W | etcdserver: server is likely overloaded
2016-05-28 00:32:48.686826 W | etcdserver: failed to send out heartbeat on time (exceeded the 10ms timeout for 5.905021ms)
2016-05-28 00:32:48.686851 W | etcdserver: server is likely overloaded
2016-05-28 00:32:48.687736 E | rafthttp: failed to read e669529ac5ff32e7 on stream Message (net/http: request canceled)
2016-05-28 00:32:48.687791 I | rafthttp: the connection with e669529ac5ff32e7 became inactive
2016-05-28 00:32:48.693654 I | integration: stopped node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:32:48.710837 E | rafthttp: failed to write 5281ddf5029be584 on stream Message (write tcp <IP_ADDRESS>:21325-><IP_ADDRESS>:59411: write: broken pipe)
2016-05-28 00:32:48.710893 I | rafthttp: the connection with 5281ddf5029be584 became inactive
2016-05-28 00:32:48.764746 E | rafthttp: failed to dial 5281ddf5029be584 on stream MsgApp v2 (dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:32:48.764843 I | rafthttp: the connection with 5281ddf5029be584 became inactive
2016-05-28 00:32:52.645064 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21323) of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:32:52.645337 W | etcdserver: cannot get the version of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:32:56.648531 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21323) of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:32:56.648755 W | etcdserver: cannot get the version of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:33:00.653297 W | etcdserver: failed to reach the peerURL(http://<IP_ADDRESS>:21323) of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:33:00.653580 W | etcdserver: cannot get the version of member 5281ddf5029be584 (Get http://<IP_ADDRESS>:21323/version: dial tcp <IP_ADDRESS>:21323: getsockopt: connection refused)
2016-05-28 00:33:00.816558 I | integration: terminating node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:33:00.835251 I | integration: terminated node5637448722635423475 (unix://localhost:node5637448722635423475.sock)
2016-05-28 00:33:00.835395 I | integration: terminating node4890084730240107037 (unix://localhost:node4890084730240107037.sock)
2016-05-28 00:33:00.840682 E | rafthttp: failed to read e669529ac5ff32e7 on stream Message (net/http: request canceled)
2016-05-28 00:33:00.840831 I | rafthttp: the connection with e669529ac5ff32e7 became inactive
2016-05-28 00:33:00.875694 I | integration: terminated node4890084730240107037 (unix://localhost:node4890084730240107037.sock)
2016-05-28 00:33:00.875841 I | integration: terminating node2216460087929149329 (unix://localhost:node2216460087929149329.sock)
2016-05-28 00:33:00.906351 I | integration: terminated node2216460087929149329 (unix://localhost:node2216460087929149329.sock)
--- FAIL: TestTxnWriteFail (12.42s)
	txn_test.go:78: timed out waiting for txn to fail

@heyitsanthony I tried to reproduce this and found
// reconnect will reconnect the client without waiting
func (r *remoteClient) reconnect(err error) {
	r.mu.Lock()
	defer r.mu.Unlock()
	if r.tryUpdate() {
		return
	}
	r.client.connStartRetry(err)
}

blocks for 10 seconds. This is supposed to be non-blocking?

@xiang90 yes

@heyitsanthony OK. I will try to fix.


Need instructions for setting up the OAuth functionality in readme

Currently, the installation section in the readme is missing instructions for how to set up the OAuth to get the app up and running. I had to manually lookup on Google to do the same.

Assigning the issue to @neerua08

Linked to Oauth guide to get client id and password.


Rebuild for gcc7, R 3.5.1, etc.

Checklist

[x] Used a fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

This should hopefully fix #3

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

Using toolchain directly in this manner is deprecated.  Consider using the compilers outlined here.


Refactor crypto feature flags

This is a refactor to make less use of the feature flags openssl and wincrypto for conditional compilation. It plugs in "dummy" impls that panics if the corresponding feature is not turned on. The goal is:

Able to compile with --all-features (no mutually exclusive feature flags)
Always default to a specific crypto (currently openssl), even if that fails runtime. This is to ensure consumers make the correct config instead of relying on feature flags to get a desired behavior
Minimize amount of code behind conditional compilation to aid refactoring

This might be an alternative route to #592

@efer-ms @xnorpx I think this is more the way I'd like to go (open to challenges).
Only the DTLS part is implemented. The next would be to "package up" the SRTP crypto functions under something mirroring the DTLS side.

Move the "free floating" fns new_aes_128_cm_sha1_80, new_aead_aes_128_gcm and srtp_aes_128_ecb_round to some container enum (like SrtpCrypto).
Make a DummySrtpCryptoImpl
Delegate the calls via SrtpCrypto in the same way

I'm happy to keep working on this, or hand it over.

Harder than I thought to pull this refactor off 😰

I'm happy to keep working on this, or hand it over.

I'm happy to hand it off to you.

So I'll defer to you Martin, but I really thing the whole crypto thing can be isolated. There shouldn't be a need to update anything in str0m in order to provide a new crypto implementation. This would allow for a single compliance test to exist for any provider, and ensure that str0m doesn't get polluted with knowledge over the various crypto providers that may or may not exist.
I used the traits for Dtls/DtlsCert to avoid having to sprinkle #cfg everywhere. It makes it more difficult to implement providers, and to keep them isolated.
I only kept DtlsCert around in mine vs. using the trait directly because I was trying to preserve the existing API, which exposes DtlsCert for reuse, but really you could just provide a DtlsIdentity into rtcconfig, as eliminate that as well. The cost is dynamic dispatch, but in your latest code, you end up having a match between implementations anyways, so why not simply use a dynamic dispatch?
Anyways, I'm okay for you to proceed down your path if it's your preferred approach, otherwise I could make the changes I'm talking about in my branch if you want to see what that looks like.
Basically, I think you can end up with #cfg only cause we have a default provider (openssl and/or sha1).

FWIW, another approach could be to use global state. That is what rustls does: https://docs.rs/rustls/latest/rustls/crypto/struct.CryptoProvider.html#method.install_default
I haven't researched their decision process on how they ended up with that design so blindly following it may be an act of cargo cult. Nevertheless, I think it is a good data point for how this is handled in the ecosystem. What we could do is:

Have a CryptoProvider trait that is implemented for various providers
The crypto module exposes implementations of those
The CryptoProvider trait has an install function that sets a global variable.
Anything that needs a certain crypto function just refers to the global state

If we wanted, this could also be split up into multiple crates although I am not sure it is necessary right away. We'd need:

str0m_crypto to provide the trait + global state
str0m_openssl for the OpenSSL impl
str0m_wincrypto for the Win impl
str0m that pulls it all together and exposes the necessary feature-flags

There shouldn't be a need to update anything in str0m in order to provide a new crypto implementation.

That level of modularity is not something we necessarily need to strive for. It's nice, but I think might come at the cost of more abstraction and code complexity.

I only kept DtlsCert around in mine vs. using the trait directly because I was trying to preserve the existing API, which exposes DtlsCert for reuse, but really you could just provide a DtlsIdentity into rtcconfig, as eliminate that as well. The cost is dynamic dispatch, but in your latest code, you end up having a match between implementations anyways, so why not simply use a dynamic dispatch?

As a fundamental principle, str0m is built trying to avoid dynamic dispatch, especially in expensive places. Now, we have failed on that because the decryption/encryption of SRTP is doing it. I also concede I might be overly worrying about it, because the time to encrypt/decrypt probably overshadows the dispatch with orders of magnitude.
Maybe a point of pride rather than a point of reason.

FWIW, another approach could be to use global state.

Interesting idea. I have considered that approach for ureq, but maybe it's applicable here too. At the very least I should probably unify DTLS and SRTP under one CryptoProvider trait.

As a fundamental principle, str0m is built trying to avoid dynamic dispatch, especially in expensive places.

As a datapoint, in our application, even str0m's crypto code is only a low, single-digit percentage of CPU usage under high-load. The IceAgent also only does a few hmac-sha1 though so might not be super-representative.

As a datapoint, in our application, even str0m's crypto code is only a low, single-digit percentage of CPU usage under high-load. The IceAgent also only does a few hmac-sha1 though so might not be super-representative.

Yeah, the ICE sha1 are neither here nor there. The SRTP encryption/decryption is in comparison what takes most CPU for the rest of the WebRTC stack.

As a fundamental principle, str0m is built trying to avoid dynamic dispatch, especially in expensive places. Now, we have failed on that because the decryption/encryption of SRTP is doing it. I also concede I might be overly worrying about it, because the time to encrypt/decrypt probably overshadows the dispatch with orders of magnitude.

I haven't looked to carefully at the code, but if you can do the decision at compile time and pick one provider for dtls/srtp and one provider for sha-1 at compile time with features and then use static dispatch. I don't think there is ever a case when I want to switch between Wincrypto and OpenSSL runtime. Or pure rust implementation vs openssl in the future.

I got nerd-sniped into having a crack at this myself: https://github.com/algesten/str0m/pull/597

We need to do something about this because latest main is broken for us now. See https://github.com/firezone/firezone/actions/runs/12492068466/job/34858890370?pr=7582.

I'll be able to look into this day after tomorrow.

I'll be able to look into this day after tomorrow.

It is not super urgent, I just wanted to flag it :)

@thomaseizinger or @xnorpx anyone care to approve this one?


press enter to start error

Describe your bug here.
alr, this is minor, but in 6.0, pressing enter on the title screen freezes the "Press Enter to start" image to it's first flashing frame
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
No.

You have flashing lights off, it's meant to do that

oh, that's cool


How to install on mib2 high harman audi a3

Is this compatible with mib2 high harman unit on audi a3? I had an attempt to install, It rebooted several times, but I cannot see [Y] This is what I see now, any suggestions ?

It's already installed. Clone current version it's v 4.1 with many improvements. Than you can update this way because it's newer version.

solved!


Readme badges

Gives the landing page a little more flair; see https://github.com/ssm-lang/ssm-runtime/tree/readme-badges
Right now these all point to the dev branch, but we will need to change these all to main once we merge dev into main.

Codecov Report

Merging #8 (7179816) into dev (52e7af0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev       #8   +/-   ##
=======================================
  Coverage   68.06%   68.06%
=======================================
  Files           3        3
  Lines         238      238
  Branches       57       57
=======================================
  Hits          162      162
  Misses         57       57
  Partials       19       19

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 52e7af0...7179816. Read the comment docs.


How to override styles on a component children

Consider this case where I have Charfield components already styled individually but I want to change its styles if they are part of a Wrapper component "FieldGroup" for example
<FieldGroup>
<Charfield name="search" />
<Charfield name="location" />
</FieldGroup>

Is there a way to handle this case? Thank you.

There is no generic way to handle this in Radium. This is one of the aspects of CSS that we are trying to avoid. If you want to change the style of a component, pass props to it. Changing style or behavior based on parent component makes a component less predictable.
While I'm not sure what you are trying to change, here is an example:
<CharField type="compact" name="search" />
<CharField type="default" name="search" />

Thanks makes sense.


Is Dart a single threaded language?

I have been learning Flutter recently and I have a question, is Dart a single threaded language? I would appreciate it if you could give me a reply.

@CoderJackySong

flutter != dart, issue regarding dart should be open in correct repo

this seems a question rather than an issue you may want to ask on stackoverflow, discord, reddit or slack

regardless

Is Dart a single threaded language?

no it is not, you may want to look into isolates

Hi @CoderJackySong
Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you

@iapicca @TahaTesser Thank you very much for your reply.


Fix atomWithEffectsFromRecoilValue effect onSet params

First of all, thanks for this library 🙏.
I noticed that the ~newValue and ~oldValue parameters of the onSet effect callback had the type Recoil.t<'value> instead of 'value when using the FromRecoilValue function.

Hi! Thanks for your PR!
Indeed that seems like a mistake.
Can you add a small test for onSet so that we confirm there won't be any regressions?


Unexport intoto/taskrun funcs

Changes

These funcs do not need to be exported, so unexporting them for now.
Snuck in from https://github.com/tektoncd/chains/pull/649
cc @chitrangpatel
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[x] Has Docs included if any changes are user facing
[x] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including
functionality, content, code)
[x] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings)
[x] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

/lgtm


Remove get_realm from zerver/tests.

Zulip used to use Realm.domain as a unique key for the Realm object. This allowed Zulip to guess a user's realm based solely on their email. This makes sense in some corporate environments where you really do know which realm someone should join based on their email domain, but doesn't make sense in others. Consequently, Zulip is moving from using Realm.domain as a unique key to using a Realm.string_id as the unique key, and will eventually remove the domain field entirely.
There are currently at least 50 places in zerver/tests/* where we use the get_realm function to access a realm by its domain. Instead, we should use get_realm_by_string_id to access realms by their string_id. The string_id of the 'zulip.com' realm is zulip, so e.g. get_realm('zulip.com') should turn into get_realm_by_string_id('zulip').
This would be a great project for a new contributor learning the git workflow and git grep!

@rishig  I have modified all the functions in zerver/tests replacing get_realm() by get_realm_by_string_id(). However, on running the tests, the file zerver/tests/tests.py seems to throw an AttributeError which is due to the absence of name attribute in get_realm_by_string_id() function. Should I add a name attribute for this function? If so, where should these attributes possibly be defined? Any insights on this would be really very helpful.  Thanks!

Thanks for working on this @reyha! If this is for a line like get_realm(realm.domain).name, then the fix is to change it to get_realm_by_string_id(realm.string_id).name. Something like get_realm_by_string_id(realm.domain).name will first do get_realm_by_string_id(realm.domain), which will return None. Then it will do None.name, which will give an AttributeError, since name is not an attribute of None.
If that doesn't fix it feel free to ping me on the development help channel on chat.zulip.org!

Fixed via #2250, thanks @rishig for the writeup and @reyha for fixing this!


Leverage concurrent HTTP Get requests with asyncio

Overview
Sending HTTP Request should happen concurrently with multiple threads using asyncio to save time when dispatching requests for hundreds or thousands of URLs. The distribution and amount of threads should be decided by the runtime and not calculated manually ahead.

Use asyncio when you can, threading when you must.

Links

Speed Up Your Python Program With Concurrency
Hands-on Python 3 Concurrency With the asyncio Module
Python Threading Tutorial: Run Code Concurrently Using the Threading Module

Migration from requests to aiohttp finished. But using asyncio.gather(...) is not working like expected.
Requests do not get sent concurrently, instead they're sent sequentially.
Something is not right... :disappointed:

Additional resources

Understanding Python's asyncio


perhaps make vim and nvim work "similarly" as in with XDG in mind?

like this https://github.com/kaleb/vim-files/blob/master/xdg.vim>?

I appreciate the idea of nicely confining user applications to XDG dirs, and for most applications I'd be open to following that standard, but I really like ~/.vim/plugged for installing local vimpkgs as opposed to ~/.config/vim/plugged, or ~/.plugged, ~/.local/packages, and so I'm always going to want a ~/.vim dir.
I also like having ~/.vimrc next to ~/.bashrc, although I wouldn't mind moving vimrc to ~/.vim/vimrc as vim v7.3.1178 allows.

perhapsaps use something like XDG_CONFIG_HOME/plugged


Configure Worley's Caves

Default may actually be perfect, but play around with it.

# Controls size of caves. Smaller values = larger caves. Between -1.0 and 1.0
# Default: -0.18
D:noiseCutoffValue=-0.5

# Squishes caves on the Y axis. Lower values = taller caves and more steep drops
# Default: 2.0
D:verticalCompressionMultiplier=1.8

# Controls how much to warp caves. Lower values = straighter caves
# Default: 8.0
D:warpAmplifier=4.0

# Controls size of caves. Smaller values = larger caves. Between -1.0 and 1.0
# Default: -0.18
D:noiseCutoffValue=-0.18

# Controls size of caves at the surface. Smaller values = more caves break through the surface. Between -1.0 and 1.0
# Default: -0.081 (45% of noiseCutoffValue)
D:surfaceCutoffValue=-0.081

# Squishes caves on the Y axis. Lower values = taller caves and more steep drops
# Default: 2.0
D:verticalCompressionMultiplier=1.5

# Controls how much to warp caves. Lower values = straighter caves
# Default: 8.0
D:warpAmplifier=6.0


Licensing

So much interesting stuff, thank you for the release! 🤍
Any plans on a permissive license on at least some of it? There's no licenses at all afaict.

On it, I will put an MIT license on all dependencies as well.

Should be g2g!


roof:shape = half-hipped not rendered

roof:shape = half-hipped seems not to be supported.

Example of a half-hipped roof in F4:

Here in north germany, this roof type is pretty common on the countryside. Would be nice, if it could also be supported :-)

As a quick alternative it would be good that half-hipped would be rendered as hipped instead of flat. Its closed to what it is supposed to look like.
But it maybe deviate from solving the problem :)

Some more examples of half-hipped roofs
GE
GL


The fact that the children property of routes returned by getRoutes does not update when routes are dynamically added or removed should be documented.

What problem does this feature solve?
According to this comment on #600, "The children property of routes in getRoutes is the initial value, it's not the current children". This still seems to be the case in the current version, but this behavior is not documented anywhere. I am opening an issue instead of just submitting a PR because I'm not sure whether it would be better suited for the RouteRecordNormalized section, the getRoutes section, or both.
What does the proposed API look like?
n/a

Let's add it along in the API section: https://next.router.vuejs.org/api/#children-1


added requirement of python 2 plus no-parallel

addresses documentation fixes #509

Thanks for the pull request!
Do you think the wording might be a bit confusing? I thought that Python 3 didn't work, and this update implies that it does.
cc @BrianHicks

Yeah, it should just require 2.7. 3 doesn't work.

Might be worth noting that the python 2.7 due to dependency on ansible. Otherwise nothing within this project should prevent python 3.x users if ansible were to support python 3.x

There's also a bug in terraform.py that prevents it from being run
successfully on 3. Since we're 2.7 only for now because of Ansible it's
probably not worth our time to fix, for now.
Leaving it as simply requiring 2.7 in the docs is simpler, in any case, and
we should strive for simplicity.
On Jun 23, 2015 7:54 AM, "Kenny Jones"<EMAIL_ADDRESS>wrote:

Might be worth noting that the python 2.7 due to dependency on ansible.
Otherwise nothing within this project should prevent python 3.x users if
ansible were to support python 3.x
—
Reply to this email directly or view it on GitHub
https://github.com/CiscoCloud/microservices-infrastructure/pull/515#issuecomment-114487364
.

@ObjectiveJoe apart from the fixes mentioned above, this looks good. As soon as you can get it in we'll merge it. Thanks! :)

I changed documentation to simple say requires Python 2.7; didn't mention
that it was because of current Ansible version. Submitted change; should be
available in current pull request.
On Tue, Jun 23, 2015 at 2:48 PM, Brian Hicks<EMAIL_ADDRESS>wrote:

@ObjectiveJoe https://github.com/ObjectiveJoe apart from the fixes
mentioned above, this looks good. As soon as you can get it in we'll merge
it. Thanks! :)
—
Reply to this email directly or view it on GitHub
https://github.com/CiscoCloud/microservices-infrastructure/pull/515#issuecomment-114650837
.

@ObjectiveJoe merged, thanks!


Further explanation of PIN function

Hi, I came across the guide recently and thought I'd open a PR to add some additional information which may be helpful for others. I didn't immediately get what the PIN function macros are doing until I did a worked example. I thought it might be nice to add these examples in an appendix for people to refer to if they need further explanation.
This PR:

Adds an appendix section to the end of the readme.
Adds a step-by-step example to show what the PIN macro is doing.

Thanks for the guide!

Please move your explanation section inline, right after the
https://github.com/cpq/bare-metal-programming-guide/blob/1a3955501dd23fdf0f9201f12867e0a4880f43be/README.md?plain=1#L268-L273
block. Don't create an appendix.
Thank you!

Done


fix: import EthereumProvider instead of default

Description
I ran into this Uncaught (in promise) TypeError: EthereumProvider.init is not a function at WalletConnectConnector.initProvider_fn error when testing my React components with vitest, and I can saw multiple similar reports:

https://github.com/wagmi-dev/references/issues/370
https://github.com/wagmi-dev/references/issues/379

The problem I found is how we use dynamic import in ESM like below https://github.com/wagmi-dev/references/blob/eeed52e2d0170324c53c145e54dc089761a414cb/packages/connectors/src/walletConnect.ts#L280-L284
Unfortunately, init is missing from EthereumProvider in this case.
I've set up a small example here where you can check the test.cjs file https://stackblitz.com/edit/stackblitz-starters-4alfhc?file=index.mjs, no bundlers like esbuild or webpack messing around, so it seems it's how the import works, though I haven't yet found the standard to reference.
Additional Information

[x] I read the contributing docs (if this is your first contribution)

Your ENS/address:

FYI, I've posted a question on stackoverflow here https://stackoverflow.com/questions/76578030/static-method-on-javascript-class-becomes-undefined-after-imported

All right, I can confirm it's a misuse in the code, see https://stackoverflow.com/a/76580524/22148155


SB-841 configurable ldap via controller

All changes introduced. This PR is ready to be merged.

Great! Thank you very much! :)


Update munit, munit-scalacheck to 0.7.27

Updates

org.scalameta:munit
org.scalameta:munit-scalacheck

from 0.7.26 to 0.7.27.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

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

labels: test-library-update, semver-patch

Codecov Report

Merging #140 (cc35a76) into master (4189d92) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master      #140   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines           48        48
=========================================
  Hits            48        48

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 4189d92...cc35a76. Read the comment docs.


Incorrect error message while adding bundle product in cart if no.of bundles contains more qty than available qty

Bug report
Title
Incorrect error message while adding bundle product in cart if no.of bundles contains more than available qty
Issue Description
for eg: if bundle option has only one product with default qty1, and product qty is 10, than while adding this bundle product if customer trying to add more than 10 bundles then getting wrong error message
Preconditions
1. framework Version. Master

Steps to reproduce
1. step1: create a bundle product, add one product in bundle option and set default qty1.
2. step2: while adding to cart set no.of bundles in that order so that the total product qty should be greater than available qty of that product

Expected result
error message should be user friendly
Actual result
https://prnt.sc/tp44ze

Fixed in master


chore: release main

:rock: I've created a release for you
app-info: 3.3.1
3.3.1 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

crash-handler: 4.1.11
4.1.11 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/log-error bumped from ^4.2.4 to ^4.2.5

errors: 3.1.2
3.1.2 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

eslint-config: 3.1.1
3.1.1 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

fetch-error-handler: 0.2.6
0.2.6 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/errors bumped from ^3.1.1 to ^3.1.2

log-error: 4.2.5
4.2.5 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/app-info bumped from ^3.3.0 to ^3.3.1
@dotcom-reliability-kit/logger bumped from ^3.2.0 to ^3.2.1
@dotcom-reliability-kit/serialize-error bumped from ^3.2.0 to ^3.2.1
@dotcom-reliability-kit/serialize-request bumped from ^3.1.0 to ^3.1.1

logger: 3.2.1
3.2.1 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/app-info bumped from ^3.3.0 to ^3.3.1
@dotcom-reliability-kit/serialize-error bumped from ^3.2.0 to ^3.2.1

middleware-log-errors: 4.2.5
4.2.5 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/log-error bumped from ^4.2.4 to ^4.2.5

middleware-render-error-info: 5.1.11
5.1.11 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/app-info bumped from ^3.3.0 to ^3.3.1
@dotcom-reliability-kit/log-error bumped from ^4.2.4 to ^4.2.5
@dotcom-reliability-kit/serialize-error bumped from ^3.2.0 to ^3.2.1

opentelemetry: 2.0.15
2.0.15 (2024-11-26)
Bug Fixes

bump @opentelemetry/auto-instrumentations-node (7a58cf5)
bump @opentelemetry/exporter-metrics-otlp-proto (0a73e88)
bump @opentelemetry/exporter-trace-otlp-proto from 0.54.0 to 0.54.2 (b9686d1)
bump @opentelemetry/instrumentation-runtime-node (b0bd76a)
bump @opentelemetry/sdk-node from 0.54.0 to 0.54.2 (015c5d8)
bump OpenTelemetry packages (f9748f0)

Dependencies

The following workspace dependencies were updated

dependencies

@dotcom-reliability-kit/app-info bumped from ^3.3.0 to ^3.3.1
@dotcom-reliability-kit/errors bumped from ^3.1.1 to ^3.1.2
@dotcom-reliability-kit/log-error bumped from ^4.2.4 to ^4.2.5
@dotcom-reliability-kit/logger bumped from ^3.2.0 to ^3.2.1

serialize-error: 3.2.1
3.2.1 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

serialize-request: 3.1.1
3.1.1 (2024-11-26)
Bug Fixes

remove npm engines pinning (9f51dab)

This PR was generated with Release Please. See documentation.

🤖 Created releases:

app-info-v3.3.1
crash-handler-v4.1.11
errors-v3.1.2
eslint-config-v3.1.1
fetch-error-handler-v0.2.6
log-error-v4.2.5
logger-v3.2.1
middleware-log-errors-v4.2.5
middleware-render-error-info-v5.1.11
serialize-error-v3.2.1
serialize-request-v3.1.1
opentelemetry-v2.0.15

:sunflower:


Increment operator cause unnecessary data races by always calling bpf_map_update_elem

What reproduces the bug? Provide code if possible.
The simple increment operator @++ cause unnecessary data races by always calling bpf_map_update_elem.
This simple bpftrace oneliner: sudo bpftrace -e 'kprobe:cgroup_rstat_flush_locked {@flush_calls++}'
Produces the following eBPF bytecode:
int64 kprobe_cgroup_rstat_flush_locked_1(int8 * ctx):
   0: (b7) r1 = 0
   1: (7b) *(u64 *)(r10 -16) = r1
   2: (bf) r2 = r10
   3: (07) r2 += -16
   4: (18) r1 = map[id:1104351]
   6: (85) call __htab_map_lookup_elem#231648
   7: (15) if r0 == 0x0 goto pc+1
   8: (07) r0 += 56
   9: (b7) r1 = 1
  10: (15) if r0 == 0x0 goto pc+2
  11: (79) r1 = *(u64 *)(r0 +0)
  12: (07) r1 += 1
  13: (7b) *(u64 *)(r10 -8) = r1
  14: (bf) r2 = r10
  15: (07) r2 += -16
  16: (bf) r3 = r10
  17: (07) r3 += -8
  18: (18) r1 = map[id:1104351]
  20: (b7) r4 = 0
  21: (85) call htab_map_update_elem#242720
  22: (b7) r0 = 0
  23: (95) exit

Looking closely at the eBPF bytecode instructions, we observe that BPF-helper map_update_elem is always invoked.
The code in line 11 gets a pointer to the map value (in r0) and increment the value in memory, which is great as we are basically done and could exit, but instead the code continues and calls htab_map_update_elem.

This creates an unnecessary data race, that I was hit by in production

I looked at the code generated for @=count() that does the right thing and skips calling map_update_elem.

Looks like PR #2795 fixed a similar issue for count()

bpftrace --info output
$ sudo bpftrace --info
System
OS: Linux 6.6.30-cloudflare-2024.5.4 #1 SMP PREEMPT_DYNAMIC Mon Sep 27 00:00:00 UTC 2010
Arch: x86_64
Build
version: v0.20.0-149-g742f
LLVM: 18.1.5
unsafe probe: no
bfd: yes
liblldb (DWARF support): yes
libsystemd (systemd notify support): no
Kernel helpers
probe_read: yes
probe_read_str: yes
probe_read_user: yes
probe_read_user_str: yes
probe_read_kernel: yes
probe_read_kernel_str: yes
get_current_cgroup_id: yes
send_signal: yes
override_return: yes
get_boot_ns: yes
dpath: yes
skboutput: yes
get_tai_ns: yes
get_func_ip: yes
jiffies64: yes
for_each_map_elem: yes
Kernel features
Instruction limit: 1000000
Loop support: yes
btf: yes
module btf: yes
map batch: yes
uprobe refcount (depends on Build:bcc bpf_attach_uprobe refcount): yes
Map types
hash: yes
percpu hash: yes
array: yes
percpu array: yes
stack_trace: yes
perf_event_array: yes
ringbuf: yes
Probe types
kprobe: yes
tracepoint: yes
perf_event: yes
kfunc: yes
kprobe_multi: no
uprobe_multi: yes
raw_tp_special: yes
iter: yes

Poke @jordalgo as it looks related to improvement in PR# 2795
And @viktormalik

Just wanted to follow up a bit after some internal discussion.
As per the docs ++ uses a hash map (shared across CPUs) whereas count uses a per-cpu hash map, which allows for safe direct pointer updating. If we're updating the pointer directly in ++ AND calling map_update_elem that's a bug (as you pointed out @netoptimizer). We should decide on one or the other.
I'm also thinking that maybe we should have a config setting for safe writes for even per-cpu map updating as there still can be races if a bpf prog thread is pre-empted by another (via NMI) and updates the same map. Most of the time the overhead is probably not worth accounting for this edge case but it might be worth adding as an option for some users.

Dug into this a little more and AFAICT we're NOT double updating e.g. if I comment out this line, then the value doesn't get updated at all for a map increment @++
https://github.com/bpftrace/bpftrace/blob/master/src/ast/passes/codegen_llvm.cpp#L3931
The LLVM IR also shows that we're loading the map pointer value into a register and adding that to another pointer instead of directly updating. Maybe it's possible there some additional optimization happening where that indirect updating is being removed but I'm having trouble reproing it.
Going to close this task for now but feel free to re-open if you think I missed something. That being said, I am going to look into an atomic increment for ++ instead of a map_update_elem


Collect the least infeasible solution from stored history, without setting return_least_infeasible=True?

Dear pymoo developers and users,
I'm opening this issue to ask if it is possible to collect the least infeasible solution from the stored optimization history during post-analysis. I learnt from the documentation that we can set return_least_infeasible=True in the minimize function, but I wonder if we can still get the same information if return_least_infeasible=True wasn't set.
Thanks in advance!

Yes, you can. In the result object, you have access to the final population of the algorithm res.pop. From there you can extract the least infeasible solution.

Yes, you can. In the result object, you have access to the final population of the algorithm res.pop. From there you can extract the least infeasible solution.

Thanks very much!


when bash build.sh,error:visual C++ is not found(the vs is vs2017)

when I build the source,bash build.sh, output the error:visual C++ is not found, the vision of Visual Studio is  Visual Studio 2017 ,I am sure the VC is ok.

What's your VS location? Did you install it into your "Program Files"? Do you have
Program Files/Microsoft Visual Studio/Installer/vswhere.exe

I use the vs 2017 Community, the path about vs is "C:/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe", and I also had tried to modify the "CheckVC "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC" 15 2017	# 15.0" or tried chance the variable about "progs" in vc32tools, but it isn't work.

how to modify the "CheckVC" or "progs"

Did you solve the issue? If yes, what was wrong then?
I just have older version of VS2017 and can't update it soon without affecting my work so much. That's why I wasn't able to check with recent VS to be sure that it should work.


docs: model to change collection types for Java models

Description

Added example for changing collection types to List in Java
Updated relevant docs
Added the test and its respective snapshot

Related issue(s)

Fixes #424

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 93.575%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2368

Relevant Lines:
2414

💛  - Coveralls

@jonaslagoni sorry for being late. Please check the latest updates.


FunctionMatchers::Run: make return value optional

I'm not sure whether that's a good solution, but without this, functions like validate_... have many descriptions with a dangling 'and'. @desc could be initialised to 'return nothing'by default to avoid having to specify .and_return in all the specs.

Scratch this. @expected_result being nil is used to signal to fully turn off result checking, creating a whole lot of different problems.


Support RxSwift 5.1.0

Could you update your framework with Rx 5.1.0 dependency because of Apple's hard deprecation, starting April 2020: https://developer.apple.com/news/?id=12232019b

Sorry I have a mistake, RxViewController work ok with Rx 5.1.0. Thanks.


fix(ios): fix playback status with lifecycle

Summary
fix(ios): fix playback status with lifecycle
Motivation

Modify it to ignore playInBackground because people can use AppleTV, airplay, etc.

Changes

check external playback active state with iOS lifecycle

check playback status via "_isPlaying" instead of "_paused"

"_paused" is not exactly synchronized with the player's current state. this change is important because the introduction of the "showNotificationControls" prop makes it possible for external controls to control the video.

resolve #3790

Memo
Since the "showNotificationControls" prop allows people to control the video with external controls, I think we need to clarify the behavior of props like playInBackground, playWhenInactive. Currently, we can only control the entry point of lifecycle, and it can be played at any time while not in the foreground.

fully agree with your memo ...

@freeboub
I don't think so, that issue is about audio control. this PR simply changes state of the player.

@YangJonghun After this change when we set playInBackground to true when app going background, playback is pausing even if there is no external playback active

@KrzysztofMoch
I'll check it out. Thanks for letting me know:)

@KrzysztofMoch
The modified code works as intended, and the issue is reproduced in commits before this PR was merged.
FYI) Commit before this PR was merged - https://github.com/TheWidlarzGroup/react-native-video#d072aeb451f515b84b821367bfa3c12cfbeeb725
Probably other code is the cause.


fix(track): Send decisions for all experiments using an event when using track

Coverage remained the same at 100.0% when pulling 27ea4e72a61eb137a841266628d847222382d200 on rashid/fix_conversion_params into 29a511bf4ba1aa486df35faad67dceb76f28b492 on master.

build


About the PR
Media

[ ] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

add: Added fun!
remove: Removed mcgriff

You removed the sprites.
You did not remove the entity, nor the entity spawner on any maps.
This will not work.
What does this accomplish?

You removed the sprites. You did not remove the entity, nor the entity spawner on any maps. This will not work. What does this accomplish?

just the removal of the the pug
thats it


Fix update ids in dashboard metadata on import

CATEGORY
Choose one

[x] Bug Fix
[ ] Enhancement (new features, refinement)
[ ] Refactor
[ ] Add tests
[ ] Build / Development Environment
[ ] Documentation

SUMMARY
Add update for ids of following fields in the json:

filter_immune_slice_fields
default_filters

Add test for correct update of timed_refresh_immune_slices.
TEST PLAN

Export dashboard with default_filters.
Import it using master -> dashboard is broken
Import it using code from this PR -> dashboard works correctly

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

REVIEWERS
@mistercrunch

I'm not sure why cypress test has failed:
CypressError: Timed out retrying: Expected to find element: '.SouthPane .ReactVirtualized__Table', but never found it.

The PR should not change anything related to SQLlab UI.

This is probably just the unreliable js test acting up. I restarted it, should be ok.

Still failing. I tried to run it locally and everything passed correctly:
(venv) smacker in ~/Work/incubator-superset on fix_ids_in_dash_metadata_import [!]
$ TOXENV=cypress-sqllab tox
...
  cypress-sqllab: commands succeeded
  congratulations :)

I just restarted the test again. If you need to manually restart CI, closing and reopening the PR should do it too.

This LGTM generally, I'm thinking we need uuids longer term to make things like this easier.

closing due to inactivity


Added check-solana-price menu bar command

Description

Added one menu bar command that displays the price of SOL in the menu bar.
Screencast

https://www.loom.com/share/b9069b539a794f04bb84494ff2bb7413
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Excellent stuff, thank you! Love the Loom video as well. Nice touch :)
Just one comment about the Solana SVG Icon: I see you went for the black version. The Menu Bar color is based on the wallpaper. MacOS will determine to use black/white based on the contrast ratio.
But one way to change the color of the Icon dynamically is using tint:
icon={{
  source: "solana.svg",
  tintColor: {
    light: "black",
    dark: "white",
  },
}}

I've added this as a suggestion :)
I also left a suggestion about the icon!
Thanks!

Awesome thanks!! Can absolutely make those changes :)

@peduarte Alright should be good to go! 👍🏻

Very nice. Thanks!

LGTM. @TrGiLong You may want to have a look, since you're the author.

Hey @peduarte! If we don't hear back from @TrGiLong should I start building a separate extension? I know we may want to avoid that in general so I can try to make contact outside of Github

Hey all! Going to close this PR since we are not hearing from the author of the extension. I have other extensions I would like to submit and this is blocking that at the moment. Will revisit or build a separate extension in the future :)

@stevedsimkins Hey, sorry about this. Extension Authors normally want to be involved in future updates of their extension. This is the first time that it's taken so long to hear back.
I'm going to raise this internally to see how we can handle this better in the future.

@peduarte No worries! I was trying to avoid making a new extension by just adding the feature to a similar/existing extension as outline in your docs. I'll likely revisit this and see if I can add more to it and make it a more feature full stand alone extension :)


Joomla CMS is not mentionned

Platform

WebExtension (Mozilla Firefox)

Joomla CMS is not mentionned.
If i test my website : visionduweb.fr
I can't see the CMS ( Joomla )
Normal ?

This will be fixed v6.2.3.


Design Workload related UI

There would be a new concept of a Workload in Kiali, following some new concepts in Istio 1.0
So, several new screens need to be designed and added, as well as some existing screens should be modified (like the service details page)
Relevant JIRAs:
https://issues.jboss.org/browse/KIALI-1216
https://issues.jboss.org/browse/KIALI-1217
https://issues.jboss.org/browse/KIALI-1218

@mwringe @lucasponce can I close this, or we have more pending design issues for workloads?

@abonas yes, I guess this issue can be closed.


Naming request

First of, simple but great library! I normally implement this myself manually on observers but this is much slicker.
Do you think editor should be renamed to updater? I just think naming consistency would really polish this repo off.

The naming conventions match up with the actions performed in Laravel's RESTful pattern.
You create, edit and destroy models so have a creator, editor and destroyer.


Update to v0.14.0-rc3

Backlinking to purescript-contrib/governance#35

@JordanMartinez All of the inferred kind annotations here can be fixed to Type. We can also replace the use of foldl1, which will take care of the issues with this PR.

I'm not sure what the these issue is about. It seems to build just fine on its own.

It seems that https://github.com/purescript-contrib/purescript-these/pull/29 added Test.QuickCheck.Laws.Control.* modules depending on quickcheck and quickcheck-laws under src instead of test. Moving those modules under test will perhaps be enough but the pull request also added arrays and lists dependencies to these, we should also update the package set.