XPRESS : generate less logs

Demote log when setting specific XPRESS parameter.
Now uses the same log function call as Gurobi interface

Unfortunately it is not possible to deactivate the XPRESS banner because it is called in the interface constructor, where we don't know yet if the user has enabled solver output.
I would have suggested the user avoids creating a new interface multiple times in their application (and instead using the reset() method), but unfortunately, again, our current implementation of reset() itself calls the constructor again.
I have created a new issue: https://github.com/rte-france/or-tools/issues/87


Use separate repo for CLA + list of signees

As described in this comment.

from my point of view it would make the contribution process more complicated (comparing to few clicks needed to be done in CLA assistant).
And the biggest problem I see here is that the personal information should be stored in a public repository, that could be a reason for some developers not to sign the CLA.


.changePage() with similar names

Hi,
found a bug,
For example if i am navigating from notification.html to notificationdetails.html.
within that page there is a button that invoke .changePage('notification').
There will be no response from the code and error.
Problem is solve after i change the the naming from notificationdetails.html > notidetails.html

Hi,
Thank you for reporting this strange issue..
Do you use page templates? If yes, maybe you called the page wrapper "notification" twice?

I believe i am using page template (class="app-page"  + data-page='true') .
The error occurs when either 1 of the .html's name is a subset of another.
like notification.html vs notificationdetails.html. The 'notification' is the identical word that exist in these 2 example.
That is what happening to mine though. Hope it helps.

I don't get this issue..
Page contents of the kitchen sink are prefixed with the word "page".
Please, see kitchen-sink/contents.
Is the kitchen sink working for you?


Adding ng-jq functionality, the ability to choose your angular.element l...

...ibrary or force jqLite even if jquery is available.

@lgalfaso
Added new pull request: https://github.com/angular/angular.js/pull/10761


Update TODOs in readme

The readme still lists SPDX v2.2 and v2.3 support as TODOs. It should be updated with the list of known shortcomings for 2.3

Fixed via https://github.com/spdx/tools-python/pull/337


Added real support for Unbox stubs to WebAssembly

This fixes #5005
@MichalStrehovsky I think this is in line with your first suggested path, but I'm a little hazy on the real meaning of things like the ClassCode when adding a new node. I'm also not totally sure that I really needed to use BoxedValueType at all, I think maybe I could have just used the original value type.

I'm also not totally sure that I really needed to use BoxedValueType at all, I think maybe I could have just used the original value type.

If you make a valuetype the parent of the thunk, the thunk would be an instance method on a valuetype. this for instance methods on valuetypes is a byref. this for classes (and boxed valuetypes) is an object reference. It would mess up the GC reporting within the method, among other things.

Do we have enough things working that you could write a test that boxes a valuetype and then e.g. calls Equals?

Do you have any recommendations for a specific test I can write for this? other than ToString I'm not really sure what uses unboxing stubs, and I don't think I can run ToString because of other limitations in WebAssembly right now.

Do you have any recommendations for a specific test I can write for this

struct Foo
{
    public int X;

    public override GetHashCode() => X;
}

Foo x = new Foo { X = 123456 };
object boxed = x;
if (boxed.GetHashCode() != x.X) Fail();

Would this work?

I think I've followed all of your advice but I cant seem to get past a field of type SignatureTypeVariable getting thrown into the mix of things, causing an assert when we try to get the offset for it. If I commit what I have can you take a look?

If I commit what I have can you take a look?

Sure!

Throwing seems like a good idea here, but I don't really understand how a non typical field is making it to codegen time. Is there some other issue that needs to be hunted down?

this failure appears to be infrastructure related can you rerun the test on osx?

@dotnet-bot test OSX10.12 Debug and CoreCLR tests


Fix Istio-2020-010

Fix Istio-2020-010

@brian-avery: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

test-tsan_envoy_release-1.7
13c0682af1efb956ac64661960f53f6d45108d76
link
/test test-tsan_envoy_release-1.7

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Can you add a connection string example for Authentication=Active Directory Integrated?

Could we add a connection string example for Azure Active Directory Integrated Authentication? I was able to get this connection string running locally:
_connectionString = "Server=xxxxxxx.database.windows.net,1433; Authentication=Active Directory Interactive; Database=xxxxxxx; User Id=xxxxxxx@microsoft.com;";
However, I tried many variations of this string and could not get it to work. I would like to log into the server with the Azure Managed Identity.
_connectionString = "Server=tcp:xxxxxxx.database.windows.net,1433;Initial Catalog=xxxxxxx;Authentication=Active Directory Integrated;";
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: de9db02d-7310-1141-6aeb-539c02326a36
Version Independent ID: 90062036-aa01-3f73-dac9-b4a092245721
Content: Connection Strings - EF Core
Content Source: entity-framework/core/miscellaneous/connection-strings.md
Product: entity-framework
Technology: entity-framework-core
GitHub Login: @bricelam
Microsoft Alias: avickers

@ezelliott  The docs for that belong to SqlClient, you can find them here: https://docs.microsoft.com/sql/connect/ado-net/sql/azure-active-directory-authentication

Thanks! Any my apologies for the mistake.
For some reason I thought there was a setting I was missing in the options builder and not a connection string error.
The actual connection string I was looking for was this:
Server=xxxxxx.database.windows.net;Database=xxxxxxx;Authentication=ActiveDirectoryMsi;
That is slightly misleading because the azure connection string page only shows ADO.NET (SQL authentication), ADO.NET (Active Directory password authentication), and ADO.NET (Active Directory integrated authentication).
I feel like more of our documentation should highlight the power of Active Directory and using logged in users for security. Could we possibly add a DB context example like this to show others how to use Azure Active Directory to control SQL access? I feel like it was difficult for me to piece all this together and it might be helpful to others :)
With these two connection strings I can control access to all of our applications with one (or multiple security groups) and the security group will change access of the users on the server and locally at the same time:
Server:
Server=xxxxxx.database.windows.net;Database=xxxxxx;Authentication=ActiveDirectoryMsi;
Local:
Server=xxxxxx.database.windows.net,1433; Authentication=Active Directory Interactive; Database=xxxxxx;
Here is what the database context looks like:
    public GlobalSupportSharedSqlContext()
    {

#if DEBUG
_connectionString = "Server=xxxxxx.database.windows.net,1433; Authentication=Active Directory Interactive; Database=xxxxxx;";
try
{
var databaseCreator = (Database.GetService() as RelationalDatabaseCreator);
databaseCreator.CreateTables();
}
catch (System.Exception e)
{
System.Console.WriteLine(e);
}
#else
_connectionString = "xxxxxx.database.windows.net;Database=xxxxxx;Authentication=ActiveDirectoryMsi;";
#endif
}

@ezelliott Not sure advice like that belongs in the EF Core docs repo. The linked location above seems a better place.
There is also this guide (not an easy read, but it's there) : https://docs.microsoft.com/en-us/azure/app-service/tutorial-connect-msi-sql-database?tabs=windowsclient%2Cefcore%2Cdotnet
I also have a blog post: https://erikej.github.io/efcore/azure/2021/04/20/efcore-managed-identity.html

That is slightly misleading because the azure connection string page only shows ADO.NET (SQL authentication), ADO.NET (Active Directory password authentication), and ADO.NET (Active Directory integrated authentication).

I assume you mean the page for the database in the portal? Suggestions for that should probably be directed to: https://feedback.azure.com/d365community/forum/04fe6ee0-3b25-ec11-b6e6-000d3a4f0da0


Changed nodeSelector.

Was created variable "assign_pods_to_key_nodes" ==> All instances have label
assign_pods_to_key_nodes = allow_any_pods by default value (false).
If we need that only critical pods assign to only critical nodes ( nodegroup 5, nodegroup 7 == space00, space07) switch on value (true) == >
assign_pods_to_key_nodes = allow_only_critical_pods.
!!! IMPORTANT !!!
After apply all instances dev + mainnet will
Rewrote approach to nodeSelectors templates

Looks good, but I would prefer helm diff logs here as double proof :)


Proposal to use render instead of ReactDOM.render function for optimi…

I propose this because of webpack (tree shaking) part, this way we are only loading the render() function not the entire ReactDOM package, giving a hint to webpack that other parts of ReactDOM is not required, selectively loading only the pieces we need, also code looks declarative and intuitive :)

Great suggestion. Thank you for the contribution. I'll accept this pull request.
On a side note, it looks like tree shaking is unfortunately still broken in Webpack. Help get attention to this issue by visiting https://github.com/webpack/webpack/issues/2867.


Upgrading from 0.18 to 0.25 Changed the service name in k8s

I was using 0.18 version, in the last days I upgraded to 0.25 but I noted that the service name of my trino changed:
Using this execution line:
helm upgrade --install trino-cluster trino/trino  --namespace trino --create-namespace --version 0.18.0 -f values-prod1.yml
Creates:
kubectl get service -n trino
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
trino-cluster   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP   104d

Now doing:
helm upgrade --install trino-cluster trino/trino  --namespace trino--create-namespace --version 0.25.0 -f values-prod1.yml
Creates:
kubectl get service -n trino-stage
NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
trino-cluster-trino   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP          8d

Here you can see that the service changes from TRINO-CLUSTER to TRINO-CLUSTER-TRINO

@ziot-arg what's the expected action here? Reverting this change would be another breaking change.


concourse/#4150 closing zstd buffers to prevent leak

being nice and closing zstd buffers so underlying memory in the c code is freed

do we need a new baggageclaim patch version for this?


Feature/72 create context service interface

Changes:

New services/contextService.
getCurrencies() method.
getLanguages() method.
getCountries() method.
getPaymentMethods() method.
getShippingMethods() method.
Dummy tests that verify only the length of arrays returned by Shopware API Test Instance.

Issue:
#72

Changes:

Adjusted the code and tests just like in Categories and Products.
I am not sure about splitting the tests of Set methods into 2 described. The first one with contextToken given and the second without contextToken given - as we use these setters as logged and not-logged user.


feat(HACBS-1213): add CycloneDX CLI

Signed-off-by: Hongwei Liu<EMAIL_ADDRESS>

Note: the integration tests failure is unrelated to these changes and will be fixed in #32


Better video controls

Could add better controls to handle video playback, such as those from commonly used video players.

Pause/play button
+1/-1 frame
Skip to specific frame (type in)
Seeker preview. When clicking on seeking button, show small frame? similar to youtube
Video preview. Load video I-frames and have a slider to display them. On click jump to part in video.
x1.5 x2 playback etc

Add option to play video at original fps


doc(readme): add license scan status

Adds FOSSA scan status to README for CNCF license scans.
Ref: @caniszczyk

Coverage increased (+0.09%) to 92.302% when pulling 8eb96feecbeaf3bad20f5b193d5b7797e5a3ecb8 on xizhao:patch-1 into effc6b1f3f06ed18c72aa35139d4187121b7b33a on nats-io:master.


Removing refs to timestampable in blameable docs

I think the old references were a mistake, left over from a copy-paste?

thanks ;)


[BUG] Login sometimes doesn't work without /#/ appended

To replicate:

Open up home page in incognito tab
Go to Application in Dev Tools
Add a fake token value
Refresh page

Fixed with API throwing error if /api/v1/self doesn't have token credentials

Looks good, moving to closed. Tested per  the repro steps above.


[projmgr] External Generator PoC

Codecov Report

Merging #16 (89e7bb5) into main (afa82b5) will increase coverage by 0.13%.
The diff coverage is 73.64%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.28%   +0.13%
==========================================
  Files         116      117       +1
  Lines       22884    23126     +242
  Branches    12725    12844     +119
==========================================
+ Hits        13306    13478     +172
- Misses       7340     7375      +35
- Partials     2238     2273      +35

Flag
Coverage Δ

