Merge the adjacent filter

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
 explain select c1, c2 from test where c3 = true and c2 = 0.000001;

+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
| plan_type     | plan                                                                                |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
| logical_plan  | Projection: #test.c1, #test.c2                                                                                |
|               |   Filter: #test.c3                                                                                |
|               |     Filter: #test.c2 = Float64(0.000001)                                                                                |
|               |       TableScan: test projection=Some([0, 1, 2]), filters=[#test.c3, #test.c2 = Float64(0.000001)]                                  |
| physical_plan | ProjectionExec: expr=[c1@0 as c1, c2@1 as c2]                                                                                |
|               |   CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |     FilterExec: c3@2                                                                                |
|               |       CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |         FilterExec: c2@1 = 0.000001                                                                                |
|               |           RepartitionExec: partitioning=RoundRobinBatch(8)                                                                          |
|               |             CsvExec: files=[/home/jakevin/code/arrow-datafusion/datafusion/tests/aggregate_simple.csv], has_header=true, limit=None |
|               |                                                                                |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+

Describe the solution you'd like
add merge rule to combine the filter.
Describe alternatives you've considered
Additional context
Some discussion detail in #2015

I'm trying to do it.

Is there any practical experience that proves this is profitable, or are there any databases that have done it?


Add gatsby-plugin-i18n support?

Any chances of adding gatsby-plugin-i18n support for this starter? I actually tried myself for a couple of hours, but I couldn't make it work, I'm still new to Gatsby.
I think it's way nicer to have pages/about.en.js than pages/about/index.en.js, same for posts.
Thank you.

Sure, I'll add the plugin and I'll add some pages as example asap.

Thanks! I ended up adding my own translation logic. But I still think that would be useful to your template, which is already really nice btw, thanks for sharing it.

Plugin added.


New check 7159 ELB Classic Load balancer has listeners underneath @kbgoll05

Adding a check to verify if ELB Classic Load Balancers have listerners underneath.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Awesome, thank you @kbgoll05!!


Warning : Queue head returned a request that is already in progress

Which package is this bug report for? If unsure which one to select, leave blank
@crawlee/core
Issue description
We have noticed a warning message in our crawlee logs, and we'd like to address it more elegantly:
Queue head returned a request that is already in progress?!{"nextRequestId":"UYy6hMyaThHCBAF","inProgress":true,"recentlyHandled":false}
This issue specifically arises when we utilize the sameDomainDelaySecs feature with<EMAIL_ADDRESS>Interestingly, we do not encounter this problem when using the same feature with<EMAIL_ADDRESS>Consequently, we suspect that this warning may be connected to this fix https://github.com/apify/crawlee/pull/2045 .
Could someone kindly investigate this matter further?
Code sample
No response
Package version
3.5.4
Node.js version
18.17.0
Operating system
No response
Apify platform

[ ] Tick me if you encountered this issue on the Apify platform

I have tested this on the next release
No response
Other context
No response

@B4nan

Hey @B4nan any update on this?

@B4nan any update?

When there will be updates, you will see them.
https://sindresorhus.com/blog/issue-bumping
Note that sameDomainDelaySecs is a feature brought by the community, and it apparently introduces some new issues. We simply do not have the capacity to tackle those right now, and as a community feature, it won't get a high priority most likely any time soon.

I was encountering Queue head returned a request that is already in progress?! and Error: Lock file is already being held.
Disabling sameDomainDelaySecs fixed it. Hope that helps anyone else searching for the lock file error.

I ran into this issue trying to use sameDomainDelaySecs: 1 and maxConcurrency: 1 to slow down crawling of a website, mainly out of a sense of civic responsibility. I tried using the experimental RequestQueueV2 but found that that ended up hanging forever.
The solution I found was to use a preNavigationHook:
preNavigationHooks: [
    async () => {
      // sleep for 1 second
      await new Promise((resolve) => setTimeout(resolve, 1000));
    },
  ],

This accomplished what I wanted, with crawling now proceeding at the desired speed, and no weird warnings or errors. This only has the desired effect with maxConcurrency: 1, any higher there are no guarantees about delay between website hits.
Hoping issues with sameDomainDelaySecs are resolved soon as that would be a preferable method.


Circle CI cannot access git binary on the image

When I deploy via circle ci I get a message during the Checkout Code section that says:
Either git or ssh (required by git to clone through SSH) is not installed in the image. Falling back to CircleCI's native git client but the behaviour may be different from official git.
First noticed during an upgrade to helm version 3 using the image tagged with 1.23 but I tested again with version 1.25 this morning with the same result.
See here for example of the issue:
https://app.circleci.com/pipelines/github/ministryofjustice/laa-apply-for-legal-aid/5461/workflows/3a8e131e-a407-42ab-8b10-ad8ac0a5c2c6/jobs/39942

Sorry for closing before a message. This has aged out and I believe it may have resolved itself - I seem to remember having a convo about it in slack.


ui-routes doesn't update parent views.

I have a huge issue updating the views of the parent states when the user clicks on a ui-sref link.
There is a description with details and my temporary solution here:
http://stackoverflow.com/questions/27486201/ui-router-renders-template-before-state-changes/27500463#27500463
The title is misleading, but if you read the whole question you will understand what goes on.
Any suggestions/ideas on what might be wrong?

https://gist.github.com/eddiemonge/f6a58169c2846731a1eb


Updated UID generation in DefaultClaimUidExtractor

Issue - #30
@blowdart @rynowak

:watch:

Updated.

Need to add more tests. Will do it once the updated design is accepted.

:watch:

:watch:

Updated.

:watch:

Updated.

:watch:

Updated.

:shipit: from me. Get a signoff of @dougbu and @blowdart also

:shipit: with a couple more tests. Suggest walking @blowdart though the tests and getting his agreement on the new behaviour.

Updated and Rebased.

Ping @blowdart

Works for me. Might need more kittens though.


Add nocase collation to SqLite

Address issue #121

@sebastienros this is WIP, but i'm wondering if there's a better way to override the CreateColumnCommand instead of repeating ICreateTableCommand implementations

Can't you just add collate nocase to the TEXT value in the Sqlitedialect ?

Or just change the dialect interface such that it can have an extra piece of text added in DDL scripts

Also, don't forget to add a test case that would order a list of elements based on a string property, and has a mix of upper case and lower case values for instance [ 'Add', 'added', 'Addition', 'Be', 'behold']

Can't you just add collate nocase to the TEXT value in the Sqlitedialect ?

I was thinking of such thing before I push the PR 😄, let me check if this is doable or shall I change the dialect interface

Also, don't forget to add a test case that would order a list of elements based on a string property

Of course .. that's while I told you it's still WIP

@sebastienros I used a compiled queries for the unit tests, if this is fine, please do a final review

The whole PR is a big HACK that happens to work.
Have you at least tried to just change "TEXT" to "TEXT COLLATE NOCASE" in the list of types? And that's it, can't be simpler than that for the exact same features.

The whole PR is a big HACK that happens to work.

As I mentioned above on the comment I made the HACK because you stick the integer with IdentityColumnString, please refer to my comment here

Have you at least tried to just change "TEXT" to "TEXT COLLATE NOCASE"

I think it's a bad idea 😞, if we rid off the integer part there will be no HACK, because ColumnCollation  will have COLLATE NOCASE that come from the SqLiteDialect

I don't understand what you call "the integer part "

If you look closely to this line, you will see that the integer attached here which is should be come from GetTypeName() if this is fixed the code will become
if(ColumnCollation != String.Empty)
{
     builder.Append(Space).Append(_dialect.ColumnCollation);
}

so no HACK is needed

Thank you for your effort but

you are inventing features this PR is not supposed to solve
you are mutating the dialect instance while its types are resolved (ColumnCollation changes on the fly without being reset)

If you think there is a problem with how the identity column works, file an issue showing what scenario you can't achieve. Because I still don't know what problem you are trying to solve. It might just be you are not at ease with how things work in YesSql, but I don't want to add complexity that is not adding any value for the end user.

It's fine .. if I knew that breaking rules is allowed the PR is nothing but adding a COLLATE NOCASE to a TEXT data type 😄
But again i'm not wrong this doesn't solve a unicode ordering


Switch to coreclr for restore (at least on xplat)

It works better than mono.
/cc @dougbu @pranavkm

Self-assigning and moving into this milestone. Travis is just too annoying.

Reopening since 4e87b0c was not a fix for this bug.

Part one of another run at this bug: aspnet/DNX@a2ed65a

Part two: 419d3a3

Travis runs on Ubuntu 14.04 and performs dnu restore using .NET Core in all of our repos now.


pull request for e2e test at 01/15/2017 23:45:12

:white_check_mark: Validation status: passed
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.


didChange vs didChangeWatchedFile

I have the impression that the didChangeWatchedFile notification is too much. Why do we need it when we already have didChange/didSave? It seems simple to send a didChange and/or a didSave for a file (even if it wasn't open first) when we see a change. What makes the watches files so special?
Overall, I think this operation is too much, and the real issue when trying to consume watched files is more to be informed from the server about which files to watch.
Cf https://bugs.eclipse.org/bugs/show_bug.cgi?id=516216

Do you mean that it should be a responsibility of a server to watch a root directory, not a tool? And didChangeWatchedFile is redundant because of it?

@dbaeumer Why a language client should be a source of file changes? It makes sense to me in the case with documents, but thinking about files, language servers have direct access to a file system  compare, for example, to a client running in the browser. In such cases a client should be first notified about changes and then dispatch them between servers, which could introduce additional traffic and latency.

DidChangeWatchedFiles Notification

The watched files notification is sent from the client to the server when the client detects changes to files watched by the language client.

and
DidChangeTextDocument Notification

The document change notification is sent from the client to the server to signal changes to a text document.

It seems like those 2 operations do the same thing. The only difference is files watched by the language client. If so, it could be better to merge both notifications, better define files watched by the language client and probably create a dedicated option in capabilities to be informed about what those files are.

didChangeWatchedFiles only notifies that something has changed, without sending the change. So it's a lightweight system, where using didChange could mean sending potentially hundred of megabytes of text (if a Java project changes JRE, for example).
If the server can keep track of the changes itself, I suppose it's not mandatory to send these messages at all, but we don't know what the server supports, because there is no server capability that lets the client know about that and there are a lot of servers out there.

suppose you open a folder in the client.
the folder has 2 files
the first file is opened in the client and this gets didChange messages.
now the second file is changed on hd e.g. via git update etc.
now the client informs the server about this change via didChangeWatchedFile
and the server can react on this an reindex/validate etc this file

@cdietrich: ok, but wouldn't a didChange notification allow to do the same thing?

@vladdu thanks, that's an interesting point. Maybe it would make sense to allow didChnge to not pass text content and retrieve it from the LS workspace?

well why then a initialize request if the client can open all files and close the unwanted ones?

@mickaelistria didChange is about a client state which is not necessary persisted, if the client don't pass it then the server cannot know about it and would work with outdated state from the disk. We should not mix it with didChangeWatchedFiles which notify about changes on the disk.
I wonder why file changes should go through a client and potentially, when a client does not live  next to the disk, creates network latency. If we remove this event and force servers decide what, when and how to watch, it simplifies a client side code and improves performance.
At least it could be worth while to add something like ClientCapabilities.workspace.watchFiles to test whether a client supports file system watching.

We should not mix it with didChangeWatchedFiles which notify about changes on the disk.

So it's a bit like didSave then?

I wonder why file changes should go through a client and potentially, when a client does not live next to the disk, creates network latency. If we remove this event and force servers decide what, when and how to watch, it simplifies a client side code and improves performance.

+1

If I understand correctly, the current assumption is that client and the server are at the same distance from the disk, and then it doesn't matter which one watches it. But in theory, the disk could be close to the client, or to the server, or to neither. The server and client need not even share the filesystem, if they can handle http:// URIs. Of course, this is speculative at the moment.

Great discussion. Some historical background why we decided to add this:

to our experience getting file watching on disk right is challenging, especially if it needs to be supported across multiple OSes.
file watching is not for free especially if the implementation uses some sort of polling and keeps a file tree in memory to compare timestamps (as for example some node modules do)
if a client starts n servers (which it usually does) n servers need to get this right plus we have n servers doing the watching

So we thought that it would make sense to forward these file change events to the server since most tools already what the file system.
What is the difference to didChange: didChange events are only send for document for which a didOpen got send. didOpen, didChange, didClose is the live cycle of a document buffer and the buffer must not necessarily exist on disk.
I like the idea of adding a client capability to signal if a client can provide these events at all. And one thing that I missed to spec and implement is that a server can dynamically register for file events or ask for file events on the initialize result. We should add both to the spec and implementation.

@vladdu It is not in theory already, there are applications, like RBrain or sourcegraph which run clients in browsers and use git as a disk for example.

@dbaeumer your points are valid, but it could be solved out of scope of the LSP:

like providing libraries for language servers;
or deploying a file server next to the disk that notifies both clients and servers directly

In that case watching logic will move from tools' extensions to servers. Right now it is duplicated among extensions for different tools.

@dbaeumer Thanks for the background.
I think it's challenging to keep it that way, though. More heavy-weight servers that come with their own index, need some form of index reconciliation on startup to catch up on changes that happened while the server was off-line. Should it become part of every tool/extension to implement a per-server delta/change tracking?
Also, when this becomes an optional client capability, those heavy servers may be required to implement it themselves anyway in order to be interoperable with many tools. From a server implementor's point of view, I think it's a maintenance-/test-nightmare to rely on functionality implemented independently by each tool. There won't be two single tools behaving exactly the same.
I like the idea of providing/recommending libraries to server implementors where available.

I am not saying that a server can't add its own file watching. With the 3.0 version of the protocol I made the option dynamic anyways so a server can simply not register for file events and run its own library. We can if necessary add a property to the initialize request as well. If a server doesn't register for file events and the client library is not instructed to send any then a server currently doesn't receive any file change events.
But removing this options is not a good idea either since it puts quite some implementation pleasure on simple servers as well that are interested in watching some files.
I opt to close since it is possible to implement a server that does its own file watching.

Moving to 4.0 to consider client capability setting and server initialize setting.

@dbaeumer the explanations in this issue are great. It would be awesome to have them in the actual doc ;-)

I updated the spec with some of the comments from here. Whether this should become an optional feature is open for discussion however will break existing servers.

I see it alluded to, but not explicitly mentioned.  The server and client may not live on the same machine.  For companies with large code bases there may be benefit in running a remote server so I would prefer not to assume the server is always local to the client.

@ShaneDelmore this is another topic and discussed in another issue. The current protocol is not tailored for

remote servers
multi tenant servers


Enddat 138

Mark could you use git hub comments to point out the places where you want me to look?

@mbucknell - little bit of a catch-22 right now, I'm making progress on some of the issues, so the code is in flux.  I'm getting nervous about my progress because I don't want to hold you up but maybe best to wait until I have another push.

@mbucknell - This is still rough but wanted to get latest up in case you could review and guide.  The code doesn't throw any errors, but I still need to make sure I have the correct model structure, load the model/collection correctly, setup the mapView to listen to changes on the SiteModel, setup proper error handling, create tests.  Every task I am still learning/reinforcing fundamentals so it is painfully tedious.  Let me know if you would be willing to pair code/tutor to help me accelerate learning curve.  Thanks.

@mamcderm-usgs , I think you should probably close this pull request. It really was just for reviewing code.

@mbucknell - I pushed the latest code.  I still need to setup the listener and write tests so this is available in case you have time to review before I get those done.  I setup the parameter codes and statistic codes as backbone collections, as we discussed, but I'm still not sure that a backbone model wouldn't be simpler/better for those.  Please send any other suggestions you have for the promises, error handling, fetches, etc.

@mamcderm-usgs, could you close this pull request and open a new one? That way we can start fresh.


Conflicting tasks in roles/add_cluster_node/tasks/main.yml

There's a missing line to start the second task in roles/add_cluster_node/tasks/main.yml file. The first task "stat" is then in conflict with "ibm.isam.isam" because of this.
The playbook crashes with a ERROR! conflicting action statements: stat, ibm.isam.isam

Ansible-lint can now finish without crashing, this role is fixed as a side-effect


alua:fix untrack when implicit transition not success

when client login, alua_implicit_transition always return with lock state 2
this patch just fix it.
Signed-off-by: Zhang Zhuoyu<EMAIL_ADDRESS>

Good catch and looks good to me.

Thanks and thanks for the review lxbsz.


Swift Tools 5.2 Support

Hello,
I was trying to use Prelude in a Swift Script I was building where swift-tools version was 5.2 but I couldn't get it to build. It appears that v5.2 introduces breaking changes to the format of Package.swift.
I made some changes here and there and I was able to get it to work.

Sorry, this was autoclosed while doing some maintenance! We don't have concrete plans to address the package tools issue, but if we continue to work with projects depending on Prelude, we will eventually be updating things, probably beyond 5.2 :) Thanks for PRing, though!


Old actions in use in Solver

I had a craft where it tried to use Focused Synthesis but it has been removed in 7.0

Skill references to the removed abilities has been removed from the code so I'm afraid that won't be possible. I suppose the only way this is possible is if you're using it in a macro created before the update, in which case you should update the macro or remove it.


Support custom functions

(Copied from this comment in phylll#32)
I've felt inspired to think about MMM support for custom functions. Shouldn't be too difficult to implement. Syntax is more interesting to ponder.
Define function – scoped to the script that contains the definition, like variables:
!mmm function foo(bar, baz)
!mmm     chat: Foo, my ${bar} is ${baz}'d!
!mmm     return sender.(bar & "_" & baz)
!mmm end function

Call function – like any other:
!mmm do foo("ammo", "use")
!mmm set remaining = foo("life", "challenge")

That's the baseline. What else?

Maybe functions defined outside of scripts are persistent (in the API sandbox instance) until overwritten?
Maybe the GM can define global functions available to all players (that run in the same API sandbox instance)?
Maybe syntax sugar for function calls with many parameters, or with named arguments (instead of positional arguments)?

Access to the main script's variables: yes or no?

Each function call gets its own variable stash. Only the parameter variables are initialized (to their corresponding argument values; absent arguments are initialized with the special default value).
Maybe: Function code gets read-only access to the script's variables through a special variable called script – e.g. script.cOwnID to access the cOwnID variable defined on the main script's level.
Maybe: Function code gets read-only access to the parent function call's variables through another special variable called caller. I struggle to imagine what the use case for that could be though.

All of this is very much like Christmas in MMMland, quite appropriately timed :)

* **Maybe:** Function code gets read-only access to the script's variables through a special variable called `script` – e.g. `script.cOwnID` to access the `cOwnID` variable defined on the main script's level.

This would be extremely useful. In my very pedestrian experiments with "library" code, I found quite a few instances where I need to use a lot of variables global to each script, particularly as long as I won't be able to handle struct variables. This would make for loooooong list of parameters and providing easy read-only access to all of this would be super helpful, including the read-only part in terms of avoiding mistakes.

* **Maybe:** Function code gets read-only access to the _parent function call's_ variables through another special variable called `caller`. I struggle to imagine what the use case for that could be though.

Me, too. If we had the script.var feature, anything else I can think of can easily be handled using explicit function parameters.

Very good!

script.foo to read the main script's foo is definitely supported.

If you call a function with fewer arguments than it has parameters, those extra parameters are initialized with the special default value so you can write function code to apply custom defaults that are able to distinguish "no argument given" from "argument given as undef".

Global functions – those defined outside of a script block – is supported. They're lost as soon as the API sandbox is stopped or restarted; we may have to think of some way to work with that fact.

Global functions are per-player. There's no way to see which global functions are currently defined, but you can check the existence of any given (global or script-local) function with if funcname (note absence of parentheses: this isn't syntactically a call of funcname).

