.through() does not work as expected

Here are my models:
// models/Org.js
var Org = bookshelf.Model.extend({
  tableName: 'orgs',
  admins: function () {
    return this.hasMany('User').through('Admin')
  }
})

module.exports = bookshelf.model('Org', Org)

// models/User.js
var User = bookshelf.Model.extend({
  tableName: 'users',
  org: function () {
    return this.belongsTo('Org').through('Admin', 'id')
  }
})

module.exports = bookshelf.model('User', User)

// models/Admin.js
var Admin = bookshelf.Model.extend({
  tableName: 'admins'
})

module.exports = bookshelf.model('Admin', Admin)

The admins table referenced in the models/Admin.js model has a user_id column and an org_id column. When I invoke Org.forge({ id: 1 }).fetch({ withRelated: ['admins'] }), my expectation is that bookshelf will do the following:

query the admins table to find all rows with a value of 1 in the org_id field
query the users table to find all users with ids found in the user_id column of the rows found in the admins table
return all of rows found in the users table when I perform `org.related('admins').

This doesn’t seem to be the case, however; I get the following error message when I try the fetch statement above:

Error: select "users".*, "admins"."id" as "_pivot_id", "admins"."farm_id" as "_pivot_farm_id" from "users" inner join "admins" on "admins"."id" = "users"."admin_id" where "admins"."farm_id" in (1) - SQLITE_ERROR: no such column: users.admin_id

This is puzzling; why would it try to find admin_id inside the users table to begin with? Then I tried making the following change to the Org model:
admins: function () {
  return this.hasMany('User').through('Admin', 'id')
}

This does not result in a formal error, but the resulting admins array is incorrectly populated. It returns a user model whose id is the same as the org I am fetching instead of the user_id in the admins table. Simply put, my org’s id is 1, and its admin (as per the only row in the admins table) should be user with id 2, but the user that gets put into my org.admins array is the user with id 1.
Adding a third argument to the .through() method has no effect (as documented in issue #673) on the above results. Is this a bug, or am I doing something wrong?
Thanks!

After a little more testing, it would seem that it’s casting the org’s id to the admins table id, meaning that it returns the admins row with id 1, no matter what its user_id or org_id might be.

And when I fetch user with id 2, which does have a row in the admins table, no org is associated with it at all.

why would it try to find admin_id inside the users table to begin with?

Because that's how .through works. According to the docs:

By default, the foreignKey is assumed to be the singular form of the Target model's tableName, followed by _id

Which is precisely users.admin_id. I'm not that familiar with .through myself, but my guess is that you're using it incorrectly as you already suspect. Without a database schema it's hard to know for sure what you're doing wrong, but take a better look at the docs for .through and you may figure it out on your own. I suspect you also don't need to specify any additional arguments since you seem to be using the default table and key names.

Re: Schema — As I mentioned above, my admins table has a org_id and a user_id. It’s basically a join table that ties a user record with an org record by referencing each of them.
Re: How .through() works — Actually, that is precisely the opposite. The Target model is User (hence this.hasMany('User')). Admin is what the documentation refers to as an Interim model (also referred to as a JoinModel. Going by the terminology used in the documentation, the query should search the user_id (“the singular form of the Target model’s tableName, followed by _id”) in the admins table (the Interim).
While I am obviously receptive to any indication that I might be using this tool incorrectly, I should clarify that I do not suspect this is the case.

Actually, that is precisely the opposite. The Target model is User.

No it isn't. It's Admin. I think the confusion may be due to the text being lifted unchanged from another similar method (.belongsToMany()). In this case it should read:

...the singular form of the Interim model's tableName...

And note that you need a "Foreign key in this model", where "this model" is the model from which the .through method is being called. In your case that's User, hence users.admin_id.

Oh, I see how that can cause my misunderstanding of this feature.
So, what would be the correct way to establish the relationship on the Org and User models where that relationship is expressed via an admins junction table that makes reference to each of them via org_id and user_id columns?
Our tables look exactly like this, essentially:

Where actor == user, film == org and actor_film_mapping == admins.

Hey guys, firstly I'd like to apologise for the horrid wording on the .through() docs - as I'm reading it even I am confused. Let's leave this issue open to clean up the docs there.
So, just to clarify the use of language here:
This = Model.extend({
  targets: function () { this.hasMany(Target).through(Interim, throughForeignKey, otherKey); }
});

Now, the throughForeignKey is the column that is used to join Interim to This.

Our tables look exactly like this, essentially:

@agarzola, I'm going to show you the Model definitions one would use with the diagram you've provided.
Bookshelf doesn't support models without a primary key, so actor_film_mapping wouldn't typically attract a Model. You can just use belongsToMany.
bookshelf.model('Actor', Model.extend({
  tableName: 'actor',
  idAttribute: 'actor_id',
  films: function() { return this.belongsToMany('Film', 'actor_film_mapping'); }
});

bookshelf.model('Film', Model.extend({
  tableName: 'film',
  idAttribute: 'film_id',
  actors: function() { return this.belongsToMany('Actor', 'actor_film_mapping'); }
});

However, if you do want to create a join model using through, you should be able to do the following:
bookshelf.model('Casting', Model.extend({
  idAttribute: ['actor_id', 'film_id'], // Composite keys not actually supported, but you need something I guess...
  tableName: 'actor_film_mapping',
  actor: function() { return this.hasOne('Actor'); }
  film: function() { return this.hasOne('Film'); }
});

bookshelf.model('Actor', Model.extend({
  tableName: 'actor',
  idAttribute: 'actor_id',
  casting: function() { return this.hasMany('Casting'); }
  films: function() { return this.belongsToMany('Film').through('Casting'); }
});

bookshelf.model('Film', Model.extend({
  tableName: 'film',
  idAttribute: 'film_id',
  casting: function() { return this.hasMany('Casting'); }
  films: function() { return this.belongsToMany('Actor').through('Casting'); }
});

Thanks a lot, guys! @rhys-vdw: I apologize, I was too eager with my comparison above.
Our users and orgs tables have the typical id identifier, and only in the admins table do we refer to them by user_id and org_id. Is this an antipattern, or is there a way to express that in the models?
Additionally (and, again, I apologize), our admins junction table does have primary key (also just id).

Our users and orgs tables have the typical id identifier, and only in the admins table do we refer to them by user_id and org_id. Is this an antipattern, or is there a way to express that in the models?

Come on mate, you had a chance to supply your schema and you provided someone else's - why make this harder for everyone?
No it's not an anti-pattern - it's the supported use case. Just omit the idAttribute member in all cases as it defaults to id.

That’s fair; I didn’t mean to make it harder for anyone, but you’re right. I apologize.
Schemas:
// admins table schema
id: increment (primary)
user_id: int
org_id: int

// users table schema
id: increment (primary)
firstName: string
lastName: string
email: string

// orgs table schema
id: increment (primary)
name: string

At the moment, a modified version of your examples above worked for me. See below:
// models/User.js
var bookshelf = require('../bookshelf')

var User = bookshelf.Model.extend({
  tableName: 'users',
  mailingAddress: function () {
    return this.belongsTo('Address', 'mailingAddress_id')
  },
  org: function () {
    return this.hasOne('Org').through('Admin', 'id')
  },
  virtuals: {
    fullName: function () {
      return this.get('firstName') + ' ' + this.get('lastName')
    },
    admin: function () {
      return (this.related('org').id ? true : false)
    }
  },
  hidden: ['password']
})

module.exports = bookshelf.model('User', User)

// models/Org.js
var bookshelf = require('../bookshelf')

var Org = bookshelf.Model.extend({
  tableName: 'orgs',
  mailingAddress: function () {
    return this.belongsTo('Address', 'mailingAddress_id')
  },
  admins: function () {
    return this.belongsToMany('User').through('Admin')
  }
})

module.exports = bookshelf.model('Org', Org)

// models/Admin.js
var bookshelf = require('../bookshelf')

var Admin = bookshelf.Model.extend({
  tableName: 'admins'
})

module.exports = bookshelf.model('Admin', Admin)

Note two things:

The Org model returns the correct admin only if its relationship to the User model is expressed as return this.belongsToMany('User').through('Admin'), while the User model is expressed using return this.hasMany('Org').through('Admin', 'id'). I don’t quite understand why the difference in the method since neither table make reference to the admins table nor each other (the admins junction table being the only place where this relationship is expressed). Any idea why this is?
Including user and org methods on the Admin model doesn’t seem to have any effect on the outcome. I imagine this is to be expected, as those methods are for my use and not really for Bookshelf to be able to use the Admin model as a JoinModel. Please correct me if I’m wrong.

Thanks again!

All good.

Including user and org methods on the Admin model doesn’t seem to have any effect on the outcome.

Yep, they just add those relations to the Org model if you wish to use it directly.
Admin.forge({ id: 5 }).fetch()
  .then(admin => admin.pivot.related('mailingAddress').fetch());

I don’t quite understand why the difference in the methods (.belongsToMany() vs .hasOne()) in this relationship since neither table make reference to the admins table nor each other.

So the behaviour here is a bit odd, and I haven't tried every combination - but as far as I know:
Self#belongsTo(Other).through(Pivot) and Self#belongsToMany(Other).through(Pivot) each represent a relationship where the Self model has a reference to the Pivot. So in this case we'd expect Self to have an pivot_id. belongsTo will return a single model, whereas belongsToMany should return a Collection.
hasOne or hasMany are the opposite of this. They declare having a reference to another model. So Self#hasMany(Other).through(Pivot) suggests that there are many pivot rows with a self_id that references selves.id.

Thanks for the explanation of the differences between those relationship methods! Coming from having used mongoDB for quite a while now, I'm still wrapping my head around relational DBs.
Your explanation makes sense to me, and like you I find the current state of events odd. I would expect .hasOne('Org').through('Admin') on the User model and .hasMany('User').through('Admin') on the Org model to produce the relations we want. However, when I use .hasMany() on the Org model the result is different (and incorrect). In that case, the user that I get on farm.related('admins') shares the farm’s id. Most importantly, I would expect the behavior to be consistent from either end, yet this seems not to be the case.

Might be a bug. Could you share the exact relation definition and unexpected query from the failing relation?

Hey, @rhys-vdw. Could you clarify what you mean by the exact relation definition?
I just found something which I think is a clue as to what’s wrong. I re-seeded my test db to ensure none of the records share primary ids, and that makes user.related('org') return no org at all using the latest User model described above. When I tried removing the 'id' parameter from the .through('Admin') method on the User model, I got this error:

Error: select "farms".*, "admins"."id" as "_pivot_id", "admins"."user_id" as "_pivot_user_id" from "farms" inner join "admins" on "admins"."id" = "farms"."admin_id" where "admins"."user_id" in (12) - SQLITE_ERROR: no such column: farms.admin_id

(Note we switched from orgs to farms between yesterday and today.)
I think what’s going on is that it is not using admins as a junction table. Rather, it is trying to find a reference to the admins’s primary key in the farms table. Maybe this is how a JoinModel is supposed to work and I need to use something different for a junction table?
I know that your first solution above (where User and Org/Farm each call each other with this.hasMany/One('Admin')) will return the correct entries, but it returns the junction table entry: { id: 32, farm_id: 5, user_id: 12 }, which I would then need to expand through the Admin model methods. That would mean I end up having to do something like user.related('farm').related('farm') to get to the farm that a user admins. I’d like to avoid this as much as possible, as it’s not very intuitive.

Re-reading the .through() documentation and examples, I think it was designed to assist relationships in a single direction. So, if User has one Farm through Admin, Bookshelf expects Admin to also have one Farm. A junction table is different in that User and Farm each has one or many references in the admins table.
hasOne().through() expects this: User > Admin > Farm, where the farms table would include a admin_id column. A junction table is more like this: User > Admin < Farm, where the admins table is expected to include the references to the other two tables via user_id and farm_id.

A junction table is more like this: User > Admin < Farm, where the admins table is expected to include the references to the other two tables via user_id and farm_id

That's why you should use .belongsToMany instead, like was suggested already :) You will have to override the table name though.
Also, if you're new to RDBMS, you should check out Rails' Associations guide which explains in great detail how these associations work and what the conventions are. Bookshelf uses a very similar naming system, with the difference being that belongsToMany is called has_and_belongs_to_many over there.

How do I override the table name when using .belongsToMany()?
Thanks for the resource! It certainly explains a lot. From that document, I see that has_many :through association describes my needs exactly. From that document:

On the other hand, the has_and_belongs_to_many association is slightly different in that it does not establish a join model at all, so the junction table doesn’t really require a primary id key:

I’m perfectly comfortable using this second paradigm, as I don’t expect to need to query the admins table directly through a model anyway. However, while one Farm might have multiple admins, any one User may only admin a single farm. Naturally, when I use this.belongsToMany('Farm').through('Admin'), user.related('farm') returns a collection of farms with a single farm. Any way to make it so it returns the one farm?

Hmm... I don't think you need .through with .belongsToMany in your case. That's the whole point. So, this should work with your database schema:
this.belongsToMany('Farm', 'admins')

If you are sure that a user will only be administering one farm, you can return just the first record, so:
this.belongsToMany('Farm', 'admins').first()

Thanks a million, @ricardograca!
this.belongsToMany('Farm', 'admins') works like a charm on both models. this.belongsToMany('Farm', 'admins').first(), however, throws an error:

TypeError: Cannot read property 'relatedData' of undefined

Full error stack below:
TypeError: Cannot read property 'relatedData' of undefined
      at EagerRelation.<anonymous> (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/lib/eager.js:26:30)
      at EagerRelation.tryCatcher (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/util.js:26:23)
      at EagerRelation.eagerFetch (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/method.js:15:34)
      at EagerRelation.<anonymous> (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/lib/base/eager.js:68:33)
      at EagerRelation.tryCatcher (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/util.js:26:23)
      at EagerRelation.fetch (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/method.js:15:34)
      at _handleEager (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/lib/model.js:1296:56)
      at null.<anonymous> (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/lib/model.js:675:21)
      at Object.tapHandler (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/finally.js:63:31)
      at Object.tryCatcher (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/util.js:26:23)
      at Promise._settlePromiseFromHandler (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:507:31)
      at Promise._settlePromiseAt (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:581:18)
      at Promise._settlePromises (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/promise.js:697:14)
      at Async._drainQueue (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:123:16)
      at Async._drainQueues (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:133:10)
      at Immediate.Async.drainQueues [as _onImmediate] (/Users/agarzola/git/cropshare-webapp/node_modules/bookshelf/node_modules/bluebird/js/main/async.js:15:14)
      at processImmediate [as _immediateCallback] (timers.js:383:17)

How are you calling that? You probably have to limit the results like this instead:
user.related('farm').first()

No idea if it will work or not. Sorry, but I'm not that familiar with the process of limiting related data queries. You'll probably find more answers by searching through the issues.

In the user model, like so:
var User = bookshelf.Model.extend({
  tableName: 'users',
  // ...
  farm: function () {
    return this.belongsToMany('Farm', 'admins').first()
  },
  // ...
})

.related('farm').first() on an already fetched user works, though.

@ricardograca - you've been using too much ActiveRecord: Collection#first is a passthrough to Lodash's _.first.
If you want to require a single expect you should use .belongsTo().through() as I mentioned earlier.

I don't think you need .through with .belongsToMany...

Adding .through to .belongsToMany changes is the class of the pivot model. Useful for parse/format or other customization.

Hey, @rhys-vdw. Your suggestion was the first thing I tried. As I documented above, here’s the error that produces:

Error: select "farms".*, "admins"."id" as "_pivot_id", "admins"."farm_id" as "_pivot_farm_id" from "farms" inner join "admins" on "admins"."farm_id" = "farms"."id" inner join "users" on "admins"."id" = "users"."admin_id" where "users"."id" in (12) - SQLITE_ERROR: no such column: users.admin_id
at Error (native)

Notice how it’s expecting users table to have an admin_id column.

It’s as if .belongsTo().through() expects This to have a interim_id so that it can find the Interim, which will have a target_id so that it can find Target. I think that’s how it’s designed to work. Likewise, .hasOne().through() expects Interim to have a this_id (which is true in this case) but then also applies that “has logic” to expect Target to have an interim_id.
This is what I meant earlier when I said that .through() is meant to work in one direction: This [HAS] Interim [HAS] Target or This [BELONGSTO] Interim [BELONGSTO] Target. There seems to be no way to express This [HAS] Interim [BELONGSTO] Target.

These associations were developed a long time ago before any of us (me and Rhys) joined the project, so it's possible that .through was never meant to mimic how the equivalent in ActiveRecord works. I only linked to that documentation because it's very thorough, has many examples, and is the base for many other ORMs, so it's a great introduction to the subject, but you should always refer to Bookshelf's docs for actual usage. Sorry if I made it look like everything in Bookshelf was supposed to work like in ActiveRecord.
I think that you're right when you say that .through only works one way, and I think the example currently reflects that, although it doesn't explain all possibilities in great detail. I never needed to use it myself, so I also don't know much about it.
We probably also need a Guides section in the website to help users on common tasks and to explain some concepts in more detail.

The project leadership of Bookshelf recently changed. In an effort to advance the project we close all issues older than one year.
If you think this issue needs to be re-evaluated please post a comment on why this is still important and we will re-open it.
We also started an open discussion about the future of Bookshelf.js here https://github.com/bookshelf/bookshelf/issues/1600. Feel free to drop by and give us your opinion.
Let's make Bookshelf great again


WRF-Hydro calibration with HTCondor

@arezoorn and @ishita9 have been working on calibrating WRF-Hydro for 1200 separate basins on Denali, along w/the Denali help team. Initial estimates for time to complete calibration are turning out to have been a bit optimistic. The main issue seems to be that only a single instance of the workflow can run on a Denali node, which results in under-utilization of CPUs on a node and longer run times. There is also job prioritization and per-user limits, but those are known characteristics of the system. We'll keep digging w/the Denali help team in case there are options that haven't been discussed/tried yet.  Next week, we'll talk w/the Denali mgmt team about hopefully upping Quality of Service (QOS) priority for a short period. New process for us so not sure what they'll be able to accommodate.
We're working on a few "Plan B" things that might help us meet the timeline for delivery of the calibrated modeling application, including also leveraging NCAR's Cheyenne platform.
This issue is to record that Arezoo and Ishita will talk with @mnfienen about their workflow, Denali roadblocks, and what it might take to implement their workflow using HTCondor on cloud (including costs).

A little update, we met with @mnfienen and discussed the option of using HTCondor and WRF-Hydro calibration on cloud while benefiting from the existing wrf-hydro calibration workflow. We have few questions:
1- Ishita would need to have access to the cloud to see whether she can actually modify the workflow to fit cloud or not. How easy or difficult is to get access? And how long does it take time? Who should we get in touch to giver her access to the USGS  cloud resources (if I can call it that!)?

The cost for cloud turns out to be roughly 70 to 100 K for 500 basins to calibrate. Not sure if that is a number we want to consider for digging into the cloud solution.

The cost on Cheyenne is a little cheaper, it is more like 50 K for 500 basins. Roland is looking into the option of purchasing hours from CISL for Cheyenne.

Thanks!
Arezoo

@ishita9 I'll initiate getting your credentials added to our AWS account. Don't think it'll be a big effort. We'll need to make sure we also get you the label for the project so costs are appropriately covered. Please watch your USGS email account for next steps (I'm guessing that is what the group that controls our account will use as a default communication channel).
we'll hold off on deciding whether to pursue this for a little bit; hoping Ishita's initial explorations firm up the budget on this. @mnfienen also mentioned that adjustment of workflow for AWS (mostly to leverage HTCondor) might also help optimize execution on Denali, which would be nice!
Okay, I'll presume beyond getting increased QOS priority on Denali, this is your preferred option/recommendation (and yes, starting to look at what might need to happen re: funding regarding this option).

Thanks for the update, @arezoorn!

regarding 3, this option is the best in terms of making sure we could do the work in allocated time. We could finish it in 3 to upmost 4 weeks after getting allocation on Cheyenne.

@arezoorn re: your original #2 and #3 info, where you were quoting costs, were you referring to 500 basins b/c this is how many you expect to need to calibrate on a platform beyond Denali? or is just the increment for which you derived a cost estimate?

Just a number to use as a reference at this time, it might help us to keep our end of December deadline, thought I am not certain about that.


Configure Renovate

Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.
🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

Detected Package Files

images/drbd-reactor/Dockerfile (dockerfile)
images/linstor-affinity-controller/Dockerfile (dockerfile)
images/linstor-csi/Dockerfile (dockerfile)
images/linstor-drbd-wait/Dockerfile (dockerfile)
images/linstor-scheduler-admission/Dockerfile (dockerfile)
images/linstor-scheduler-extender/Dockerfile (dockerfile)
images/linstor-server/Dockerfile (dockerfile)
images/linstor-wait-until/Dockerfile (dockerfile)
images/spaas/Dockerfile (dockerfile)

Configuration Summary
Based on the default config's presets, Renovate will:

Start dependency updates only once this onboarding PR is merged
Enable Renovate Dependency Dashboard creation.
Use semantic commit type fix for dependencies and chore for all others if semantic commits are in use.
Ignore node_modules, bower_components, vendor and various test/tests directories.
Group known monorepo packages together.
Use curated list of recommended non-monorepo package groupings.
Apply crowd-sourced package replacement rules.
Apply crowd-sourced workarounds for known problems with packages.

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to renovate.json in this branch. Renovate will update the Pull Request description the next time it runs.

What to Expect
With your current configuration, Renovate will create 1 Pull Request:

Update registry.deckhouse.io/base_images/golang Docker tag to v1.22.3

Schedule: ["at any time"]
Branch name: renovate/registry.deckhouse.io-base_images-golang-1.x
Merge into: main
Upgrade registry.deckhouse.io/base_images/golang to sha256:d51f0325ad7c506fa807bb2fcb67f9c037188ae7fcf1b25e6ac97fca3058265f

❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section.
If you need any further assistance then you can also request help here.

This PR has been generated by Renovate Bot.


[test] Add [skip ci] to Crowdin commit message

Towards resolving #22652 (and future) CI issues

So we would need to add a last commit to have the CI running before merging?

Yes, this was the compromise I suggested. We could let github actions push a commit periodically to these branches but this would block any potential github actions to be run from this commit. Or maybe we'll just let it add a label every X weeks so that a maintainer sees that these PRs need some attention.
Kind of depends on how often you want to merge these though. If you have idea for better automation please reach out. GitHub actions can do almost anything these days.

OK, perfect. It's a lot less error prone that the previous setup.


Explicitly mark message queue events on os390

This fix was originally made for https://github.com/ibmruntimes/node/issues/104. Per @bnoordhuis request, I'm making a PR against this repo, reviewers are @bnoordhuis and @jBarz . There are differences between this version and the one for the IBM fork because the latter has diverged.
The os390 epoll_wait implementation uses poll() to detect events in
both file descriptors and the message queue used for file system
events. The only message queue ID is always placed at the end of the
array passed to the poll() call. When the poll() call returns all FDs
and the message queue are checked for events by iterating through that
array. In order to distinguish the message queue from the FDs its ID
value is compared with the only message queue ID we have and if it
matches the message queue handler function is called.
When the message queue ID is relatively small, it may have the same
value as the value of one of the file descriptors. If this happens,
the message queue handler is called for the matching file descriptor,
and this call fails. The file descriptor ends up being unhandled and
this makes the next poll() call to return immediately. Eventually this
will happen again and again, leading to an infinite busy loop and high
CPU usage.
To prevent the incorrect interpretation of file descriptors as the
message queue, a new field has been added to the epoll event struct.
This field is checked instead of the ID value and the message queue
handler function is never called for file descriptors.
To compile this on z/OS I had to provide src/unix/csrsic.h used in src/unix/os390.c. I copied it from https://github.com/ibmruntimes/node/tree/v6.x.zos/deps/uv/src/unix

otherwise LGTM

LGTM too.

@gireeshpunathil, @bnoordhuis, is there anything you'd like me to test/change/improve here?

@bnoordhuis anything I could do here or are we waiting for other reviewers?

Let's ping the people maintaining the z/OS port of Node.js as I imagine it's in everyone's interest to have patches floated on top of libuv upstreamed here. @IgorTodorovskiIBM @ccw-1

Can anyone else take a look at the comments/review the PR?

@bnoordhuis thank you for the comments, I will address them when I'm back in a couple of days.
I'm located in Dordrecht, almost on the opposite side of the Netherlands. Same to you, if you're ever near Rotterdam/The Hague/Amsterdam :)

@miladfarca could you also ask one of the teams working on the Node z/OS port to review as well.

@mhdawson I will ask IgorTodorovskiIBM if he could help with reviewing  it

LGTM once the assert is added in

@IgorTodorovskiIBM just checking the status so that the PR doesn't get automatically closed. Have you had a chance to look into this?

@IgorTodorovskiIBM can you chime in ?

I was able to build using CMake with some modifications and using this command (to reflect the options used in CI):
cmake -DCMAKE_C_COMPILER="/bin/xlc" -DCMAKE_CXX_COMPILER="/bin/xlc++" -DCMAKE_C_FLAGS="-O3 -D_ALL_SOURCE=1 '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D_UNIX03_THREADS' '-D_UNIX03_SOURCE' '-D_UNIX03_WITHDRAWN' '-D_OPEN_SYS_IF_EXT' '-D_OPEN_SYS_SOCK_EXT3' '-D_OPEN_SYS_SOCK_IPV6' '-D_OPEN_MSGQ_EXT' '-D_XOPEN_SOURCE_EXTENDED' '-D_ALL_SOURCE' '-D_LARGE_TIME_API' '-D_OPEN_SYS_FILE_EXT' '-D_AE_BIMODAL' '-DPATH_MAX=255' '-DNDEBUG'" -DCMAKE_CXX_FLAGS="'-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D_UNIX03_THREADS' '-D_UNIX03_SOURCE' '-D_UNIX03_WITHDRAWN' '-D_OPEN_SYS_IF_EXT' '-D_OPEN_SYS_SOCK_EXT3' '-D_OPEN_SYS_SOCK_IPV6' '-D_OPEN_MSGQ_EXT' '-D_XOPEN_SOURCE_EXTENDED' '-D_ALL_SOURCE' '-D_LARGE_TIME_API' '-D_OPEN_SYS_FILE_EXT' '-D_AE_BIMODAL' '-DPATH_MAX=255' '-DNDEBUG' -O3"  -DCMAKE_BUILD_TYPE="Release" ../
V=1 make -j4

I've attached my test run of your PR fix using my local z/OS here:
libuv.txt
The 6 failures I am getting are likely related to my setup and do not seem to be related to your message queue change.  I have the same failures without your change.  So, the change LGTM.
FYI, my team is in the process of creating a PR that will push our Node v12 libuv changes  into the official libuv repository, which includes -qASCII support, among other fixes.

@IgorTodorovskiIBM thank you

One final CI rebased against today's v1.x HEAD: https://ci.nodejs.org/job/libuv-test-commit/1796/

Landed in 742e0ba7...506e4bee, thanks!

Landed in 742e0ba...506e4be, thanks!

Thank you!


FILESYSTEM-TESTS: Consolidate xfstests test cases

xfstesting.sh (previously perf_xfstesting.sh) was refactored. Changes
made:

Renamed perf_xfstesting.sh to xfstesting.sh. This isn't a perf test so
we dropped the 'perf_' prefix
Replaced 'CIFS' testing with 'Generic' filesystem tests. It's more
valuable from a testing perspective since it covers a lot more tests and
use cases.
NVMe support - 4 new NVMe functional tests were added:
NVME-FILE-SYSTEM-VERIFICATION-GENERIC
NVME-FILE-SYSTEM-VERIFICATION-XFS
NVME-FILE-SYSTEM-VERIFICATION-EXT4
NVME-FILE-SYSTEM-VERIFICATION-BTRFS
Removed xfstests-config.config. The config file is constructed in PS script.
Consolidated bash script:
---- It now supports Debian/Ubuntu/RHEL/CentOS distros
---- Removed duplicate code
---- Added excluded tests: without this list, xfstests run would have
hanged.
Consolidated Powershell script:
---- Added a timeout of 3 hours. If the bash script exceeds this
timeout, the test will be aborted.
---- Better log collect - Collect-TestLogs function is used to download
the logs from the test VM

Test results
[LISAv2 Test Results Summary]
Test Run On           : 02/03/2019 08:24:53
ARM Image Under Test  : Redhat : RHEL : 7.5 : latest
Total Test Cases      : 4 (4 Pass, 0 Fail, 0 Abort)
Total Time (dd:hh:mm) : 0:3:12
ID TestCaseName                                                                TestResult TestDuration(in minutes)
1 FILE-SYSTEM-VERIFICATION-TESTS-GENERIC                                            PASS                 96.1
2 FILE-SYSTEM-VERIFICATION-TESTS-XFS                                                PASS                66.74
3 FILE-SYSTEM-VERIFICATION-TESTS-EXT4                                               PASS                 5.41
4 FILE-SYSTEM-VERIFICATION-TESTS-BTRFS                                              PASS                17.76

[LISAv2 Test Results Summary]
Test Run On           : 02/02/2019 14:19:18
ARM Image Under Test  : Canonical : UbuntuServer : 18.04-LTS : latest
Total Test Cases      : 4 (4 Pass, 0 Fail, 0 Abort)
Total Time (dd:hh:mm) : 0:1:50
ID TestCaseName                                                                TestResult TestDuration(in minutes)
1 NVME-XFSTESTS-GENERIC                                                             PASS                46.63
2 NVME-XFSTESTS-XFS                                                                 PASS                29.17
3 NVME-XFSTESTS-EXT4                                                                PASS                 8.78
4 NVME-XFSTESTS-BTRFS                                                               PASS                13.25

NVME test case names were changed meanwhile - the new names are the same as stated in this PR description above

NVMe Ubuntu 16.04 results
[LISAv2 Test Results Summary]
Test Run On           : 02/04/2019 10:25:03
ARM Image Under Test  : Canonical : UbuntuServer : 16.04-LTS : latest
Total Test Cases      : 4 (4 Pass, 0 Fail, 0 Abort)
Total Time (dd:hh:mm) : 0:1:50
ID TestCaseName                                                                TestResult TestDuration(in minutes)
1 NVME-FILE-SYSTEM-VERIFICATION-GENERIC                                             PASS                57.32
2 NVME-FILE-SYSTEM-VERIFICATION-XFS                                                 PASS                27.57
3 NVME-FILE-SYSTEM-VERIFICATION-EXT4                                                PASS                 7.22
4 NVME-FILE-SYSTEM-VERIFICATION-BTRFS                                               PASS                10.62


Terminal prompt jumps

In this setup the terminal prompt does not seem to align nicely to the top:

Guessing the bottom 2 differing is related to a resize event gone bad, for splits differing maybe they have different bottom padding or something.


[Feature Request] Filtering Select

Existing Component
Yes
Component Name
Select
Description
The select should autocomplete the typed word. eg https://dojotoolkit.org/reference-guide/1.10/dijit/form/FilteringSelect.html

Try <el-autocomplete>

how could i participate in developing that feature, and make it available for all


[Windows] Support snap layout menu

Don't know how difficult it is to do this. But here is some documentation:
https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/apply-snap-layout-menu

This looks possible by emulating a Win+Z keypress for a middle mouse button click event.
A similar plugin does this with in Rust, triggered by a tauri command from the frontend: https://github.com/clearlysid/tauri-plugin-decorum/blob/main/src/commands.rs

That looks pretty good. One downside to this method is that the menu covers the window controls.
WPF also has a similar issue with this and some people have ideas that could be tested. https://github.com/dotnet/wpf/issues/4825
Or maybe using something from this documentation: https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/apply-snap-layout-menu


Chat+:  display profile link for all users, not for admins only

https://www.boonex.com/forums/topic/Accessing-dolphin-profile-from-within-rocket-chat.htm

https://github.com/boonex/rocket.chat/commit/4cafdf54747046fb56672534705a078398013865


Is there any demo for Sync firestore/firebase data to laravel eloquent model

Hi,
Can you please provide any route/model binding and sync firebase/firestore data to laravel eloquent model?
Purpose is I can used all the Laravel functionality with the firebase/firestore and used it in development.
Please give response to this questions, is there any way we can go forward with this?
Thank You,
Vivek

There are currently no plans to provide this feature. You could have a look at https://github.com/mpociot/laravel-firebase-sync or similar projects as an inspiration to implement this in your application.

found these two packages for using firebase realtime db with models (not tested)

https://github.com/plokko/laravel-firebase
https://github.com/EverthSarantes/laravel-firebase-models

Im looking into it since im using filament and all packages want to steer you into using data through models :)


fix for projectReferences type

Short description 📝
Loading project with projectReferences was causing crash in init from decodable.
Solution 📦
projectReferences type has been changed from [Any] to [[String : String]] to reflect the document.

Nice @solgar. Tests seem to be failing because of your changes. Could you update them? Then it should be ready to merge

@pepibumur Sure. Code submit eta +12.

Same here. Merging :shipit:


spike: Rewrite using AS notifications

This is a spike to see if we can rewrite the ActiveJob instrumentation using AS notifications.
Some things that stand out to me:
Each subscriber requires additional logic to handle context propagation, which makes code reuse a little when clunky creating spans:

Egress (kind: consumer) spans must extract incoming context to continue the trace context or use links

This means keeping track of multiple context tokens and detaching them in reverse order

Ingress (kind: producer) spans must use the implicit parent span from the current context and must inject the outbound context

Not all events measure a block of code e.g. https://github.com/rails/rails/blob/a5f4aadcee42f9b4fa99468776c56b5b988c87cf/activejob/lib/active_job/instrumentation.rb#L31

Exceptions are not documented as being included in perform events, which means we may not have access to them to set an error on the Ingress spans

Exceptions seem to be caught and recorded as part of other events: https://github.com/rails/rails/blob/a5f4aadcee42f9b4fa99468776c56b5b988c87cf/activejob/lib/active_job/exceptions.rb#L152
retry_stopped, discard, and enqueue_retry will provide errors but should these be mapped to internal spans?
Would others agree that if the job is stopped or discarded due to an error, we should record the error?

There are no semantics around retries. I assume that means we do not need to track those?

@chrisholmes @ahayworth @robbkidd @kaylareopelle There is a lot of structural duplication in this spike but I just wanted to see if I could get it working.
This is what the example output looks like:
@arielvalentin ➜ .../opentelemetry-ruby-contrib/instrumentation/active_job/example (spike-as-active-job) $ bundle exec ruby active_job.rb
[ActiveJob] Enqueued TestJob (Job ID: 4da9685e-48d4-4dcc-9c77-0c1c32c585b6) to Async(default)
[ActiveJob] [TestJob] [4da9685e-48d4-4dcc-9c77-0c1c32c585b6] Performing TestJob (Job ID: 4da9685e-48d4-4dcc-9c77-0c1c32c585b6) from Async(default) enqueued at 2023-09-23T15:08:14Z
#<struct OpenTelemetry::SDK::Trace::SpanData
 name="default publish",
 kind=:producer,
 status=#<OpenTelemetry::Trace::Status:0x00007fcadc2a4ca8 @code=1, @description="">,
 parent_span_id="\x00\x00\x00\x00\x00\x00\x00\x00",
 total_recorded_attributes=6,
 total_recorded_events=0,
 total_recorded_links=0,
 start_timestamp=1695481694531298591,
 end_timestamp=1695481694532534302,
 attributes=
  {"code.namespace"=>"TestJob",
   "messaging.destination_kind"=>"queue",
   "messaging.system"=>"async",
   "messaging.destination"=>"default",
   "messaging.message_id"=>"4da9685e-48d4-4dcc-9c77-0c1c32c585b6",
   "net.transport"=>"inproc"},
 links=nil,
 events=nil,
 resource=
  #<OpenTelemetry::SDK::Resources::Resource:0x00007fcadc5069b0
   @attributes=
    {"service.name"=>"unknown_service",
     "process.pid"=>69961,
     "process.command"=>"active_job.rb",
     "process.runtime.name"=>"ruby",
     "process.runtime.version"=>"3.2.2",
     "process.runtime.description"=>"ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]",
     "telemetry.sdk.name"=>"opentelemetry",
     "telemetry.sdk.language"=>"ruby",
     "telemetry.sdk.version"=>"1.3.0"}>,
 instrumentation_scope=#<struct OpenTelemetry::SDK::InstrumentationScope name="otel-active_job", version="0.0.1">,
 span_id="\xE3\x90\x04\xACw:\r\xA9",
 trace_id="\x9D0\xB0_W\b\xCC\xD0\xF7\xA1s\x95\xF45\x1D|",
 trace_flags=#<OpenTelemetry::Trace::TraceFlags:0x00007fcadc150668 @flags=1>,
 tracestate=#<OpenTelemetry::Trace::Tracestate:0x00007fcadc12dff0 @hash={}>>

--------------------------------------------------
 The computer is doing some work, beep beep boop.
--------------------------------------------------

[ActiveJob] [TestJob] [4da9685e-48d4-4dcc-9c77-0c1c32c585b6] Performed TestJob (Job ID: 4da9685e-48d4-4dcc-9c77-0c1c32c585b6) from Async(default) in 26.26ms
#<struct OpenTelemetry::SDK::Trace::SpanData
 name="default process",
 kind=:consumer,
 status=#<OpenTelemetry::Trace::Status:0x00007fcadc2a4ca8 @code=1, @description="">,
 parent_span_id="\xE3\x90\x04\xACw:\r\xA9",
 total_recorded_attributes=7,
 total_recorded_events=0,
 total_recorded_links=1,
 start_timestamp=1695481694532428068,
 end_timestamp=1695481694558682818,
 attributes=
  {"code.namespace"=>"TestJob",
   "messaging.destination_kind"=>"queue",
   "messaging.system"=>"async",
   "messaging.destination"=>"default",
   "messaging.message_id"=>"4da9685e-48d4-4dcc-9c77-0c1c32c585b6",
   "messaging.active_job.provider_job_id"=>"4f662ecc-bea5-4386-b5ec-5346dc0ee46b",
   "net.transport"=>"inproc"},
 links=
  [#<OpenTelemetry::Trace::Link:0x00007fcadc2a9370
    @attributes={},
    @span_context=
     #<OpenTelemetry::Trace::SpanContext:0x00007fcae0bb87f0
      @remote=true,
      @span_id="\xE3\x90\x04\xACw:\r\xA9",
      @trace_flags=#<OpenTelemetry::Trace::TraceFlags:0x00007fcadc2a9c58 @flags=1>,
      @trace_id="\x9D0\xB0_W\b\xCC\xD0\xF7\xA1s\x95\xF45\x1D|",
      @tracestate=#<OpenTelemetry::Trace::Tracestate:0x00007fcadc12dff0 @hash={}>>>],
 events=nil,
 resource=
  #<OpenTelemetry::SDK::Resources::Resource:0x00007fcadc5069b0
   @attributes=
    {"service.name"=>"unknown_service",
     "process.pid"=>69961,
     "process.command"=>"active_job.rb",
     "process.runtime.name"=>"ruby",
     "process.runtime.version"=>"3.2.2",
     "process.runtime.description"=>"ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]",
     "telemetry.sdk.name"=>"opentelemetry",
     "telemetry.sdk.language"=>"ruby",
     "telemetry.sdk.version"=>"1.3.0"}>,
 instrumentation_scope=#<struct OpenTelemetry::SDK::InstrumentationScope name="otel-active_job", version="0.0.1">,
 span_id="=v\xAC\x02 \xC1T\xEE",
 trace_id="\x9D0\xB0_W\b\xCC\xD0\xF7\xA1s\x95\xF45\x1D|",
 trace_flags=#<OpenTelemetry::Trace::TraceFlags:0x00007fcadc150668 @flags=1>,
 tracestate=#<OpenTelemetry::Trace::Tracestate:0x00007fcadc12dff0 @hash={}>>

Jaeger view:

hmm

Ok I had made a mistake and did not use root spans now I have what I need.

As I suspected the Ingress span does not get errors assigned to it:


Mark remaining episodes as watched

I'm trying to make less requests due to the new limits, and wondering if there is a way to mark remaining episodes of a show as watched. e.g. If a user marked 5 episodes of season 1, I'd like to mark the rest of season 1, and all future seasons as watched. I'm currently uploading every episode which isn't great for larger shows (100+ episodes). I know I can pass an entire show to the history API, but wasn't sure if that will mark existing episodes as watched again or if it will just complete the current watch.

You can specify an array of episodes in 1 request: https://trakt.docs.apiary.io/#reference/sync/add-to-history/add-items-to-watched-history
If you pass a season or a show, it will mark all episodes in the season or show that aired. But it will mark them as watched again even if already watched.

That's what I'm currently doing. With larger amount of data due to batching I worry of requests timing out or something. So I'd love an endpoint or parameter for shows to complete.


[Oglaf] Add title and alt text to Oglaf feed

Oglaf comics have both the alt text and title text set for the images. Make both visible!

linter being a bit strict sorry about that. can you use single qoutes pls. or even better, use sprintf


Why can not find any people by their ID?

Only the people you have joined their rooms can be found, this is very inconvenient and unreasonable

There is a users dictionary but it would require to perform a serverS search.
You can enter the matrix id of the user you want to invite even if it is not yet a member of your joined rooms. But, you won't have any information about him/her.
You have the same behaviour with any email client.


Fix Open in Portal for subscriptions and RGs

Fixes #502, and #467

Do we need to change the openInPortal command to look at when viewItem ~= /hasPortalUrl/ in the context value?

Already done.


Tkinter window different format while executing .py file and with spyder

My Tkinter window is appearing different while I am executing the .py file compared to how it is appearing while executing with spyder. I want my window to look like spyder execution on normal .py file execution. I am not sure what is causing this, i suspect it is something related spyder encoding or something
spyder version: 4.1.3
Python version: 3.7.6 (anaconda installation)
The below image is the execution of .py file

the below image is execution with spyder

GIT Hub link: https://github.com/manojbuddha/minesweeper-using-tkinter.git (code link)

Hi @manojbuddha,
I'm not encountering your problem in macOS,
This is the result of your code in spyder:

This is the result running in the terminal:

Are you running the code in the same environment in both cases?

@steff456 , yes I am running the code in the same environment for both the cases.

@steff456 , thanks for the help it was due to an issue with my code, I gave different font weights which was the reason for the issue.

I'm glad that you fixed your error! Thanks for reporting :)


Help Loc system, adding a new line and a space

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/includes/interactive-login.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Looks OK.


Compiling for centos 6.8 64bit

Something is wrong with the makefile?
$ cd FCNPC-1.5.0
$ mkdir build
$ cd build
$ cmake ..
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /opt/rh/devtoolset-2/root/usr/bin/cc
-- Check for working C compiler: /opt/rh/devtoolset-2/root/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /opt/rh/devtoolset-2/root/usr/bin/c++
-- Check for working CXX compiler: /opt/rh/devtoolset-2/root/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at CMakeLists.txt:49 (add_subdirectory):
  The source directory

    /home/usr/FCNPC-1.5.0/lib/subhook

  does not contain a CMakeLists.txt file.

-- Configuring incomplete, errors occurred!
See also "/home/usr/FCNPC-1.5.0/build/CMakeFiles/CMakeOutput.log".

What I did was change in CMakeLists.txt (just guessed)

add_subdirectory (
	${CMAKE_CURRENT_SOURCE_DIR}/lib/subhook
)

to
include_directories (
	${CMAKE_CURRENT_SOURCE_DIR}/lib/subhook
)

Which created a makefile but resulted in:
$ make
Scanning dependencies of target FCNPC
[  3%] Building CXX object CMakeFiles/FCNPC.dir/lib/fopen_s/fopen_s.cpp.o
[  7%] Building CXX object CMakeFiles/FCNPC.dir/src/CMovePath.cpp.o
In file included from /home/usr/FCNPC-1.5.0/src/CMovePath.cpp:11:0:
/home/usr/FCNPC-1.5.0/src/Main.hpp:52:29: fatal error: subhook/subhook.h: No such file or directory
 #include <subhook/subhook.h>
                             ^
compilation terminated.
make[2]: *** [CMakeFiles/FCNPC.dir/src/CMovePath.cpp.o] Error 1
make[1]: *** [CMakeFiles/FCNPC.dir/all] Error 2
make: *** [all] Error 2

Help please! How does one compile this for Centos 6.8

You should download full sources (with submodules): https://github.com/ziggi/FCNPC/blob/master/README.md#how-to-clone

Ok that seemed to work. Now I get a rubbish error as soon as it finishes to compile!
# make
Scanning dependencies of target subhook
[  3%] Building C object lib/subhook/CMakeFiles/subhook.dir/subhook.c.o
In file included from /home/usr/FCNPC/lib/subhook/subhook.c:52:0:
/home/sa-mp/FCNPC/lib/subhook/subhook_x86.c: In function ‘subhook_disasm’:
/home/sa-mp/FCNPC/lib/subhook/subhook_x86.c:171:10: warning: variable ‘address_size’ set but not used [-Wunused-but-set-variable]
   size_t address_size = 4;
          ^
Linking C static library libsubhook.a
[  3%] Built target subhook
Scanning dependencies of target FCNPC
[  7%] Building CXX object CMakeFiles/FCNPC.dir/lib/fopen_s/fopen_s.cpp.o
[ 11%] Building CXX object CMakeFiles/FCNPC.dir/src/CMovePath.cpp.o
[ 14%] Building CXX object CMakeFiles/FCNPC.dir/src/CPlayback.cpp.o
[ 18%] Building CXX object CMakeFiles/FCNPC.dir/src/CExceptionHandler.cpp.o
[ 22%] Building CXX object CMakeFiles/FCNPC.dir/src/CServer.cpp.o
[ 25%] Building CXX object CMakeFiles/FCNPC.dir/src/CNodeManager.cpp.o
[ 29%] Building CXX object CMakeFiles/FCNPC.dir/src/CHooks.cpp.o
[ 33%] Building CXX object CMakeFiles/FCNPC.dir/src/CMaths.cpp.o
[ 37%] Building CXX object CMakeFiles/FCNPC.dir/src/CAddress.cpp.o
[ 40%] Building CXX object CMakeFiles/FCNPC.dir/src/CAnimationInfo.cpp.o
[ 44%] Building CXX object CMakeFiles/FCNPC.dir/src/CWeaponInfo.cpp.o
[ 48%] Building CXX object CMakeFiles/FCNPC.dir/src/Main.cpp.o
[ 51%] Building CXX object CMakeFiles/FCNPC.dir/src/CPlayerManager.cpp.o
[ 55%] Building CXX object CMakeFiles/FCNPC.dir/src/CVehicleInfo.cpp.o
[ 59%] Building CXX object CMakeFiles/FCNPC.dir/src/RPCs.cpp.o
[ 62%] Building CXX object CMakeFiles/FCNPC.dir/src/CNode.cpp.o
[ 66%] Building CXX object CMakeFiles/FCNPC.dir/src/CFunctions.cpp.o
[ 70%] Building CXX object CMakeFiles/FCNPC.dir/src/CUtils.cpp.o
[ 74%] Building CXX object CMakeFiles/FCNPC.dir/src/CPlayerData.cpp.o
[ 77%] Building CXX object CMakeFiles/FCNPC.dir/src/Natives.cpp.o
[ 81%] Building CXX object CMakeFiles/FCNPC.dir/src/CCallbackManager.cpp.o
[ 85%] Building CXX object CMakeFiles/FCNPC.dir/src/CRecordManager.cpp.o
[ 88%] Building CXX object CMakeFiles/FCNPC.dir/lib/sdk/amxplugin.cpp.o
[ 92%] Building CXX object CMakeFiles/FCNPC.dir/lib/strlcpy/strlcpy.cpp.o
[ 96%] Building CXX object CMakeFiles/FCNPC.dir/lib/raknet/BitStream.cpp.o
[100%] Building CXX object CMakeFiles/FCNPC.dir/lib/mapandreas/MapAndreas.cpp.o
Linking CXX shared library FCNPC.so
/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/ld: skipping incompatible /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++_nonshared.a when searching for -lstdc++_nonshared
/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/ld: cannot find -lstdc++_nonshared
collect2: error: ld returned 1 exit status
make[2]: *** [FCNPC.so] Error 1
make[1]: *** [CMakeFiles/FCNPC.dir/all] Error 2
make: *** [all] Error 2

Got any clue?

I found this solution
yum install glibc-devel.i686 libstdc++-devel.i686

It appeared already installed. I decided to yum reinstall but no success :(
Here's what it said, incase my mirrors are the problem:
# yum install glibc-devel.i686 libstdc++-devel.i686
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * epel: mirror.cogentco.com
 * ius: mirror.team-cymru.org
Package glibc-devel-2.12-1.192.el6.i686 already installed and latest version
Package libstdc++-devel-4.4.7-17.el6.i686 already installed and latest version
Nothing to do

... and when I type make
# make
[  3%] Built target subhook
Linking CXX shared library FCNPC.so
/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/ld: skipping incompatible /opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++_nonshared.a when searching for -lstdc++_nonshared
/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/ld: cannot find -lstdc++_nonshared
collect2: error: ld returned 1 exit status
make[2]: *** [FCNPC.so] Error 1
make[1]: *** [CMakeFiles/FCNPC.dir/all] Error 2
make: *** [all] Error 2

If you don't mind testing it yourself under a centos 64bit 6.8 environment, we would appreciate it a lot. Many of us server owners still use centos to this day lol

You have problems because CentOS 6.8 uses GCC 4.4, and this version have no support for C++11 (this version released more than 7 years ago). I see that you have tried to update your compiler, but anyway resulting binaries will not working with old glibc. You should use newer OS or older plugin version (maybe 1.3 or 1.2).

Ok. I decided to rent a new cloud VPS and compiled it successfully (will just do that lol). I will post a Centos Version of the plugin on the sa-mp forum.
Thanks


Use an InMemoryCache instead of implementing locking/caching

Is your feature request related to a problem? Please describe.
This comes from this comment on Feature: change open api gen process

Just use an InMemoryCache and use the GetOrCreateAsync method.
It's thread safe because designed for aspnet scenarios.
We could even imagine using a background service populating the cache so requests don't hang.
https://learn.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-7.0

Describe the solution you'd like
We should not do the caching and locking ourselves and should depend on the in Memory Cache

Closing in favor of #1456


create new relic community connector

@diminishedprime can you take a look? i saw that you're one of the most active around here. tks

Any update on this?


Disallow css selector tied to page layout doesn't work with concatenated strings

// this works well - linter defines the error
private get _test2(): WebdriverIO.Element {
return $('.abc #def > ["data-test"="test"]');
}
// this doesn't work - linter doesn't define the error
private get _test3(): WebdriverIO.Element {
return $(selectors.x + ' ' + selectors.z + ' > ' + selectors.y);
}
// this doesn't work - linter doesn't define the error
private get _test3(): WebdriverIO.Element {
return $('.abc' + ' ' + '#def' + ' > ' + '["data-test"="test"]');
}

In version 0.3.0 (see #1) the support for template strings is added. For concatenated strings the convention is actually this rule: https://eslint.org/docs/rules/no-useless-concat (not part of this plugin) and to use template strings if variables need to be included.


Should destroyObject also replace .destroy()?

While reviewing https://github.com/CesiumGS/cesium/pull/12129 I finally noticed the if !isDestoryed() > .destroy() pattern and it felt very odd to me.
if (!this._environmentMapManager.isDestroyed()) {
  this._environmentMapManager.destroy();
}

My comment:

It feels like the responsibility for this check should live in the destroy function itself. I feel like you should be able to just call destroy() regardless and let it handle checking if it's already destroyed and essentially turn into a noop function. Then in this function the logic would just be "We know we want to guarantee this is destroyed so call destroy()" and no wrapper check for if it's already destroyed?

Looking at the destroyObject function I see we delete all the properties and replace the .isDestroyed function with a function that only returns true.
https://github.com/CesiumGS/cesium/blob/192ab0687518feba009b5055537b5ab8b3afc523/packages/engine/Source/Core/destroyObject.js#L53
I think a potentially easy path forward to streamline this pattern and fit the way I expected it to work would be to also (or maybe instead of) replace the .destroy() function with a noop () => {}.
This would allow us to rewrite that original example as just one line and not have to care about checking first. The responsibility is with the original object even though it's all been deleted by destoryObject
this._environmentMapManager.destroy();

// If the property is destroyable, then call "destroyObject" on this property as well:
if (key === "destroy") {
If this is the only alternative we can come up with then I don't think it should happen. As you pointed out this opens up a lot of unknowns about properties that may or may not exist. Also the potential to call destroy on something that's in a property but not considered fully "owned" by the object being destroyed.

The destroy function is also supposed to destroy all destroyable properties as well:

Replacing the destroy function in destroyObject would not prevent this functionality from happening. Calling SomeClass.destroy() the first time would call the proper function which handles destroying all of the objects it owns and needs to destroy. Then it would call destroyObject which would replace the destroy function with a no-op meaning the next time you call SomeClass.destroy() it does nothing. But there should also be nothing it has to do anymore since it already tore down everything it should have.

If this is the only alternative we can come up with then I don't think it should happen.

Yes, the side-effects are hard to predict here, and that approach would require a concept of "ownership" that is much more strict than what is even possible in JS.

Replacing the destroy function in destroyObject would not prevent this functionality from happening.

I think I misunderstood one detail there.
But to summarize: The answer to the question in the title, from my perspective, is a clear "Yes!"
Generally speaking, calling "destroy" on a destroyed object should be safe and a no-op. In other languages, this is solved with some
final void destroy() {
    if (isDestroyed()) return;
    reallyDestroy(); // To be implemented by subclasses
}

But given that it's possible to juggle around function objects here (and this is already happening for all other functions anyhow), replacing destroy with () => {} would make sense IMHO.


Experimental support of Airflow as a runtime

Implements experimental support for Airflow runtime
Fixes #185
Fixes #1183
Fixes #1278
Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

Updated with suggestions from @kevin-bates
Working on dropping the DAGs into an S3 bucket and syncing that up with the dag bag.

For the future, I think the code that's in the processors should move into the respective Pipeline classes and only have a single PipelineProcessor class that acts on a well-defined interface implemented by the Pipeline classes.  This would enable a single set of pipeline-specific class hierarchies so folks that want to "bring their own pipeline" would simply implement one class.  (At least that's my initial observation from seeing the kinds of changes that adding a second pipeline introduces.). I would be happy to help with designing that object model.

Rebased, updated with some recommended changes, updated jinja template to include start on upload option so we don't have to mess with airflows global config and added some documentation to start. Will need to decide on how to install the Notebook Operator

Hi - I'm new to Elyra, and really like what I've seen so far. Wondered when this PR might get merged, as I'd love to try out the Airflow runtime.

@toby-coleman, Thanks for the interest!
This PR is a bit stale atm and needs to be rebased since a lot of changes in the pipeline processors have been made. The underlying principle is the same though of submitting the generated DAG to a shared dag bag either in a FS or object storage. Unfortunately we are bit busy right now with other tasks, but if you want to take a stab at this I would be more than happy to answer any questions you might have.

@akchinSTC thanks for getting back to me.  I've had a look through the code in the original PR to see what I'd have to do to bring it up-to-date.  One question: in the airflow template there's an import for the Airflow operator that executes each pipeline step: from notebook.pipeline import NotebookOp
I couldn't find the code for this operator - is it in a separate repo somewhere?

@bourdakos1 - Hi Nick, with this PR when I export an Airflow pipeline I only get the following two options. What would be the best way for me to go about adding a third option, or perhaps a separate list options depending on the type of runtime selected. This will probably lean into the work you are doing for pipelines 2.0 I think. Thanks in advance for helping me take a look.

@akchinSTC I think getting a list of export options will be part of the API, but right now they are hard coded.
For now you should be able to just add an option to this list:
https://github.com/elyra-ai/elyra/blob/60618c00402a7908a08fb2067ab37931040d2ca7/packages/pipeline-editor/src/PipelineExportDialog.tsx#L21
Not sure what you would need to do on the backend though

Working on each dialog at a time. This is how the export one currently looks like:

@karlaspuldaro Could you please change the Runtime Config label text to Runtime Configuration?

Notebook submission dialog
Before:

After:

@lresende - I am good with merging into master. We can shake out the issues as more people use it.

Work on https://github.com/elyra-ai/elyra/issues/1278 will continue in a follow up PR so this can be merged.
Once this is merged, until that Issue is addressed, it will be impossible to create a new KFP runtime via the UI. Creating kip runtimes will still; be possible via other methods and editing existing kip runtimes still works.

All CI tests are green, merging.
Again, Thanks @akchinSTC for all the work here...


instead of using an enum in the proxy, use dispatch

e.g. dynamically dispatch function calls for a given name rather than enumerating all fns.
This is not high priority because proxy is a rather small contract so only a handful of enum entries for the fns

is this a thing? 😂 we're not sure

Old - proxy seeing little use, contract migration appears to work ok


Changing entire text block, instead of just name on Google Classroom

On Google Classroom, the extension is changing the entire message to the name, instead of just changing the name
Disabled

Enabled

Google Chrome 89.0.4389.90 (Official Build) (64-bit) (cohort: 89_Win_72)
Windows 10 OS Version 2009 (Build 19042.867)

Same behaviour on Outlook.


Proxy Issue?

I'm on Ubuntu 16.07, and I'm trying to run this cli in a docker environment, but I'm running into proxy problems, and only when trying to configure the CLI.
My command:
RUN go get github.com/jfrogdev/jfrog-cli-go/jfrog \
    && cd /tmp \
    && $GOPATH/bin/jfrog rt dl --url="https://company.com/artifactory" --user="<username>" --password="<password>" "XBKLI/Packages/" \

The CLI commands require the Artifactory URL and authentication details
Configuring JFrog CLI with these parameters now will save you having to include them as command options.
You can also configure these parameters later using the 'config' command.
Configure now? (y/n): [Info] Searching items to download...
y
[Error] Post https://company.com/artifactory/api/search/aql: dial tcp companyip:443: getsockopt: connection timed out

What's puzzling is that I can
RUN echo ${no_proxy}
RUN echo ${http_proxy}
RUN echo ${https_proxy}

just fine, and I get the correct proxies.
I also have a file that sets up my docker environment settings with the correct proxies:
/etc/systemd/system/docker.service.d/http-proxy.conf
Any pointers as to why the proxy settings aren't being picked up/used would be very helpful!

@hackily,
My apologies for the late response.
JFrog CLI does not yet support picking up and using a proxy server when interacting with Artifactory. This is something we're planning to add soon.
We'll make sure to keep you posted.

Is there any timeline for adding support for HTTP proxy support?
I have dozens of projects that I would much rather not generate our own build JSON files to upload builds to Artifactory with. The jfrog-cli tool is a much better solution for our use case, but we cannot use it because we depend on http_proxy support inside our build environments.
I imagine this is similar in many other large enterprise build environments, as it is a common security consideration.

@neechbear and @hackily
Version 1.11.1 supports the http_proxy environment variable. Please try configuring it and let us if you manage to route the CLI's outgoing Artifactory traffic through your proxy server.

That 1.11.1 fix now leads to confusion because no_proxy is not honoured. Could you just use libproxy https://github.com/libproxy/libproxy ? Then you would not need this painful tinkering with resolution...

@jgsuess,
Thanks for letting us know about this.
We'll soon make sure no_proxy is honoured by the CLI and update this issue once done. As for https://github.com/libproxy/libproxy it looks like there's no license added to this repository, so I'm not sure we can use it.

Please see the GPL copy here, as customary.
https://github.com/libproxy/libproxy/blob/master/COPYING

@jgsuess,
The JFrog CLI uses the native golang http module in order to handle proxy settings, including the no_proxy handling.
Can you specify the structure of your "no_proxy" value? Is it Artifactory's IP?
And what is your OS?
I tried on "Ubuntu 17.10" and "MacOS High Sierra 10.13.3" and the problem didn't reproduce.

The no_proxy value is a comma-seperate list of DNS domain and server names.
The OSS are Ubuntu 16.04 LTS and Oracle Linux 6 and 7.
On Wed, 28 Mar 2018 at 23:58 Yahav Itzhak<EMAIL_ADDRESS>wrote:

@jgsuess https://github.com/jgsuess,
The JFrog CLI uses the native golang http module in order to handle proxy
settings, including the no_proxy handling.
Can you specify the structure of your "no_proxy" value? Is it
Artifactory's IP?
And what is your OS?
I tried on "Ubuntu 17.10" and "MacOS High Sierra 10.13.3" and the problem
didn't reproduce.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JFrogDev/jfrog-cli-go/issues/67#issuecomment-376896495,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAvxkQXPEMRAVUcMnMs7I_DhkCRWZtlzks5ti5cAgaJpZM4OAEje
.


Back out "[audio][PR] [Nova] Moving Linux Wheels over to Nova"

Summary:
Original commit changeset: 7e222d80ca07
Original Phabricator Diff: D39756852 (https://github.com/pytorch/audio/commit/7ba7cf4d24a2967b8fa4aaff437116524281f8fd)
This reverts https://github.com/pytorch/audio/pull/2702 and https://github.com/pytorch/audio/pull/2714 so CircleCI jobs come back to normal. I ran regenerate.py and there were no config changes. Here is the plan forward:

If all looks good, merge this, so that original CircleCI jobs that Audio team depends on come back to normal
Verify and merge https://github.com/pytorch/audio/pull/2719. This will ensure that Nova workflows will safely build binaries. CircleCI will continue as well.
Move docstring job to depend on a separate underlying build, so that it does not break when CircleCI-based releases are turned off.
Skip the linux_wheels jobs (build/upload/smoketest). Regenerate the config and ensure no harmful side-effects to other jobs.
Repeat the process with other (mac/windows and wheels/conda). Ensure dependent jobs like docs build and docstring verification are unharmed by moving them to dedicated GHA workflows or having them depend on unittest workflows in CircleCI.

cc @mthrok @hwangjeff Let us know if we are missing anything!
Differential Revision: D39839899

@hwangjeff Windows smoke test issues are unrelated since we don't touch windows jobs here. Unittest job issue seems unrelated as well. Are we good to land? Want to make sure we aren't breaking anything here.

@osalpekar do you know why a different set of Windows jobs is failing here versus #2719?

@osalpekar do you know why a different set of Windows jobs is failing here versus https://github.com/pytorch/audio/pull/2719?

@hwangjeff  https://github.com/pytorch/audio/pull/2719 is based on an older revision (not latest master) of audio. It will be rebased after this one is merged.


[FEATURE] nodeSelector on Helm Chart

Is your feature request related to a problem? Please describe.
Currently is not possible to configure nodeSelector on Longhorn Helm Chart.
Describe the solution you'd like
User could select a simple configuration such as nodeSelector: key=value in values.yml or form. Then the configuration would be applied to non-daemonset workloads (csi-attacher , csi-provisioner , csi-resizer , longhorn-ui, etc).
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

We support the nodeSelector on issue #2199 already, start from Longhorn v1.1.1 https://longhorn.io/docs/1.1.1/advanced-resources/deploy/node-selector/
For user deployed components (e.g, Manager, Driver Deployer, UI), the user could configure https://github.com/longhorn/charts/blob/longhorn-1.1.1/charts/longhorn/values.yaml#L120, https://github.com/longhorn/charts/blob/longhorn-1.1.1/charts/longhorn/values.yaml#L135, and https://github.com/longhorn/charts/blob/longhorn-1.1.1/charts/longhorn/values.yaml#L150
For system-managed components (e.g, Instance Manager, Engine Image, CSI Driver, etc.), the user could configure https://github.com/longhorn/charts/blob/longhorn-1.1.1/charts/longhorn/values.yaml#L85
cc @innobead


[LIVY-633][Server] session should not be gc-ed for long running queries

What changes were proposed in this pull request?
Currently, Livy records the last activity time of the session before statement execution. If a statement runs too long, exceeding then the session timeout, the session will be garbage collected after the statement execution.
This should not be the expected behavior. The statement execution time should not be count into idle. We should update the last activity time after the statement execution.
We cannot be updated when session changes state from busy to idle in the Session class. So in this patch, we add a replLastActivity field into the rscClient, which will be updated when the repl state changes. So when session changes its state from busy to idle, this field will catch the time and finally reflect on the session last activity.
How was this patch tested?
Manual test. Also, add a new unit test.
Existing unit tests and integration tests.

Codecov Report

Merging #224 into master will increase coverage by 0.1%.
The diff coverage is 60%.

@@             Coverage Diff             @@
##             master     #224     +/-   ##
===========================================
+ Coverage     68.25%   68.36%   +0.1%
- Complexity      918      922      +4
===========================================
  Files           100      100
  Lines          5715     5727     +12
  Branches        867      870      +3
===========================================
+ Hits           3901     3915     +14
+ Misses         1246     1245      -1
+ Partials        568      567      -1

Impacted Files
Coverage Δ
Complexity Δ

...c/src/main/java/org/apache/livy/rsc/RSCClient.java
73.93% <25%> (+1.26%)
20 <1> (+1)
:arrow_up:

...e/livy/server/interactive/InteractiveSession.scala
69.36% <83.33%> (+0.25%)
46 <2> (+2)
:arrow_up:

...in/java/org/apache/livy/rsc/driver/JobWrapper.java
82.85% <0%> (-5.72%)
8% <0%> (-1%)

...cala/org/apache/livy/repl/ProcessInterpreter.scala
57.14% <0%> (-2.39%)
6% <0%> (ø)

...scala/org/apache/livy/repl/PythonInterpreter.scala
47.5% <0%> (-0.63%)
9% <0%> (ø)

...scala/org/apache/livy/repl/SparkRInterpreter.scala
60.11% <0%> (-0.58%)
14% <0%> (ø)

.../scala/org/apache/livy/sessions/SessionState.scala
61.11% <0%> (ø)
2% <0%> (ø)
:arrow_down:

...apache/livy/server/batch/BatchSessionServlet.scala
91.66% <0%> (+0.49%)
3% <0%> (ø)
:arrow_down:

...ain/java/org/apache/livy/rsc/driver/RSCDriver.java
77.96% <0%> (+1.27%)
40% <0%> (+1%)
:arrow_up:

...ain/scala/org/apache/livy/utils/SparkYarnApp.scala
66.01% <0%> (+1.96%)
40% <0%> (ø)
:arrow_down:

... and 2 more

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 e6b6ec0...c2314c8. Read the comment docs.

@jerryshao Please help review, thanks


luci-app-ddns: fix div conversion

This fix some error from conversion of #1854
@dibdot should be good
@hnyman also this...
Signed-off-by: Ansuel Smith<EMAIL_ADDRESS>

Thanks!


Checkup les traductions manquantes

commands.fight: "actionsOf" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.8" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.9" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.10" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.11" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.12" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.13" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.14" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.15" is present in french but not in english
commands.fight: "actions.attacksResults.succeed.16" is present in french but not in english
commands.fight: "actions.attacksResults.notGood.8" is present in french but not in english
commands.fight: "actions.attacksResults.notGood.9" is present in french but not in english
commands.fight: "actions.attacksResults.notGood.10" is present in french but not in english
commands.fight: "actions.attacksResults.notGood.11" is present in french but not in english
commands.fight: "actions.attacksResults.failed.8" is present in french but not in english
commands.fight: "error.levelTooLow.direct" is present in english but not in french
commands.guildDaily: "alterationNoHeal" is present in french but not in english
commands.profile: "badgeDisplay" is present in french but not in english
commands.profile: "badgeDisplay.title" is present in french but not in english
commands.profile: "badgeDisplay.numberBadge" is present in french but not in english
commands.top: "topTitle" is present in french but not in english
commands.top: "endFirstWrongPage" is present in french but not in english
commands.top: "endFirstRightPage" is present in french but not in english
commands.top: "endAnyWrongPage" is present in french but not in english
commands.top: "endAnyRightPage" is present in french but not in english
commands.top: "lowScore" is present in french but not in english
commands.top: "yourRanking" is present in french but not in english
commands.top: "playerRankLine" is present in french but not in english
commands.top: "nextReset" is present in french but not in english
smallEvents.bigBadEvent: "alteration.stories.13" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.13.sentence" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.13.alte" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14.sentence" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14.alte" is present in english but not in french
smallEvents.staffMember: "context.7" is present in english but not in french
classes.0: "13" is present in english but not in french
classes.1: "13" is present in french but not in english
classes.1: "14" is present in french but not in english
classes.1: "15" is present in french but not in english
classes.2: "15" is present in english but not in french
classes.3: "26" is present in english but not in french
classes.3: "27" is present in english but not in french
classes.4: "20" is present in english but not in french
classes.5: "24" is present in english but not in french
classes.5: "25" is present in english but not in french
classes.6: "15" is present in english but not in french
classes.6: "16" is present in english but not in french
classes.8: "19" is present in french but not in english
classes.8: "20" is present in french but not in english
classes.8: "21" is present in french but not in english
classes.8: "22" is present in french but not in english
classes.8: "23" is present in french but not in english
classes.9: "24" is present in french but not in english
classes.11: "12" is present in french but not in english
classes.11: "13" is present in french but not in english
classes.11: "14" is present in french but not in english
classes.12: "14" is present in english but not in french
classes.13: "23" is present in english but not in french
classes.13: "24" is present in english but not in french
classes.13: "25" is present in english but not in french
classes.15: "23" is present in french but not in english
classes.15: "24" is present in french but not in english
classes.15: "25" is present in french but not in english
advices: "advices.184" is present in french but not in english
advices: "advices.185" is present in french but not in english
advices: "advices.186" is present in french but not in english
advices: "advices.187" is present in french but not in english

@Pietagorh  si tu as le time de me décharger de cette issue ça sera la bonne journée de ma journée de demain :)

commands.guildDaily: "alterationNoHeal" is present in french but not in english
commands.profile: "badgeDisplay" is present in french but not in english
commands.profile: "badgeDisplay.title" is present in french but not in english
commands.profile: "badgeDisplay.numberBadge" is present in french but not in english
commands.top: "topTitle" is present in french but not in english
commands.top: "endFirstWrongPage" is present in french but not in english
commands.top: "endFirstRightPage" is present in french but not in english
commands.top: "endAnyWrongPage" is present in french but not in english
commands.top: "endAnyRightPage" is present in french but not in english
commands.top: "lowScore" is present in french but not in english
commands.top: "yourRanking" is present in french but not in english
commands.top: "playerRankLine" is present in french but not in english
commands.top: "nextReset" is present in french but not in english
smallEvents.bigBadEvent: "alteration.stories.13" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.13.sentence" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.13.alte" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14.sentence" is present in english but not in french
smallEvents.bigBadEvent: "alteration.stories.14.alte" is present in english but not in french
smallEvents.staffMember: "context.7" is present in english but not in french

Voilà la liste à jour


Page updated

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Exchange-Deployments-2013/performance-factors-and-best-practices-for-hybrid-migrations-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Deployments-2013/transport-routing-in-exchange-2013-exchange-2007-hybrid-deployments-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Deployments-2013/transport-routing-in-exchange-2013-exchange-2010-hybrid-deployments-exchange-2013-help.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add enable_transcoding parameter to Musicmanager.upload [#140]

build failure was unrelated. looks like we'll need to keep an eye on the search query:
AssertionError: playlist_hits had 0 hits, expected > 0
-------------------- >> begin captured logging << --------------------
gmusicapi.Mobileclient12: DEBUG: Search(args=[u'morning', 100], kwargs={})

build failure was unrelated. looks like we'll need to keep an eye on the search query

Yeah, I kinda figured that might happen. Wish we could figure out why this sometimes fails.

:tada:


ceph-: abitlity to copy admin on all the nodes

This commit allows you to set a new variable to 'true' if you want to
have ceph admin key copied over different kind of hosts such as MDS,
OSD, RGW. To enable this just set copy_admin_key to true.
Closes: #555
Signed-off-by: Sébastien Han<EMAIL_ADDRESS>

test this please

test this please

test this please

Hum somehow, the key always gets copied even if set to False and evaluated as False.
@andrewschoen @mattbenjamin @alfredodeza any idea?


Allow custom time-out for openchest

When trying to open more than 10 chests that can't be opened an error will occur due to max number of events. a fix for this would be a failed event, a configurable time-out to remove the event, or a way to remove the event

@unnown Is it really an error, or just a warning ?

What is a chest that can't be opened ?

@rom1504 custom bukkit behavior. Some plugins in bukkit allow you to "lock" a chest so only the owner of that chest can open it. http://dev.bukkit.org/bukkit-plugins/lockette/ or http://dev.bukkit.org/bukkit-plugins/lwc/ are examples of such plugin (see why I say it's useful to cancel stuff ?  I'm surprised this even work a little bit, since mineflayer currently completely assume vanilla behavior.

Why go so far as bukkit?
it's easy enough to do with 11 chests with a block on top, but that would be testable.
but if there is a block between the bot and the chest it would also fail (even if the distance is close enough)
a chest that is simply out of reach (to high)
there are a lot of reasons that could cause a bot not being able to open a chest.
the reason i'm doing this is because i want to automate potion brewing and the bot needs to 'identify' the chests containing the ingredients in a room with several chests (including these pesky 'protected' chests)

Okay I understand, I never tried to open a chest that couldn't be opened, I'm not sure what happens in that case.
About the warning : it's a warning, not an error, that alone is not really your problem. (node is just saying "you are doing somewhere weird, I don't see why you would do that" but it won't cause problem directly)
What is your code to open all these chests ? Anything special ?

not really,
find all chests, (remove double chests),
(chest layout is basicly a 6*7 grid of double chests)
move to first chest,
see if you are close enough (distance check)
try to open it,
if open than check out items and add the chest to it's specific list
if after time-out chest hasn'tt been opened
go to the next chest

Maybe you could paste your code ? just to be sure the pb is not coming from that

will do, have to go home first though, so i'll edit this post when i do

var mineflayer = require('mineflayer');
var navigatePlugin = require('mineflayer-navigate')(mineflayer);
var blockFinderPlugin = require('mineflayer-blockfinder')(mineflayer);
var chestBlock = new Array();
var currBlock = 0;
var bot = mineflayer.createBot({
host: "", // optional
port: 25565,       // optional
username: "", // email and password are required only for
password: "",          // online-mode=true servers
});
navigatePlugin(bot);
blockFinderPlugin(bot);
bot.navigate.on('interrupted', function() { console.log('interrupted'); });
bot.navigate.on('pathFound', function (path) { console.log('pathFound'); });
bot.navigate.on('cannotFind', function (closestPath) { bot.navigate.walk(closestPath); });
bot.navigate.on('arrived', function () {
console.log('arrived');
arrived();
});
function assumeArrived() {
console.log('assumed');
arrived();
}
function arrived() {
var chest = bot.openChest(chestBlock[currBlock]);
timer = setTimeout(function(){ nextChest(); }, 3000);
chest.on('open', function() {
clearTimeout(timer);
nextChest();
});
};
function nextChest() {
if (currBlock < chestBlock.length) {
currBlock++;
console.log(currBlock);
bot.navigate.to(chestBlock[currBlock].position);
setTimeout(function(){ assumeArrived(); }, 1500);
}
}
function findChest() {
bot.findBlock({
point: bot.entity.position,
matching: [54, 130, 146],
maxDistance: 30,
count: 20,
}, function(err, blockPoints) {
if (err) {
console.log(err);
return;
}
	if (blockPoints.length) {
		console.log('found the block');
		chestBlock = blockPoints;
		return;
	} else {
		return;
	}
  });

if(!chestBlock) {
	return;
}

bot.navigate.to(chestBlock[currBlock].position);
setTimeout(function(){ assumeArrived(); }, 1500);

}
bot.once('spawn', function() {
console.log('bot.game.dimension: ' + bot.game.dimension);
bot.chat('/forest');
setTimeout(function(){ findChest(); }, 5000);
});
function parseChat(chatObj, parentState) {
if (typeof chatObj === "string") {
return chatObj;
} else {
var chat = "";
if ('text' in chatObj) {
chat += chatObj.text
} else if ('translate' in chatObj && dictionary.hasOwnProperty(chatObj.translate)) {
var args = [dictionary[chatObj.translate]];
chatObj['with'].forEach(function(s) {
args.push(parseChat(s, parentState));
});
  chat += util.format.apply(this, args);
}
for (var i in chatObj.extra) {
  chat += parseChat(chatObj.extra[i], parentState);
}
return chat;

}
}

I'm curious, would a chest with a solid block above it also be considered a 'chest that can't be opened'?

depends on the block, redstone block, glowstone, those things can be opened anything minecraft thinks is transparent

@Darthfett on vanilla yes. On modded servers, you can make any block open an inventory, even chests with blocks above.

scratch every block. Even a command can open an inventory :laughing: .
Wouldn't it be better for mineflayer to only add one listener to the "window open" event, and close it if it was not expecting it, otherwise let whoever opened it use it ?


copr: vectorize ceilinttodec

Signed-off-by: AerysNan<EMAIL_ADDRESS>PCP #5751
What have you changed?
Please explain in detail what the changes are in this PR and why they are needed:
Vectorize CeilIntToDec.
What is the type of the changes?
Improvement (a change which is an improvement to an existing feature)
How is the PR tested?
Unit test
Does this PR affect documentation (docs) or should it be mentioned in the release notes?
No.
Does this PR affect tidb-ansible?
No.

@sre-bot /run-integration-copr-test

@sre-bot /run-integration-copr-test

@mapleFU @iosmanthus PTAL, thanks!

/merge


closeOnClickOutside not working. when clicking the outside of daterange picker, the picker not closed.

@gmariammal When you run example in this project and set closeOnClickOutside={true} in DateRangeCard is it working?


Create german_misc.txt

Hi there,
this is a list of modern German words. Source is myself :-) and some new words from the semi-official language bible (Duden, new edition 2020). Idea was from a pentest where too simple words from the presence were just allowed. So I thought why not share this.
Actually I wanted to add this to Miscellaneous/lang-german.txt but this file is severly broken, and I didn't want to add it to such a file. (I read this before here but as a reminder Umlaute are missing (file is 7 bit US ASCII) and some words just don't make sense like Aangriff, AanschlusS, Bil (is Danish/Norwegian), Bikuspidat, Cgeknatter, Cfamilien,CharaktergroBe,... Probably like 30% of the content is useless. IMHO this file needs to be replaced.)
Some of the words in this PR like Schmähgedicht appear also in Passwords/dutch_common_wordlist.txt which kind of surprised me. But I thought it would be important to add those words to a separate file bc users might not look there as it is known more in Germany as in the Netherlands.
Cheers, Dirk

Thank you!


Python 2.7 crashes on extension load, and various features such as linting fail

Issue Type: Bug
When the python extensions load, python 2.7 it immediately raises SIGABRT, and various features such as linting fail to work.   The documentation shows that the system install of python is not supported for various things and I wonder if this is perhaps related.  Ideally none of the extensions should be using python2.7 as it is EOL and I have selected 3.7 as my interpreter, so I know it isn't my code that is crashing.
Extension version: 2020.8.101144
VS Code version: Code 1.48.0 (db40434f562994116e5b21c24015a2e40b2504e6, 2020-08-13T08:03:27.059Z)
OS version: Darwin x64 17.7.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-5287U CPU @ 2.90GHz (4 x 2900)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
15, 12, 12

Memory (System)
16.00GB (0.17GB free)

Process Argv

Screen Reader
no

VM
0%

> python2
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 19 2020, 20:48:48)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information
>

I can run the interpreter just fine and have few installed packages, so VSCode must be doing something weird.
> python2 -mpip list
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Package       Version
------------- -----------
-             ndocfilters
-andocfilters 1.4.2
-ySQL-python  1.2.5
pip           20.0.2
setuptools    41.2.0
wheel         0.29.0

Process:               python2.7 [22071]
Path:                  /Users/USER/*/python2.7
Identifier:            python2.7
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        Code Helper (Renderer) [21950]
Responsible:           Electron [72570]
User ID:               507

Date/Time:             2020-07-21 15:04:37.523 -0700
OS Version:            Mac OS X 10.13.6 (17G13035)
Report Version:        12
Anonymous UUID:        B57F292F-980F-BDD0-22C6-7321EAE5B44C

Time Awake Since Boot: 800000 seconds

System Integrity Protection: enabled

Crashed Thread:        0

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Application Specific Information:
dyld: launch, loading dependent libraries

Thread 0 Crashed:
0   dyld                          	0x0000000103aeb256 __abort_with_payload + 10
1   dyld                          	0x0000000103aeabc8 abort_with_payload_wrapper_internal + 89
2   dyld                          	0x0000000103aeabf5 abort_with_payload + 9
3   dyld                          	0x0000000103abe482 dyld::halt(char const*) + 354
4   dyld                          	0x0000000103ac1533 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 8004
5   dyld                          	0x0000000103abb3d4 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 453
6   dyld                          	0x0000000103abb1d2 _dyld_start + 54

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000002000209  rbx: 0x0000000000000001  rcx: 0x00007ffeeedc8648  rdx: 0x00007ffeeedc8ac0
  rdi: 0x0000000000000006  rsi: 0x0000000000000001  rbp: 0x00007ffeeedc86a0  rsp: 0x00007ffeeedc8648
   r8: 0x00007ffeeedc86c0   r9: 0x0000000000000000  r10: 0x0000000000000064  r11: 0x0000000000000246
  r12: 0x0000000000000064  r13: 0x00007ffeeedc8ac0  r14: 0x0000000000000006  r15: 0x0000000000000000
  rip: 0x0000000103aeb256  rfl: 0x0000000000000246  cr2: 0x0000000103b3bfe0

Logical CPU:     0
Error Code:      0x02000209
Trap Number:     133

Binary Images:
       0x100e35000 -        0x100e36fff +python2.7 (0) <9CD143CC-C6A2-345F-B19A-61366A62A977> /Users/USER/*/python2.7
       0x103aba000 -        0x103b04adf  dyld (551.5) <CB9BFB56-4511-36F1-A546-891FF770C01C> /usr/lib/dyld

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 77148632
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=420K resident=0K(0%) swapped_out_or_unallocated=420K(100%)
Writable regions: Total=8404K written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=8404K(100%)

                                VIRTUAL   REGION
REGION TYPE                        SIZE    COUNT (non-coalesced)
===========                     =======  =======
STACK GUARD                       56.0M        2
Stack                             8192K        3
__DATA                             228K        5
__LINKEDIT                         112K        3
__TEXT                             308K        3
shared memory                        8K        3
===========                     =======  =======
TOTAL                             64.6M       13

@bbappserver We just want to quickly acknowledge that we have received the issue and will be looking into it soon.

@bbappserver Please provide the logs as mentioned in the issue template which contains the command the extension runs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

When discovering interpreters, extension may run things that are on your PATH so please double check that python2 is not on your PATH environment variable if you don't want us to run it. Btw, how do you know if it's python2 that's raising the error?

You're spot on 🙂 actually we look into your filesystem for discovering interpreters, that includes the .virtualenvs directory. The discovered interpreters are the one which appear in the dropdown list when you click Select interpreter. In order to fetch version and other details, we run them, which is what was happening.
We're working on getting such details without having to run the interpreter. All of this & more with https://github.com/microsoft/vscode-python/issues/12020.

As the LS problem is unrelated, I recommend opening a new issue if you still face it.