[feature] Add Multi-Tenant support

About
Support Multitenancy by using dynamically loaded Tenant-specific collections and their corresponding connections.
How It Works
The call to Collection.tenant will return a tenant-specific collection. This collection has a scoped identity for each tenant and the tenant name could be a number of string.
For instance, Collection with identity test would becoming test<tenant:1> for Test.tenant(1).
The Tenant-specific Collection also has it's own Tenant-specific Connection with an analogous naming convention: connectionName<tenant:tenantId>.
These new Tenant-specific collections and connections are loaded dynamically, on-demand, at runtime. This means that you:

do not require waiting to load all X number of connections for all of your tenants, and
do not even have to know at server startup what tenants are available. They could even be loaded from a database upon request, without reloading your server!

Related Issues
See #286 and https://github.com/balderdashy/sails-mongo/issues/130 and https://github.com/balderdashy/sails/issues/1857
Usage
Configure Connection
      'my_foo': {
        adapter: 'foo',
        host: 'localhost',
        port: 12345,
        database: 'default_database',

        // === New ===
        isMultiTenant: true, // Enable Multi-Tenancy feature
        defaultTenant: false, // false, <string>, or <number>
        getTenant: function(req, cb) { // For Sailsjs
          return cb(req.params.tenant);
        },
        configForTenant: function(tenantId, config, cb) { // For Waterline
          // Validate Tenant
          tenantId = parseInt(tenantId);
          if (tenantId >= 1 && tenantId < 10) {
            config.database = "tenant-" + tenantId;
            return cb(null, config);
          } else {
            //
            return cb(new Error("Invalid tenant " + tenantId + "!"));
          }
        }

      }

.tenant API
Currently Supported

[x] Callback-style

      Collection
        .tenant("1", function(err, TenantCollection) {
          // Now you have a Tenant-specific Collection!
          TenantCollection
            .find({})
            .exec(function(err, results) {
              assert(results.length === 1, 'tenant-1 has 1 record');
              assert(results[0].message === db['tenant-1']['tests'][0].message, 'records are from the tenant-1 database');
              done();
            });
        });

Promise-style, using

[x] Operations

Used by finders

[x] Deferred

Used by count, create, destroy, update

      Collection
        .tenant("1")
        .find({})
        .exec(function(err, result) {
          console.log(err, result);
          done();
        });

Tests:
See https://github.com/Glavin001/waterline/blob/multi-tenant/lib/waterline/query/dql/tenant.js

[x] Callback-style API

[x] find
[x] findOne
[x] count
[x] create
[x] destroy
[x] update

[x] Promise-style API (Operation/Deferred)

[x] find
[x] findOne
[x] count
[x] create
[x] destroy
[x] update

TODO:

[x] Use existing Tenant connection, if previously loaded
[x] Use existing Tenant Collection, if previously loaded
[x] Remove debugging console.log
Add support for Promise-style API (see above)
Add support to Sailsjs Blueprints for using this Multi-Tenancy feature

Sailsjs would use the .getTenant(req, callback) as defined in the configuration

[ ] Improve documentation
[ ] Joins/associations across multiple multi-tenant Collections

Apply the same tenant to both, if either have multi-tenant enabled

@particlebanana I am still actively improving the Pull Request right now, however I would appreciate some feedback on the current status of the code. Let me know if there's anything I should change/improve. Thanks in advance!

@Glavin001 this looks interesting. I love the interface with the .tenant chain. Could we do something to not have to acquire the connection first? Currently in adapters each method aquires its own connection already, usually just grabbing one off the pool. If we can tap into that and just look and see if the tenant option was set then it would make it a lot easier. What is the getTenant config option for when using sails?
Overall this looks great, good work! I would say lets shoot for something like this and make it where you don't have to manually acquire the tenant connection like in the callback style above.
Collection
.tenant(req.session.tenant)
.find({})
.exec(function(err, result) {
    console.log(err, result);
    done();
});

Could we do something to not have to acquire the connection first? Currently in adapters each method aquires its own connection already, usually just grabbing one off the pool. If we can tap into that and just look and see if the tenant option was set then it would make it a lot easier.

Currently I do retrieve the new tenant-specific connection after, when the chain is executed (exec). Could you elaborate on what you mean? I'm new to Sails to I may be missing something. Thanks!

What is the getTenant config option for when using sails?

This function / middleware would parse the tenant from the request and could potentially attach it to the session, as you noted.

make it where you don't have to manually acquire the tenant connection like in the callback style above.

I am still new to Sails so I actually did not even remember we had a req.session. Using the getTenant (change name?) middleware function configured in Sails we could most definitely attach the tenant to the session. Great ideas!
Thanks for your support. Let me know if there's any more feedback. Much appreciated. :).
—
Sent from Mailbox
On Fri, Jan 9, 2015 at 12:51 PM, Cody Stoltman<EMAIL_ADDRESS>wrote:

@Glavin001 this looks interesting. I love the interface with the .tenant chain. Could we do something to not have to acquire the connection first? Currently in adapters each method aquires its own connection already, usually just grabbing one off the pool. If we can tap into that and just look and see if the tenant option was set then it would make it a lot easier. What is the getTenant config option for when using sails?
Overall this looks great, good work! I would say lets shoot for something like this and make it where you don't have to manually acquire the tenant connection like in the callback style above.
Collection
.tenant(req.session.tenant)
.find({})
.exec(function(err, result) {
    console.log(err, result);
    done();
});

Reply to this email directly or view it on GitHub:
https://github.com/balderdashy/waterline/pull/787#issuecomment-69362135

woot woot +1

/cc @toddmurphy
—
Sent from Mailbox
On Fri, Jan 9, 2015 at 6:36 PM, Randall Meeker<EMAIL_ADDRESS>wrote:

woot woot +1
Reply to this email directly or view it on GitHub:
https://github.com/balderdashy/waterline/pull/787#issuecomment-69411968

This is very exciting and I'll be paying attention to the developments - thanks for your contribution @Glavin001!
I look forwards to replacing our user hook that creates a new set of Models for each tenant with this more efficient (and convenient) approach. One thing we've had to test thoroughly -  under concurrent load Waterline should never access the wrong tenant's DB and introduce crosstalk between tenants. We used  http://jmeter.apache.org/ to test in a staging environment to protect against this.

under concurrent load Waterline should never access the wrong tenant's DB and introduce crosstalk between tenants