Customizations of the main script done via preceding !mmm customize blocks extend into functions, including global functions – so you can use chat [label]: and set customizable in functions, too.

Global functions – those defined outside of a script block – are supported. They're lost as soon as the API sandbox is stopped or restarted; we may have to think of some way to work with that fact.

Would it be one way of working with that fact to simply make sure that every script "loads" all required functions upon execution? I think that would not be difficult to do, in particular if MMM had no trouble with the same function being loaded several times (and thereby overwritten). If that would be fine, MMM scripts could simply include all required functions using the Roll20 include syntax (%{Sheet|Ability} or #Macro).

It'd work for sure.
It just seems unnecessarily wasteful to not take advantage of only having to parse functions once. :)

O-kay. Right. So what do we do? Could MMM simply skip any duplicate global function blocks? I don't see a way from my end to only include the code if it hasn't been included before. I guess you could call some predefined autostart macro the first time any particular player calls MMM...?
In other news, I am happy to have implemented my first MMM functions using the currently installed 1.24.0-pre :)

Something like "autorun" macros was on my mind, too. Or, well, have players manually run the "library macro" at session start.
For now, simply redefining all functions on each run will be fine. Performance issues are non-issues until observed.
Glad you like 1.24.0-pre – it's still got some issues with accessing outside data from within a global function especially when calls are nested. Working on it!

One of the things that are yet to make to work is being able to call functions that were defined on script level from a global function called by that script:
!mmm function foo()
!mmm     do script.exclaim("It is I!")
!mmm     do script.exclaim("Who dares to challenge me?")
!mmm end function

!mmm script
!mmm     function exlaim(msg)
!mmm         chat: Hark!, ${msg}
!mmm     end function
!mmm     do foo()
!mmm end script

!mmm script
!mmm     function exlaim(msg)
!mmm         chat: ${msg}, I say!
!mmm     end function
!mmm     do foo()
!mmm end script

For that matter, you can also pass functions as parameters or assign them to variables.

I didn't have a use case for this problem, yet. What I did encounter is the inability so far to call one global function from another, if I'm not doing anything wrong here.
This...
!mmm function bar()
!mmm     return "Hello!"
!mmm end function

!mmm function foo()
!mmm     return bar()
!mmm end function

!mmm script
!mmm     chat: ${foo()}
!mmm end script

... leads to this error:

(From Mych's Macro Magic):
During execute, During execute, unknown function in expression in script: return bar❌() in expression in template in script: !mmm chat: ${❌foo()}

And as you mentioned above, access to script.var from a global function does not work yet:
!mmm function foo()
!mmm     return "The answer is " & script.testVar
!mmm end function

!mmm script
!mmm     set testVar = 42
!mmm     chat: ${foo()}
!mmm end script

... results in ...

The answer is

Both issues are connected – fix upcoming.

The latest prerelease seems to fix all known issues.
Things left to do:

Better diagnostics for malformed parameter lists. Currently, if anything is wrong inside the parentheses, the error message will point to the start of the parameter list.

Better diagnostics for runtime errors in (nested) function calls. Currently, such errors produce a correspondingly nested message that's hard to parse for humans.

Aside: It looks like some MMM error messages do and some don't include the leading !mmm. Normalize this to always show the entire command including !mmm.

Documentation.

The latest prerelease fixes the !mmm diagnostics inconsistency and improves nested-call error messages, which now look something like this:
During execute, unknown function in expression in script: !mmm     do runtimeError❌()
Called from: !mmm     do ❌test3()
Called from: !mmm     do ❌test2()
Called from: !mmm do ❌test1()

The "diagnostics for errors in parameter lists" amazingly turns out to be a non-issue because the parser consumes as much of the parameter list as can be interpreted as a valid one, and then points to the character afterwards for the error – close enough! (It's really just a matter of taste whether the error in test(foo,) is just before or just after the comma.)

Speaking of error diagnostics and the location of an error – I've been wondering what kind of information might make it easier to identify which line the error occurred in?

I'm already quoting the entire source line containing the error, but if it's just some variation of !mmm do func() that may not be particularly unambiguous.

Line numbers are tricky: Do non-!mmm lines count or not? If not, how useful is a line number if you can't use your text editor to address it?

Speaking of error diagnostics and the location of an error – I've been wondering what kind of information might make it easier to identify which line the error occurred in?
...

Would spiri support for end-of-line comments help to mitigate the ambiguity?

What does "spiri support" mean? "Boost Spirit" was my closest match on Auntie G...

Line numbers are tricky: Do non-!mmm lines count or not? If they do, what about non-!mmm lines leading the !mmm script line? If not, how useful is a line number if you can't use your text editor to address it?

Agree. With various %{...} includes, in particular, it's quite unrealistic for anyone to match MMM's line numbers as received from Roll20's auto expansion to their scripts in a way that would be helpful for debugging.
How about thinking in a slightly different direction? Could MMM add more info to identify the active block(s)? Function names as part of error messages would help, and functions should not be so complicated as to contain lots of identical lines, should they? Maybe error messages could even contain other open blocks ("in if foo==bar, in combine chat, in for item in list, in m3mgdMyCrazyLoopingFunction()")? And script blocks could get (optional) names, too (!mmm script rangedAttack)?

"spiri support" was Siri channeling… dunno, the spirit of Christmas maybe? I really just meant plain "support" (for end-of-line comments). You could disambiguate several identical do func() lines by adding a comment like do func() // first try.
Identifying a call stack of blocks sounds interesting. I'll think about that.


update example apps

I was discussing with Eric Ernst how to demo PMEM-CSI. He suggested running fio on volumes while I pointed out that raw file performance misses the semantic aspects of PMEM (byte addressable, like RAM). For that, we can use the https://github.com/intel/pmem-csi/blob/ee3200794a1ade49a02df6f359a134115b409e90/test/cmd/pmem-dax-check/main.go test program. We also discussed that it's currently tricky for a user to pull all of that together.
Therefore we concluded that it would be useful to:

include pmem-dax-check (built from source) and fio (via swupd bundle-add fio) in the pmem-csi-driver-test image
replace the "busybox" image with "pmem-csi-driver-test" in the example app YAML files

hack/set-version.sh should already lock down the image version also in the example app YAML files, but we need to test that once.

Updating documentation can come later, after https://github.com/intel/pmem-csi/pull/562 has been merged.

I think it makes sense to branch for this PR after #561 gets merged

To clarify do I get the current state correctly in context of proposed changes and method:
We want to add something in BIN_SUFFIX=-test docker image but not in production image.
In Dockerfile we have comment stating:
# Here we choose explicitly which binaries we want in the image and in
# which flavor (production or testing).

However, I don't see actual code implementing copying different set of images (production vs. testing), instead, there is same copying code, using different value of BIN_SUFFIX, but that does not select "explicitly which binaries" as comment explains.
So does current change plan mean we need to introduce if/else block there so that we add more binaries (and run more swupd bundle-add) if BIN_SUFFIX=-test ?

We want to add something in BIN_SUFFIX=-test docker image but not in production image.

Correct.

So does current change plan mean we need to introduce if/else block there so that we add more binaries (and run more swupd bundle-add) if BIN_SUFFIX=-test ?

Something like that, yes. Whether it is done in the Dockerfile or in the Makefile is up to you.


JAMES-3775 Task should only count messages in the period

We always count all spam/ham messages before.

Maybe add 1 test to highlight your change?
Given Mail A at T and Mail B at T+2day
When I report spam for the last day
Then the email count is 1


Incorrect bbs calculation in some yft vehicles

These weird meshes in some yft vehicles are messing up the bbmin/max/center calculations.

sultanrs.yft

Fixed in 87716ee243f2775c39c3b838cc1e1fdd5779ff07


[Form Recognizer] The environment has not become ready in UsGov cloud.

We are running live Tests against other clouds like US Gov and Azure China Cloud. The goal is to check whether new azure sdk package work with other clouds or not.
Error Description:
Some test cases using TestEnvironment failed to run on UsGov cloud. For details, please click here.
Error Message:
OneTimeSetUp: System.InvalidOperationException : The environment has not become ready, check your TestEnvironment.IsEnvironmentReady scenario.
Expected Behavior:
These test cases can run normally.
@scottaddie , @AlexGhiondea, @benbp , @maririos, @meeraharidasa , @mayurid for notification.

This is a transient issue with the ARM plane.  No action is needed nor can be taken from the client library.   Closing.


Version 0.22 Tracking

The tracking thread for 0.20 (#1364) worked well to keep me working on it with a specific end goal, rather than just experimenting with different ideas and never actually finishing anything... so here's a thread for 0.22.
I'll be posting an update here every week or two with what I've done. The Version 0.22 project is a good place to look for what remains to be done.
Version 0.22 will be released no later than July 30, 2021.
Note: This was originally slated for version 0.21, but #1567 deserves a minor release, so will be releasing as 0.22 with the same timeline.

With version 0.22, I've decided it's finally time to give the default theme some work. The existing one works reasonably well, but has some issues.

Maintenance and upgrades are painful. Themes in 0.20 are written in Handlebars, which has worked for 6 years, but is showing it's age.

Even though the rendered models are fully typed, we can't take advantage of this for error checking
Doing anything more complicated than swapping a bit of markup requires learning how to use handlebars

Better solutions exist. The plan for 0.22 is to use JSX for templating, which means that themes can be written with TypeScript, just like the rest of your code.

There is no good way for plugins to add additional information to a page. Right now, plugins have to either ship a custom theme, or do string find/replaces in order to inject content into the page.
The plan to fix this is to add hooks into the page which allow plugins to inject content. Further, since the JSX templates are initially serialized to plain objects, event listeners may be used to selectively remove or replace parts of the page.

It's 2021. Sites should respect your light/dark theme preferences.

Just doing these three would be fairly simple, but there are a few secondary goals that I'm also trying to meet.

Allow better configuration of how TypeDoc renders documentation without requiring creating a whole custom theme. (#307, #1060, #1108)
Fix invalid HTML generation (#1135)
Fix issues with the themes when the user doesn't have JS turned on. (#453)

... and because I didn't learn my lesson last time, I'm experimenting with building the new default theme from scratch rather than just copying over the handlebars theme, despite not really enjoying frontend work. If you are interested in helping/leading this effort, please reach out!

This week was mostly focused on maintenance.  I fixed 3 bugs and released v0.20.34.
I spent a bit of time experimenting with a design for the default theme (will probably share next week), but most of the time for 0.21 was spent on a11a9292a48ec8064df4b8df804fe863ba163905, which makes it really easy to add tests that focus on recording what changed for specific issues. This should be a huge benefit to productivity when fixing bugs since it means that the snapshot based testing won't necessarily pick up a ton of changes which aren't relevant to what was actually changed.

It's been a really busy month for me... and will likely be busy next few weeks too, but I am still slowly making progress on this. I've modified the planned release version to 0.22 since there's a PR (#1567) which is going to be done before this, and I don't want to hold up releasing it to wait for this. A couple of the things I had slated for the theme rework will be releasing early, but it's primarily dependency cleanup (fs-extra and ShellJS)
I ran into issues releasing the default theme rework since I realized that the design I'd used to try to clean up the routing logic wasn't flexible enough since it blocked any additional page types being added. I suspect that there's still a good way to do this that I haven't figured out yet.

Okay.... well... it's been a while. 0.21 just released today, so I'm finally getting back to working on this. The "break" was just long enough that I've forgotten almost everything I've done. If I'm going to release 0.22 on the stated date, I need to average roughly 75% of an issue per day, which doesn't look too likely right now. We'll have to see what the weekend brings... I think I'm going to completely drop reworking how the themes are structured... I'll update them to get rid of handlebars, but not do a full redesign here. Once this work is done, doing that redesign will be much easier.

Well, I've learned my lesson here I think. If injecting a release, drop the other release and re-plan it after the injected one is done and has been out for a couple weeks. With the --packages work complete, I think it is more important to work on refactoring to better support larger projects than it is to tackle this. I still want to do it, but given the several OOM bugs that have popped up, it seems far more important to do that first... so this is going back to the "good idea, someday" list, sadly.


[Win] Can not combain two or more command in 'command' in rules

On Windows 10 I have created a test version of my own clean action:
rule myclean
 command = dir && dir
build clean: myclean

I don't know why, but it doesn't work. Every time I try to run ninja clean I get error
 [1/1] dir && dir
 FAILED: dir && dir
 dir: cannot access '&&': No such file or directory
 dir: cannot access 'dir': No such file or directory
 ninja: build stopped: subcommand failed.

It seems that it can be a problem with recognizing a linker word. Anybody know how to resolve this problem, or what is the root cause?
Regards,
Abergard

Commands are run by CreateProcess, so you can do this with cmd /c dir && dir.
On Apr 2, 2016 5:47 PM, "Lukass"<EMAIL_ADDRESS>wrote:

On Windows 10 I have created a test version of my own clean action:
rule myclean
command = dir && dir
build clean: myclean
I don't know why, but it doesn't work. Every time I try to run ninja clean
I get error
[1/1] dir && dir
FAILED: dir && dir
dir: cannot access '&&': No such file or directory
dir: cannot access 'dir': No such file or directory
ninja: build stopped: subcommand failed.
It seems that it can be a problem with recognizing a linker word. Anybody
know how to resolve this problem, or what is the root cause?
Regards,
Abergard
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/ninja-build/ninja/issues/1124

We should have this in the docs somewhere, but I think we don't.
Ninja executes the command as given. If you want shell interpretations like
&&, use
command = cmd /c "Foo && bar"
On Apr 2, 2016 2:47 PM, "Lukass"<EMAIL_ADDRESS>wrote:

On Windows 10 I have created a test version of my own clean action:
rule myclean
command = dir && dir
build clean: myclean
I don't know why, but it doesn't work. Every time I try to run ninja clean
I get error
[1/1] dir && dir
FAILED: dir && dir
dir: cannot access '&&': No such file or directory
dir: cannot access 'dir': No such file or directory
ninja: build stopped: subcommand failed.
It seems that it can be a problem with recognizing a linker word. Anybody
know how to resolve this problem, or what is the root cause?
Regards,
Abergard
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/ninja-build/ninja/issues/1124

Oh, It's work. Thanks a lot for quick answer.


watch: doesn't work and makes webpack watch not work - Ubuntu 17.10

I have recently upgraded to Ubuntu 17.10 and dotnet watch run doesnt work as intended on my project anymore. It doesn't build my .net sources on change, and also makes webpack watch not work (webpack watch works as intended if I run the project with dotnet run).

Can you provide steps to reproduce this problem?

The issue is on my side somehow, it works as intended for newly generated projects. The issue can be closed.
But if you could, maybe you could help me understand:
I've tried every possible thing to do and in the end I set the DOTNET_USE_POLLING_FILE_WATCHER to be 1, and it started working. Could you elaborate how polling file watcher is different from CoreFX one?

The polling file watcher keeps a snapshot of LastWriteTime for all watched files. Every 500ms, it re-scans all files to see if LastWriteTime has changed.
The BCL file watcher uses native filesystem APIs to trigger events when files change. These triggers may not exist in some file drivers, like network shares and Docker host-mounted volumes.


GCP filters in gce_sd_configs doesnt accept CLI filters

Proposal
The filter field in gce_sd_configs does not accept the same syntax that the gcloud command line tool accepts, causing confusion for users. The filter field should accept the same syntax as the command line tool to follow the principle of least surprise.
Bug Report
Tried to setup prometheus with the gce_sd_configs configuration with a filter syntax that was copy/pasted from the command line. When that filter syntax didn't work, I tried googling for the correct syntax and when that failed too I resorted to trial and error, but have not been able to figure out the filter syntax the gce_sd_configs wants.
What did you expect to see?
Using the filter string from the command line in gce_sd_configs should reveal the same hosts as the command line tool does.
What did you see instead? Under which circumstances?
An error message from prometheus in the syslogs:
Apr 23 23:08:58 HOSTNAME prometheus[27494]: level=error ts=2019-04-23T23:08:58.217374002Z caller=gce.go:179 component="discovery manager scrape" discovery=gce msg="Refresh failed" err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items:(mytag)'. Invalid list filter expression., invalid"
Environment
GCP

System information:
Linux 4.15.0-1027-gcp x86_64

Prometheus version:
prometheus, version 2.2.1 (branch: HEAD, revision: bc6058c81272a8d938c05e75607371284236aadc)
build user:       root@149e5b3f0829
build date:       20180314-14:15:45
go version:       go1.10

Prometheus configuration file:

  global:
    scrape_interval: 15s

  scrape_configs:
    - job_name: 'prometheus'
      scrape_interval: 5s
      static_configs:
        - targets: ['localhost:9090']

    - job_name: 'group1'
      scrape_interval: 5s
      static_configs:
        - targets: ['localhost:9101',
                    'host1:9101',
                    'host2:9101'
                    ]

    - job_name: 'group2'
      scrape_interval: 5s
      static_configs:
        - targets: ['host10:8888',
                    'host11:8888']

    - job_name: 'asg'
      scrape_interval: 5s
      gce_sd_configs:
        - project: "myproject"
          zone: "us-west1-a"
          filter: "tags.items:(mytag)"

Logs:

Apr 23 23:09:58 HOSTNAME prometheus[27494]: level=error ts=2019-04-23T23:09:58.217499782Z caller=gce.go:179 component="discovery manager scrape" discovery=gce msg="Refresh failed" err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items:(mytag)'. Invalid list filter expression., invalid"

Thanks kindly to everyone who works on Prometheus!
If I can provide any more info just let me know!

So I was trying to s/asg-collector-staging/mytags/ but forget that it's not worth it and that string isn't really a secret.
Some examples of filter strings that I tried and their (identical) error messages:
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'items[*].tags=['asg-collector-staging']'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'items[*]tags=['asg-collector-staging']'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'name eq *collector*'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags = \"asg-collector-staging\"'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags = asg-collector-staging'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags = asg-collector-staging''. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags eq 'asg-collector-staging''. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags eq \"asg-collector-staging\"'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags eq *collector*'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items='asg-collector-staging''. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=('asg-collector-staging')'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=(asg-collector-staging)'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=['asg-collector-staging']'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=[asg-collector-staging]'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=\"asg-collector-staging\"'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items=asg-collector-staging'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items:'asg-collector-staging''. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items:('asg-collector-staging')'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items:(asg-collector-staging)'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items['asg-collector-staging']'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items[asg-collector-staging]'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items eq [\"asg-collector-staging\"]'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items eq [\\\"asg-collector-staging\\\"]'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.items eq \"asg-collector-staging\"'. Invalid list filter expression., invalid"
err="error retrieving refresh targets from gce: googleapi: Error 400: Invalid value for field 'filter': 'tags.itemssss[asg-collector-staging]'. Invalid list filter expression., invalid"

I've triple-checked that my instances do contain the network tag 'asg-collector-staging' (as well as other network tags), but none of these matched. Does anyone know the right incantation to filter by tags?
As a work-around I've filtered by names, but I'd prefer to match based on network tag because it's less ambiguous for our infrastructure.
Thanks again!

Prometheus uses the Go GCE client and the documentation says:

A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, >, or <.
For example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.
You can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.
To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = "Intel Skylake"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = "Intel Skylake") OR (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart = true).

This is similar to what is described at the https://cloud.google.com/compute/docs/reference/rest/v1/instances/list page which is referenced in the Prometheus documentation.
Given that we can only expose what the Go GCE client offers, I don't see how we can achieve using the same syntax as the GCE CLI.
That being said and reading the GCE API documentation, I'm not sure how/if filters work with array-based fields like tags (StackOverflow seems to say no)...

Found this issue which indicates that it is a limitation of the GCE API: https://issuetracker.google.com/120255780

You can filter with this API for custom metadata:
http://metadata.google.internal/computeMetadata/v1/instance/attibutes

Hello,
Any update on this bug, please ? It's a big problem when we use Prometheus to monitor GCP resources.
Thanks.
Best regards.

Hello,
I found a filter working:
filter:  name="vmtest*" you can also use '!='
It work with the attribute NAME of :
gcloud compute instances list --filter='name:(vmtest*)' --project='pj-test-00000'
NAME         ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP  STATUS
vmtest01  europe-west1-b  n1-standard-4               ****************               RUNNING
vmtest02  europe-west1-c  n1-standard-4               ****************               RUNNING
vmtest03  europe-west1-d  n1-standard-4               ****************               RUNNING

You can test, the request API here:
https://cloud.google.com/compute/docs/reference/rest/v1/instances/list
If the request it success the filter prometheus will be works.
Best regards.

Hi, we've gone through this in the bugscrub and decided to close this as a limitation of the GCP library as explained here: https://github.com/prometheus/prometheus/issues/5499#issuecomment-486114953
If the upstream go library fixes this, we'll fix this as well when we upgrade.


add nvmrc for Node 18

This PR simply creates an .nvmrc file for future developers to quickly change to the desired Node version to run the project (simply run nvm use).
issue
Checklist before requesting a review

[x] My code follows the contribution guidelines of this project.
[x] I have performed a self-review of my code.
[x] Not a core feature

Codecov Report
Base: 25.80% // Head: 25.80% // No change to project coverage :thumbsup:

Coverage data is based on head (66467db) compared to base (b8b8f59).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #99   +/-   ##
=======================================
  Coverage   25.80%   25.80%
=======================================
  Files          28       28
  Lines         775      775
  Branches      137      137
=======================================
  Hits          200      200
  Misses        574      574
  Partials        1        1

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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


hosts in list that have a trailing '.'

I came across this problem with hphosts.partial which I know isn't used here directly, but this fix would apply to any list that could have such a mistake. A trailing period breaks deduplication. I'm also porting the consolidated hosts lists to bind and while a trailing . is tolerated in the hosts file it is a fatal error in bind.
here is how I fixed it:
updateHostsFile.py line 337:
replace
line = line.rstrip() + "\n"
with:
line = line.rstrip()
# Trim trailing periods
line = line.rstrip('.') + "\n"

Thanks @proxenus!


Allow to set port to serve app in the pglet.app() function

It would be great to have the possibility to set the port for serving the application. This would help a lot in case of deployments on Kubernetes or similar.

You can set port with PGLET_SERVER_PORT environment variable. Please give it a try and let me know how that worked.

This worked locally on my MacBook Air M1. On my work windows PC it didn't seem to work, but maybe because I cannot change the system environment variables, only the user environment variables.
os.environ["PGLET_SERVER_PORT"] = "8231"
print(os.environ["PGLET_SERVER_PORT"])

Result:
http://localhost:8231/p/7d3d25b8-ed28-11eb-b034-1e00d11a5445
I will check on our Kubernetes cluster and edit this post.


detecting faces from abrove

Hi,
I am sorry for redundant questions . I really need to continue my project urgently . I need you python code for face recognition  and extracting 3d locations of faces . I know you treat only rgb topic but what can I do to extract detection.pose.pose.x y z of cob_perception_msgs.msg an can I detect far faces from camera . Thank you for understanding .

This package is already doing it. Please refer to README. You should provide an RGBD topic and it will publish a coarse XYZ position of faces.

Ok ,can you please specify which module of this package should I change topics in order to extract 3d position and face encoding  at the same time .And my second question , what can I change in your code in order to detect faces from afar ?.Thank you for you time .It's so nice of you

Hi,
Is there any news please ?

Hi,
Please go into this file:
https://github.com/cagbal/ros_people_object_detection_tensorflow/blob/master/launch/projection_params.yaml
And set your parameters, then you can get the depth values of faces.
To get faces which are located far away, you can increase this scaling factor, it would effect up to some point, but not so much:
https://github.com/cagbal/ros_people_object_detection_tensorflow/blob/e301e3c33172e8a6e50f56e6439df9d285290710/src/face_recognizer.py#L82
Please also note that, this depth estimation is not so accurate, maybe you can go with some other advanced methods.

Then, unfortunately, there is nothing much to do. Sorry for that. I will check the issue that you mention about projection py

Did you check the issue ?

No probably I will not have time to check it in one week.

for now, I'll close it, because I could not encounter any problem.


v5.0 in VS Code

So far the plugin installation does not setup tools correctly (did not record more details). So for now I'm split between v4.4 on Windows and v5.0 on linux WSL.

yeah so I guess it does not run the export script by default on its own like it did on v4.4, manually exporting in opened ESP-IDF terminal solves the issue.
don't know how intricate it would be to make the exporting automatic...

labeled as wontfix. manually running the export script gets me to working state. good enough for me.


Install Instructions Unclear for appservice

I'm trying to get the appservice to work, and I don't know what the various tokens are:
as_token - bot token?
hs_token - ???
discord_token - my user's discord token?
Basically, there are three token slots, and I only know of two tokens.

Hi, I've pushed a commit clarifying everything in the README. Quoting the relevant parts:

as_token: The token sent by the appservice to the homeserver with events.

hs_token: The token sent by the homeserver to the appservice with events.

discord_token: The Discord bot's token.

Both as_token and hs_token MUST be the same as their values in appservice.yaml. Their value can be set to anything, refer to the spec.��

Thanks, the README is much more clear now


MWPW-141387 Marquee background colors bug

Fixes issue with Marquee block breakpoint background colors not displaying.
Context:
When a marquee is authored to use background breakpoints and a hex color or gradient is authored for the background, the background does not display. The reason being, the color or gradient is applied via an inline style to a div element with no content. Making the breakpoint div empty and collapsing when the block renders.
This isn't a problem when using a image or video as those are nested in the breakpoint div with content and styled appropriately.
Resolves: MWPW-141387
Test URLs:

Before: https://main--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-bug?martech=off
After: https://mwpw-141387-marquee-breakpoints--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-bug?martech=off

Multiple Marquee variations Test URLs

Before: https://main--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-test?martech=off
After: https://mwpw-141387-marquee-breakpoints--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-test&martech=off

CC Test URLs

Before: https://main--cc--adobecom.hlx.page/drafts/moussa/tests/mobile-color-test?martech=off
After: https://main--cc--adobecom.hlx.page/drafts/moussa/tests/mobile-color-test?milolibs=mwpw-141387-marquee-breakpoints&martech=off

@rgclayton  - As @elan-tbx pointed out the after link on the 'multiple' has a wonky URL param. Maybe update that before merge so the email links correctly.
It should be https://mwpw-141387-marquee-breakpoints--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-test?martech=off

@rgclayton - As @elan-tbx pointed out the after link on the 'multiple' has a wonky URL param. Maybe update that before merge so the email links correctly. It should be https://mwpw-141387-marquee-breakpoints--milo--adobecom.hlx.page/drafts/rclayton/poc/marquee-breakpoint-test?martech=off

Thanks for the catch @elan-tbx and @ryanmparrish. Link fixed!

Thanks everyone.
I'm working with @Ruchika4 to do a little bit more testing against live pages.
That should be resolved in the next day or two. I I will merge this once we are done with that and all looks good.


Start implementing MemHost

This gets far enough to be able to run the test_host_objects invoke function from a unit test using the mock MemHost.


Transaction Model for Multi-threaded Implementation

We will base our transactional framework on the paper "VLL: a lock manager redesign for main memory database systems". By adopting a shared-nothing architecture and VLL, we can achieve multi-key operations without relying on mutexes or spinlocks.

@arpitbbhayani can you please assign this to me. This sounds very interesting.

@arpitbbhayani @JyotinderSingh @yashs360 can you please assign this to me. This sounds very interesting. I can get started with writing the design/implementation proposal for the same.

Assigned

Hello @soumya-codes,
There has been no activity on this issue for the past 5 days.
It would be awesome if you keep posting updates to this issue so that we know you are actively working on it.
We are really eager to close this issue at the earliest, hence if we continue to see the inactivity, we will have to reassign the issue to someone else. We are doing this to ensure that the project maintains its momentum and others are not blocked on this work.
Just drop a comment with the current status of the work or share any issues you are facing. We can always chip in to help you out.
Thanks again.

Hello @soumya-codes,
There has been no activity on this issue for the past 5 days.
It would be awesome if you keep posting updates to this issue so that we know you are actively working on it.
We are really eager to close this issue at the earliest, hence if we continue to see the inactivity, we will have to reassign the issue to someone else. We are doing this to ensure that the project maintains its momentum and others are not blocked on this work.
Just drop a comment with the current status of the work or share any issues you are facing. We can always chip in to help you out.
Thanks again.

Hello @soumya-codes,
There has been no activity on this issue for the past 5 days.
It would be awesome if you keep posting updates to this issue so that we know you are actively working on it.
We are really eager to close this issue at the earliest, hence if we continue to see the inactivity, we will have to reassign the issue to someone else. We are doing this to ensure that the project maintains its momentum and others are not blocked on this work.
Just drop a comment with the current status of the work or share any issues you are facing. We can always chip in to help you out.
Thanks again.

Hello @soumya-codes,
There has been no activity on this issue for the past 5 days.
It would be awesome if you keep posting updates to this issue so that we know you are actively working on it.
We are really eager to close this issue at the earliest, hence if we continue to see the inactivity, we will have to reassign the issue to someone else. We are doing this to ensure that the project maintains its momentum and others are not blocked on this work.
Just drop a comment with the current status of the work or share any issues you are facing. We can always chip in to help you out.
Thanks again.

Hello @soumya-codes,
There has been no activity on this issue for the past 5 days.
It would be awesome if you keep posting updates to this issue so that we know you are actively working on it.
We are really eager to close this issue at the earliest, hence if we continue to see the inactivity, we will have to reassign the issue to someone else. We are doing this to ensure that the project maintains its momentum and others are not blocked on this work.
Just drop a comment with the current status of the work or share any issues you are facing. We can always chip in to help you out.
Thanks again.


268 cypress tests

Add "Why Recycle" test. Also changed the filename to landing_page_spec.js to match the page features being tested.

So this looks like Travis failed because it couldn't get to the test.js file on the backend now that it's in .gitignore. This seems ok to me but we might consider how we want to do this moving forward.

I assume Travis CI runs the cypress tests in the staging environment as part of the continuous integration so does that mean that we need to add environment variables in the test.js file for the credentials and then remove this file from .gitignore?

I believe the travis ci build runs in a local test environment, not the staging environment. It is supposed to have its own set of properties (through test.js?) to set that all up.

I just made a new commit that changes the test.js file back to the original from the master branch and removed it from .gitignore. The current tests pass in my local environment without any api keys. I wanted to see if it would pass in Travis this way.


Adding the RIPA Metric

Hello, I hope you're doing well!
I've added the Relational Inner Product Association (RIPA) metric, which is best used with a single pair of target words, but have modified the code so as to be able to return the mean result across all target pairs and attributes so that it is compatible with WEFE, as well as a dictionary containing the results for every attribute word in case the user would want to refer to the same. I've attempted to follow the same guidelines for the documentation/code that the other metrics follow, and what the contribution guidelines mention.
This is my first time properly contributing to any repository, so if I have made any errors, and if you have any feedback or suggestions with regard to the documentation or any parts of the code, do let me know and I will incorporate the same! This framework and the related research have been very useful to me in my research work, so thank you so much for it!
Yours sincerely,
Krithika Ramesh

Hello,
I just released a new version of WEFE with your contribution. These are the changes I made on your code:

wordvalues word_values is now called and for each word it returns a dictionary with the average and standard deviation.
I corrected a bit your documentation to follow the numpydoc style guide.
I formatted the code.
I extended the metric test a bit.
I converted a couple of operations that were as functions to methods of the class you created, in order to make them more consistent with the object-oriented programming approach.

Here is the updated documentation with RIPA:
https://wefe.readthedocs.io/en/latest/generated/wefe.RIPA.html#wefe.RIPA
Thanks again!
Pablo.


Prisma crashes with This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.

Bug description
Prisma panics on a valid query.
I make this Prisma call:
  await prisma.book_share_email_invitations.findOne({
    select: {
      id: true,
      book_id: true,
      book: {
        select: {
          id: true,
          name: true,
          shelf: { select: { id: true, name: true } },
        },
      },
      email: true,
      permission: true,
      // vvv This is the problematic part
      last_sent_user: {
        select: {
          id: true,
          name: true,
          first_name: true,
          last_name: true,
        },
      },
    },
    where: { auth_token },
  })

In the query, I request last_sent_user which is a relation based on the field last_sent_by (full schema shown later).
Additional details:

This isn't the default name for the relation which would be users; however, last_sent_user is more representative of what the relation is.
The last_sent_user related record does exist. I checked it manually and the related users.id exists in the database.
If I remove last_sent_user from the query, it executes without error.
The book relation works fine.

The error is:
Error at path "api/pages/share/book/[auth_token].ts" on method "entry":
Invalid `prisma.book_share_email_invitations.findOne()` invocation in
/Users/sunnyhirai/Projects/airshelf/api/pages/share/book/[auth_token].ts:8:52

   4 async function getInvitation(
   5   [object Object], auth_token ,[object Object],[object Object], ,[object Object], auth_token,[object Object], string ,[object Object],[object Object],
   6   ,[object Object], prisma ,[object Object],[object Object], ,[object Object],[object Object],Context
   7 ) {
→  8   return await prisma.book_share_email_invitations.findOne(
  PANIC: Application logic invariant error: received null value for field last_sent_user which may not be null

This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.

As can be seen in the error, Prisma is expected to receive a value for last_sent_user:
SELECT "public"."book_share_email_invitations"."id", "public"."book_share_email_invitations"."book_id", "public"."book_share_email_invitations"."email", "public"."book_share_email_invitations"."permission", "public"."book_share_email_invitations"."book_id", "public"."book_share_email_invitations"."last_sent_by" FROM "public"."book_share_email_invitations" WHERE "public"."book_share_email_invitations"."auth_token" = $1 LIMIT $2 OFFSET $3

How to reproduce
I've provided details below but a minimal reproduction may be hard to create because my other relations work fine. I don't know what is special about this one that makes it crash other than the naming is a little different (however, other relations are renamed to use a singular form in many cases).
Expected behavior
Should not panic.
Prisma information
These are the immediate models related to this query.
model book_share_email_invitations {
  auth_token   String @unique
  book_id      Int
  email        String
  id           Int    @default(autoincrement()) @id
  last_sent_by Int
  permission   Int
  // normalized (singularized)
  book        books  @relation(fields: [book_id], references: [id])
  // normalized (singularized)
  last_sent_user        users  @relation(fields: [last_sent_by], references: [id])

  @@index([book_id], name: "book_share_email_invitations_book_id_index")
  @@unique([book_id, email], name: "book_share_email_invitations_book_id_email_unique")
}

model users {
  created_at                   Int
  email                        String                         @unique
  first_name                   String
  id                           Int                            @id
  last_name                    String
  name                         String                         @unique
  password_hash                String?
  // normalized (singularized)
  shelf                      shelves                        @relation(fields: [id], references: [id])
  // normalized (no change)
  book_marks                   book_marks[]
  // normalized (no change)
  book_share_email_invitations book_share_email_invitations[]
  // normalized (no change)
  book_shares                  book_shares[]
  // normalized (no change)
  notifications                notifications[]
  // normalized (no change)
  page_edit_sessions           page_edit_sessions[]
  // normalized (no change)
  page_marks                   page_marks[]
  // normalized (no change)
  pages                        pages[]
  // normalized (no change)
  sessions                     sessions[]
  // normalized (no change)
  user_starred_books           user_starred_books[]
}

model books {
  counter                      Int                            @default(0)
  created_at                   Int
  id                           Int                            @default(autoincrement()) @id
  name                         String
  privacy                      Int
  shelf_id                     Int
  title                        String
  toc                          Json
  updated_at                   Int
  // normalized (singularized)
  shelf                      shelves                        @relation(fields: [shelf_id], references: [id])
  // normalized (no change)
  book_marks                   book_marks[]
  // normalized (no change)
  book_share_email_invitations book_share_email_invitations[]
  // normalized (no change)
  book_shares                  book_shares[]
  // normalized (no change)
  pages                        pages[]
  // normalized (no change)
  shelf_pinned_books           shelf_pinned_books[]
  // normalized (no change)
  user_starred_books           user_starred_books[]

  @@unique([shelf_id, name], name: "books_shelf_id_name_unique")
}

Environment & setup

OS: Mac OS
Database: PostgreSQL
Prisma version: 2.0.0
Node.js version: v12.16.2

The was solved by removing @prisma/client and adding it again.
As the solution was unclear, I added issue https://github.com/prisma/prisma/issues/2753 to improve the error message.

The panic occurs again in the same place last_sent_user in production. Since it is in the same place, it feels like this is something more than just a one time corruption.
We are going live in two weeks.
Would appreciate somebody taking a look or offering some suggestions on how to prevent this when our app is live.

Does this always crash or just sometimes?
Can you maybe a dump of your SQL with the data that is causing this? Then it would be simple for us to reproduce.

@janpio,
When I run it, it always crashes.
These are the unedited SQL logs from Heroku.
Some of the queries are executed in the same Promise.all in parallel on the client. The API accepts a graph, and executes each branch of the graph in its own Promise which it then combines together at the end using Promise.all.  This explains the error PANIC: Application logic invariant error: received null value for field last_sent_user which may not be null
Prisma appears to be reusing the id from books.id which is 61 and which I can confirm is the correct id and that it exists.
I can also confirm that inside the database, the last_sent_by value is 13 and not 61.

Can you maybe a dump of your SQL with the data that is causing this? Then it would be simple for us to reproduce.

@janpio
The logs I in the previous post includes the SQL and the input data. Scroll to the right to see them.
It does not show the result data because I don't know how to make that work on Heroku but you can see from the SQL query and input data where the error comes from.
To break it down, this query is run:
  await prisma.book_share_email_invitations.findOne({
    select: {
      id: true,
      book_id: true,
      book: {
        select: {
          id: true,
          name: true,
          shelf: { select: { id: true, name: true } },
        },
      },
      email: true,
      permission: true,
      // vvv This is the problematic part
      last_sent_user: {
        select: {
          id: true,
          name: true,
          first_name: true,
          last_name: true,
        },
      },
    },
    where: { auth_token },
  })

From there, this query is run:
SELECT "public"."book_share_email_invitations"."id",
       "public"."book_share_email_invitations"."book_id",
       "public"."book_share_email_invitations"."email",
       "public"."book_share_email_invitations"."permission",
       "public"."book_share_email_invitations"."book_id",
       "public"."book_share_email_invitations"."last_sent_by"
FROM   "public"."book_share_email_invitations"
WHERE  "public"."book_share_email_invitations"."auth_token" = $1
LIMIT  $2 offset $3
DETAIL:  parameters: $1 = 'ZxgbGRDBJDRIhcpLrMFWh', $2 = '1', $3 = '0'

We can see that some time after that, the books which is specified as a nested select in the query is selected:
SELECT "public"."books"."id",
       "public"."books"."name",
       "public"."books"."shelf_id"
FROM   "public"."books"
WHERE  "public"."books"."id" IN ($1) offset $2
DETAIL:PARAMETERS: $1 = '61',
       $2 = '0'

In this query, it can be seen that the id parameters is 61. This is the correct return value as can be seen in the database screenshot here:

Then later still, we see this query being executed against the users table which is the join to last_sent_user:
S4:SELECT "public"."users"."id",
       "public"."users"."name",
       "public"."users"."first_name",
       "public"."users"."last_name"
FROM   "public"."users"
WHERE  "public"."users"."id" IN ($1) offset $2
DETAIL:PARAMETERS: $1 = '61',
       $2 = '0'

The issue with this query, however, is that it is using the value 61 in its where clause but that is the value for book.
Again, looking at the data in the database:
image
We can see that the last_sent_by column has the value 13. So somewhere during this query, the value from book_id was being used instead of the value from last_sent_by.
For additional clarity, the relation last_sent_user connects to the users table through the column last_sent_by as can be seen in the Prisma schema:
model book_share_email_invitations {
  auth_token   String @unique
  book_id      Int
  email        String
  id           Int    @default(autoincrement()) @id
  last_sent_by Int
  permission   Int
  // normalized (singularized)
  book        books  @relation(fields: [book_id], references: [id])
  // normalized (singularized)
  last_sent_user        users  @relation(fields: [last_sent_by], references: [id])

  @@index([book_id], name: "book_share_email_invitations_book_id_index")
  @@unique([book_id, email], name: "book_share_email_invitations_book_id_email_unique")
}

Can you please export the SQL database schema and the data in it into a .sql file so we can recreate your database ourselves and run the code you provided on that?

I will try to recreate this in a way that is transportable. For clarity, the code works on my Mac at the moment. My last deploy to Heroku did not but I changed the app to not make that query.
Reproducibility is important to bug fixes. It’s just inconsistent in how it gets to the broken state and I’m unclear how it got into that state. Any insight on things I can try?
It might be related to upgrading. I feel like it worked before and then started failing after an upgrade. On the Mac, I fixed the issue by removing then adding @prisma/client. On Heroku, it rebuilds each time I deploy and it continued to fail after a redeploy. however, I wonder if it’s a caching issue in their build process.
I remember reading that prisma uses a . file of some sort in newer versions in node_modules and I wonder if that is playing a part.

If you can give us a SQL file with the schema and some data we can totally try to reproduce this ourselves - maybe it already works on the first try with the code snippets you provided above.

@janpio How should I send the file to you? I have it ready.

@thesunny You can email it to<EMAIL_ADDRESS>If you want us to sign an NDA, we can also do that.

Done. Let me know if there are any issues with it.

@thesunny I restored the pg_dump that you have sent but it looks like it is missing some data. The query posted here is for book_share_email_invitations but the restore doesn't have that model.

Can you please send me a complete data? Also, I would prefer it to be a a simple pg_dump with -Fc flags as that export it in a custom format which is not very convenient to modify if I want to change the roles.
https://www.postgresql.org/docs/9.1/backup-dump.html
Also, as always, try with the latest dev version once to make sure if this was not already addressed in some other form.

Oh, my apologies. I used the dump feature in Heroku which I don't have much experience with.
I will try again.

No problems at all. Take your time :)

@pantharshit00 @janpio
I resent the file using pg_dump as requested. Note that I mistakenly read that you wanted it WITH the -Fc flag so the first version I sent you is wrong. I then sent the correct version in a follow up email.

@thesunny I was unable to reproduce the error:

I used the following code:
  const data = await prisma.book_share_email_invitations.findOne({
    select: {
      id: true,
      book_id: true,
      book: {
        select: {
          id: true,
          name: true,
          shelf: { select: { id: true, name: true } },
        },
      },
      email: true,
      permission: true,
      // vvv this is the problematic part
      last_sent_user: {
        select: {
          id: true,
          name: true,
          first_name: true,
          last_name: true,
        },
      },
    },
    where: { auth_token: "nqdHjAAAlYdB-gIBFZon5" },
  });

I used version:
@prisma/cli          : 2.1.3
Current platform     : darwin
Query Engine         : query-engine 363f5a521d6b06543e53d134652a0037a3096d41 (at /Users/harshit/code/reproductions/issue-2754/node_modules/@prisma/cli/query-engine-darwin)
Migration Engine     : migration-engine-cli 363f5a521d6b06543e53d134652a0037a3096d41 (at /Users/harshit/code/reproductions/issue-2754/node_modules/@prisma/cli/migration-engine-darwin)
Introspection Engine : introspection-core 363f5a521d6b06543e53d134652a0037a3096d41 (at /Users/harshit/code/reproductions/issue-2754/node_modules/@prisma/cli/introspection-engine-darwin)
Format Binary        : prisma-fmt 363f5a521d6b06543e53d134652a0037a3096d41 (at /Users/harshit/code/reproductions/issue-2754/node_modules/@prisma/cli/prisma-fmt-darwin)

Can you please try again with the latest version? :pray:

I'm afraid the bug still exists. Here is the relevant code. You can see my workaround which I commented out in there as well.
async function getInvitation(
  { auth_token }: { auth_token: string },
  { prisma }: API.Context
) {
  const book_share_email_invitation = await prisma.book_share_email_invitations.findOne(
    {
      select: {
        id: true,
        book_id: true,
        book: {
          select: {
            id: true,
            name: true,
            shelf: { select: { id: true, name: true } },
          },
        },
        email: true,
        permission: true,
        // last_sent_by: true,
        last_sent_user: {
          select: {
            id: true,
            name: true,
            first_name: true,
            last_name: true,
          },
        },
      },
      where: { auth_token },
    }
  )
  console.log(book_share_email_invitation)
  if (book_share_email_invitation == null) return null
  // const last_sent_user = await prisma.users.findOne({
  //   select: {
  //     id: true,
  //     name: true,
  //     first_name: true,
  //     last_name: true,
  //   },
  //   where: { id: book_share_email_invitation.last_sent_by },
  // })
  // if (last_sent_user == null)
  //   throw new Error(`User not found for last_sent_by should not happen`)
  return Object.assign(book_share_email_invitation, {
    last_sent_user: book_share_email_invitation.last_sent_user,
  })
}

And here is the error message:
Error at path "api/pages/share/book/[auth_token].ts" on method "entry":
Invalid `prisma.book_share_email_invitations.findOne()` invocation in
/Users/sunnyhirai/Projects/airshelf/api/pages/share/book/[auth_token].ts:11:81

   7 async function getInvitation(
   8   { auth_token }: { auth_token: string },
   9   { prisma }: API.Context
  10 ) {
→ 11   const book_share_email_invitation = await prisma.book_share_email_invitations.findOne
  PANIC: Application logic invariant error: received null value for field last_sent_user which may not be null

This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.

A few extra notes:

This error message came from my Mac where the error, previously, had gone away when I removed then added @prisma/client
The error also appears on Heroku so it appears not to be a platform issue
I removed then added @prisma/client on the mac and this time, it did not resolve the issue

This feels like an important bug as it speaks to reliability. I may be willing to have you virtually come into my system while I watch in order for you to get a better understanding of the issue.

Hm, can you tell me which auth_token from the data you sent me triggering this? I can try again.

Ping @thesunny: Please see Harshit's last follow up.

Happy to open this again if we get more information.

I just encountered this error, I wanted to query a table with 'currentStatus' using groupBy, but in my db it was saved as null instead of a string, so as soon as I changed the value in my db, the error was gone and query was made.


jobserver api integration in sparkta api

Description
Jobserver api integration in sparkta api, more functionality in JobServerActor
Reviewer
@anistal
Test
All passed

StreamingContextServiceIT is failing right now.


Client: Reply to private message?

Hello again, good to see Mobius getting updates.  Hope you are doing well :)
I've just installed the recently compiled client and it works well but noticed there is no way to reply to any private messages currently (unless I'm missing something).  Appreciate ititss not a full blown client but this would be useful.

Wow I was not aware of that app, thanks for the heads up. Looks like they are promoting Mobius which is a good thing.
Something cool about using Hotline via the terminal though so hopefully you’ll get your mojo back at some point 😉

I've split off the client to a separate repo with a Project Status table in the README that acknowledges this as a currently unimplemented feature.  I'm going to close this issue.
https://github.com/jhalter/mobius-hotline-client


Added on readme informations about locale

What
Added information about internationalization. #87

I thinks its a great information for the readme.

@bokmann hey David, could you please take a look here?

I think you should also be able to include the specific languages you require. "locale-all" will build all languages into the javascript... Am I right?

@gr8bit I agree with you, do you mean to describe when the user needs to use like the doc
<script src='fullcalendar/locale/es.js'></script>
<script>

  $(function() {

    $('#calendar').fullCalendar({
    });

  });

</script>

I need to test if this is working and then, I can add this ...