projmgr-cov
82.21% <73.64%> (-0.56%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.45% <70.07%> (-0.76%)
:arrow_down:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlEmitter.cpp
92.04% <79.41%> (-0.75%)
:arrow_down:

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

Codecov Report

Merging #16 (5e1ecec) into main (afa82b5) will increase coverage by 0.13%.
The diff coverage is 73.64%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.28%   +0.13%
==========================================
  Files         116      117       +1
  Lines       22884    23126     +242
  Branches    12725    12844     +119
==========================================
+ Hits        13306    13478     +172
- Misses       7340     7375      +35
- Partials     2238     2273      +35

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.21% <73.64%> (-0.56%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.45% <70.07%> (-0.76%)
:arrow_down:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlEmitter.cpp
92.04% <79.41%> (-0.75%)
:arrow_down:

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

Codecov Report

Merging #16 (5e1ecec) into main (afa82b5) will increase coverage by 0.13%.
The diff coverage is 73.64%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.28%   +0.13%
==========================================
  Files         116      117       +1
  Lines       22884    23126     +242
  Branches    12725    12844     +119
==========================================
+ Hits        13306    13478     +172
- Misses       7340     7375      +35
- Partials     2238     2273      +35

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.21% <73.64%> (-0.56%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.45% <70.07%> (-0.76%)
:arrow_down:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlEmitter.cpp
92.04% <79.41%> (-0.75%)
:arrow_down:

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

Codecov Report

Merging #16 (56310e8) into main (afa82b5) will increase coverage by 0.14%.
The diff coverage is 73.33%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.29%   +0.14%
==========================================
  Files         116      117       +1
  Lines       22884    23148     +264
  Branches    12725    12860     +135
==========================================
+ Hits        13306    13493     +187
- Misses       7340     7377      +37
- Partials     2238     2278      +40

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.15% <73.33%> (-0.62%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlEmitter.cpp
91.89% <79.72%> (-0.90%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <69.69%> (-0.87%)
:arrow_down:

Codecov Report

Merging #16 (f599e51) into main (afa82b5) will increase coverage by 0.14%.
The diff coverage is 73.17%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.29%   +0.14%
==========================================
  Files         116      117       +1
  Lines       22884    23148     +264
  Branches    12725    12860     +135
==========================================
+ Hits        13306    13493     +187
- Misses       7340     7377      +37
- Partials     2238     2278      +40

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.15% <73.17%> (-0.62%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlEmitter.cpp
91.89% <79.16%> (-0.90%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <69.69%> (-0.87%)
:arrow_down:

Codecov Report

Merging #16 (743430b) into main (afa82b5) will increase coverage by 0.14%.
The diff coverage is 73.41%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.29%   +0.14%
==========================================
  Files         116      117       +1
  Lines       22884    23150     +266
  Branches    12725    12861     +136
==========================================
+ Hits        13306    13495     +189
- Misses       7340     7377      +37
- Partials     2238     2278      +40

Flag
Coverage Δ

projmgr-cov
82.15% <73.41%> (-0.61%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlEmitter.cpp
91.93% <80.00%> (-0.86%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <69.69%> (-0.87%)
:arrow_down:

Codecov Report

Merging #16 (743430b) into main (afa82b5) will increase coverage by 0.14%.
The diff coverage is 73.41%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.29%   +0.14%
==========================================
  Files         116      117       +1
  Lines       22884    23150     +266
  Branches    12725    12861     +136
==========================================
+ Hits        13306    13495     +189
- Misses       7340     7377      +37
- Partials     2238     2278      +40

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.15% <73.41%> (-0.61%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlEmitter.cpp
91.93% <80.00%> (-0.86%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <69.69%> (-0.87%)
:arrow_down:

Codecov Report

Merging #16 (743430b) into main (afa82b5) will increase coverage by 0.14%.
The diff coverage is 73.41%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.14%   58.29%   +0.14%
==========================================
  Files         116      117       +1
  Lines       22884    23150     +266
  Branches    12725    12861     +136
==========================================
+ Hits        13306    13495     +189
- Misses       7340     7377      +37
- Partials     2238     2278      +40

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

projmgr-cov
82.15% <73.41%> (-0.61%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgr.cpp
75.15% <69.23%> (-0.38%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.03% <76.47%> (+0.03%)
:arrow_up:

tools/projmgr/src/ProjMgrExtGenerator.cpp
73.68% <73.68%> (ø)

tools/projmgr/src/ProjMgrYamlEmitter.cpp
91.93% <80.00%> (-0.86%)
:arrow_down:

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <69.69%> (-0.87%)
:arrow_down:

Codecov Report

Merging #16 (6503767) into main (33b5949) will increase coverage by 0.23%.
Report is 1 commits behind head on main.
The diff coverage is 75.00%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
+ Coverage   58.20%   58.43%   +0.23%
==========================================
  Files         116      117       +1
  Lines       22895    23252     +357
  Branches    12730    12930     +200
==========================================
+ Hits        13326    13588     +262
- Misses       7335     7382      +47
- Partials     2234     2282      +48

Flag
Coverage Δ

projmgr-cov
82.33% <75.00%> (-0.66%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgrParser.cpp
100.00% <100.00%> (ø)

tools/projmgr/src/ProjMgrYamlSchemaChecker.cpp
85.71% <100.00%> (+0.71%)
:arrow_up:

tools/projmgr/src/ProjMgr.cpp
75.30% <68.42%> (-0.54%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.37% <73.80%> (+0.37%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlEmitter.cpp
92.69% <84.84%> (-1.39%)
:arrow_down:

tools/projmgr/src/ProjMgrExtGenerator.cpp
71.18% <71.18%> (ø)

tools/projmgr/src/ProjMgrWorker.cpp
82.35% <70.32%> (-0.97%)
:arrow_down:

Codecov Report

Merging #16 (74454e5) into main (33b5949) will decrease coverage by 0.10%.
Report is 1 commits behind head on main.
The diff coverage is n/a.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@            Coverage Diff             @@
##             main      #16      +/-   ##
==========================================
- Coverage   58.20%   58.10%   -0.10%
==========================================
  Files         116      116
  Lines       22895    22819      -76
  Branches    12730    12671      -59
==========================================
- Hits        13326    13259      -67
+ Misses       7335     7333       -2
+ Partials     2234     2227       -7

Flag
Coverage Δ

buildmgr-cov
77.91% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

tools/projmgr/src/ProjMgr.cpp
75.58% <ø> (-0.26%)
:arrow_down:

tools/projmgr/src/ProjMgrParser.cpp
100.00% <ø> (ø)

tools/projmgr/src/ProjMgrWorker.cpp
83.23% <ø> (-0.09%)
:arrow_down:

tools/projmgr/src/ProjMgrYamlEmitter.cpp
94.56% <ø> (+0.49%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlParser.cpp
75.12% <ø> (+0.12%)
:arrow_up:

tools/projmgr/src/ProjMgrYamlSchemaChecker.cpp
85.00% <ø> (ø)


unsupported MediaType: "application/vnd.docker.distribution.manifest.v1+json"

I have successfully installed trow on my kube cluster, built an image externally and pushed it to the registry. But when I try to pull it from the registry (I'm using kaniko to build images inside the cluster) I get this error:
Downloading base image trow.kube-public/blablabla
error building image: unsupported MediaType: "application/vnd.docker.distribution.manifest.v1+json", see https://github.com/google/go-containerregistry/issues/377

Thanks Oleg. Could you share the image you're pushing/pulling?

Just to clarify, I suspect what's happening is Trow is being sent a v2 manifest but is rejecting it for some reason and falling back to v1. I can't fix this issue with an example image or manifest.

Sorry for the delay.
A few more details:

I tried pushing and pulling the same image from the official registry image (https://hub.docker.com/_/registry). Works fine.
I'm using kaniko to build images based on images from the registry, so the error is from kaniko, but I think it doesn't really matter because it's getting the v1 manifest for some reason
here are a few screenshots (not sure if it helps, though :) ):
push from outside the cluster

docker version

kaniko log (inside the cluster)

Thanks!

So the base image being pulled by kaniko in the last log is the same image you pushed in the first step (the greyed out text is identical)?
Interesting. I think I'll have to test with kaniko to find this.

Yes, it was the same image, sorry for the grey areas :)

New info:
I have deployed helm chart for docker registry (https://github.com/helm/charts/tree/master/stable/docker-registry) and configured the certs manually. Everything works fine (same image, same kaniko build, etc.).
So, without deep researching, I would say that something wrong with the registry trow uses :)

Trow is a registry :)
And I'm pretty sure it is a bug in Trow. I think it's failing to parse the image manifest and falling back to v1.
To help me debug this it would be great if you could share an image that causes the error.

I'm going to rename this issue as after looking at the image and playing with Kaniko, it seems themain problem is that Trow doesn't respond in the expected way to some API call by kaniko. I'm not convinced there is a v1/v2 manifest problem (although that might also be a problem).

So, this was a weird one.
Kaniko behaves a bit strangely with pushes (the http logs don't make a lot of sense to me), and this has exposed a bug in some of Trow's underlying libraries. It seems Rocket ships with an old version of hyper, which under certain circumstances will cut off transfers. The mitigation is to turn off keep-alive, which I've done on master. Long-term this will be fixed when Rocket upgrades the version of hyper, or Trow moves to a different framework.
The code in master should now work correctly for kaniko and shortly the Docker Hub containersol/trow:default and latest images will contain the fix.


Playground: UI - Drop-down consistency issue

I noticed something off with the playground UI.
You can open and close the network menu by clicking on the same spot which is pretty cool and convenient.
But for some reason, the VM image, country and farm menus don't work like that. You have to click on different spots to open and close them.
That's kind of annoying.
Can we make all the drop-down menus consistent and easy to use?
I can see that these fields are searchable, not sure if we can get the best of the both worlds.

The Network menu is an expansion panel and the others are drop down


Check into extremely low bounce rates on the OSS and Developer sites.

Currently the Bounce rates for the OSS Site and Developer sites are very low.
Developer Site in Aug: 8.41%  Down from 37.67% in July
OSS Site in Aug: 3.98% no July stats as GA wasn't integrated yet.
Question to explore:
Is something triggering an interaction on pages that is nullify the bounce count, and causing GA to not count a bounce event?
A Bounce is defined as:
The percentage of single-page sessions in which there was no interaction with the page. A bounced session has a duration of 0 seconds.
https://support.google.com/analytics/answer/1009409?hl=en

@jerelmiller / @zstix  any thoughts on this? I thought maybe the right rail search queries may be impacting actual bounce rates.

I'm not sure the right rail would be the culprit here. The search queries are run at build time (on a 24 hour cadence), but that hits the Swiftype API and writes to a JSON file. The right rail is populated by pulling data from that JSON file, which means there isn't any hits to the site.
I know Swiftype indexes every 12 hours, which would provide some of the traffic, though I think JavaScript is disabled in that context, which means GA wouldn't be able to pick up the traffic (unconfirmed on this; this is my hunch.) We'd have to do a bit more digging to see if we can spot why we might be getting low bounce rates.

@jerelmiller ok thanks for the explanation, it's not super urgent, but would be cool to determine the root cause in the next few weeks as it impacts our OKR metrics, as bounce rate is something we measure ourselves against.

Current Rates
Sept 1 - Sept 15:
9.53% Dev Site
3.88% OSS Site

I came across this Article that has very concrete technical steps to try sleuthing the situation.
The extensions that they reference in there are pretty nifty, Google Tag Assistant and the DataLayer Inspector.
Came across some other tools that may help:
https://chrome.google.com/webstore/detail/tag-manager-assistant/oacpegaegonlmnobkoeiiegdccgcmpnj
In taking an initial swag at it - not finding any issues (double tagging, sending subsequent events too fast, etc...).

Another idea: Can we add e.g. that Adobe analytics tool to give us another view into bounce rate for comparison purposes?

Hey @tariqahmed @jpvajda I did some investigating into why this is happening. I found a similar issue on a board that claimed that the issue is likely due to two tracking IDs being created. I used Google Tag Assistant and found that this is true for our website, one coming from our source code and another with an external script. I believe this is coming from having the tracking id being created in the gatsby plugin for google analytics and in the script that we have in our index page.

All of the engineers spent a considerable amount of time looking into our analytics this morning and were unable to determine the source of the problem. The two calls to Google Analytics appear to be valid (one to create a connection via ga.create and another to send the pageview via ga.send).
Without much knowledge about how Google Analytics reports bounce rates, we are out of ideas.

@zstix  Thanks Perhaps we can open an issue the GA support team. I'll reach out to google.

I've asked sy jones for input on this problem, as she is a GA expert. Will updated when I have details.

Joel and I looked at the bounce data per page, and we have a lot of pages that just have 0% bounce rates. The component pages are just one example. so I think the data is correct.
The OSS site has a lot of project pages with 0% bounce rate  which seems to be causing the lower rates. So for now this issue is closed and we are assuming the data is correct.


README.md points to the wrong helm chart location

Thanks for this project, it looks really promising. One thing I've noticed while evaluating it, is the wrong location of the Helm chart referenced in the README.md:
https://github.com/enix/kube-image-keeper/blob/54af3ff747a36795c248f7d9234a36bb72fca3fe/README.md?plain=1#L138C1-L138C106

Hi @baurmatt , thanks for your positive feedback.
All our public charts are hosted at https://charts.enix.io and there is no mistake in the readme.
❯ helm search repo kube-image-keeper
NAME                  	CHART VERSION	APP VERSION	DESCRIPTION
enix/kube-image-keeper	1.4.0        	1.4.0      	kuik is a container image caching system for Ku...

❯ helm repo list
NAME                           	URL
enix                           	https://charts.enix.io

Sorry if it's a little bit confusing

Thanks for your quick response. The link in the README.md points to https://github.com/enix/helm-charts :)

That's right, the sources are located in the kuik's repository but only the released helmchart is located in our public repo
We'll discuss this internally to clarify this.

Hi, we clarify the chart repository location in the README ;)
Thanks.


Update server-manager.md

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

(ref. #5009 )

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

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

#sign-off

@illfated: I'm sorry - only the author of this article, @eross-msft, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

Per the PM on the WVD side, he's requested the following changes:

Spell out the full OS name: “Windows 10 Enterprise multi-session”.
Don’t mention it’s a “Server OS”. It’s a client OS, but for performance reasons it identifies as Server (making Server Manager do funky things). We should just say "Not supported", same as for 2003.

So, we would need you to go into your branch and change the update text to read:

Server Manager Source Operating System
Targeted at Windows Server 2016
Targeted at  Windows Server 2012 R2
Targeted at  Windows Server 2012
Targeted at  Windows Server 2008 R2  or  Windows Server 2008
Targeted at Windows Server 2003
Targeted at Windows 10 Enterprise multi-session on Windows Virtual Desktop (WVD)

Windows 10 or Windows Server 2016
Full support
Full support
Full support
After Software and configuration requirements are satisfied, can perform most management tasks, but no role or feature installation or uninstallation
Not supported
Not supported

Windows 8.1 or Windows Server 2012 R2
Not supported
Full support
Full support
After Software and configuration requirements are satisfied, can perform most management tasks, but no role or feature installation or uninstallation
Limited support; online and offline status only
Not supported

Windows 8 or Windows Server 2012
Not supported
Not supported
Full support
After Software and configuration requirements are satisfied, can perform most management tasks, but no role or feature installation or uninstallation
Limited support; online and offline status only
Not supported

Made change in private repo and published. Closing this one.


What I have done:
eval $(docker-machine env my-machine)
docker-machine ssh my-machine -> check if all files are on the correct place
docker exec -it CONTAINER ID bash and check contents /etc/nginx/conf.d/default.conf:

If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
scheme used to connect to this server
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
default $http_x_forwarded_proto;
''      $scheme;
}
If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
Connection header that may have been passed to this server
map $http_upgrade $proxy_connection {
default upgrade;
'' close;
}
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
log_format vhost '$host $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log off;
HTTP 1.1 support
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
Mitigate httpoxy attack (see README for details)
proxy_set_header Proxy "";
server {
server_name _; # This is just an invalid value which will never trigger on a real hostname.
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}
upstream my.website.com {
server <IP_ADDRESS>:9000;
}
server {
server_name my.website.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
return 301 https://$host$request_uri;
}
server {
server_name my.website.com;
listen 443 ssl http2 ;
access_log /var/log/nginx/access.log vhost;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_certificate /etc/nginx/certs/my.website.com.crt;
ssl_certificate_key /etc/nginx/certs/my.website.com.key;
add_header Strict-Transport-Security "max-age=31536000";
location / {
include uwsgi_params;
uwsgi_pass uwsgi://my.website.com;
}
}

Everything seems to be ok. I also checked the key an crt and they are there.
I tried pinging the server address (<IP_ADDRESS>) and that also looks good and seems to be local (time=0.16ms)
For reference my current docker-compose is:
web:
extends: base
links:
- redis
- postgres
- memcached
- smtp
environment:
- VIRTUAL_HOST=my.website.com
- VIRTUAL_PROTO=uwsgi
- VIRTUAL_PORT=9000
expose:
  - "9000"

ports:
- "9000:9000"
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
- "9000:433"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/ssl/:/etc/ssl/
- /etc/ssl/:/etc/nginx/certs/
networks:
- default
- service-proxy
If I do ports 9000:9000, the application loads fine on http://xxx.xx.xx.xx:9000.
I tried with and without networks to no avail...
I also tried the nginx docker master, but it seems to me that the reverse-proxy is what I need, right?

This was really stupid... I didn't open port 443 on my remote machine. Argh.


liquid:  ct discount

elements releases have the mempool policy patch.
To apply ct discount on peerswap, we uses an "Ask forgiveness not permission" approach, where we attempt to broadcast with the discounted fee, and if that fails, we retry with the non-discounted fee.
The discount is achieved by calculating the fee based on a discounted vsize(equivalent to 1/4 of the original tx size).
https://github.com/ElementsProject/elements/releases/tag/elements-23.2.2

Observations

lwk:

CT discount is successfully applied when enabled.
But not applied even when enabled for opening tx.
See related issue: https://github.com/Blockstream/lwk/issues/48

liquid:

CT discount is successfully applied when enabled.
Fee rates are visibly reduced for transactions created with CT discount enabled.

log
## lwk
### CT discount disabled
./bin/pscli peerswap1 listswaps
{
  "swaps":  [
    {
      "id":  "e9e20a40740fd0526d039ea2e63f80a412521a1d0ebc329cb16174561412ae7c",
      "created_at":  "1724205066",
      "asset":  "lbtc",
      "type":  "swap-out",
      "role":  "sender",
      "state":  "State_ClaimedPreimage",
      "initiator_node_id":  "02a83a702e5de47ee26e22af40f6a9c80b66e4d3d1097954c95239ac4c86837f6c",
      "peer_node_id":  "030bc3217c0a1aa8c63a4e2b891152180ca24de8722b49602ae975699c831fc7aa",
      "amount":  "1000000",
      "channel_id":  "116:1:1",
      "opening_tx_id":  "8956084b56cd6ffa9b8ffd93ef3e26b68d2ffa06fc17a5455899cbcc220f3e94",
      "claim_tx_id":  "71a026a6c8b5490c234393d840850cb5cb3e77fed56162a1066b63282b4b884a",
      "cancel_message":  "",
      "lnd_chan_id":  "127543348887553"
    }
  ]
}

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction 8956084b56cd6ffa9b8ffd93ef3e26b68d2ffa06fc17a5455899cbcc220f3e94 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .10 sat/vB
Fee:<PHONE_NUMBER>000 sat

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction 71a026a6c8b5490c234393d840850cb5cb3e77fed56162a1066b63282b4b884a true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .10 sat/vB
Fee:<PHONE_NUMBER>000 sat

CT discount enabled (acceptdiscountct=1, creatediscountct=1)
./bin/pscli peerswap1 listswaps
{
  "swaps":  [
    {
      "id":  "7a0dc61c5ed005b70464b697c42ccfee75e892c42008a89874aedab6ac2640ef",
      "created_at":  "1724205348",
      "asset":  "lbtc",
      "type":  "swap-out",
      "role":  "sender",
      "state":  "State_ClaimedPreimage",
      "initiator_node_id":  "03ba550c3ce73929457fe0f922d70f8826c08f34fd5ee18911f8100e08747d438c",
      "peer_node_id":  "03afeb34a773e610ee7c7b8d1f2404644a7334dd3408338293cc5718a7c63b3113",
      "amount":  "1000000",
      "channel_id":  "116:1:1",
      "opening_tx_id":  "d88af0cc81b112c5ea3f8bcc5b949e63feece092cb24d46469ed6096d281e84a",
      "claim_tx_id":  "9aca63d63dd4b1a24afe694da08b26882bf88de58c4cd8ea96f284046750b934",
      "cancel_message":  "",
      "lnd_chan_id":  "127543348887553"
    }
  ]
}

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction d88af0cc81b112c5ea3f8bcc5b949e63feece092cb24d46469ed6096d281e84a true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .10 sat/vB
Fee:<PHONE_NUMBER>000 sat

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction 9aca63d63dd4b1a24afe694da08b26882bf88de58c4cd8ea96f284046750b934 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .02 sat/vB
Fee: 33.0000000000 sat

liquid
CT discount disabled
./bin/pscli peerswap1 listswaps
{
  "swaps":  [
    {
      "id":  "3ffa01b929572ed84a680e9174843a7242f8749682740077fbc6b6f009fd0735",
      "created_at":  "1724217608",
      "asset":  "lbtc",
      "type":  "swap-out",
      "role":  "sender",
      "state":  "State_ClaimedPreimage",
      "initiator_node_id":  "022c258412a47ad40aee3dc986a8341a28bff86bdcd1ed01aee253b9af58e8ec09",
      "peer_node_id":  "02cbf985fcb9d54d65a77bdd10ea11f932508c1a1c2eca7691b43213e2756f79fc",
      "amount":  "1000000",
      "channel_id":  "110:1:1",
      "opening_tx_id":  "ffad8ef755740488087beccf11f61f6eb966b0431079ee0e87284341de9e1c28",
      "claim_tx_id":  "ac452246c1caf4dd04a72b85bae57fcd696f681b06fae1eaffb642341d1a5ed6",
      "cancel_message":  "",
      "lnd_chan_id":  "120946279120897"
    }
  ]
}

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction ffad8ef755740488087beccf11f61f6eb966b0431079ee0e87284341de9e1c28 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .10 sat/vB
Fee:<PHONE_NUMBER>000 sat

CT discount enabled (acceptdiscountct=1, creatediscountct=1)
./bin/pscli peerswap1 listswaps
{
  "swaps":  [
    {
      "id":  "af4ea2bbc89ed256f5d5bf08882860825239b205d588866a9cc6ec9b6152cee2",
      "created_at":  "1724207197",
      "asset":  "lbtc",
      "type":  "swap-out",
      "role":  "sender",
      "state":  "State_ClaimedPreimage",
      "initiator_node_id":  "02e02ebe7cf636f346c77d4f8427553cf73bc8c71f74b6dca60aca1016e78cdf61",
      "peer_node_id":  "0269081b618447d0a08680cb987b3ec7bb2907cfeb4f8f14d6a0cd2a853589a304",
      "amount":  "1000000",
      "channel_id":  "110:1:1",
      "opening_tx_id":  "e984679d7f929d6f1676ad678f5134db7847432060a6f7e5028efe8a21bc1bbb",
      "claim_tx_id":  "6fc74f0cbd12e9546e00e189073318f54e5fe940b4338249df83bb44976c35c6",
      "cancel_message":  "",
      "lnd_chan_id":  "120946279120897"
    }
  ]
}

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction e984679d7f929d6f1676ad678f5134db7847432060a6f7e5028efe8a21bc1bbb true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .01 sat/vB
Fee: 33.0000000000 sat

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction 6fc74f0cbd12e9546e00e189073318f54e5fe940b4338249df83bb44976c35c6 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .02 sat/vB
Fee: 33.0000000000 sat

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction ac452246c1caf4dd04a72b85bae57fcd696f681b06fae1eaffb642341d1a5ed6 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .10 sat/vB
Fee:<PHONE_NUMBER>000 sat

Testing it on liquidtestnet. Swap out does not work when swapAmount == PeerLBTCbalance - 75:
2024/08/21 15:40:46 [INFO] [Swap:8b8420769aa12f288366b2057590903aa9498f7ffe5e9317a5fb17f726ac6107] Start new swap-out: peer: 020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854 chanId: 2543197:37:1 initiator: 02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29 amount 662891
2024/08/21 15:40:51 [INFO] [Swap:8b8420769aa12f288366b2057590903aa9498f7ffe5e9317a5fb17f726ac6107] Paid Feeinvoice of 75 sats
2024/08/21 15:40:51 [INFO] [Swap:8b8420769aa12f288366b2057590903aa9498f7ffe5e9317a5fb17f726ac6107] Swap canceled. Reason: -4:Insufficient funds
2024/08/21 15:40:51 [INFO] [Swap:8b8420769aa12f288366b2057590903aa9498f7ffe5e9317a5fb17f726ac6107] Warning: Paid swap-out prepayment, but swap canceled before receiving opening transaction

LND as swap-out sender results in:
2024/08/21 15:48:43 rpc error: code = Unknown desc = Fee is too damn high. Max expected: 225 Received 300

2024/08/21 19:48:42 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_OnSwapOutStarted on
2024/08/21 19:48:42 [INFO] [Swap:a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d] Start new swap-out: peer: 036e680823a129ac9a2eeb8c43514a5b6cb09ae28e3e698a0e34aaa8865d6cc344 chanId: 194668:21:0 initiator: 035ca2fe4793a5e789ce846062eb4834f573c060d9200ce77544a29b48a0aa5923 amount 100000000
2024/08/21 19:48:42 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_ActionSucceeded on State_SwapOutSender_CreateSwap
2024/08/21 19:48:42 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_ActionSucceeded on State_SwapOutSender_SendRequest
2024/08/21 19:48:42 [DEBUG] [Messenger] From: 036e680823a129ac9a2eeb8c43514a5b6cb09ae28e3e698a0e34aaa8865d6cc344 got msgtype: a45b for swap: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d
2024/08/21 19:48:42 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_OnFeeInvoiceReceived on State_SwapOutSender_AwaitAgreement
2024/08/21 19:48:43 [INFO] [FSM] Action failure Fee is too damn high. Max expected: 225 Received 300
2024/08/21 19:48:43 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_ActionFailed on State_SwapOutSender_PayFeeInvoice
2024/08/21 19:48:43 [DEBUG] [FSM] Canceling because of Fee is too damn high. Max expected: 225 Received 300
2024/08/21 19:48:43 [DEBUG] [FSM] event:id: a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d, Event_ActionSucceeded on State_SendCancel
2024/08/21 19:48:43 [INFO] [Swap:a8099a5544b6745f725a726c86af81b074e73ad2681449370dd766b81dd3894d] Swap canceled.  Max expected: 225 Received 300

https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2302414159
Thank you for your confirmation.
It seems that the issue is caused by elements itself.
The Insufficient funds errors occur when the fee falls below a certain value (200 satoshis, as far as I can tell).
It is possible that the CT discount is not being taken into account.
Normally, the CT discount is applied
./bin/elements-cli -rpcwallet=peerswap1 getbalance
{
  "bitcoin": 10.00000000
}

./bin/elements-cli -rpcwallet=peerswap1 sendtoaddress "el1qqwk83ycg9lwrlj8ccvar3n62xak8rkyxvk20w63p2f40jx8k2244yvxgawe30l9glsj5835nwcj5xnz0st65knhtcs3se2xt6" 9
267a5cf0c22515811f7a9f3acc0248b5ddfa21afdb2ec701c61ddecc623a48fc

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction 267a5cf0c22515811f7a9f3acc0248b5ddfa21afdb2ec701c61ddecc623a48fc true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: .01 sat/vB
Fee: 32.0000000000 sat

However, Insufficient funds occurs when trying to send almost the entire balance
Even though the balance should be sufficient with the CT discount, an error occurs.
./bin/elements-cli -rpcwallet=peerswap1 getbalance
{
  "bitcoin": 10.00000000
}

Subtract 100 sat
./bin/elements-cli -rpcwallet=peerswap1 getbalance | jq '.bitcoin | tonumber | (. * 100000000 - 100) / 100000000'
9.999999

./bin/elements-cli -rpcwallet=peerswap1 sendtoaddress "el1qq0phvvcs6r4td0hlhs8rgjrghz368k4w33trkxjtlmu9ltylum0p6gekdtvs6af69hca2hsj4tf42wf6z76nunctzxnupq47f" 9.999999
error code: -6
error message:
Insufficient funds

However, if you leave about 200 satoshis in the balance, the transfer succeeds, and the entire amount becomes the fee.
./bin/elements-cli -rpcwallet=peerswap1 sendtoaddress "el1qq0phvvcs6r4td0hlhs8rgjrghz368k4w33trkxjtlmu9ltylum0p6gekdtvs6af69hca2hsj4tf42wf6z76nunctzxnupq47f" 9.999998
a2c3d15bb91b77b8923afbc03dab9f85895f56f82d1e21a7a2781639cfa7ef17

./bin/elements-cli -rpcwallet=peerswap1 getrawtransaction a2c3d15bb91b77b8923afbc03dab9f85895f56f82d1e21a7a2781639cfa7ef17 true | jq -r '.vsize, .fee["5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225"]' | {
read -r vsize
read -r fee

fee=$(printf "%.10f" "$fee")

fee_satoshi=$(echo "$fee * 100000000" | bc)
feerate=$(echo "scale=2; $fee_satoshi / $vsize" | bc)

echo "Fee Rate: $feerate sat/vB"
echo "Fee: $fee_satoshi sat"
}
Fee Rate: 1.23 sat/vB
Fee:<PHONE_NUMBER>000 sat

This behavior seems to result in unnecessary losses.
It might be necessary to consider the CT discount when determining Insufficient funds.

https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2302897682
Thank you for your feedback.
It's likely that this issue is occurring because the peer doesn't support CT discounts.
In the peerswap implementation, when a swapout request is received, the amount of the fee invoice is verified.
We calculate three times the expectedFee (normal transaction fee) and set this as the maximum acceptable fee. (We allow some margin to account for situations where the fee might be higher than usual due to network congestion, etc.)
In this PR, I modified the calculation of expectedFee to assume a CT discount.
This is a conservative approach because we cannot be sure if the connected peer supports CT discounts or not.
However, I've noticed that this is causing frequent failures like this.
I'll investigate the appropriate specifications to address this.

Thanks, I reported this bug on Elements github, but I think they will tell us to use subtractfeefromamount flag. This is a cleaner solution regardless. Can we implement it?

In this PR, I modified the calculation of expectedFee to assume a CT discount. This is a conservative approach because we cannot be sure if the connected peer supports CT discounts or not.
However, I've noticed that this is causing frequent failures like this. I'll investigate the appropriate specifications to address this.

In this case, both peers are running PR 304 and using the same elementsd configured to use the CT discount.

https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2304588774
I think it's a good idea.
However, the issue is whether the same interface can be provided across various daemons (lnd, bitcoind, lwk).
As far as I've seen, a function similar to subtractfeefromamount may not be currently provided in lnd and lwk.

uses an "Ask forgiveness not permission" approach, where we attempt to broadcast with the discounted fee, and if that fails, we retry with the non-discounted fee.

I observe persistent situations on liquidtestnet where an opening tx does not fail, but still does not reach https://blockstream.info/liquidtestnet, https://liquid.network/testnet and the swap peer node. There are no errors in peerswap or elements logs. gettxout shows 0 confirmations at first, then nothing at all:
$ ecli gettxout 6abe0a3d5947d15ae24e6411fd4830b1d9d8468b6a
{
  "bestblock": "60b88d6d41a1c6d89e8d61bae9d9912724bc3308c703588a95315cd4304ab726
  "confirmations": 0,
  "valuecommitment": "082a4fa57ae4b37f30438b2a9092b7ff945a44da3936302b482111da4d
  "assetcommitment": "0ab32c036f312ef5cefca2fd29a83cbfdfba131831a68d55984fe97054
  "commitmentnonce": "033c2f1269344680c4059aab3ac5530fe35e683b2d39483881d3cf9f64
  "scriptPubKey": {
    "asm": "0 7787377aabfe8235a6ce8fc784b4c0b32ae57bc9d9b04b198e2d0dacbdb6bc69",
    "desc": "addr(tex1qw7rnw74tl6prtfkw3lrcfdxqkv4w277fmxcykxvw95x6e0dkh35shldc8
    "hex": "00207787377aabfe8235a6ce8fc784b4c0b32ae57bc9d9b04b198e2d0dacbdb6bc69
    "address": "tex1qw7rnw74tl6prtfkw3lrcfdxqkv4w277fmxcykxvw95x6e0dkh35shldc8u"
    "type": "witness_v0_scripthash"
  },
  "coinbase": false
}
$ ecli gettxout 6abe0a3d5947d15ae24e6411fd4830b1d9d8468b6a
$

The swap times out with State_ClaimedCoop. I think the only way around this is to add some third node that definitely runs v23.2.2 as addnode to both peers elements.conf.

How about give up the current approach and add a configuration item related to Confidential Transaction discounts?
The reasons are as follows:
Problems

Cannot determine whether to apply CT discount when calculating fee invoice amount during swapout

lwk cannot know whether the connected backend daemon supports CT discounts, which may cause problems like https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2302897682.
(Currently, CT discounts are temporarily always enabled)

CT discounts may require the connected peer to also support CT discounts

https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2307878648

Solution

Add a configuration item to peerswap's config to enable or disable the use of CT discounts

If enabled, always operate on the assumption of CT discounts
If disabled, behave as before

The allowable fee invoice check in swapout will also be performed on the assumption that the other party also uses CT discounts if you have enabled CT discounts

peerswap.conf

lwk

lwk.signername=s1
lwk.walletname=w1
lwk.liquidswaps=true
lwk.ctdiscount=true # default false

elementsd

elementsd.liquidswaps=true
elementsd.ctdiscount=true # default false

drawback
It's true that this would require users to configure an additional setting, adding some inconvenience.
However, for the reasons mentioned above, I think that automatically determining whether or not to apply CT discounts has some problems.

Regarding https://github.com/ElementsProject/peerswap/pull/304#issuecomment-2304588774,
As mentioned in https://github.com/ElementsProject/elements/issues/1358#issuecomment-2304787647, it seems appropriate to utilize sendall and add swapall to peerswap as well.
However, since sendall has not yet been implemented in elementsd, it might be better to wait until it is supported before implementing it in peerswap.

How will you know when your peer finally supports the CT discount and then be able to enable it on your local end?

Currently, the only ways I know are to either try some method to confirm that the ct discount is incorporated into the block, or to find a peer that supports the ct discount and add it.

Why not ask the peer via a custom message before initiating a swap-out, whether they support the CT discount?

How will you know when your peer finally supports the CT discount and then be able to enable it on your local end?

How about for simplicity:

Increase minimum elements version and version of LEK

It seems possible for each user to have their own CT discount settings and include them in custom messages.
Indeed, I agree that upgrading the protocol version and assuming CT discounts is the simplest and best idea.

testing this pr with cln v24.08. lcli peerswap-listpeers causes this in cln.log:
2024-09-03T11:40:08.679Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"35/cln:listchannels#126\"
2024-09-03T11:40:09.525Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"36/cln:listchannels#127\"
2024-09-03T11:40:10.033Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.046Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.402Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_in INVALID 42083
2024-09-03T11:40:10.709Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"37/cln:listchannels#128\"
2024-09-03T11:40:11.266Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_in INVALID 42083
2024-09-03T11:40:11.446Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.446Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.710Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"42/cln:listchannels#134\"
2024-09-03T11:40:12.199Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_in INVALID 42083
2024-09-03T11:40:12.594Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_in INVALID 42083

testing this pr with cln v24.08. lcli peerswap-listpeers causes this in cln.log:
2024-09-03T11:40:08.679Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"35/cln:listchannels#126\"
2024-09-03T11:40:09.525Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"36/cln:listchannels#127\"
2024-09-03T11:40:10.033Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.046Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.402Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_in INVALID 42083
2024-09-03T11:40:10.709Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"37/cln:listchannels#128\"
2024-09-03T11:40:11.266Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_in INVALID 42083
2024-09-03T11:40:11.446Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.446Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.710Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"42/cln:listchannels#134\"
2024-09-03T11:40:12.199Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_in INVALID 42083
2024-09-03T11:40:12.594Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_in INVALID 42083

Looks like that API was deprecated (though not removed yet) in v24.02. https://github.com/ElementsProject/lightning/blob/master/CHANGELOG.md#deprecated-2
It appears we will need to use listpeerchannels for that field eventually once it's removed from listchannels.

testing this pr with cln v24.08. lcli peerswap-listpeers causes this in cln.log:
2024-09-03T11:40:08.679Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"35/cln:listchannels#126\"
2024-09-03T11:40:09.525Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"36/cln:listchannels#127\"
2024-09-03T11:40:10.033Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.046Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_out INVALID 42085
2024-09-03T11:40:10.402Z DEBUG   020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854-connectd: peer_in INVALID 42083
2024-09-03T11:40:10.709Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"37/cln:listchannels#128\"
2024-09-03T11:40:11.266Z DEBUG   02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29-connectd: peer_in INVALID 42083
2024-09-03T11:40:11.446Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.446Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_out INVALID 42085
2024-09-03T11:40:11.710Z **BROKEN** plugin-topology: DEPRECATED API USED: listchannels.include_private by \"42/cln:listchannels#134\"
2024-09-03T11:40:12.199Z DEBUG   0246ec6dc79d422a2945037afe7d0b9511a3abc6f78adae7f7419c132145381990-connectd: peer_in INVALID 42083
2024-09-03T11:40:12.594Z DEBUG   020a654db4feba771ba2f82b9e97297d6c5294ddd40f167c6538149c162e4aa63c-connectd: peer_in INVALID 42083

Looks like that field was deprecated (though not removed yet) in v24.02. https://github.com/ElementsProject/lightning/blob/master/CHANGELOG.md#deprecated-2
It appears we will need to use listpeerchannels for that field eventually once it's removed from listchannels.

I PRd listpeerchannels to glightning, still being reviewed

Thank you for creating the PR for glightning.
I will use that change to add support for peerswap.
I also plan to update the nix version for testing purposes.
As this is a separate requirement, I will address it in a separate PR.

I have added an implementation that ensures the CT discount mechanism works correctly in the latest version of lwk. Currently, it only functions on the master branch of lwk, so I plan to officially determine the supported version after a release tag is created.
Additionally, the Liquid setup process has been changed, and we will update nix when a new version becomes available.

The draft status has been removed because the CT discount was released in LWK and Peerswap has also been updated to support it.

@nepet can you please review?

@grubles rebased.

Tested ACK f3c339c


Enable kube-vip to resolve DNS entries and use the IP as a vip_address

to enable DNS support, we should be able to resolve a DNS entry and use it a VIP for ARP broadcasting

I think that this can be closed with the merge of #84 @yastij ?

Correct

Any update on when v0.1.9 will be released?

It's behind schedule as I've been pretty busy of late.. is there any particular function that you're after that is in the roadmap for 0.1.9 ?

I'm interested in this particular issue (use DNS entry instead of IP) and
my understanding is this will be available in v0.1.9 release
On Wed, Oct 21, 2020 at 12:50 AM Daniel Finneran<EMAIL_ADDRESS>wrote:

It's behind schedule as I've been pretty busy of late.. is there any
particular function that you're after that is in the roadmap for 0.1.9 ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/plunder-app/kube-vip/issues/79#issuecomment-713380380,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2SVFKTRRHJC4QRNBA353TSL2HEFANCNFSM4R4URCTA
.


[OP] Add sampling technique that allows stratified sampling

 Issue by rnyak
Tuesday May 19, 2020 at 20:38 GMT
Originally opened as https://github.com/rapidsai/recsys/issues/149

Is your operator request related to a problem? Please describe.
This method was used in the W&D Outbrain repo to generate validation set.
Describe alternatives you've considered
The method used is Spark's sampleBy function:
sampleBy(col, fractions, seed=None)¶
Parameters:
col – column that defines strata
fractions – sampling fraction for each stratum. If a stratum is not specified, we treat its fraction as zero.
seed – random seed
Returns: a new DataFrame that represents the stratified sample

Describe the solution you'd like
A clear and concise description of the operation you'd like to perform on the column.  Please include:

Type: Preprocessing
input column type(s): Dataframe  and a specific column used as input- [categorical, continuous].
output column type(s): [categorical, continuous]
Expected transformation of the data after application: Returns a stratified sample with or without replacement based on the fraction given on each stratum.

Additional context
Sklearn and pandas have the existing sampling methods, whereas cudf does not have such operation yet:

sklearn.model_selection.train_test_split(*arrays, **options) source

https://github.com/scikit-learn/scikit-learn/blob/fd237278e/sklearn/model_selection/_split.py#L2029source

 Comment by rnyak
Thursday May 28, 2020 at 20:18 GMT

@jperez999 @benfred what's your assessment how long this will take to develop? It is low priority but if it is quick to do we can add it.

We've added this to the outbrains example by going
# # Do a stratified split of the merged dataset into a training/validation dataset
merged['day_event'] = (merged['timestamp'] / 1000 / 60 / 60 / 24).astype(int)
random_state = cudf.Series(cupy.random.uniform(size=len(merged)))
valid_set, train_set = merged.scatter_by_map(((merged.day_event <= 10) & (random_state > 0.2)).astype(int))
train_set.to_parquet(OUTPUT_BUCKET_FOLDER+"train_gdf.parquet", compression=None)
valid_set.to_parquet(OUTPUT_BUCKET_FOLDER+"valid_gdf.parquet", compression=None)


pivoting table using invoke

Is there a way to do pivoting using invoke ?
I'm stuck on aggregate expression
 iris_tbl <- copy_to(sc, iris)
 spark_dataframe(iris_tbl) %>%
    invoke("groupBy", "Species", list()) %>%
    invoke("pivot", "Sepal.Width", list()) %>%
    invoke(  ... ) # <-  how to create aggregate expression?

Original Scala code:
 iris
  .groupBy("Species")
  .pivot("Sepal.Width")
  .agg(avg("Sepal.length"))

How about?
library(sparklyr)

sc <- connect(master = "local")
iris_tbl <- copy_to(sc, iris)

avgColumn <- invoke_static(sc, "org.apache.spark.sql.functions", "avg", "Sepal_Length")
spark_dataframe(iris_tbl) %>%
    invoke("groupBy", "Species", list()) %>%
    invoke("pivot", "Sepal_Width", list()) %>%
    invoke("agg", avgColumn, list())

For more generic column expressions, one could defined them as follows instead:
avgColumn <- invoke_static(sc, "org.apache.spark.sql.functions", "expr", "avg(Sepal_Length)")

Support for sdf_pivot was added to development version, will be available in CRAN under sparklyr 0.6 on next release.

What functions can we use with sdf_pivot? Seems like the only one that works is "count". I tried "avg" and "sum" and both throw an exception - No matched method found for class org.apache.spark.sql.RelationalGroupedDataset

@dkincaid The set of supported functions are listed here:
https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.RelationalGroupedDataset
The unit tests also show how you might use these functions:
https://github.com/rstudio/sparklyr/blob/133b2028e653d896f9eb762bf480113381b0d2ef/tests/testthat/test-pivot.R#L29-L45
https://github.com/rstudio/sparklyr/blob/133b2028e653d896f9eb762bf480113381b0d2ef/tests/testthat/test-pivot.R#L60-L64

We should probably make it easier to construct Spark column expressions and use those within sdf_pivot().

Yes, agree if you can make it easier that would be great. Or at least include some examples in the documentation.  I did figure out that the easiest way to use this is to provide a list and then it's pretty easy to specify "sum" or "avg", etc.

Once the tidyr functions are implemented we probably want to steer users toward them. We'll have to think about if we want to support both APIs then.


Update the FAQ.

This updates #335

/cc @robscott @hbagdi

@robscott I partially addressed the extra FAQ entries you suggested; we can add more in follow-up PRs.

You probably talked about it 100x times already, but I still wanna ask: I know the official name of all of that is Service API, but aren't we primarily focusing on the "Gateway API" part of now? That being said, maybe it could make sense to "compare" the Gateway API with the Ingress API part for now? Or am I totally off-track?

You probably talked about it 100x times already, but I still wanna ask: I know the official name of all of that is Service API, but aren't we primarily focusing on the "Gateway API" part of now? That being said, maybe it could make sense to "compare" the Gateway API with the Ingress API part for now? Or am I totally off-track?

AFAIK, the official name is still "Service API", though I do agree that it is becoming more of a misnomer 🤷

Thanks! Looks like something went wrong in the verify step, but otherwise LGTM.
/approve

Thanks! Looks like something went wrong in the verify step, but otherwise LGTM.

Yeh, looks like a golint problem 🤷♂

You probably talked about it 100x times already, but I still wanna ask: I know the official name of all of that is Service API, but aren't we primarily focusing on the "Gateway API" part of now? That being said, maybe it could make sense to "compare" the Gateway API with the Ingress API part for now? Or am I totally off-track?

AFAIK, the official name is still "Service API", though I do agree that it is becoming more of a misnomer 🤷

Alright. Thanks. Maybe we can keep it in our head and address that at a later point in time :)

/retest

@jpeach I think you may need to rebase this on master.

/lgtm


With startify plugin

Hello,
I would like to enable this plugin when starting neovim, knowing that the startify plugin is enabled. From the doc page of the plugin, I found his workaround:
autocmd VimEnter *
                \   if !argc()
                \ |   Startify
		\ |   execute 'NERDTreeTabsOpen'
                \ |   wincmd w
\ | endif

It works when neovim is launched, but when I open a file in a new tab, there is no nerdtree anymore.
Just so you know, all the options from the vim-nerdtree-tabs are untouched, and also for the nerdtree plugin.
Thank you very much in advance

Sorry, found the solution, misread the README.md


After move event?

Is there any way to react after an element has been moved while its still being dragged? On Move seems to fire before its actually been moved and On Update only fires after someone stops dragging.

Nope.


Initial Migration to Azure SDK 1.0

Update to use new Azure SDK 1.0 preview which contains support for Scale Sets

@JargoonPard @milismsft More updates from CR feedback. Also I folded in the bug fix for NRE when retrieving collection of resources from Azure. PTAL

LGTM - needs rebase

Closing this pull request. Will submit another after rebasing with Spinnaker master


Time zone type hierarchy is not region - country - city

It deviates:
America/Indiana/Indianapolis - Region/state/city
America/Lima - Region/City
America/Jamaica - Region/Country
Maybe it is a better idea to introduce just Region for the top level, then level1, level2 etc

Fixed in v3.0.0 by introducing a generated enum


Include total hours and date user joined to the user page

Currently, we can see the awesome charts on the user page, but we have to hover over charts and do some mental calculation to know the total hours that the user has spent in the given period specified by the filter.
Also, it would be nice if we can easily see when a user joined Hours.
I'd raise a small PR for these changes shortly.

sounds good, please include tests for the new stuff 👍


[DDW-818] Create Wallet Screen missing Japanese translations

This PR re-inserts the missing translation for the old wallet creation process.
Screenshots

Testing Checklist

Slack QA thread
[ ] Test

Review Checklist
Basics

[ ] PR has been assigned and has appropriate labels (feature/bug/chore, release-x.x.x)
[ ] PR is updated to the most recent version of the target branch (and there are no conflicts)
[ ] PR has a good description that summarizes all changes and shows some screenshots or animated GIFs of important UI changes
[ ] CHANGELOG entry has been added to the top of the appropriate section (Features, Fixes, Chores) and is linked to the correct PR on GitHub
[ ] Automated tests: All acceptance and unit tests are passing (yarn test)
[ ] Manual tests (minimum tests should cover newly added feature/fix): App works correctly in development build (yarn dev)
[ ] Manual tests (minimum tests should cover newly added feature/fix): App works correctly in production build (yarn package / CI builds)
[ ] There are no flow errors or warnings (yarn flow:test)
[ ] There are no lint errors or warnings (yarn lint)
[ ] There are no prettier errors or warnings (yarn prettier:check)
[ ] There are no missing translations (running yarn manage:translations produces no changes)
[ ] Text changes are proofread and approved (Jane Wild / Amy Reeve)
[ ] Japanese text changes are proofread and approved (Junko Oda)
[ ] UI changes look good in all themes (Alexander Rukin)
[ ] Storybook works and no stories are broken (yarn storybook)
[ ] In case of dependency changes yarn.lock file is updated

Code Quality

[ ] Important parts of the code are properly commented and documented
[ ] Code is properly typed with flow
[ ] React components are split-up enough to avoid unnecessary re-renderings
[ ] Any code that only works in main process is neatly separated from components

Testing

[ ] New feature/change is covered by acceptance tests
[ ] New feature/change is manually tested and approved by QA team
[ ] All existing acceptance tests are still up-to-date
[ ] New feature/change is covered by Daedalus Testing scenario
[ ] All existing Daedalus Testing scenarios are still up-to-date

After Review

[ ] Merge the PR
[ ] Delete the source branch
[ ] Move the ticket to done column on the YouTrack board
[ ] Update Slack QA thread by marking it with a green checkmark

@daniloprates this screen looks not good

@IuliaDolishniak what is wrong here? Can you compare it to the same screen from the latest develop build?

@IuliaDolishniak what is wrong here? Can you compare it to the same screen from the latest develop build?

text boxes are not at the same line. One is below the other. Will give you the results shortly

same here

@IuliaDolishniak thanks!
This is not a new defect and it makes no sense to raise it now.
We don't need a ticket for this as we will completely redesign the wallet creation wizard soon.
Please continue testing and approve this PR if everything else works as expected.
Thanks!


First time flow of nearby notification feature is not good

Summary
There seems to be a new feature in v2.9.0. It's titled the "nearby notifications", I guess. It would be a nice feature to have but the way in which I had to discover it as a first time user was not nice. The first time user flow could be improved a lot.
Let me describe how it was for me.

First of all, when I open the app after upgrading to v2.9.0 a weird permission request pops-up which says,
Would you like us to use your current location to display the nearest place that needs pictures?
I'm not sure why I'm getting this pop-up. What would be the consequence if I grant/deny the permission? It also didn't tell me where it would show me the nearest places that need pictures.
Possible improvement: It would be nice if the feature was introduced before asking for permissions related to it. he introduction could possibly done using an onboarding screen (like the one shown when a user opens the app for the first time. Seems it's time to dig back into #869)

When I deny the permission, it shows me a weird toast message stating:
Unable to display nearest place that needs pictures without location permissions
I denied the permission consciously. This message seems redundant and isn't so helpful.
Possible improvement: In it's place, it would be better to show the user how to re-enable the permission (or) better let users know what it's about at least now.

I went to the 'Settings' screen, I saw two new settings which are probably related to this feature. The 'Display nearby notification' and 'Display location permission'. They seem odd too and the descriptions are quite vague.
a. Display nearby notification: The description reads Tap here to see the nearest place that needs pictures. That doesn't seem quite informative. Tapping on it just just disables the option about which I have know idea.
b. Display location permission: The description reads Ask for location permission when needed for nearby notification card view feature. This description is a little better. But is this even required?
I guess controlling flow via the settings is not a good idea. It's better to just control the features.
Possible improvement: It would nice to merge the two options into a single 'Nearby notifications' setting and give a meaningful description for it. Also, mention that the location would be used to show the places in the description. (I don't think the feature would work without it, would it?)

Device and Android version:
Samsung Galaxy J1 Ace
Commons app version:
2.9.0
Screen-shots:

Initial permission request

The toast message after denying it

The settings related to the feature

Would you like to work on the issue?
No

Hi @sivaraam , thanks for your feedback about workflow, I think we can have more of this kind of first time experience issues.

Possible improvement: It would be nice if the feature was introduced before asking for permissions related to it. he introduction could possibly done using an onboarding screen (like the one shown when a user opens the app for the first time. Seems it's time to dig back into #869)

Promoting new feature first is a good idea indeed.

When I deny the permission, it shows me a weird toast message stating:

Unable to display nearest place that needs pictures without location permissions
I denied the permission consciously. This message seems redundant and isn't so helpful.
Possible improvement: In it's place, it would be better to show the user how to re-enable the permission (or) better let users know what it's about at least now.

Maybe you denied permission consciously but for some user it is a reflex to deny location permissions. Thus, I think we can continue to display our current informative message and add they can reenable them from settings.

Possible improvement: It would nice to merge the two options into a single 'Nearby notifications' setting and give a meaningful description for it. Also, mention that the location would be used to show the places in the description. (I don't think the feature would work without it, would it?)

The second setting is there, since we have a never ask for permission again checkbox, and if user clicked to that permission etc. But I do agree this workflow can be improved. Merging two into one seemed to me like a good idea.

The first time flow is still maybe not optimal, but I guess this issue needs an update, or maybe recreate the issue to focus on current problems? Thanks! :-)

The first time flow is still maybe not optimal, but I guess this issue needs an update, or maybe recreate the issue to focus on current problems? Thanks! :-)

You're right. A major part of this issue appears stale. I observed a new issue for which I've filed #4765.


2018 (November) Developer Meeting TODOs

This issue collects all the TODOs with which we came up during the developer meeting that took place in November 2018. This is just a general collection. Feel free to add anything that's missing. We'll create smaller issues for tasks which take longer to finish. Small hint: even if you're not the one who created this issue, you can try editing it. Some people can. ;)

[ ] Set up a contact form on the oemof website that uses fire-bot or the Github API to automatically create issues in the oemof repository. This lowers the participation barrier for people who can't be bothered to create a Github account.

[ ] Research alternatives to reddit or discourse. We do know that we want to move away from the openmod forum and we also know that we want a forum instead of  a mailing list because the former allows us to structure discussions better. The biggest problem currently is that the best solution has to be self hosted, which requires funding and maintenance time, while external solutions like reddit are always non-optimal in a certain way.

[ ] Add major events in the history of oemof that should enter the timeline to this pad: https://ethercalc.org/q2q82eucgr34

[ ] Finalize oemof timeline

[ ] Implement node removal in an energy system. This will be a rather "expensive" operation, as the groups will be reset and recreated. For convenience, bulk removal can be implemented, so that group recreation doesn't happen after every node is removed.

[ ] Implement mutable node attributes. There's one big caveat for this: it is impossible to intercept node attribute mutation for all scenarios. So while user's can mutate, they also have to explicitly notify the EnergySystem that they have done so, before rebuilding the optimization model.

[ ]  create a heat component repository (sandbox)

structure: uwe makes a proposal

[ ] Implement piecewise linear constraints. Applications: Decreasing investment costs, load-dependent efficiencies,...

[ ] Create an example showing the possibilities of the ouputlib (views, slicing,..)

[ ]  create a heat component repository (sandbox)
-structure: uwe makes a proposal

Firebot is set up and ready to take issues!
Issues are created automatically by sending an email to:
<EMAIL_ADDRESS>Later on, this will be integrated in a form on oemof-webpage.


Structural modifier sets need a minimum damage after modifiers

Description

Should be about 1/50th of the typical structure using that modifier's health.
So, for example, rglass if after modifiers you will deal less than 3 damage to glass you instead deal 0.

While we're here, some other oversights I noticed:

Reinforced walls are using Metallic instead of StrongMetallic right now.
RGlass resistances are a bit low vs blunt; IRL that's the main damage type tempered glass etc is designed to defend against...


Abstract HttpClient into HttpClientMethods trait

This decouples the HTTP client implementation from the Wallet by allowing a CDK user to inject a custom HTTP client if desired.
This should also help with unit testing of the Wallet in the future.

@thesimplekid it seems to me that the CI errors are existing errors. Are they safe to ignore?

I think I found a way to fix at least some of the failing tests: https://github.com/davidcaseria/cdk/pull/2

I might have a few more CI fixes: https://github.com/davidcaseria/cdk/pull/3

@ok300 I appreciate the fixes!


Logger is not pointing to source file

Description
A clear and concise description of what the bug is.
Logger is not pointing to source file.
Logger always points to utils file where log function is.
To Reproduce
Steps to reproduce the behavior:

Change log LEVEL
Load a page with a sidekick
Check console

Expected behavior
A clear and concise description of what you expected to happen.
Logger should pointing to source file where log function is used.
Screenshots
If applicable, add screenshots to help explain your problem.

:tada: This issue has been resolved in version 6.40.0 :tada:
The release is available on:

GitHub release
v6.40.0

Your semantic-release bot :package::rocket:


Concatenate node algorithm didn't work the same as it described

Checklist

[X] I've read the contribution guidelines.
[X] I've searched other issues and no duplicate issues were found.
[X] I've agreed with the maintainers that I can plan this task.

Description
In the concatenate node description, it describes that if one sensor (pointcloud) fails, the node will still concatenate the remaining pointcloud. (see the last 5 pointcloud in the diagram shown below)

However, the algorithm implementation doesn't work as in the diagram. In the scenario when one of the Pointcloud C doesn't come, and the Pointcloud D, which already exists in the buffer, arrives at the node,  the timer will reset (start) with the period timeout_sec. In this case, the timeout won't happen in t3 as the timer just starts again. Finally, Pointcloud F arrives and the current algorithm will concatenate Pointcloud D, E, F, and discard Pointcloud A, B.
In some scenarios (imagine we have top, left, and right lidars) we can control the publish time of each Lidar. We will set the most important pointcould (top) as the last-coming pointcloud. In this case, the current algorithm works fine because if the left and the right pointcloud (Pointcloud A, B) come and the top pointcloud (Pointcloud C) doesn't come. It is better to discard the left and the right pointcloud (Pointcloud A, B) as the concatenate pointcloud (without top pointcloud) might cause problems to the perception module. However, in this case, we probably need to add a parameter/algorithm that indicates which lidar is the main lidar, and when the main lidar doesn't arrive, we won't concatenate the pointcloud.
reference:
https://github.com/autowarefoundation/autoware.universe/blob/main/sensing/pointcloud_preprocessor/docs/concatenate-data.md
Purpose
Provide a more robust algorithm for concatenating pointlcloud.
Possible approaches
This is the current algorithm of the concatenate node.

Possible approach:

add new parameters main_pointcloud_topic, which we don't concatenate the pointcloud if the pointcloud buffer lacks the main_pointcloud.
Instead of resetting the timer to timeout_sec when receiving Pointcloud D, we do the concatenate if the main_pointcloud is in the buffer

Example

If Pointcloud C is main_pointcloud, then do the same thing as the current algorithm does.
If Pointcloud C is not the main_pointcloud, we wait until the timeout then we publish. Or we receive Pointcloud D before the timeout, we also concatenate the pointcloud.

Definition of done
The concatenate node can handle scenarios that are required.

Possible solution diagram

@vividf according to possible solutions without specifying the main_pointcloud, what happens if there are multiple pointcloud drops and when does the timer start, is it after getting the third pointcloud into the buffer?

@palas21
Thanks for your question.
The solution won't be the one described above.
I will provide the decided solution later :)

New design for concatenate node.

This PR https://github.com/autowarefoundation/autoware.universe/pull/8300 solves the issue and will be merged soon.
Thus, I will close this issue.


FLPATH-634 Generalize escalation mechanism

Partial implementation for FLPATH-634 Generalize escalation mechanism. Missing parts:

Finalize SonataFlow version with latest updates
Restore Unit Test code (disabled because of the above point)

@masayag @gciavarrini @gciavarrini @rgolangh
Can you please have a look?
As described in the README, it's not fully working because we miss the lastest artifacts of SonataFlow including the timeout error management.

@masayag @gciavarrini @rgolangh @rhkp please review


Code fence entire element (WCF docs)

(Hide whitespace changes.)
Done through find/replace.

Internal previews
Toggle expand/collapse

📄 File
🔗 Preview link

docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe.md
docs/framework/wcf/configuration-editor-tool-svcconfigeditor-exe

docs/framework/wcf/configuring-services-using-configuration-files.md
docs/framework/wcf/configuring-services-using-configuration-files

docs/framework/wcf/configuring-wcf-services-in-code.md
docs/framework/wcf/configuring-wcf-services-in-code

docs/framework/wcf/extending/specifying-a-custom-crypto-algorithm.md
docs/framework/wcf/extending/specifying-a-custom-crypto-algorithm

docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials.md
docs/framework/wcf/extending/walkthrough-creating-custom-client-and-service-credentials

docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md
docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost

docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was.md
docs/framework/wcf/feature-details/configuration-based-activation-in-iis-and-was

docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file.md
docs/framework/wcf/feature-details/configuring-discovery-in-a-configuration-file

docs/framework/wcf/feature-details/hosting-workflow-services.md
docs/framework/wcf/feature-details/hosting-workflow-services

docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously.md
docs/framework/wcf/feature-details/how-to-call-wcf-service-operations-asynchronously

docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service.md
docs/framework/wcf/feature-details/how-to-configure-credentials-on-a-federation-service

docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md
docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost

docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost.md
docs/framework/wcf/feature-details/how-to-configure-tracking-with-workflowservicehost

docs/framework/wcf/feature-details/how-to-create-a-federated-client.md
docs/framework/wcf/feature-details/how-to-create-a-federated-client

docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding.md
docs/framework/wcf/feature-details/how-to-create-a-wsfederationhttpbinding

docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents.md
docs/framework/wcf/feature-details/how-to-use-svcutil-exe-to-download-metadata-documents

docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider.md
docs/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider

docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service.md
docs/framework/wcf/feature-details/how-to-use-the-aspnet-role-provider-with-a-service

docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials.md
docs/framework/wcf/feature-details/how-to-use-transport-security-and-message-credentials

docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview.md
docs/framework/wcf/feature-details/integrating-with-com-plus-applications-overview

docs/framework/wcf/feature-details/message-security-with-a-certificate-client.md
docs/framework/wcf/feature-details/message-security-with-a-certificate-client

docs/framework/wcf/feature-details/partial-trust-feature-compatibility.md
docs/framework/wcf/feature-details/partial-trust-feature-compatibility

docs/framework/wcf/feature-details/securitybindingelement-authentication-modes.md
docs/framework/wcf/feature-details/securitybindingelement-authentication-modes

docs/framework/wcf/feature-details/standard-endpoints.md
docs/framework/wcf/feature-details/standard-endpoints

docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings.md
docs/framework/wcf/feature-details/supporting-multiple-iis-site-bindings

docs/framework/wcf/feature-details/using-the-message-class.md
docs/framework/wcf/feature-details/using-the-message-class

docs/framework/wcf/host-a-wcf-service-net-framework-3-5-iis--net-framework-4.md
docs/framework/wcf/host-a-wcf-service-net-framework-3-5-iis--net-framework-4

docs/framework/wcf/how-to-secure-a-service-with-windows-credentials.md
docs/framework/wcf/how-to-secure-a-service-with-windows-credentials

docs/framework/wcf/simplified-configuration.md
docs/framework/wcf/simplified-configuration

docs/framework/wcf/synchronous-and-asynchronous-operations.md
docs/framework/wcf/synchronous-and-asynchronous-operations

[!NOTE]
This table shows preview links for the 30 files with the most changes. For preview links for other files in this PR, select OpenPublishing.Build Details within checks.

Thanks @BillWagner


Clone optimization

This change moves the check-if-array-or-object check out of the clone method, and does it once at creation time. Since we are talking about immutable structures, it is unnecessary to check each time when cloning if the given object is still of the same type.

Thank you!