Absolutely agree. Fortunately, as long as the developer either uses the callback-style, or uses the promise-style and never stores the promise and uses it later after an asynchronous call then this will not occur. (See http://stackoverflow.com/a/5177773/3825958 for more info)
DO NOT
var promise1 = Collection
        .tenant("1")
        .find({});

// Async call
// Give control back to Node.js and allow it to run other code first, because this `exec` is called
process.nextTick(function() {
        .exec(function(err, result) {
          // This executed after the code below
          // So this Collection is now a TenantCollection for Tenant="2"
          console.log(err, result);
          done();
        });
});

// Proper usage
Collection
        .tenant("2")
        .find({})
        .exec(function(err, result) {
          // Tenant is 2
          // Same as callback-style, the Colllection is now a `TenantCollection` and will remain correctly scoped to the tenant
          console.log(err, result);
          done();
        });

[ ] Reset the tenant to null after exec is finished

This will make sure that the global Collection does not remember the previously set tenant after it is executed, and so subsequent requests will have null as the tenant and will properly error saying that a tenant is required.

Success! Everything is working now. I have added Collection._resolveCollection helper function and wrapped all of the query methods in the dql/ directory. This has majorly improved stability as well as decreased code complexity. I will be removing my changes from the Operations file, now that the lower-level query methods actually handle the resolving of the Tenant Collection, if applicable.
$ mocha --recursive --reporter spec test/integration/Collection.multiTenant.js

  Waterline Collection
    with Multitenancy
      ✓ should have setup correctly
      using Callback-Style API
        ✓ should find records for specified tenant-1
        ✓ should find records for specified tenant-2
        ✓ should count records for specified tenant-1
        ✓ should findOne record for specified tenant-1
        ✓ should destroy record for specified tenant-1
        ✓ should update record for specified tenant-1
        ✓ should create a record for specified tenant-1
      using Promise-Style (Fluent Interface) API
        ✓ should error complaining no specified tenant
        ✓ should error complaining no specified tenant
        ✓ should find records for specified tenant
        ✓ should findOne record for specified tenant-1
        ✓ should count records for specified tenant-1
        ✓ should destroy record for specified tenant-1
        ✓ should update record for specified tenant-1
        ✓ should create a record for specified tenant-1
        ✓ should find records for multiple tenant requests
        ✓ should error from improper usage

  18 passing (58ms)

@particlebanana I'd say everything is complete from a Waterline perspective. I will likely need a little help with the Sails part. I'd like to add the custom middleware to every controller action (blueprint and not). The custom middle will use the configured getTenant(req,cb) function and get the tenant and set req.session.tenant = tenant. Could you give me some pointers on this one? I want to make sure I follow your/Waterline/Sails standard contribution practices, and that everyone will be happy to merge and enjoy. Thanks!

Once this is merged in we can get Sails up to snuff :smiley:.
See PR: https://github.com/balderdashy/sails/pull/2553

@Glavin001 I'm trying to find some time to set aside and go through this whole thing and get it merged. This is a big one and I just want to make sure everything is going to be seamless. I should have it in before the weekend if everything looks good.

Good things take time. I appreciate you setting time aside to review this. Let me know if there's anything I can do.

Hey @Glavin001 can you undo all the formatting stuff? It makes it really hard to see and follow what has changed when there is a bunch of lines like: https://github.com/balderdashy/waterline/pull/787/files#diff-4bba40afded661fbbdf387f7d1e95dc3R135

Hey @Glavin001 can you undo all the formatting stuff? It makes it really hard to see and follow what has changed when there is a bunch of lines like: https://github.com/balderdashy/waterline/pull/787/files#diff-4bba40afded661fbbdf387f7d1e95dc3R135

Yeah I accidentally hit my beautifer while developing and it cleaned all of the formatting. I can imagine it is making it difficult to review. I'll try and find time to revert the formatting back to what it was before and make this a little clearer.

Also it looks like there will be a memory leak because we are never clearing out the instantiated connections/collections that the tenant generates. If you have 100 tenants you will have 100*n where n is the number of models.
I think a clearer approach is to look to the spawnConnection method on the adapters.
An ideal solution would be to read the tenant config from the query criteria in deferred and pass that straight through to the adapter's spawnConnection method that each adapter method is already wrapped in.
User.find({ id: 1 }, { _tenant: { ////// } })

Would get read by the postgresql adapter for example and create a one off connection, run the query and close the connection. The waterline collections were never meant to be instantiated dynamically and have a lot of baggage.

Also it looks like there will be a memory leak because we are never clearing out the instantiated connections/collections that the tenant generates. If you have 100 tenants you will have 100*n where n is the number of models.

This is not a memory leak, it is an intended feature. I do not want to have to recreate each Tenant-Collection and Connection for each new Tenant request. Ideally a connection could be switched to use another database/etc and reused, however that is not the case currently. Even now, when my Sails server starts it takes a second or so just for instantiating the connections (I added some logging because I was curious why it was so slow), and adding this time to each request is an unacceptable performance hit. If you have any recommendations for performance improvements please let me know.

I think a clearer approach is to look to the spawnConnection method on the adapters.

Please post a link to where this spawnConnection function is (Waterline, each adapter, etc?). Is it
https://github.com/akonwi/sails-mongo/blob/1ccb7f580c411d8d49ad1829814951fe9b5a2fd8/lib/adapter.js#L441-L459 ? I would really appreciate a cleaner approach for implementing this.

An ideal solution would be to read the tenant config from the query criteria in deferred and pass that straight through to the adapter's spawnConnection method that each adapter method is already wrapped in.
User.find({ id: 1 }, { _tenant: { ////// } })

Would get read by the postgresql adapter for example and create a one off connection, run the query and close the connection.

I do not like this. I prefer a Tenant-specific Collection where the query does not contain any tenant information.
The goal was that for Sails, requests would have the tenant information parsed and the Model/Collection that the Controller would have access to would be scoped to the Tenant. I could take a Sails application that was previously only single-tenant, and configure the connection and have it automatically work for multi-tenants. This has been accomplished:  https://github.com/balderdashy/sails/pull/2553
I would love to hear feedback from other users what they prefer:
User.find({ id: 1 }, { _tenant: { ////// } })

or
// Multitenancy has been handled automatically by Sails and Waterline
// `User` now represents a Tenant-Specific Collection/Model
User.find({ id: 1 })

I know I prefer the latter.

The waterline collections were never meant to be instantiated dynamically and have a lot of baggage.

That's for sure :stuck_out_tongue_winking_eye:. It was tough to make that work and I would love a cleaner solution, however the current Waterline does not seem to be designed for this and a cleaner solution was not apparent to me. Hopefully maintainers of Sails and Waterline could help clean this up, if possible.
I know between this and the Sails Pull Request, I have accomplished exactly what I set out to do and the usage and experience is what I want. Any performance improvements and cleaner solutions for accomplishing this are welcome.
Thank you for your feedback and please let me know of any other questions / concerns you have. I would really like to get official support for this (merged) with the Sails and Waterline community and provide developers with a solution to what appears to me to be a major lacking feature, and a big problem.

The spawnConnection method is in each adapter and is responsible for either creating a connection or grabbing a connection from the pool. Each adapter method uses this to get a live connection it can use to run a query. You can see an example in the mongo adapter here: https://github.com/akonwi/sails-mongo/blob/1ccb7f580c411d8d49ad1829814951fe9b5a2fd8/lib/adapter.js#L231-L233
Creating a new connection here should be fast, it shouldn't be a bottleneck. It would certainly be more performant than keeping hundreds of dynamic collections in memory I would think. You could even create connection pools for each tenant which would eliminate the connection overhead. The reason it's slow on lift is due to building up the collection schema, running describe queries, doing migrations if needed, etc. Actually creating a connection using the db client should be fast.
Maybe I'm misunderstanding but it wouldn't be:
User.find({ id: 1 })

it would be:
User.tenant("1").find({ id: 1 })

Which behind the scenes would create a new waterline collection for the User with the configured tenant connection and then use that to fulfill the query. What I'm proposing is in the deferred object it transforms that to User.find({ id: 1 }, { _tenant: { ... } }) when passing to the adapter and let the adapter handle the dynamic connection. The userland usage is the same but it doesn't require the overhead of the dynamic collections.

The reason it's slow on lift is due to building up the collection schema, running describe queries, doing migrations if needed, etc. Actually creating a connection using the db client should be fast.

Excellent. I'll look into using that instead of registerConnection. Thanks for the recommendation.

Maybe I'm misunderstanding but it wouldn't be:
User.find({ id: 1 })

it would be:
User.tenant("1").find({ id: 1 })

Which behind the scenes would create a new waterline collection for the User with the configured tenant connection and then use that to fulfill the query. What I'm proposing is in the deferred object it transforms that to User.find({ id: 1 }, { _tenant: { ... } }) when passing to the adapter and let the adapter handle the dynamic connection. The userland usage is the same but it doesn't require the overhead of the dynamic collections.

Sounds good, however (correct me if I am wrong) this would not allow for the following usage case:
Calling the query methods with a callback directly
This skips the usage of deferred entirely.
User.tenant("1").find({ id: 1 }, function(err, result) { });
// This actually uses `Operation` instead of `Deferred`
// See https://github.com/balderdashy/waterline/blob/master/lib/waterline/query/finders/basic.js#L63

So long as developers do not use it in this way, this is not a problem, however I would say is reasonable usage (callback-style versus promise-style, developers choice). Handling this in the query methods also means the Deferred and Operation does not have to deal with something that is Collection specific and can focus on it's core purpose of deferring execution.
I moved the bulk of the code into https://github.com/Glavin001/waterline/blob/multi-tenant/lib/waterline/collection/index.js#L69 and https://github.com/Glavin001/waterline/blob/multi-tenant/lib/waterline/query/dql/tenant.js so it's very quick and easy to scope a Collection by tenant. See https://github.com/Glavin001/waterline/blob/multi-tenant/lib/waterline/query/dql/count.js#L55

passing to the adapter and let the adapter handle the dynamic connection

So this could be accomplished in Waterline, somewhere in https://github.com/balderdashy/waterline/tree/master/lib/waterline/adapter ? That'd be great to 1) use spawnConnection and be even faster and 2) not have to create Tenant-specific Collections in memory and only have the Connections for the current request be scoped to the Tenant.
I do not see where spawnConnection is exported and therefore giving me access to use it from Waterline. Could you explain how I could call it from Waterline? It would be great to increase the performance of this feature. Thanks!

We could forfeit the ability to have reusable, scoped Collections:
User.tenant("1", function(UserTenant) {
// UserTenant is scoped and reusable
UserTenant.find().exec(); // Use once
UserTenant.create().exec() // Use again
// etc
});

And instead of having the .tenant API on the Collection, we could put it on Operation or Deferred such that:
User.find().tenant(req.session.tenant).exec();

And this would use spawnConnection to generate a Tenant-specific connection when the request is being created and executed, thus eliminating the need for Tenant-specific Collections and Connections to remain in memory and still allowing for dynamic Tenants.
Thoughts @particlebanana?
The only thing I am missing is as stated above:

I do not see where spawnConnection is exported and therefore giving me access to use it from Waterline. Could you explain how I could call it from Waterline? It would be great to increase the performance of this feature. Thanks!

@Glavin001, @particlebanana , Hello there, @Glavin001  I fully support your idea Goals, I pretty much  Did this on  node + Express app   http://stackoverflow.com/a/24913867/343338
Connection pulling is very important, (saving established connections). It is not memory leak, thats the way we want it to be so that if a tenant that has connected before wants to make future/ subsequent request, sails (node) does not need to go through the reconnection dance.
Im very new to sailsJs and this is the one reason that has prevented me from using it full time, as I am not skilled or knowledgeable enough to implement it myself.

@Glavin001 sorry for the delay here. I haven't had a chance to look into the feasibility of doing the spawnConnection part yet. The spawnConnection is not available from Waterline, it would be up to the adapter to implement it. This shouldn't be much work though as most of the adapters that would benefit from multi-tenant already use this method. Lets start with mongo and see what we can do.
What Waterline would need to do is to make sure that the tenant config is passed to the query method. So in the above example User.find().tenant(req.session.tenant).exec(); the find method in the mongo adapter would get the correct connection config for the tenant and pass it to the spawnConnection method. If a pool exist for the tenant connection then use it otherwise create a pool for it and pass a connection back.
@mojotaker it should absolutely keep an open pool of connections so that it's not constantly creating new ones. @jfrumar has some insights on the creating multiple models approach he posted in https://github.com/balderdashy/sails-mongo/issues/130#issuecomment-47439453. I think if we can figure out the connection pooling without instantiating new models we can make it so you can use a multi-tenant architecture and still be able to easily scale out horizontally.

@particlebanana so this would be opt-in for each Adapter to support Multitenancy, by exposing the spawnConnection API. I was hoping for a Waterline solution, that would not require this, and while that has been achieved with this above Pull Request , I definitely see your point and the advantages of handling it closer to the Connection instead of Collection.
Unfortunately, I have used up my time I had allocated for this feature. However, I hope I can make some time coming up in these next few weeks and potentially submit another Pull Request.
Please detail any other knowledge / advice that you have on this matter, before I begin developing this feature again, so that another Pull Request will not be developed needlessly. Thank you.
If anyone else is interested in contributing to this new implementation of Multitenancy for Waterline, please let me know. Let's hope we can finally bring this critical feature to the Sails and Waterline community!

I'd be interested in helping with the development of this, if it's still needed. I somehow missed this pull request, and developed my own (much poorer) solution in the meantime, at the ORM-level in Sails.
Let me know what I can do to help get this pulled!

@t3rminus: Unfortunately, at the moment I do not see a time in the near future where I will be able to contribute and develop this new version of multitenancy support, as @particlebanana and I have described and discussed above.
This Pull Request accomplishes precisely what I intended and needed at the time, however as noted above there may be an even better way of implementing this. This information came too late. I wanted to make this work at the Waterline level and not require any changes to adapters, and this is accomplished with the pull request above. It should still work although it is of course not being maintained and as you can see there are always merge conflicts created since time has passed. See https://github.com/Glavin001/sails-multitenancy-example for a demo.
My company is no longer developing (postponed) our server with Sails and I am now working on other projects so it may be a few months before I will be back and revisiting this issue and Sails server development.
I hope that when the time comes that I do revisit development of our server, that Sails supports some form of multitenancy and that I will not need to look for another framework.


Fix minor issues in download build tasks.

@omeshp,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Fix import for watchOS

This needs to be TARGET_OS_WATCH (also see the corresponding .m file, where it actually already is TARGET_OS_WATCH)
#no-changelog

I'm having trouble with this error. My app is not and will not be available for Apple Watch. Would anyone know how I go about quitting the error till the update is pushed?

You could either edit the file manually in your installation or keep using Xcode 12.4 or earlier

file

This means edit the file on every build? isn't there a file on unity  that could be modified to avoid this ?
Thanks

You could either edit the file manually in your installation or keep using Xcode 12.4 or earlier

This means edit the file on every build? isn't there a file on unity that could be modified to avoid this ?
Thanks

Edit the file after any pod install or pod update.  You may want ask the Unity question in a different forum - there may not be too much Unity expertise here.

Edit the file after any pod install or pod update. You may want ask the Unity question in a different forum - there may not be too much Unity expertise here.

ooh right, I thought this was from the firebase for unity sdk , thanks


Update ObjectTermGroups.cs:

Q
A

Bug fix?
yes

New feature?
no

New sample?
no

Related issues?
no

What's in this Pull Request?
If there is a local site collection termset added, then the added termsetid token is not correct. It contains "Site Collection"  as termgroup-name instead of the correct termgroup-name, then the associated taxonomyfield is not created.

Hi @StaffanNelemans, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;

Hi Staffan,
Looks good, we'll look into this PR.

Hi Staffan,
Thanks for your contribution. This PR has been merged.


[Bug] Marker endColumn appears to be off by 1

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Link
https://microsoft.github.io/monaco-editor/playground.html?source=v0.38.0#XQAAAAKoAgAAAAAAAABBqQkHQ5NjdMjwa-jY7SIQ9S7DNlzs5W-mwj0fe1ZCDRFc9ws9XQE0SJE1jc2VKxhaLFIw9vEWSxW3yscw2LesRwLINgRABDcFm89fBOSueOLTYt0aaEwnsLoPwmLxwedOn8Q8TDA7HdG2A53dB9AMwMH_c2UsEDCPbL8A6wc1PFBazlo2fy7TfNZymcFwybCgcaeSebsDkbJ--zzabpsV4SOUUQl0t2NVQaDdjOIcrRaxzomgNv4fxdZ2Z6Iv1zEsomQZKlA8oNE7Brf1mlfhJP0ESTSX_B_fkcZL5n1WLKkTEoZqa7tK0BtkCcOa6ZCjxzvHlLfr2TSPaq0q2eJqGCOMFznWO9JHcWMUR__fY5PQJ00Ltv80GFlZtzDtteYPBfRPYvF8JBI78xd-E3P5CCYwX_lkpDcAhpfDDwouONv5y47--Ph9Sc81UgQxuzVttcwXDQC6hsjT0E2cblgkd1FcZx03CeChmCNTS2PE43rc_dXujj6JctOojmSQJ0pXkg9_6faklZwxFw2KMmkzt51fwJqSi0lOCxn89xUU
Monaco Editor Playground Code
function validate(model) {
	const markers = [];
	// lines start at 1
	markers.push({
				message: "not an integer",
				severity: monaco.MarkerSeverity.Warning,
				startLineNumber: 1,
				startColumn: 1,
				endLineNumber: 1,
				endColumn: 4,
			});
	monaco.editor.setModelMarkers(model, "owner", markers);
}

const value = `12345`;
const uri = monaco.Uri.parse("inmemory://test");
const model = monaco.editor.createModel(value, "demoLanguage", uri);
const editor = monaco.editor.create(document.getElementById("container"), {
	model,
});
validate(model);
model.onDidChangeContent(() => {
	validate(model);
});

Reproduction Steps
Copy and paste the above code in the playground. You will notice that the squiggly lines don't appear on the character 4, but it is expected to, given how the marker is being created.
Actual (Problematic) Behavior
The squiggly line only appears on 123
Expected Behavior
The squiggly line appears on 1234
Additional Context
I believe that both the lines and columns start at one. The endColumn is not behaving as expected.

I believe this is just a documentation issue. A position in the editor is defined here https://github.com/microsoft/vscode/blob/main/src/vs/editor/common/core/position.ts#L15 and it states that "the first character in a line is between column 1 and column 2". So column can be interpreted as a place where the cursor could be placed. Hence you need to add one to your result because you want to stretch the squiggle to the cursor position after the last character you want to mark. As another example: to only mark the first character in a line you would set startColumn: 1 and endColumn: 2.

Thanks for the explanation!


Python 3.7 doesn't work.

I made Python 3.7 an In App Purchase. But the purchase doesn't work. Also, people that downloaded the app when Python 3.7 was free should not have to purchase it. I submitted a new update fixing that.

I think I found the solution

You can update, the Python 3.7 In App Purchase is free for now.

I just tried to unlock python 3 with the in app purchase but it is giving me a product not found error. I am following the instructions and letting you know so that you can fix the bug.

Maybe it is taking longer for the fix to reach me. Updates sometimes take a bit longer to get to my region.

I think it will take some time for the In App Purchase to be available, it happened to me with another app. I have put the In App Purchase to 0$ until I will fix all bugs. I submitted an update that should be available today that should unlock Python 3.7 for all users who downloaded the app before the 4.0. The problem is that only works on App Store versions because I have to check a receipt given by the App Store, so I can only check if that works when the app is on the App Store. But I think I found the problem. Apple said that In App Purchases can take up to 24 hours to be available. That’s not a bug of my app because if we try to purchase Python 3.7 from the App Store, it doesn’t work. And also the app will be rejected if the In App Purchase would not work. Sorry for all bugs 😓. When the purchase will be available, you can purchase it and it will be free. On the next update, it should be free for users who downloaded the app before the 4.0 and paid for other users.

Ok thanks for letting me know!

The In App Purchase works now, it’s free for now.

(1) I don't know if this is related to the in-app purchase, but I updated from 3.0.1 to 4.0.1, and opened LibTerm, I got a popup "Sign in to iTunes Store". It seems unnecessary, out of reflex I clicked cancel and LibTerm seems to work okay. If I kill the app and re-open, I get the popup again. If I switch away from the app and re-open, I do not get the popup.
(2) I successfully purchased python 3.7 for free. Notably, I did not get a popup, I got a different Apple sign-in dialog that I have seen many times before. The next time I opened LibTerm, I got the popup again. Killing/switching behaves the same as in my item-1, before the in-app purchase.
(3) I think your policy RE python2/3 is very well thought out. Kudos.

That's I wanted to do: https://stackoverflow.com/a/39876448/7515957

I am in the process of switching an app from paid to freemium so I also need the original application version.

https://github.com/ColdGrub1384/LibTerm/commit/e8c63614eb5943f51ecd1579d1a78d9b3da0e26e#r31766340

App Store Connect Holiday Schedule: Dec 23–27
Make sure your apps are up to date and ready for the holidays. New apps and app updates will not be accepted December 23 to 27 (Pacific Time), so any releases should be submitted, approved, and scheduled in advance. Other App Store Connect and developer account features will remain available.

I will request an expedited review

All should work now.


Add ability to import/export data to/from Parquet files with SQLCMD

Creating this placeholder for the investigation of adding import/export functionality to go-sqlcmd.
Main use cases would include:

Output SQL Server query results to parquet files
Read data from parquet files for display of some or all rows on screen to check contents of file
Read data from parquet files and insert into table in SQL Server database
Be able to read both standalone parquet files as well as delta
Perform basic filtering via SQL-like where clause or regex by column

Additional possibilities include:

Output SQL Server query results to json, csv, xls files
Convert json, csv, xls to parquet
Convert parquet, including delta, to json, csv, xls
Convert subset of rows between formats - ex: "Take customer data from delta store and export all customers in Chicago to xls"

You can do this easily with sling, check out: https://github.com/slingdata-io/sling-cli
# set connection via env var
export mssql='sqlserver://...'

# test connection
sling conns test mssql

# run export for many tables
sling run --src-conn mssql --src-stream 'my_schema.*' --tgt-object 'file://{stream_schema}/{stream_table}.parquet'

# run export for one table
sling run --src-conn mssql --src-stream 'my_schema.my_table' --tgt-object 'file://my_folder/my_table.parquet'

# run export for custom sql
sling run --src-conn mssql --src-stream 'select col1, col2 from my_schema.my_table where col3 > 0' --tgt-object 'file://my_folder/my_table.parquet'


⚠ Bofrost.be has degraded performance

In ab023c7, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 853 ms

Resolved: Bofrost.be performance has improved in 735ddbd after 13 minutes.


Finish the class specification for the connector and db-interface classes

Specify the connector and also some kind of db-interface class.
Current status:

Closed, because we plan to implement the first version (simple write/read of an document)  of the Neo4jConnector and  add more functions afterwards


Automation: Image Screen shot validation

Summary
To ensure that all screenshots will be visible and load in a reasonable amount of time on all the catalogs we need to restrict image type, size, and amount.
AC:

[x] A workflow job should check that screenshots are limited to JPEG and PNG filetypes
[x] A workflow job should check that all images are 4MB or less
[x] A workflow job should check that there are no more than 6 screenshots per pack component
[x] Workflow documentation is updated

The workflow is currently failing because one of the images already uploaded is a .webp file which we are not allowing. This PR should update that to a PNG:
#85
Which should allow the Image Validation to pass correctly and be merged:
#79


Memory Usage

Hi,
Tapping on each segment increases the app memory usage. Also, scrolling through pages increases the memory usage and this memory is never released. You could reach to about 40 MB which leads to crash on a real device. I've tested the example on an iPad Air and it crashes when I scroll on some pages.
Is there a way to fix this? I can't find the leak. The instruments shows allocations related to CFString etc.

I looks like an issue coming from iOS itself. It's not really a leak, just iOS keeping in cache all the emoji images.
Using one's own .png files instead of iOS's ones is the only way I found to solve this issue.
It raises licence issues, but well...
http://stackoverflow.com/questions/31151027/how-to-clear-font-cache-filled-with-emoji-characters/31237110#31237110


Improve notify-sigup to allow for the use of filters (such as labels)

This implementation will allow for the use of a filter to live query the containers before sending the sigup, and is fully backwards compatible with the previous implementation.
Resolves #77

Superseded by #619


End-to-End Tests

This PR adds a simple End-to-End testing mechanism to start tackling #68. Using a bash script as the test driver together with a simple query tool written in python. It tests the entire data set to query pipeline on the scientist-collection
The queries are stored in an easy to edit YAML file and include per query checks for the result. At the moment I have only added a small set of example queries. I plant to significantly expand these soon.
One particular check that is still missing is one that verifies order.

@floriankramer can you give this a quick look before I merge? This doesn't change anything on QLever so should be very safe. I'm not sure whether we should merge with the current set of test queries and then add new ones or add them before the merge. Currently I'm trending towards merging before since this would mean that the other pending PRs get the End-to-End Test treatment as soon as possible and we can immediately add specific example queries for the introduced features together with that PR. On the other hand there are still some existing features without corresponding test queries. Especially patterns and GROUP_CONCAT


Update Computer Language Benchmarks Game URL

This URL appears to have moved since these were last edited.

@BurntSushi Did you participate in Rust coding on CLBG? I'd like to port Rust to Wasm and run some performance tests.

@evertondanilo I don't understand what you're asking and what it has to do with this PR. Please say more words.

Hi @BurntSushi thanks for your quick reply. I'm working on a research project for my masters. The idea is to compare Wasm with JS in the browser. And find out how fast it would be? Do you think CLBG algs can be compiled to Wasm?

I don't know why you're asking me that question on the issue tracker for a regex library.

Do you think CLBG algs can be compiled to Wasm?

Why not try it?
I think this line of questioning is way off topic for this tracker. Please take it somewhere else.


Override of color_discrete_sequence when using sequential integer color tags

While using the scatter_3d functionality, I noticed that a discrete color requence gets overridden by the default continuous scale if the color keyword points to a column with sequential integer data instead of categorical data.
Here is a minimum working example of what I mean:
# maybe needed to reproduce from terminal
# import plotly.io as pio
# pio.renderers.default = "browser
import plotly.express as px
iris = px.data.iris()
# iris["species_id"] = [str(id) for id in iris["species_id"]]  # one workaround
fig = px.scatter_3d(
    iris,
    x='sepal_length',
    y='sepal_width',
    z='petal_width',
    color='species_id',  # works as intended with 'species'
    color_discrete_sequence=px.colors.qualitative.Dark24,
    # color_continuous_scale=px.colors.qualitative.Dark24, # another workaround
)
fig.show()

Not sure if this is intended but it got me by surprise.

Yes, this is intentional: px interprets numerical colors as sequential. The recommended way to accomplish what you're looking for would be to cast your numerical color column to a string column.

Got it, I'll close this then. Thanks!


Incorporate core UI/UX design patterns to improve view layout and design

[ ] Study UI/UX patterns to choose most common patterns
[ ] Design the patterns into the benchmark app
[ ] Implement the patterns in the benchmark app
[ ] Test the implementation

UI/UX patterns
URL: https://ui-patterns.com/
Focus on the following pattern categories. Pick 3 patterns per category.

Getting input: https://ui-patterns.com/patterns/getting-input/list
Navigation: https://ui-patterns.com/patterns/navigation/list
Dealing with data: https://ui-patterns.com/patterns/dealing-with-data/list

test


Accept large values for UnsignedData.age

While running the example project against my account, I got a room event
that's over 3 years old. The program failed to deserialize it because
the value is too large for an int (2^31 milliseconds is less than
a month).
This commit changes the field to long, which can represent millions of
years.

Wow, that was a nice test. Thanks!


DOC: NAV-134 - Service implementation

@clukas1: Now the TripMaskProvider and StopTimesProvider is duplicated in the class diagrams of the extended RAPTOR and the public transit service class diagram. Maybe we delete it from the service class diagram?

Hmm ok, this is the design for the old implementation... so I think it is good to keep it in both class diagrams.
For completeness we could add this updated UML diagram for the new design:
@startuml
set namespaceSeparator none

package gtfs.schedule {
    class GtfsSchedule
}

package raptor.router {
  class RaptorRouter {
    + routeEarliestArrival(...): List<Connection>
  }

  class StopTimeProvider {
  + getStopTimesForDate(LocalDate date, ...): int[]
  }

  interface RaptorTripMaskProvider {
    + getTripMasksForDay(): DayTripMask
  }

  class DayTripMask {
    - tripMask: Map<String, boolean[]>
  }
}

package service.gtfs.raptor.convert {
  class GtfsTripMaskProvider
}

GtfsTripMaskProvider .|> RaptorTripMaskProvider: "<<implements>>"
RaptorRouter *- StopTimeProvider : has
StopTimeProvider *-- RaptorTripMaskProvider : has
RaptorTripMaskProvider --> DayTripMask: "provides"
StopTimeProvider --> DayTripMask: "uses"
GtfsTripMaskProvider o-- GtfsSchedule: has

@enduml


treat context managers as checkpoint on both entry and exit

fix #39

or wait, should 108 be completely ignored in contextmanagers?

or wait, should 108 be completely ignored in contextmanagers?

Huh.  🤔 I think we probably should completely ignore it, since that's exactly equivalent in the (expected) case where exactly one yield statement is ever executed.  So any 108 warning we emit for a valid context manager would be a false alarm.

rebased on top of #40 to avoid unnecessary merge conflicts, so you'll likely want to merge that before scrutinizing the diff.


WIP: Referent ClusterStores for GCP

[x] Implement code
[ ] e2e tests
[ ] unit tests
[ ] documentation

Signed-off-by: Gustavo Carvalho<EMAIL_ADDRESS>

I was wanting to add unit tests for the SecretAccessKey bit, but then I realized we have almost zero coverage in that codebranch... I'm thinking about also doing a refactor here. - This might take some more time than expected.


fix(tier4_planning_rviz_plugin): fix build error in Humble

Description
以下を修正
tf2_geometry_msgs.h -> tf2_geometry_msgs.hpp
Related Links
https://tier4.atlassian.net/browse/AEAP-488
Tests performed

tier4_planning_rviz_pluginがビルドできること
Effects on system behavior

Not applicable.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[ ] I've confirmed the contribution guidelines.
[ ] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

Codecov Report

:exclamation: No coverage uploaded for pull request base (beta/v0.3.16@6b341aa). Click here to learn what that means.
Patch has no changes to coverable lines.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@              Coverage Diff               @@
##             beta/v0.3.16    #450   +/-   ##
==============================================
  Coverage                ?   0.00%
==============================================
  Files                   ?      14
  Lines                   ?    1288
  Branches                ?       0
==============================================
  Hits                    ?       0
  Misses                  ?    1288
  Partials                ?       0

Flag
Coverage Δ

differential
0.00% <0.00%> (?)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


New rule: prefer INITIAL to BOUND

IF x IS INITIAL is equal to IF x IS NOT BOUND, which is inconsistent. Initial is universal, so it would be useful to autofix all occurrences of BOUND with INITIAL.

I agree

Also from the three variants free, clear and refresh, I believe clear is the universal one? Refresh is definitely obsolete aside from header tables.


it can not parse "==" to hightlight?

i use this class in my project, but it can parse "==". is there anyone who can tell me why?

what do you mean with "it can not parse "==" to hightlight"? what do you want to highlight?

i use a markdown editor named YouDao Note, i can parse "==hello world" to ..
anyway, can you tell me , if i want to highlight something , what should i do?

You need to write an extension - go to the wiki to see how

thx,  i would have a try !


I hope there is a more detailed self introduction tutorial

Clear and concise description of the problem
The project cannot run, it's a pity。I hope there is a more detailed self introduction tutorial
Suggested solution
I hope there is a more detailed self introduction tutorial
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

maybe you need to install pnpm 8.6.12 first
and then "pnpm start"
I hope this can resolve your problems.


New start button icon

V3:

V3 Focused:

V3 Legacy mode:

V3 Legacy mode focused:

V2:

V2 Focused:

Changed colours:

Issues:

SVG:
Internet Explorer 8 does not support SVG and will therefore not display the icon. We did not feel that it warranted a fallback as it did not affect how the user would interact with the button and the icon was purely used for presentation.

Flexbox
As this implementation uses flexbox not all browsers support it. I've checked with @dashouse and this shouldn't be a problem as the icon will wrap instead of floating to the right side.
Example where browser doesn't support flexbox

@aliuk2012 I've explored some changes in this branch, will chat with you when we're both in the office. 👍

@hannalaakso there's not really a great way to keep the icon right aligned on smaller screens that I know of with flexbox, so this felt like an OK compromise for the benefits we get from the inline SVG.


[BUG] Client album upload method don't add caption value to the album

I use this function, but the posted albums caption is None.
client.album_upload(paths, "caption")

I also debug the source code of your project and  media.caption is None
if configured:
    media = configured.get("media")  # media.caption == None
    self.expose()
    return extract_media_v1(media)

But caption value of the code that is below is "caption"
try:
    configured = (configure_handler or self.album_configure)(children, caption, usertags, location, extra_data=extra_data)

I guess that instagram restricted my account that's why it's happenned to me


Binding factory to contract

I ran into a situation where I needed to pair a factory with the type of object it was created with. I had thought I had found a solution, but discovered that you are currently unable to bind factories to contract like normal types. Looking into the DiContainer I noticed this would be a simple implementation, so I decided to make a pull request.
Below is a simplified example of how I intend to use such a feature...
public abstract class Foo
{

}

public interface IFooFactory : IFactory<Foo>
{
    Type FooType { get; }
}

public sealed class FooFactory<TFoo> : Factory<TFoo>, IFooFactory
    where TFoo : Foo
{
    public Type FooType { get { return typeof(TFoo); } }

    public new TFoo Create()
    {
        base.Create();
    }

    // Explicit implementation of `IFactory<Foo>` from `IFooFactory`
    Foo IFactory<Foo>.Create()
    {
        Create();
    }
}

public class FooManager
{
    private Dictionary<Type, IFooFactory> fooFactories;

    [Inject]
    public FooManager(List<IFooFactory> fooFactoryList)
    {
        fooFactories = new Dictionary<Type, IFooFactory>(fooFactoryList.Count);
        foreach (var fooFactory in fooFactoryList)
        {
            fooFactories[fooFactory.FooType] = fooFactory;
        }
    }

    // Methods to create `Foo` types
}

public abstract class FooInstallerBase : MonoInstaller
{
    protected abstract void BindFooFactory<TFoo>()
        where TFoo : Foo
    {
        Container.BindFactoryContract<Foo, IFooFactory, FooFactory<TFoo>>()
            .WhenInjectedInto<FooManager>();
    }
}

Basically the idea behind my example is to selectively bind types of Foo into factories based on what installers that extend FooInstallerBase get installed. Then I can dynamically inject them all as non generic interfaces in list form to be processed into a Dictionary<Type, IFooFactory> for management by the FooManager.

Yeah, I can see how it'd be useful for cases where you have your own factory interface/base class.  Thanks!


Documentation not found

I want to see the documentation to explore more of this, but when I click on the website github gives a 404 error. Can the documenation be placed in a file in this repo or on a working site?

Seems like I didn't update a link when I changed GitHub names!
Docs are at https://jb3.github.io/webhook-discord
I'll update those links now

Fixed and published with a security update in<EMAIL_ADDRESS>Thanks!


Phone Numbers

This says to go here: Microsoft Teams admin center > Voice > Phone numbers
This page doesn't exist.  Phone numbers are still in the legacy portal.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b755d9ae-13ac-019f-f5f4-a95b1eee2989
Version Independent ID: f7afd8ad-e6e0-6c79-aed1-4ee87d48ba12
Content: Create a call queue
Content Source: Teams/create-a-phone-system-call-queue.md
Service: msteams
GitHub Login: @CarolynRowe
Microsoft Alias: crowe

@danmyhre Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@officedocsbot assign @scanum

@jambirk - there are errors on this page. Please update. @danmyhre is correct here. For WW, they need to use the Legacy portal. The Phone Numbers in TAC, isn't available. Please follow up on this.
@danmyhre - thanks for the feedback. @jambirk will make the needed changes.


direwolf20 1.19 adding Steam and Rails causes failure to launch

When trying to add steam and rails to the Direwolf20 1.19 pack the pack crashes during launch.
Steps to reproduce:

Install Direwolf20 1.19 version 1.12.0
update the version of create in the pack from 0.5.1b to 0.5.1.f (https://www.curseforge.com/minecraft/mc-mods/create/files/4835190)
add Steam and rails v153 (https://www.curseforge.com/minecraft/mc-mods/create-steam-n-rails/files/4836195)
launch game and crash before launch is complete.

2024-01-18-1.log
I have another instance with the same version of create and steam and rails that is working which suggests that there is a different mod or config in the DW20 pack causing the conflict.
Thanks,
Bill

mistakenly submitted to wrong github


hover effect of the logos have been fixed

Related Issue
Closes #975

Description
Hover effect of the logos have been modified as follows
GitHub: #238636
Twitter: #00acee
Discord: #4e5d94

Screen

shots

Checklist

[x] My code adheres to the established style guidelines of the project.
[x] I have included comments in areas that may be difficult to understand.
[x] My changes have not introduced any new warnings.
[x] I have conducted a self-review of my code.

Resolve the merge conflict

@crocmons can you please tell what i need to do for resolving this!

@crocmons can you please tell what i need to do for resolving this!

ok, Don't worry..I'll fix this..

@crocmons Can you please let me know what was i supposed to do for resolving this merge conflict!


Consistent command line options

For the sake of consistency I would assume the use of hyphens for command line parameters. Egs.: --sync and -s for the synchronization command over sync and s. Similar to --help and -h.

Both 'help' and 'version' are now available as commands (though also as flags)


⚠ Bofrost.at has degraded performance

In 36bc11b, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1618 ms

Resolved: Bofrost.at performance has improved in 383d9f3.


Ensure we deploy EDPM

While we thought this job was deploying EDPM, it actually doesn't.
This patch is correcting this situation, and ensures things are running
as they should with proper tag "split".
As a pull request owner and reviewers, I checked that:

[X] Appropriate testing is done and actually running

/lgtm
/approve


As a user, when I @mention a user, I want the ability to target Twitter, Instagram and Mastodon users #Idea #Suggestion

Hi,
Hope you're well
Thanks for awesome software
Is it possible to avoid the following scenario by using prefixes?
Screen shot:

in@[instagramUser] - this only renders in Instagram
ma@[mastodonUser] - this only renders in Mastodon
tw@[twitterUser] - this only renders in Twitter
This way we can target specific users on specific platforms[s] because currently if I post from Mastodon to Twitter and the user has an identical @ things fall down 😟[g]
Perhaps this issue highlights a bug[g] and a feature request[s]?
If you're reading this and agree please up-vote and/or reply +1
Let me know if you have any issues - happy to help
Hope this is clear/useful and to hear back
Keep up great work!
Yours faithfully
Related:
https://github.com/foozmeat/moa/issues/32
https://github.com/foozmeat/moa/issues/49

A few thoughts:

It's against Twitter and Instagram's rules to target their users from other platforms
This specific case you show is a bug. The @wesleygrubbs should have been converted to just wesleygrubbs when the message was posted to twitter. I'll fix that.

For now, I think this issue needs to be marked "Won't Fix" as the code is supposed to prevent targeting users on other platforms.

https://github.com/foozmeat/moa/issues/53

Thanks for quick reply
✌
Good luck with the bug fix
Cheers


NEW: Support for explicit exclusion list

This feature allows to exclude specific IPs from going up to Trireme.
It adds the abilty to be able to remove dynamically some specific IPs/Subnets out of the  Trireme Subnets

Current coverage is 54.37% (diff: 4.76%)

Merging #76 into master will decrease coverage by 1.13%

@@             master        #76   diff @@
==========================================
  Files            19         19
  Lines          1825       1863    +38
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           1013       1013
- Misses          711        749    +38
  Partials        101        101

Powered by Codecov. Last update 87c8faf...482817b


Add Daniele Di Lucido to Contributors list

@DanieleDiLucido, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I merged it?


kupfer: fix broken build

Motivation for this change
https://github.com/NixOS/nixpkgs/issues/60498
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

This also needs backport as it is currently broken in 19.03.


Allow revoking from other than final states

Signed-off-by: Miroslav Kovar<EMAIL_ADDRESS>

Codecov Report

Merging #447 (d79c411) into main (cbc30e5) will decrease coverage by 0.00%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##             main     #447      +/-   ##
==========================================
- Coverage   60.15%   60.14%   -0.01%
==========================================
  Files         154      154
  Lines       14526    14529       +3
  Branches     3585     3585
==========================================
+ Hits         8738     8739       +1
- Misses       2401     2402       +1
- Partials     3387     3388       +1

Flag
Coverage Δ

integration-aries-vcx
47.47% <42.85%> (+0.01%)
:arrow_up:

unittests-agency-client
26.16% <ø> (ø)

unittests-aries-vcx
49.24% <35.71%> (-0.02%)
:arrow_down:

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

Impacted Files
Coverage Δ

...vcx/src/protocols/issuance/issuer/state_machine.rs
64.10% <50.00%> (-0.34%)
:arrow_down:

...ocols/proof_presentation/verifier/state_machine.rs
64.80% <0.00%> (+0.21%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cbc30e5...d79c411. Read the comment docs.


easy_download_and_tokenise: make the script more resumable

allow to set stage={0,1,2} variable to skip certain parts like this:

stage=0 ./languini/dataset_lib/easy_download_and_tokenise.sh # do everything
stage=1 ./languini/dataset_lib/easy_download_and_tokenise.sh # skip large download and untar
stage=2 ./languini/dataset_lib/easy_download_and_tokenise.sh # skip downloading manifests

(the stage convention comes from Kaldi and ESPnet)

use wget --continue where possible

I don't think we should overengineer this. A user can copy and paste the commands from the shell script and run them manually if needed.

Sounds good, I'll close this.


Responsive web design is working on desktop but not on mobile device

it's not responsive to the mobile view.

duplicated issue https://github.com/FrancescoXX/4c-site/issues/76


Create output directory before writing files

I wanted to do some processing of my firefox bookmarks and search led to your repo. It worked fine for what I wanted to do. Yeah, using pathlib is better. Thanks!


(PUP-7425) Refactor Gemfile / .gemspec for Bundler

This commit was originally in 19f78a20b70660b30fff8c0c49e8b9a9b3c99b40
but due to a bad merge-up at 8dd78d37f049b4bb81f6146e4fa8af39b88a6130
was not correctly carried over.
As a result, the current branch thinks it has these changes, but
none of the Puppet 5 branches / tags have the following fixes:

Without platform-specific gem dependencies marked as such inside the
.gemspec, this can cause issues with a bundler based workflow that
uses bundle install --system --binstubs c:\ruby\bin on Windows
machines even if the given Ruby version already satisfies all of
the Puppet platform-specific dependencies. This is due to how a
Gem is installed by Bundler when it refers to a git repo and its
.gemspec is rewritten by Bundler as its installed.

Note that all runtime dependencies are now present in the .gemspec
and that any development dependencies are still defined in the
Gemfile itself.
The .gemspec is included in a bundle install by calling the
gemspec method inside the Gemfile.  This is the intended inclusion
mechanism for Bundler.
The Gemfile continues to allow a few gem overrides with the
environment variables:
FACTER_LOCATION
HIERA_LOCATION
These overrides are only activated when the relevant environment
variables are defined.

Unlike original commit, json_pure should be a goner as a result of https://github.com/puppetlabs/puppet/commit/a5e7b943104d8e4bf02426d879fefaad62477039

The specification for the json_pure dependency within the .gemfile in the original commit is no longer present in master and 5.x branches. Is this correct?

Never mind previous comment. I see that the json_pure dependency was explicitly removed by design at https://github.com/puppetlabs/puppet/commit/a5e7b943104d8e4bf02426d879fefaad62477039

Merged up to master and feature-puppet_task


Multiple experimental-figspec in same Story are not working as expected

Affected design types

[ ] figma
[X] experimental-figspec
[ ] link
[ ] image
[ ] iframe

Describe the bug
When adding multiple designs to the design parameter section, multiple experimental-figspec are not allowed, or only the first one will work.
How to reproduce the bug?
Create a storybook and add the following configuration in the design section:
 parameters: {
    design: [
      {
        name: 'Dropdown list design',
        type: 'experimental-figspec',
        accessToken: 'awesome-token',
        url: 'https://www.figma.com/blabblablabla,
      },
      {
        name: 'Dropdown button design',
        type: 'experimental-figspec',
        accessToken: 'awesome-token',
        url: 'https://www.figma.com/bleblebleble,
      },
    ],
  },

The first item in the array will work with the Figma spec, but the second figma design will have a strange behaviour, like being stuck.
Adding a fig-spec and a figma will work normally
 parameters: {
    design: [
      {
        name: 'Dropdown list design',
        type: 'experimental-figspec',
        accessToken: 'awesome-token',
        url: 'https://www.figma.com/blabblablabla,
      },
      {
        name: 'Dropdown button design',
        type: 'Figma',
        url: 'https://www.figma.com/bleblebleble,
      },
    ],
  },

Expected behaviour
I guess adding 2 figspecs experimental should work normally, changing the tab would set the iframe to the correct figma url allowing to play with the different Figma elements.
Environment

[X] Chrome / Chromium / Chromium based browsers
[ ] Firefox
[ ] macOS Safari
[ ] iOS Safari
[ ] Samsung Internet
[ ] Other

Affected versions
6.1.0
Storybook versions
6.3.8

Fixed in v6.2.0


Corrected security definition

Previous implementation would only check the security definition on the route. This change also checks the global api security definitions.

Coverage remained the same at 96.19% when pulling a2cc50f40257b4fdb0c740397b2ec961f07f6f06 on warnersean:master into 0800ae09e8cc30265aaea9f8a0f04c63a132e0bd on theganyo:master.

Fixes #96

Thanks for finding this! I really appreciate it. ...Is there any chance I could convince you to write a test for it? :)

@theganyo I looked in to testing for this and am a little concerned about where to make the correction.
Currently testing for similar concerns is handled in test/lib/common.js
If this test is added to this location it will require that all routes tested have global security keys, except for those that are intended to fail.
My current approach was to put it in test/index.js, where it doesn't really match the concern but where creating/using new swagger specs make more sense.
Currently the test is as follows:
` it('should allow paths using global security', function(done) {
var config = _.clone(DEFAULT_PROJECT_CONFIG);
config.startWithWarnings = true;
config.swagger = SWAGGER_WITH_GLOBAL_SECURITY;
SwaggerRunner.create(config, function(err, runner) {
        var app = require('connect')();
        runner.connectMiddleware().register(app);

        var request = require('supertest');

        request(app)
            .get('/hello_secured?name=Scott')
            .set('Accept', 'application/json')
            .expect(200)
            .expect('Content-Type', /json/)
            .end(function(err, res) {
                should.not.exist(err);
                // should.exist(err)
                res.body.should.eql('Hello, Scott!');

                done();
            });
    });
});`

With a valid, but truncated swagger json in the same file.
Do you have any preferences regarding this before I update the PR?

I agree... Don't change the existing tests. You may create a new file for this test or integrate it into an existing file as you feel appropriate.

Coverage remained the same at 96.19% when pulling 455d613b49971cb1b984393f753284947e7f1210 on warnersean:master into 0800ae09e8cc30265aaea9f8a0f04c63a132e0bd on theganyo:master.

Test added

Thank you!

Any ETA for a new version that includes this fix?

Sorry, but it will have to be a couple weeks as I'm going on vacation tomorrow and I don't want to release just before vacation.


Deadlock when concurrently pulling image?

Description
Deadlock when concurrently pulling a same image.
Here is the timeline for concurrent downloads of container images.
openwriter -> copy content -> content commit.

The deadlock:
client A hold the layer ref lock and try to acquire bolt lock to commit.
client B hold the bolt lock and try to acquire layer ref lock.
writer trylock here always try 0 or 10 times due to the deadlock, and fails after about 600ms timeout. This caused the image download time to be much longer
https://github.com/containerd/containerd/blob/main/content/local/store.go#L463
If my analysis is correct, here is my solution.
just trylock once and immediately return Unavailable error, it release the bolt db lock
and retry in content.OpenWriter
https://github.com/containerd/containerd/blob/main/content/helpers.go#L115
Steps to reproduce the issue

concurrently pulling a new image

for ((i=1;i<=10;i++));
do
time nerdctl pull -q centos:7 &
done

wait

each operation will cost about 30s while single pulling cost 8s on my testing environment.
➜   sh pull-image.sh

real    0m28.861s
user    0m0.059s
sys     0m0.004s

real    0m28.938s
user    0m0.037s
sys     0m0.023s

real    0m28.983s
user    0m0.043s
sys     0m0.020s

real    0m29.047s
user    0m0.054s
sys     0m0.020s

real    0m29.048s
user    0m0.217s
sys     0m0.139s

real    0m29.049s
user    0m0.041s
sys     0m0.020s

real    0m29.068s
user    0m0.058s
sys     0m0.010s

real    0m29.068s
user    0m0.054s
sys     0m0.016s

real    0m29.071s
user    0m0.048s
sys     0m0.019s

real    0m29.070s
user    0m0.043s
sys     0m0.016s

➜   nerdctl pull centos:7
docker.io/library/centos:7:                                                       resolved       |++++++++++++++++++++++++++++++++++++++|
index-sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4:    done           |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f: done           |++++++++++++++++++++++++++++++++++++++|
config-sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9:   done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc:    done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 8.5 s                                                                    total:  72.6 M (8.5 MiB/s)

Describe the results you received and expected
without retry ref lock
func (s *store) Writer(ctx context.Context, opts ...content.WriterOpt) (content.Writer, error) {
	var wOpts content.WriterOpts
	for _, opt := range opts {
		if err := opt(&wOpts); err != nil {
			return nil, err
		}
	}
	// TODO(AkihiroSuda): we could create a random string or one calculated based on the context
	// https://github.com/containerd/containerd/issues/2129#issuecomment-380255019
	if wOpts.Ref == "" {
		return nil, fmt.Errorf("ref must not be empty: %w", errdefs.ErrInvalidArgument)
	}

	if err := tryLock(wOpts.Ref); err != nil {
		if !errdefs.IsUnavailable(err) {
			return nil, err
		}
		return nil, err
	}

it will be much faster
➜   sh pull-image.sh

real    0m8.602s
user    0m0.219s
sys     0m0.148s

real    0m12.127s
user    0m0.077s
sys     0m0.000s

real    0m12.199s
user    0m0.056s
sys     0m0.007s

real    0m12.199s
user    0m0.056s
sys     0m0.006s

real    0m12.224s
user    0m0.072s
sys     0m0.009s

real    0m12.224s
user    0m0.059s
sys     0m0.013s

real    0m12.225s
user    0m0.041s
sys     0m0.026s

real    0m12.305s
user    0m0.036s
sys     0m0.024s

real    0m12.306s
user    0m0.054s
sys     0m0.007s

real    0m12.306s
user    0m0.060s
sys     0m0.015s

What version of containerd are you using?
v1.6.8
Any other relevant information
The version I tested is 1.6.8, but the latest version should also have this problem. Thanks
Show configuration if it is related to CRI plugin.
No response

I think it's related to this https://github.com/containerd/containerd/pull/6702.
As you mentioned, the nerdctl/ctr commands are pulling the content in the client-side, so that the clients need to try to get lock. If one client needs more time to download blob after it gets the lock, other clients will enter backoff sleep phase (2s). It's hard to improve the performance in client side. Maybe, the transfer service can handle this because all the pulling requests are handled in server side.

I think it's related to this #6702.
As you mentioned, the nerdctl/ctr commands are pulling the content in the client-side, so that the clients need to try to get lock. If one client needs more time to download blob after it gets the lock, other clients will enter backoff sleep phase (2s). It's hard to improve the performance in client side. Maybe, the transfer service can handle this because all the pulling requests are handled in server side.

trylock 10 times here is pointless, because the deadlock. just immediately return and release bolt lock is enough

because the deadlock.

I don't think there is no deadlock. We don't need to download one blob several times. So the other client needs to wait for the ref lock release. If you allows multiple pulling requests to the same blob in the same time, there will be IO pressure and only one can be committed. If we need to improve it in the client side, the key point in here is that how to notify the client which is in the backoff sleep.

We don't need to download one blob several times.

containerd won't download the same layer several times, it checks the file exist after successfully acquire ref lock
https://github.com/containerd/containerd/blob/main/content/local/store.go#L530

the other client needs to wait for the ref lock release
you are right, but it may hold the boltdb GLOBAL lock for a long time. it should release the boltdbdb lock when waiting

but it may hold the boltdb GLOBAL lock for a long time. it should release the boltdbdb lock when waiting

Sure. I don't have knowledge about why we try it in local content. I think it's best effort for acquiring the lock.
However, if the helper enters into the backoff sleep, it's still worse. It depends on the layer's size.


Action not compatible with latest detect version

Hey,
I was trying to use the action for detect 8.4.0. I found out that using RAPID scan mode is currently not working when creating reports.
Error: Failed due to an unhandled error: 'TypeError: Cannot read property 'join' of undefined'

By doing some research, forking and debugging I've found out that is currently failing at:
function createComponentRow(component: IComponentReport): string {
  const violatedPolicies = component.violatedPolicies.join('<br/>')

The reason being is that the latest detect version 8.4.0 (https://github.com/blackducksoftware/synopsys-detect) uses a different blackduck-common-api 2022.10.04 (https://github.com/blackducksoftware/blackduck-common-api), whose model at least for reports is not compatible with the current action.
It seems that the current version of this action is only compatible until the latest major version 7.
We would like to use the action for the latest version. Can you please take this into account on the next release of the action.
Meanwhile I purpose to add a Note on this action stating that it is only compatible up to 7.
If you need something please reach out. Thanks

PR #46 adds support for Detect v8

Since this action is no longer maintained and some of the issues were blocking we decided to continue its development on an up to date fork https://github.com/mercedesbenzio/detect-action


Removing commas(,) or wrap the commans

Thanks for the file control can you please help me to remove the (,) commas or hide them, can't execute or manipulative with DOM that fails the file upload feature. Im using Angular js to save data
Thanks in advance

Hey there!
Can you provide a sample of your code? The commas only appear in the labels, they shouldn't impact form submission.

This happens to me too
When i use the browser multi select option it add commas and one remove button.
When i add per file it does not show the comma and a remove button for both each file.
So i think it has to do with the <input multiple> option

I think I understand what you mean and that is something that will not change in this plugin.
The browser security settings prohibits scripts from manipulating the contents of a file input element.
When you select 5 files at once, the plugin cannot remove 1, it must remove them all. That's why they appear as a single choice and there is only 1 remove button.
There are other solutions out there that handle this different (they bypass the  element altogether. But I think this is (for now) beyond of the scope of this project.,


Remove CStatistic::mean/variance/covariance

And replace all their usage with linalg implementation.
In addition, respect Shoguns way of defining vectors, which is as column vectors, not row vectors. A couple of unit tests and other places in Shogun depend on this.
Mean/Std/Var:

partly already in linalg
should be possible to compute elementwise, rowwise, and columnwise

Covariance:

not in linalg yet, but should re-use mean computation

See also #3117

I'm trying to find a standard deviation or variance function in linalg, but I'm unable to find one - could you please point me in the right direction? Or, have I misunderstood you, in that it has yet to be implemented (because of "partly already in linalg")?

Also, I've noticed that there are different implementations of functions for vectors and matrices - I've replaced all usages of CStatistics::mean() with linalg::mean() (#3096), but I haven't done anything with CStatistics::matrix_mean() .  Does this issue involving replacing both or only vector implementations?

The idea is to

Add all functionality for mean/variance/etc to linalg. Those that are not yet there, such as variance
Make Shogun use them rather than CStatistics
Remove them from CStatistics

Start one by one. As a first step, you could grep for CStatistics::matrix_mean etc and replace them with linalg calls


Log errors in OnConnectedAsync()/OnDisconnectedAsync()

This is mostly a copy-pase of InvokeMethodAsync, overriding the default-implementation interface methods. It doesn't log the initial call like the former does, since that sounds like it may be a bit verbose.
2022-05-24 06:33:56 [error]: [user:18414468] Failed to invoke OnDisconnectedAsync()
2022-05-24 06:33:56 [error]: System.InvalidOperationException: Wangs
2022-05-24 06:33:56 [error]: at osu.Server.Spectator.Hubs.MultiplayerHub.CleanUpState(MultiplayerClientState state) in /home/smgi/Repos/osu-server-spectator/osu.Server.Spectator/Hubs/MultiplayerHub.cs:line 642
2022-05-24 06:33:56 [error]: at osu.Server.Spectator.Hubs.StatefulUserHub`2.cleanUpState(Boolean isDisconnect) in /home/smgi/Repos/osu-server-spectator/osu.Server.Spectator/Hubs/StatefulUserHub.cs:line 117
2022-05-24 06:33:56 [error]: at osu.Server.Spectator.Hubs.StatefulUserHub`2.OnDisconnectedAsync(Exception exception) in /home/smgi/Repos/osu-server-spectator/osu.Server.Spectator/Hubs/StatefulUserHub.cs:line 83
2022-05-24 06:33:56 [error]: at osu.Server.Spectator.LoggingHubFilter.OnDisconnectedAsync(HubLifetimeContext context, Exception exception, Func`3 next) in /home/smgi/Repos/osu-server-spectator/osu.Server.Spectator/LoggingHubFilter.cs:line 62

Kinda hope there's a better way to implement this logging that we're missing, but this seems better than nothing.


SCM view: Repositories submenu of context menu on blank area of a Source Control section can display blank entries

Type: Bug

Have a source control provider that calls vscode.scm.createSourceControl with a rootUri whose path element is /` (e.g. for a scheme provided by a FileSystemProvider)
Open the submenu.

Caused by this line:
https://github.com/microsoft/vscode/blob/df6839f3832165e185d966c59879f7261f16a115/src/vs/workbench/contrib/scm/browser/scmViewPane.ts#L1012
I will provide a repro and a PR to fix.
This is not a regression.
VS Code version: Code - Insiders 1.84.0-insider (18b7f75a9fab40499744c2e9c6ba9af64d5c6744, 2023-10-25T05:35:48.331Z)
OS version: Windows_NT x64 10.0.22621
Modes:

To repro:

Clone https://github.com/gjsjohnmurray/vscode-extension-samples/tree/show-196613
Open fsprovider-sample
npm install
F5 to run it
In Command Palette run MemFS: Setup Workspace
Switch to SCM view
Open context menu of blank area, then go to Repositories submenu

:bug:

This bug has been fixed in the latest release of VS Code Insiders!
@gjsjohnmurray, you can help us out by commenting /verified if things are now working as expected.
If things still don't seem right, please ensure you're on version f3da7cb46a8ffbea21998420dc673777715e55cf of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.
Happy Coding!

/verified


mkimage script doesn't work

I keep on getting the same message over and over :
error: rinse does not exist or is not executable
see /usr/sbin/mkimage for possible scripts
here is how i play the scripts:
./mkimage.sh -t rok/centos:6 rinse --distribution centos-6
Maybe a bug ?

Have you figured out the issue?


Release notes at AMO

https://addons.mozilla.org/addon/smart-rss-reader/versions/2.15.1/updateinfo/ empty, can you make release notes visible at AMO for future releases?
Thanks.
In the meantime I see https://github.com/zakius/Smart-RSS/releases but there's no 2.15.1

this release went pretty sloppy, had to pull back 2.15.0 because package was malformed and forgot to paste notes when pushing the patched one, I'll add them when I find some time
sorry for the inconvenience

:-) OK, no problem


Add HomotypicGroup

Instead of requiring the basionym to be known to link and expose homotypic names create a new homotypicGroup entity with its own table. The only property is a link to the basionym. As we improve the data model this would be the place to capture/link type specimen information.
Requiring the basionym to be known causes many import and assembly problems.
Often one know that 2 combinations are homotypic and based on the same basionym, but the actual basionym is not know. Also most source are conflating names and taxa and just assign a "homotypic synonym" status to a synonym
Significant code impact which should be changed in a new git branch.
Changes to be done:

model changes
db schema changes
mybatis mappers
import code, creating homotypic groups when dealing with basionyms
lots of test changes
new integration tests, at least one PgImportIT test for each of ACEF and DWCA that verifies handling of homotypic synonymies

Proposed model (showing only key properties, mostly relations):

changes in NameAct needed, see #90


Updating news, readme files and bumping master version to 1.3.1

Description
As title
Please do not merge until after the release.
@szha
@gigasquid I did not include clojure files here as I was not sure about them. Can you please point those out?
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

@gigasquid Updated clojure files.

Thanks for your contribution @Roshrini
@mxnet-label-bot[pr-awaiting-review]


Node.js 16 actions are deprecated

Github actions are transitioning from node 16 to 20, planning to transition all actions to run on Node 20 by Spring 2024.
https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/
Hopefully this shouldn't be much harder than just updating the node version in action.yml

@fmessmer I've release v2 with nodeJS 20 and updated dependencies!

thanks, the warning is now fixed using v2


Instaloader.login() fails when password contains ":"

Describe the bug
When the password contains ":", the account fails to login. Instagram just returns a "wrong password" response
To Reproduce
import instaloader
USER = "someusername"
PASSWORD = "correctpassword:"
L = instaloader.Instaloader(quiet=False, download_geotags=False, download_comments=False, save_metadata=False,
                            compress_json=False)
L.login(USER, PASSWORD)

Expected behavior
Correct login
Instaloader version
4.4.5

Does it work when escaping the colon with a backslash, or when putting the password within quotes? I.e.
PASSWORD = "correctpassword\\:"

or
PASSWORD = "\"correctpassword:\""

Tried both, also tried from the terminal and base64'ing the pass but it allways raises instaloader.exceptions.BadCredentialsException: Login error: Wrong password.
For what i can gather Instagram app/web encrypts password in enc_password, which gets rid of the issue, but on instaloadercontext.py, password is used as plaintext (line 220) to form enc_password, then instagram interprets the colon as a json separator and not part of the actual pass.
I'm guessing some characters like {} , or [] would have the same effect.

Yes, encrypting the password will get rid of the issue. We have a branch feature/encrypt-password, where Instaloader encrypts the password, at the cost of some extra dependencies. You can install it with:
pip3 install --upgrade git+https://github.com/instaloader/instaloader@feature/encrypt-password


Expected ENDSELECT reported incorrectly

The following reports /zfoobar.prog.abap[1, 1]: Expected ENDSELECT(structure)
select count(*) as score
      from ssorc_a_attr_nhf
      where object = @object_id-object
        and obj_name = @object_id-obj_name
      into @data(count).

ref https://github.com/abaplint/abaplint/issues/764

thanks, try again, latest version


[BUG] Rendering blade components (select2) via AJAX doesn't initiate @push('js')

Rendering blade components (select2) via AJAX doesn't initiate @push('js')

@kname97 Please, provide a minimal example of code that reproduces the issue.

my view

I found solution for my error.
I insert @stack('js') in the bottom of view like this and it works perfectly.


Allow set tasks environment vars

Hello!
Please, implement https://docs.ansible.com/ansible/playbooks_environment.html for update-code tasks
My case:
i have SVN repo for legacy project, this repo contains files with non-ascii symbols, thats why I got error svn Can't convert string from 'UTF-8' to native encoding on svn update-code tasks (on svn checkout via ansistrano-deploy). Fix for this bug is set environment variable LC_CTYPE=tr_TR.UTF-8 before svn checkout command, something like this:
---
- raw: "LC_CTYPE=tr_TR.UTF-8 svn ... checkout ..."

and I can't set LC_CTYPE for server (or user) global, it needed only for svn checkout task, which can be done (if I understand correctly) only via setting environment var on task.

Hi
I am not sure about how we can make these environment variables generic unless we add them in every single task
Have you tried this patch that is still not merged? https://github.com/ansistrano/deploy/pull/185

Oh sorry, that patch is for git, not for svn...

I already saw it, but it can't help in case of this shi... Sorry, svn

What about creating such a configurable array for the svn tasks for now (arguably mostly legacy projects)? Could you please supply a PR with an array called ansistrano_svn_environment or sth like this empty by default and with a documented example like yours?

Ok, I'll do this today

Ready.
Please, close this issue after #192 (when it will be accepted)

Closing as #192 was just merged in! Thanks @rakshazi

Thank you!


Option to clear database on logout

Hello, I'd like to be able to programmatically delete a database when the user logs out of the application. I had no problem accomplishing this when they close the browser or tab. However, attempting to delete a database without a page refresh does not seem possible. Help?

Hi @james-brattin . I am not sure what you mean by deleting a database. Do you mean clearing the store?
As for doing something on user log out, there you have to trigger the event yourself because I don't know when does the user log out in your application. Cleaning the store could be accomplished by yourself if you create a redux action that clears the store and that should then be automatically synced (i.e. cleared) into IndexedDb.
Did I answer our question?

Okay, thank you. Yes, I am trying to clear the store.


Multiple Certificate Validation within a single Cluster

we're trying to connect to two different end points within a single cluster using load balancing for a fail over scenario. How can we configure multiple certificates within a single cluster for validation_context.

You can't. There was some talk about allowing more specific CertificateValidationContext inside Endpoint resource, but there is no code for it yet.
cc @lizan @JimmyCYJ @qiwzhang @htuch

Yeah, I think adding per-endpoint CVC makes sense here.


Grid styling not included in NuGet package install

Hello - I installed your package Blazro.FlexGrid via NuGet into my Razor Components .net core 3 preview 3 project. The flexgrid works, but it has no css styling at all.
To fix this I had to:

Download FlexGridStyles.css from this GitrHub repo
Add the following to my index.cshtml:

After that, the FlexGrid is now styled properly

Hello @aford22 I know about this issue, but unfortunately I do not have solution for this. If you have any idea it will be great to help me with this issue.

Hi there. I am not an expert on any of this so don't have anything helpful to give you, sorry :-(
Except that it would be good to document this extra step in your installation instructions. At least that way others won't hit the same problem?

@aford22 Yeah I will add this into README. This issue only occurs with Razor Components, with web assembly it works correctly. Nuget contatin folder contents with this required styles and fotns, but in Razor Components they are not included in HTML

@Mewriick Maybe you can do like ChartJs until a official solution is released.
This only copies the values to the hosting project, but works ok for a temporary solution.

@larshg Thank you so much! I will try it today.

New verison of nuget copies the content to the hosting project & README is updated with steps what to do for server side projects
@larshg Big thanks


Update Build Instructions

Thanks for that, @basmaelgaabouri.  The changes look good barring a few typos here and there.

I did that process relatively recently (e.g. about a month ago) and the description sounds accurate (and actually more useful than the existing text, as the IAS doesn't actually give you anything that it refers to as a "token").

Though, FWIW, I don't think it matters if you register for an unsinkable or a linkable IAS account.

+1+1=+1 reached, merging


Remove macaron dependent on modules/log

partially fix #6927

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@5df5bfb). Click here to learn what that means.
The diff coverage is 89.74%.

@@           Coverage Diff            @@
##             master   #6933   +/-   ##
========================================
  Coverage          ?   41.4%
========================================
  Files             ?     441
  Lines             ?   59733
  Branches          ?       0
========================================
  Hits              ?   24731
  Misses            ?   31762
  Partials          ?    3240

Impacted Files
Coverage Δ

routers/routes/routes.go
82.68% <100%> (ø)

modules/log/colors_router.go
83.33% <83.33%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5df5bfb...018f8bb. Read the comment docs.

@zeripath done.


Peering Request

Full Name
Teske Virtual System
ASN
214331
PeeringDB Integration

[X] My PeeringDB Entries are current
[ ] Peer at ALL EXCHANGES (and skip the Peer Address(es) field below)

Peer Address(es)
IPv4: <IP_ADDRESS>
IPv6: 2001:12f8::219:71
Exchange: IX.br (PTT.br) - Sao Paulo
Multihop

[ ] Multihop Peering Request

Hi
Thanks for your interest in peering with RouteViews.  Unfortunately our collector in Sao Paulo is at capacity and we are not able to set up new peers.  Once we have more capacity in place we will be happy to discuss peering with you
Thanks


feature: add --name-template for 'helm install'

This idea occurred to me while chatting with @viglesias
We could expose some basic client-side naming sugar to allow semi-automated version naming, e.g. helm install --name-template="my-name-{{randAscii 6}}" nginx. This would allow end users to semi-name their stuff, but not have to worry about naming collisions. CI/CD systems might benefit from something like this.

Yep something that allows the same command to work repeatedly would be beneficial. This should also be able to output the chosen name in a script parseable format so that CI/CD can benefit.

I'm going to be "proactive" and "assign" this to @vaikas-google, since it looks like #977 might have been done by the community. (Feel free to push back if you don't want to work on this, Ville)


Issues in bazel build chain (from OSS-Fuzz)

Hi all!
OSS-Fuzz is running into an issue when building the java base image, with the following error:
8.552 HEAD is now at b12d1ea8 deploy: Prepare release v0.17.1
8.552 + cat
8.554 + bazel build //src/main/java/com/code_intelligence/jazzer:jazzer_standalone_deploy.jar //deploy:jazzer-api //launcher:jazzer
8.562 2024/02/18 21:37:30 Using unreleased version at commit 8482c7cf494686eb7498cec6ee58dad03b07ef0d
8.562 2024/02/18 21:37:30 Downloading https://storage.googleapis.com/bazel-builds/artifacts/ubuntu1404/8482c7cf494686eb7498cec6ee58dad03b07ef0d/bazel...
10.85 Extracting Bazel installation...
13.22 Starting local Bazel server and connecting to it...
14.51 Loading:
15.51 Loading:
16.51 Loading:
17.75 Loading:
18.46 WARNING: Download from https://github.com/grailbio/bazel-toolchain/archive/refs/tags/0.6.3.tar.gz failed: class com.google.devtools.build.lib.bazel.repository.downloader.UnrecoverableHttpException Checksum was a0a45349bf5d57bbefe2669225cda802c5d9ab8ea412a5e683f52bdcf3f16c65 but wanted da607faed78c4cb5a5637ef74a36fdd2286f85ca5192222c4664efec2d529bb8
18.46 INFO: Repository com_grail_bazel_toolchain instantiated at:
18.46   /src/jazzer/WORKSPACE.bazel:34:13: in <toplevel>
18.46 Repository rule http_archive defined at:
18.46   /root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/bazel_tools/tools/build_defs/repo/http.bzl:372:31: in <toplevel>
18.47 ERROR: An error occurred during the fetch of repository 'com_grail_bazel_toolchain':
18.47    Traceback (most recent call last):
18.47   File "/root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/bazel_tools/tools/build_defs/repo/http.bzl", line 132, column 45, in _http_archive_impl
18.47           download_info = ctx.download_and_extract(
18.47 Error in download_and_extract: java.io.IOException: Error downloading [https://github.com/grailbio/bazel-toolchain/archive/refs/tags/0.6.3.tar.gz] to /root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/com_grail_bazel_toolchain/temp6596007316104794476/0.6.3.tar.gz: Checksum was a0a45349bf5d57bbefe2669225cda802c5d9ab8ea412a5e683f52bdcf3f16c65 but wanted da607faed78c4cb5a5637ef74a36fdd2286f85ca5192222c4664efec2d529bb8
18.47 ERROR: /src/jazzer/WORKSPACE.bazel:34:13: fetching http_archive rule //external:com_grail_bazel_toolchain: Traceback (most recent call last):
18.47   File "/root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/bazel_tools/tools/build_defs/repo/http.bzl", line 132, column 45, in _http_archive_impl
18.47           download_info = ctx.download_and_extract(
18.47 Error in download_and_extract: java.io.IOException: Error downloading [https://github.com/grailbio/bazel-toolchain/archive/refs/tags/0.6.3.tar.gz] to /root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/com_grail_bazel_toolchain/temp6596007316104794476/0.6.3.tar.gz: Checksum was a0a45349bf5d57bbefe2669225cda802c5d9ab8ea412a5e683f52bdcf3f16c65 but wanted da607faed78c4cb5a5637ef74a36fdd2286f85ca5192222c4664efec2d529bb8
18.48 ERROR: Error computing the main repository mapping: no such package '@com_grail_bazel_toolchain//toolchain': java.io.IOException: Error downloading [https://github.com/grailbio/bazel-toolchain/archive/refs/tags/0.6.3.tar.gz] to /root/.cache/bazel/_bazel_root/e3c2be7f6be7a238950c8073a90fc93c/external/com_grail_bazel_toolchain/temp6596007316104794476/0.6.3.tar.gz: Checksum was a0a45349bf5d57bbefe2669225cda802c5d9ab8ea412a5e683f52bdcf3f16c65 but wanted da607faed78c4cb5a5637ef74a36fdd2286f85ca5192222c4664efec2d529bb8
------
Dockerfile:24
--------------------
  22 |     ENV JAZZER_API_PATH "/usr/local/lib/jazzer_api_deploy.jar"
  23 |
  24 | >>> RUN install_java.sh
--------------------

Is this something you can assist with?
Ref: https://github.com/google/oss-fuzz/issues/11613

I guess the solution here is really just to bump jazzer on OSS-Fuzz?

I suggested a fix on OSS-Fuzz here: https://github.com/google/oss-fuzz/pull/11614
This was the analysis I ended with:
This dependency in jazzer's WORKSPACE:
http_archive(
    name = "com_grail_bazel_toolchain",
    sha256 = "da607faed78c4cb5a5637ef74a36fdd2286f85ca5192222c4664efec2d529bb8",
    strip_prefix = "bazel-toolchain-0.6.3",
    urls = ["https://github.com/grailbio/bazel-toolchain/archive/refs/tags/0.6.3.tar.gz"],
)

is no longer valid. The URL now downloads toolchains_llvm-0.6.3 instead, and this looks to be because they renamed the repo https://github.com/grailbio/bazel-toolchain which now redirects to https://github.com/bazel-contrib/toolchains_llvm
I did a quick fix in OSS-Fuzz but I think it may not be enough for this repo (since I just rename/change the sum of the minimum).

Glad, that you already found a workaround. And indeed, a simple dependency update does not seem to work for Jazzer. We will look into into it.

The dependency now points to the new location. Could you give it another try with the current main branch?

Thanks @bertschneider -- am testing the latest on OSS-Fuzz now


[BUG]UI: Without backuptarget set, backup target error is shown on every page

The above information is shown on every page when there is no backup target. It should be shown only on the backup page.

Verified with ui tag: wangsiye/longhorn-ui:afa7e56
Validation: PASSED

error listing backups: setting backup-target is empty message is shown when the target is empty only in the backup page

Verified with master - 05/22/2020 - 12:00 PDT
Validation: PASSED

error listing backups: setting backup-target is empty message is shown when the target is empty only in the backup page


Autogenerated/samsung.kies/5184e23a c758 4264 8581 d0f8993e25ce

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

It has some sort of issue with Microsoft.VCRedist.2008.x64 (x86) or similar.

It has some sort of issue with Microsoft.VCRedist.2008.x64 (x86) or similar.

It requires a very specific version of Microsoft.VCRedist.2008.x86 but it seems that old versions of VCRedist are giving me an error when trying to install

Activation context generation failed for "C:\Users\WDAGUtilityAccount\AppData\Local\Temp\WinGet\Samsung.Kies.<IP_ADDRESS>13.1\KiesSetup.exe". Dependent Assembly Microsoft.VC90.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.

Automatic Validation ended with:

/AzurePipelines run

Manual Validation ended with:

Activation context generation failed for "C:\Users\User\AppData\Local\Temp\WinGet\Samsung.Kies.<IP_ADDRESS>13.1\KiesSetup.exe". Dependent Assembly Microsoft.VC90.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.

(Automated response - build 520.)

After adding the dependency, it appears that the install isn't unattended: