it is necessary to check the connection status in the post-processing logic of "PoolBase#isConnective Alive".

Environment
HikariCP version: 3.2.0
JDK version     : 1.8.0_141
Database        : MySQL
Driver version  : mysql connector 5.1.46

HikariCP is calling "Connection # isValid (timeout)" to check the connection. For mysql, if the response from the request sent for the connection validation does not come within the specified time, the connection is terminated and the "false" is returned.
https://gisub.com/mysql/mysql-connector-j/blob/release/5.1/src/com/mysql/jdbc/JDBC4Connection.java #L102

So, it seems that the actual cause is hidden by the below code .
https://gisub.com/brettwooldridge/HikariCP/blob/HikariCP-3.2.0/src/main/java/com/zaxxer/hikari/poolBase.ja #L165

Because it is already terminated, it appears that the following secondary error occurs by the above code.
xxx - Failed to validation connection com.mysql.jdbc.JDBC4Connection @yyy (No opens followed after connection closed). Possibly concider using a storter maxLifetime value.

If possible, I think we should first check whether the connection is closed.
 }
 finally {
    if(!connection.isClosed()) {
        setNetworkTimeout(connection, networkTimeout);

        if (isIsolateInternalQueries && !isAutoCommit) {
            connection.rollback();
        }
    } else {
        LOGGER.warn("{} - Failed to validate connection {}. Possibly consider using a shorter maxLifetime value.", poolName, connection);
    }
 }

We ran into something similar with Postgres and a mistakenly configured connectionTestQuery. The query is always executed even if the Connection is already closed. Guarding this method with a connection.isClosed would bypass this and prevent our logs from filling up.
Preferably log an INFO message instead of WARN.

@mdeinum I have intentionally steered clear of using the isClosed() call in the validation path.  The reason is a little difficult to explain, but I'll give it a shot...
The JDBC specification says nothing about how the isClosed() call should be implemented by a driver.  Some driver implementations might choose to fire TCP traffic over the wire to determine whether the Connection is open or closed -- because the Connection/socket can be closed unilaterally by the server.  Hopefully, driver developers choose more efficient state tracking than that, but again, it is only a hope.
If we implemented the equivalent of (pseudo-code):
boolean validate() {
  if (connection.isClosed()) return false;

  if (!connection.isValid()) return false;

  return true;
}

We run the risk that every validation check may incur two roundtrips to the server, rather than one.  One for isClosed() (if poorly implemented), and one for isValid().
If the issue is that the ultimate cause of the failure (i.e. the originating SQLException) is masked by an exception thrown in the subsequent finally, that is a separate issue and can be dealt with.

Well after further inspection the actual exception occurs in the setNetworkTimeout, apparently Postgres needs an open connection for that. The driver checks if the connection isn't closed before setting the timeout, if closed it throws an exception.
We solved it by setting the minIdle, apparently that was forgotten and this disables the check on idle connections (if the minIdle and maxConnections are the same no active idle checking is done, the idle checking thread isn 't started/registered).

I'm pretty sure I'm seeing the same problem rarely in our stack.  I checked for leaked connections nothing.
We run on AWS Lambda connecting to AWS RDS Postgres.  Details:

HikariCP version: 3.1.0
Postgres driver: 42.2.5
DB: Postgres 9.6.6

Here's a stacktrace of this happening:
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
at com.codebarrel.lambda.rds.DbConnectionManagerImpl.execute(DbConnectionManagerImpl.java:47)
at com.codebarrel.automation.store.RdsAutomationQueueStore.resolveItem(RdsAutomationQueueStore.java:216)
at com.codebarrel.automation.api.queue.AutomationQueueImpl.resolveItem(AutomationQueueImpl.java:78)
at com.codebarrel.automation.api.queue.AutomationQueueImpl$$EnhancerByGuice$$62d23cac.CGLIB$resolveItem$3(<generated>)
at com.codebarrel.automation.api.queue.AutomationQueueImpl$$EnhancerByGuice$$62d23cac$$FastClassByGuice$$40f20a5e.invoke(<generated>)
at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.codebarrel.lambda.util.TimingInterceptor.invoke(TimingInterceptor.java:38)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:75)
at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:55)
at com.codebarrel.automation.api.queue.AutomationQueueImpl$$EnhancerByGuice$$62d23cac.resolveItem(<generated>)
at com.codebarrel.aws.lambda.automation.QueueConsumer.lambda$handleRequest$2(QueueConsumer.java:80)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.codebarrel.aws.lambda.automation.QueueConsumer.handleRequest(QueueConsumer.java:80)
at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:259)
at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:178)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:292)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94)
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:783)
at org.postgresql.jdbc.PgConnection.setNetworkTimeout(PgConnection.java:1556)
at com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:548)
at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:164)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
at com.codebarrel.lambda.rds.DbConnectionManagerImpl.execute(DbConnectionManagerImpl.java:47)
at com.codebarrel.automation.store.RdsAutomationQueueStore.getQueuedCountForAuditItem(RdsAutomationQueueStore.java:267)
at com.codebarrel.automation.api.queue.AutomationQueueImpl.hasMoreItemsQueued(AutomationQueueImpl.java:110)
at com.codebarrel.lambda.util.TimingInterceptor.invoke(TimingInterceptor.java:38)
at com.codebarrel.automation.api.service.SingleRuleExecutorServiceImpl.execute(SingleRuleExecutorServiceImpl.java:200)
at com.codebarrel.automation.service.AutomationExecutionServiceImpl.lambda$processEvent$4(AutomationExecutionServiceImpl.java:78)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.codebarrel.automation.service.AutomationExecutionServiceImpl.processEvent(AutomationExecutionServiceImpl.java:78)
at com.codebarrel.lambda.util.TimingInterceptor.invoke(TimingInterceptor.java:38)
at com.codebarrel.aws.lambda.automation.QueueConsumer.executeItem(QueueConsumer.java:102)
at com.codebarrel.aws.lambda.automation.QueueConsumer.lambda$handleRequest$1(QueueConsumer.java:73)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at com.codebarrel.aws.lambda.automation.QueueConsumer.handleRequest(QueueConsumer.java:70)
at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

From looking at the source it looks like the Postgres driver throws an exception when trying to set the network timeout due to the connection being closed already, when called from the finally block in isConnectionAlive.

We're seeing something similar:
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 3027ms.
	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:676)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:190)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:155)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
	at ratpack.jdbctx.internal.DelegatingDataSource.getConnection(DelegatingDataSource.java:35)
	at ratpack.jdbctx.internal.TransactionalDataSource.getConnection(TransactionalDataSource.java:35)
	at org.jooq.impl.DataSourceConnectionProvider.acquire(DataSourceConnectionProvider.java:83)
	... 24 more
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
	at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:783)
	at org.postgresql.jdbc.PgConnection.setNetworkTimeout(PgConnection.java:1556)
	at com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:550)
	at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:165)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179)
	... 29 more

Calling setNetworkTimeout on a closed Postgres connection throws, and Hikari doesn't deal with it and throws rather than just returning false from PoolBase.isConnectionAlive.

Also note that the setNetworkTimeout in the finally block in isConnectionAlive is failing when trying to deal with the earlier failure of the same method. It would probably be enough to catch the failure in the first setNetworkTimeout and just return false at that point.

I was about to create a similar issue. As a general rule:

either don't call anything in finally blocks which can throw an exception on its own, or
check if finally was entered because an exception has been thrown.

Failing to do so, will hide the original exception and make root cause analysis impossible.

Same issue with DB2 also.

Same issue with MS SQL also. It's seems that major DBs check for closed connection before setting network timeout.

Hi All,
Did any one find a solution for this issue ?

@vamsi-616 I set maxLifetime and idleTimeout to avoid such issue. I.e. maxLifetime=300000, idleTimeout=60000. Not sure that second options is relevant though, I've experimenting long time ago...

We are seeing this issue intermittently. I tried to reduce max life time and it did not helped. Any other inputs ?
Failed to validate connection ConnectionID:57721 ClientConnectionId: 3ece1d62-4cd8-4ca4-aad8-646bcdbe2dad (The connection is closed.). Possibly consider using a shorter maxLifetime value.
Hikaricp is 3.4.1 [compile] - Comes with spring-boot-starter-jdbc: 2.2.1.RELEASE
Microsoft SQL Server 2014
Springboot 2.2.1
minimum-idle: 5
maximum-pool-size: 25
connection-timeout: 30000
idle-timeout: 25000
max-lifetime: 300000
allow-pool-suspension: true
leak-detection-threshold: 25000
validationtimeout : 2000

Generally speaking this exception should never make it through to your application.  If you call getConnection(), the pool will select a Connection from the pool, and attempt to validate it. Validation may throw an exception if the Connection has already been closed by the database. In this case, HikariCP will then obtain another Connection from the pool, and attempt to validate again.
The only way the validation gets through is when HikariCP is unable to obtain a valid connection within the "connectionTimeout" period specified. This can occur for one of two reasons:

In the middle of attempting to validate an available Connection, possibly having gone through several different unused Connections, a Connection cannot be obtained within connectionTimeout.
After attempting to validate an available Connection, the pool is exhausted (there are 0 unused Connections), and a new Connection cannot be obtained within connectionTimeout.

The pool is not exhausted as we printed Hikaripool connections for each service call and at any point of time it is not more than 3 connections. We have min pool and max pool as 25.
We are trying to figure out why Hikari is unable to validate connection with in first occurrence ? - As per my analysis it's not able to get any response with in valdiationTimeout (Default is 5 second) , so it's marking as closed and trying to pull next available connection, this process continues until connectionTimeout.

We tried all combinations, however still we are seeing intermittently hikari connection issues. Did any one find the actual cause ?
We tried with Max-life-time to 100000 but still the error indicates "Failed to validate connection (This connection has been closed.). Possibly consider using a shorter maxLifetime value"

@vamsi-616 If the pool is configured for 25 connections, but you are not able to get above 3, that sounds like a limitation on the database side, and nothing to do with HikariCP.  Is this a Google or AWS database instance?

I encounter this issue while being connected to an AWS Aurora postgres, from an AWS EKS over a peering connection between two VPC networks.

Not sure if the network infra has any relevance here though


Dev

Hi everyone,
First of all, thanks for the QuickStart, they helped a lot in my current engagement.
Second, I believe that this is a good time in my career starting giving back to the community, hence thought others my find  helpful to have this  "Quickstart #9:  MongoDB configuration".
Aiming to keep this "Quickstart #9" sample  close as possible to others  QuickStart samples, all MongoDB required changes are based on "IdentityServerBuilderExtensions" and properly wired in Startup.ConfigureServices().
Also, you may notice that all related readme.md files were updated.
And finally, if you identify anything that you would like to have it enhanced or refactored in order to accept this small contribution just give me a shout.
Thanks again,

@Rilton,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla2.dotnetfoundation.org.
It will cover your contributions to all .NET Foundation-managed open source projects.
Thanks,
.NET Foundation Pull Request Bot

@Rilton, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, .NET Foundation Pull Request Bot

Tested it using a MongoDb instance running in Docker on macOS - works.

Awesome! Thanks

@leastprivilege thoughts on this? personally I'm inclined to no accept this here, and rather post it as a link to @Rilton's repo. Or we can put it elsewhere in the samples, but not as part of the quickstarts, imo.

Some projects handle this having a contrib folder or contrib project.

Yea, don't get me wrong @Rilton and @AlexZeitler -- I'm all for it, but as a quickstart that's a bit more formal and would require us to maintain it (and I'm not a mongo programmer).

Yeah, totally understand this - OTOH people might be interested in stuff you can't provide on your own as well (like Mongo).

@AlexZeitler and @leastprivilege, I understand your perspective and concern, and I know I am new here but if you guys want me to be responsible for supporting that particular sample (or any other) I will be more than happy to contribute.
If you wish me to organize the project in another format in order to have it under some form of contrib repo just let me know.
Also in order to save some time,  I created a new repo just with the Mongo project sample in case you decide to just have link to my repo -  the link to that new repo is: https://github.com/Rilton/IdentityServer4.Samples.Mongo
Bottom line, I really would like to be able to assist this project and help this community.

Thanks for the contribution.
How about this - you should have a separate repo with the walkthrough instructions, code starting point and reference solution. We will create a new section in the quickstarts for external contributions and link to it.
We are already extremely swamped with keeping track of our own content and it is not feasible anymore to add external content into our own repos. I hope you understand.

@Rilton et al.
I made this https://github.com/EdwardBlair/IdentityServer4.MongoDBDriver last week to improve upon this. I believe it has a few issues, of which I won't go in to detail in here, that I have addressed. N.B. The name needs changing as per this so if anyone has any good ideas, please don't be shy!
It has a familiar interface -- not dissimilar to that which IdentityServer4.EntityFramework uses -- so writing a guide using this library would be make for a more consistent guide.
I believe rather than having a "built-in" implementation of IClientStore etc.. for MongoDB, depending on an external persistence layer would be beneficial. This way it can be improved upon externally and used straight away in production (famous last words), rather than providing stepping stone tutorial code which naive persons may use sans modification.
What are your thoughts?

We'll close this, and can you team up with @EdwardBlair and let us know where your sample end up. Thanks!

Not problem. I will work with  @EdwardBlair.


v3.5.0 missing dist folder

v3.5.0 deployed today is missing the dist folder and causes my builds to fail.

@SavePointSam can you try with the latest version (3.5.1)? Does the latest version fix the issue?

I've been able to build successfully using version 3.5.1 locally, feel free to re-open if you're still facing issues!


Add tests for covering constructor and start methods by tests

I wrote couple suites and some structure for tests. It just starting point, but don't wanna write more until getting your feedback.

oh man, you're awesome. 🥇
thanks.. looking!


Add apply_cal method to uvdata that takes in a uv cal object.

Must write comment into history about what happened.

I've been working on this issue off and on lately. I have some of the basic code in place (see branch apply_cal), but wanted to open a few things up for converstation:

Is an inplace (or not inplace) option wanted?
I assume we want to support full jones calibration. Does anyone have any idea how to test this? I'm assuming we don't have any full-jones solutions lying around.
When coding things up, it seemed natural to not bother forming mueller matrices if Njones <= 2  because they will just be diagonal, and it's easier to code the operation without the matrices. Are people ok with that?

We really need to make a new pyuvdata release, but that is blocking on this issue. How close are we on resolving this issue? If it's a long way off, I think we should consider making a new release even without this fixed.

Partially addressed by #629 but D-term calibration is not implemented

close in favor of #688


Error fetching updates: null spamming logs

Hello,
First, thanks for this great project, it's mostly the only homebridge plugin I'm using.
In logs, I've this message showing 2 times every 5 seconds :
[11/21/2020, 5:14:25 PM] [FibaroHC3] Error fetching updates:  null
[11/21/2020, 5:14:29 PM] [FibaroHC3] Error fetching updates:  null
[11/21/2020, 5:14:30 PM] [FibaroHC3] Error fetching updates:  null
[11/21/2020, 5:14:34 PM] [FibaroHC3] Error fetching updates:  null

Here is the config.json :
{
  "name": "FibaroHC3",
  "host": "<IP_ADDRESS>",
  "username": "api",
  "password": "*************",
  "pollerperiod": 1,
  "securitysystem": "enabled",
  "platform": "FibaroHC3"
}

I created a dedicated user on Fibaro HC3 for this plugins, of type "user", with access to every device, every scene, every alarm zones and every profiles.
I can do some tests, to help for this.

@lionep is everything else working? I Homekit receiving updates from home center?

Hello, yes, almost everything : security system hand with no response, when changing the value from Homekit.
It looks like I don't have the log anymore after upgrading to v1.0.7 and upgrading homebridge, but I have this log, that may be related :
[12/7/2020, 10:31:11 PM] [FibaroHC3] There was a problem getting value from Global Variabls  - Err: null
(node:14866) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'delay' of undefined
    at FibaroHC3.<anonymous> (/usr/lib/node_modules/homebridge-fibaro-hc3/src/index.ts:351:18)
    at Generator.throw (<anonymous>)
    at rejected (/usr/lib/node_modules/homebridge-fibaro-hc3/dist/index.js:39:65)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

Let me know how I can help.

Can you disable in config.json the security system flag and the global variable if you use it?

It looks like putting "securitysystem": "disabled", silence the log.

Was "securitysystem" ever working? Did you configured all the parts?

@lionep, any news?


VSCode tells you that you need a new configuration to do the deploy (it doesn't matter if you had already done another deploy before)
Pum.  Error.

Action: appService.Deploy
Error type: Error
Error Message: Cannot read property 'constructor' of undefined
Version: 0.16.0
OS: darwin
Product: Visual Studio Code
Product Version: 1.38.1
Language: es

Call Stack
Object.<anonymous> extension.bundle.js:323:357962
a extension.bundle.js:323:357598
process._tickCallback next_tick.js:68:7

Update:
VSCode is creating a settings.json file with this info:
{
"appService.defaultWebAppToDeploy": "/subscriptions/{{subscriptionId}}/resourceGroups/{{ResourceGroup}}/providers/Microsoft.Web/sites/{{WebAppName}}",
"appService.deploySubpath": "{{ProjectName}}/bin/Release/netcoreapp2.2/publish",
"appService.preDeployTask": "publish-release"
}
If I delete this data or replace it with an empty json (like {}) it works again.

@XofoSol as a workaround, you can try disabling the warning by setting appService.showPreDeployWarning to false

Nop, it does not work. Because is not a warning, is an error.

Sorry I wasn't clear - I'm talking about this warning:

If you click "Add Config" it adds the settings you mentioned ("appService.deploySubpath" and "appService.preDeployTask"). I believe those settings are causing your error, so you'll want to remove them and set appService.showPreDeployWarning to false to prevent adding that config again

Ok, Thank you very much.
Apparently it works.  But, like you said, you have to add this configuration in the file only after the first fail.

Yeah that's only meant as a temporary workaround to make sure you're unblocked.
This is definitely a bug that we'll look into fixing soon


Feature Request - add wallboxes

Thank you for the great work - much appreciated!
I was wondering whether you could add up to 2 wall box chargers to the card?
In my setup, they are connected to the non-essential branch so the non-essential power value is the sum of the 2 wall box power values. So in my case, it would be perfect to replace the house symbol of the non-essential branch with 2 car symbols and 2 power values. The existing non-essential power value should stay so it can be configured to show the total non-essential power.
It is possible that some users may connect their wall box(es) to the load output but in my opinion that doesn't make much sense so adding them to the non-essential branch makes the most sense.
Also. I am using Tibber so the current cost per kWh grid power varies hourly and it would be great to be able to see the current price in the card as well. Could you add another value field for that somewhere in the grid branch?

Hi. Sounds like quite a unique use case. There is limited card space so you might want to track these on another card.  As I understand you will still have the total power in the non-essential sensor already?
Can you share the output of your Tibber sensor. I'm not familiar with it.

Hi slipx06,
I don't think that the use case is unique. A lot of PV system owners are driving electric vehicles as well and have a wall charger installed. Of course, I could display this information on another card but isn't that the case with almost all the data shown on this card? When one of the 2 chargers is in use then there is a very large amount of the total power in the system going to this endpoint. Definitely, something you want to see in the energy monitoring overview. Especially I want to see with a quick glance if the system is working correctly and using only excess power generated by the solar panels.
I know that the space is limited but I think if the house symbol for the non-essential load is replaced by 2 smaller car symbols (or up to 2 configurable icons??) then it should be possible to fit in.
The tibber sensor simply provides a number (eg 13 for 13 Cents per kWh). This value changes hourly.

In fact, I have considered forking the project and modifying the code myself but I am not familiar with creating SVG images and animations in javascript so I would have to go through quite some learning first. Are you using some kind of visual editor for the SVG code to simplify the testing?

Hello,     I found your power card last night. Absolutely fantastic. One question is it possible to add two bubbles out from the house to show car charging and water heating? This would be the icing on the cake. I love the fact that you have made a card that allows the DC battery to be shown so many apps and cards really only work for an AC coupled battery.  Thanks. Steve Sent from my iPhoneOn 30 May 2023, at 15:33, slipx06 @.***> wrote:
Hi. I dont use an SVG visual editor as most of the icons are SVG's positioned inside the main SVG container and the rest are just lines and rectangles etc. I usually just edit the SVG directly using a text editor and you can view the changes in any browser.
Are you thinking something like this. Ignore the house. And then the two wall charges underneath?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

Something like this
On Tuesday, 30 May 2023 at 17:13:44 GMT+1, slipx06<EMAIL_ADDRESS>wrote:

I assume this is the same scenario as above i.e. non-essential loads?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

Hi, yes this is pretty much what I mean. I added the current Grid energy cost per kWh in the bottom right.
The daily totals would be nice to have as well.

That would make it perfect for me :-)

In order to make this more versatile it would probably be ideal to allow up to 2 non-essential loads that can be configured (name, icon, show total?). This would meet both requirements mentioned here and probably several others as well.
Also, (I don't need this but just just a thought) : Since The Aux power terminal can be configured as a smart load it would probably make sense to allow the same configuration options here as well (name, icon, show total?).

Hi slipx06,
I think it would also make sense to add the inverter heat sink temperature and the battery temperature. The inverter's Modbus output provides both.

Can you add another Bubble for Geyser output on the Essentials Side
Just kidding :) I work in software Dev, so I know how these request escalate into many different requests that are similar :)
My suggestion is to add these two bubbles as configuration settings under "load:" and "grid:" configuration as @creuter27 mentioned. Would mean then anyone can use it for any use and connect up any sensor they would like to show the power consumption of any device they need :) Only tricky part is "space" as now both grid and essentials could possible have two extra bubbles.
I will be adding some other features in my fork, so maybe I can help out with this when Im done.

:) I'm not a software developer so all contributions that improve the card/code are welcome. I'm going to have a look at adding the additional Loads to essential, non-essential and aux. Haven't quite figured out how to render mdi icons inside an SVG container so images may be generic for now but the idea is you can customize the label.  Space is definitely an issue

You can enable panel mode and setup a 1x1 grid. All the items are positioned relative to the SVG container, so everything will just scale though

@creuter27 I've added this to v1.6.2.  There are probably some visual improvements we can make with the icons in a later release

Will look at how best to do this next. Not sure about the circles

@creuter27 I've included a sensor to track energy costs in v1.6.5

@creuter27 I've included a sensor to track energy costs in v1.6.5

Awesome thank you so much!

Hi, thank you for the awesome feature!
One question, what am I doing wrong ?
I have a go-eCharger and would like to display the power that goes through it to the car and maybe (if possible) the daily energy it consumed.
Now I get a 0 and under it the current power.

square: true
type: grid
cards:
  - type: custom:sunsynk-power-flow-card
    cardstyle: compact
    show_solar: true
    battery:
      energy: 0
      shutdown_soc: 14
      show_daily: true
      auto_scale: true
    solar:
      show_daily: true
      mppts: 2
      pv1_name: House
      pv2_name: Garage
      dynamic_colour: true
      auto_scale: true
    load:
      show_daily: true
      dynamic_icon: true
      dynamic_colour: true
      auto_scale: true
      additional_loads: 1
      load1_name: go-eCharger
      show_aux: false
      load1_icon: mdi:ev-station
      load2_icon: ''
      aux_type: ''
      aux_loads: 0
      show_daily_aux: false
      show_absolute_aux: false
      aux_load1_icon: ''
    grid:
      show_daily_buy: true
      show_daily_sell: true
      show_nonessential: false
      auto_scale: true
      export_colour:
        - 25
        - 210
        - 71
      additional_loads: 0
    entities:
      use_timer_248: switch.ss_use_timer
      priority_load_243: switch.ss_priority_load
      inverter_voltage_154: sensor.ss_inverter_voltage
      load_frequency_192: sensor.ss_load_frequency
      inverter_current_164: sensor.ss_inverter_current
      inverter_power_175: sensor.ss_inverter_power
      inverter_status_59: sensor.ss_overall_state
      day_battery_charge_70: sensor.ss_day_battery_charge
      day_battery_discharge_71: sensor.ss_day_battery_discharge
      battery_voltage_183: sensor.ss_battery_voltage
      battery_soc_184: sensor.ss_battery_soc
      battery_power_190: sensor.ss_battery_power
      battery_current_191: sensor.ss_battery_current
      grid_power_169: sensor.ss_grid_power
      day_grid_import_76: sensor.ss_day_grid_import
      day_grid_export_77: sensor.ss_day_grid_export
      grid_ct_power_172: sensor.ss_grid_ct_power
      day_load_energy_84: sensor.ss_day_load_energy
      essential_power: none
      aux_power_166: sensor.sunsynk_aux_power
      day_pv_energy_108: sensor.ss_day_pv_energy
      pv1_power_186: sensor.ss_pv1_power
      pv2_power_187: sensor.ss_pv2_power
      pv1_voltage_109: sensor.ss_pv1_voltage
      pv1_current_110: sensor.ss_pv1_current
      pv2_current_112: sensor.deye_pv2_current
      pv2_voltage_111: sensor.deye_pv2_voltage
      essential_load1_extra: sensor.goecharger_go_echarger_p_all
      essential_load2_extra: sensor.goecharger_go_echarger_current_session_charged_energy
      aux_load1_extra: sensor.goecharger_go_echarger_p_all
      aux_load2_extra: sensor.goecharger_go_echarger_current_session_charged_energy
      aux_connected_status: sensor.goecharger_go_echarger_car_status
      energy_cost_buy: '0.32'
      energy_cost_sell: '0.082'
      grid_connected_status_194: binary_sensor.ss_grid_connected
      day_aux_energy: sensor.goecharger_go_echarger_current_session_charged_energy
    panel_mode: true
    show_battery: true
    show_grid: true
    large_font: true
    inverter:
      three_phase: true
      auto_scale: false
      modern: true
      autarky: 'no'
      colour:
        - 120
        - 120
        - 120
      model: sunsynk
columns: 1


Maya: Parse texture colorspace and naming on Look Publish

Parsing texture colorspace and naming on Look Publish
We have to transform the texture colorspace to the rendering space on publishing along with the tx file conversion.
When assigning a look in production, all tx files should be set to Raw colorspace and color should be fine.
Instead of using the source texture file names, it would be helpful for archiving if we could have a consistent naming convention for the published tx textures. This could be something like... {assetname}_tex_{texture_channel}_{version}_{udim}.tx
Describe the solution you'd like
Published Texture naming could be comprised of the context asset name, the parsed channel and udim from the source name.
It could also make some color transform deductions based on the source channel name (which would be parsed into a consistent studio convention).
Describe alternatives you've considered
In the past, we have used a cmd script to parse textures before we started shading, this had it's workflow challenges, but I think there is something to be looked into here. We've used a lookup dictionary to detect and set a consistet channel schema and also make some assumptions about the types of channel ie. whether it was scalar data or color information. This automated the colorspace assignment process upon loading the texture into maya.
There's an extensive list here, https://github.com/aydinyanik/clarisse_survival_kit/blob/c32f48b0f2a6e1e5611109a19e9dbae03b4c563a/clarisse_survival_kit/settings.py#L8-L24
However, here's my dictionary:
# tex_library.py
# Libraries of different parameters for texture processing
# Last Updated: 2019_10_30

KNOWNCHANNELS = {
				# Shading
				('BC', 'basecol', 'basecolour', 'BaseColor', 'base'):	'basecolor',
				('C','dif', 'diff', 'col', 'TEX', 'color'):	'diffuse',
				('A') : 'albedo',
				('RFL', 'reflection') : 'reflect',
				('S', 'specular') : 'spec',
				('M', 'metallic'):	'metal',
				('R', 'roughness', 'rgh'):	'rough',
				('G', 'glossiness') : 'gloss',
				('I', 'ior') : 'ior',
				('RFR', 'refraction') : 'refract',
				('B') : 'bump',
				('N', 'normal', 'norm', 'nrm', 'nor'): 'tnorm',
				('D', 'displacement', 'displace') : 'disp',
				('T', 'transparancy', 'trans', 'transp') : 'transp',
				('VD', 'vector_disp', 'vdm' ,'vector_displace', 'vector_displacement') : 'vdisp',
				('H') : 'height',
				('SSS', 'subsurface') : 'ssscol',
				('SSW', 'subsurface_weight') : 'sssweight',
				('OP') : 'opacity',
				('EM', 'emissive', 'emit', 'emission') : 'selfillum',
				('ANIW', 'anisotropy_weight') : 'anisot',
				('ANIR', 'anisotropy_rotaion') : 'anisang',
				# Utilities
				('WN', 'world_space_normals') : 'wsnorm',
				('P', 'position'): 'pos',
				('CA', 'cav') : 'cavity',
				('CU', 'curvature') : 'curve',
				('AO', 'ambient_occlusion', 'occ', 'oc') : 'ao',
				('THK', 'thickness') : 'thick',
				('RGB', 'alpha', 'matte', 'mask') : 'rgb_matte',
				('ID') :'id'
				}

KNOWNCOLORSPACES = {
				('srgb'): 'srgb_texture',
				('outs'): 'out_srgb',
				('outr'): 'out_rec709',
				('lin', 'linear'): 'lin_srgb',
				('raw'): 'raw',
				('acescg', 'cg'): 'acescg',
				('acescc', 'cc'): 'acescc'
				}

KNOWNSRGBCHANNELS = ('basecolor', 'diffuse', 'albedo', 'reflect', 'refract', 'ssscol', 'selfillum', 'transp')

KNOWNEXTENSIONS = ("tiff", "tif", "TIFF",
					"exr", "EXR",
					"png", "PNG",
					"bmp", "BMP",
					"jpg", "JPG", "jpeg",
					)

This was the implementation at the time through cmd with OCIO and maketx:
# eg
# maketx -v -u --oiio --checknan --filter lanczos3 P:\Production\01_projects\rnd\python_image\pirate_hat_tex_v02.tif -o P:\Production\01_projects\rnd\python_image\pirate_hat_tex_v02_maketx.tif
import os
import subprocess
import argparse

# in same directory
from tex_library import *

PARMS = r"-v -u -d half --tile 64 64 --separate --checknan --constant-color-detect --monochrome-detect"
COLORCONFIG = os.environ["OCIO"]

SOURCEDIR = os.getcwd()

parser = argparse.ArgumentParser(description='Tiled EXR Texture Converter [srgb_texture -> acescg]')
parser.add_argument('-o', '--out_dir', type=str, metavar='', required=False, help='The optional output directory (has to exist)')
parser.add_argument('-lin', '--linear_mode', required=False, action='store_true', help='linear_srgb conversion mode [lin_srgb -> acescg]')
parser.add_argument('-srgb', '--out_srgb', required=False, action='store_true', help='legacy_srgb conversion mode [out_srgb -> acescg]')
parser.add_argument('-r', '--raw', required=False, action='store_true', help='no color transforms [raw -> raw]')

group = parser.add_mutually_exclusive_group()
# group.add_argument()
group.add_argument('-a', '--asset_name', type=str, help='asset name for texture name')
group.add_argument('-hdri', '--hdri_mode', action='store_true', help='HDRi conversion mode [lin_srgb -> acescg]')
args = parser.parse_args()

def getFiles(inPath):
	# get versions
	for r, d, f in os.walk(inPath):
		# print (r)
		# print (f)
		# print (f)
		break

	return f

def channelParse(channel_name):
	if channel_name != "":
		for i, i_val in enumerate(KNOWNCHANNELS):
			for lib, pipe_chan_name in KNOWNCHANNELS.items():
				if i_val == lib:
					for x in KNOWNCHANNELS:
						if channel_name in x:
							if channel_name in i_val:
								# print("channel name was {}, converted to {}".format(channel_name, pipe_chan_name))
								return pipe_chan_name
					if channel_name == pipe_chan_name:
						# print("channel_name is already {}".format(pipe_chan_name))
						return pipe_chan_name

# def colorspaceParse(colorspace_name):
# 		if colorspace_name != "":
# 			for i, i_val in enumerate(KNOWNCOLORSPACES):
# 				for lib, pipe_color_name in KNOWNCOLORSPACES.items():
# 					if i_val == lib:
# 						for x in KNOWNCOLORSPACES:
# 							if colorspace_name in x:
# 								if colorspace_name in i_val:
# 									print("colorspace_name name was {}, converted to {}".format(colorspace_name, pipe_color_name))
# 									return pipe_color_name
# 						if colorspace_name == pipe_color_name:
# 							print("colorspace_name is already {}".format(pipe_color_name))
# 							return pipe_color_name

def srgbParse(channel_name):
		if channel_name != "":
			if channelParse(channel_name) in KNOWNSRGBCHANNELS:
				# do srgb_texture - acescg conversion
				srgb_texture = True
			else:
				srgb_texture = False

			# print("convert to acescg from srgb_texture? : ", srgb_texture)

			return srgb_texture

def getUDIM(fileName):
	# file = fileName.replace(".","_")                      #deal with extention
	file = fileName.replace(" ","_")                        #remove spaces

	# split file extension from file and store to variables
	fn, ext = os.path.splitext(file)

	fileSplit = fn.split("_") # list of tokens
	# print(fileSplit)

	#get existing UDIM from file name
	for uDim in fileSplit:
		if str.isdigit(uDim) == True:
			if len(uDim) == 4:
				if int(uDim) >= 1001:
					# print ("UDIM detected : " + uDim)
					# fileRepo['dictUDIM'] = uDim

					return uDim

def getChannel(fileName):
	file = fileName.replace(" ","_").lower()                       #remove spaces

	# split file extension from file and store to variables
	fn, ext = os.path.splitext(file)
	# fn, ud = os.path.splitext(fn)

	fileSplit = fn.split("_") # list of tokens
	# print(fileSplit)

	#get existing channel from file name
	for channel_name in fileSplit:
		if channel_name != "":
			for i, i_val in enumerate(KNOWNCHANNELS):
				for lib, pipe_chan_name in KNOWNCHANNELS.items():
					if i_val == lib:
						for x in KNOWNCHANNELS:
							if channel_name in x:
								if channel_name in i_val:
									# print("channel name was {}, converted to {}".format(channel_name, pipe_chan_name))
									# print ("channel detected : " + pipe_chan_name)
									return pipe_chan_name
						if channel_name == pipe_chan_name:
							# print("channel_name is already {}".format(pipe_chan_name))
							# print ("channel detected : " + pipe_chan_name)
							return pipe_chan_name

def process(inPath, asset_name="", hdri=False, lin=False, out_srgb=False, raw=False, out=None):
	for tex in getFiles(inPath):
		print("*"*50)

		fn, ext = os.path.splitext(tex)	# split file extension from file and store to variables
		print("processing " + fn+ext)
		if "hdri" in fn:
			hdri = True

		if hdri == False:
			if asset_name != "":
				try:
					# NB: raw data channels are left alone
					if srgbParse(getChannel(tex)) == True:
						# default mode
						in_color="srgb_texture"
						out_color="acescg"

						if lin == True: 					# For lin_srgb color maps
							in_color = "lin_srgb"
						if out_srgb == True:				# For legacy srgb maps (display transform)
							in_color = "out_srgb"
						if raw == True:						# force raw mode (no transforms)
							in_color = "raw"
					else:
						in_color="raw"
						out_color="raw"
				except:
					print("no channel found, skipping color transform")
			else:
				print("Please enter asset name with -a [name]")

			if getUDIM(tex) == None:
				udim = "1001"
			else:
				udim = getUDIM(tex)

			try:
				## outFile = os.path.join(inPath, outFileName(asset_name, getChannel(tex), out_color, udim))
				if out == None:
					outFile = os.path.join(inPath, asset_name +"_tex_"+ getChannel(tex) +"_"+ out_color +"_"+ udim +".exr")
				else:
					outFile = os.path.join(out, asset_name +"_tex_"+ getChannel(tex) +"_"+ out_color +"_"+ udim +".exr")
				# print(outFile)
				subprocess.call(["maketx", PARMS, os.path.join(inPath,tex), "--colorconfig", COLORCONFIG, "--colorconvert", in_color, out_color, "-o", outFile])
			except:
				print("no channel found, skipping export")

		if hdri == True:
			in_color="lin_srgb"
			out_color="acescg"

			if out == None:
				## outFile = os.path.join(inPath, outFileName(fn, out_color))
				outFile = os.path.join(inPath, fn.lower() +"_hdri_"+ out_color +".exr")
			else:
				outFile = os.path.join(out, fn.lower() +"_hdri_"+ out_color +".exr")
			# print(outFile)

			if ext == '.hdr' or ext == '.exr':
				subprocess.call(["maketx", PARMS, os.path.join(inPath,tex), "--colorconfig", COLORCONFIG, "--colorconvert", in_color, out_color, "-o", outFile])
				hdri = False
			else:
				print("skipping non-hdri " + fn + ext)

process(SOURCEDIR, asset_name=args.asset_name,
					hdri=args.hdri_mode,
					lin=args.linear_mode,
					out_srgb=args.out_srgb,
					raw=args.raw,
					out=args.out_dir)

# TODO:
# spit texture to shots directory with versioning
# build maya file node texture updater to this path
# build tKinter GUI for texture_publish

# DONE:
# argparse cmd tool

[cuID:OP-5373]

Thanks for the detailed input, this is great.
I just wanted to say that I feel this isn't too much needed for Maya in particular at the time of publishing because Maya has a colorspace setting per file node and defines a rendering color space too. E.g. I've fixed that logic for maketx conversion in #4711
I also don't think it's too relevant for for exports from #4294 Substance Painter because it only has color space settings per bit depth and not per output map.
Instead I do think it's relevant to those cases where a specific color space is undefined for input->output textures.

Recently I have seen this ACES central forum talking about similar issue and there were some suggestions you might be interested to read. Start from this comment and go down. https://community.acescentral.com/t/manual-editing-of-config-ocio/3524/24
Some of it can be reproduced with new OP colorspace distribution. Well not all of it, since we are still missing the loading capabilities.


[FLINK-28796] Add completeStatement REST API in the SQL Gateway

What is the purpose of the change
Add completeStatement REST API in the SQL Gateway.
Brief change log

Add CompleteStatementHandler, CompleteStatementHeaders, CompleteStatementRequestBody and CompleteStatementResponseBody.
Add StatementRelatedITCase.
Update sql_gateway_rest_api_v2.snapshot.

Verifying this change
This change added tests and can be verified as follows:

StatementRelatedITCase
Existed SqlGatewayRestAPIStabilityTest.

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? yes
If yes, how is the feature documented? JavaDocs

@flinkbot run azure


Allow cross-platform Docker builds

This PR explicitly sets GOOS and GOARCH to linux/amd64 when creating the docker image.  This enables developers on a non-Linux platform to produce functional docker images instead of inadvertently embedding a binary built for their local architecture into the image.

thanks!


If MSI AFTERBURNER is turned on before the game is executed, the Console cannot be called.

If MSI AFTERBURNER is turned on before the game is executed, the Console cannot cannot be called.

I dont have this issue I tried to reproduce it, Can you be more specific?

Known issue, it is caused by RivaTuner Statistics Server.
#285
Owner doesnt want to fix it... It worked in previous versions, it seems he fixed Reshade from what he said there, but he ultimately broke this to all hell, cannot get it to work now at all...
And he doesnt seem to want to revert it back :)
Even though it starts to get polluted here with people withr RTSS...
Have fun guys :)

Oh, I have RTSS installed, so can I only turn on RTSS after the game is running?

Yes, but as you probably have it installed with Afterburner as I have it, you basically have to shut down whole Afterburner and then RTSS, as if you shut down just RTSS, Afterburner starts it right back for me...
So just extra hussle on extra hussle...
But yes, that is something you can do, sure. Just dont launch RTSS sooner than you get into menu (pro tip :) )

Thank you. :+1:

If you look inside that pull request I linked, there should be working artifact version (just the .asi file, but that is all that is needed for this anyway, you can get other data from regular release)
With that version from my pull request, you should not need to do this. Only thing you should do is one tweak in RTSS Global profile, which is linked there (comment on other issue).

Here is link to it if you do now want to search for it...
https://github.com/yamashi/CyberEngineTweaks/suites/1723702700/artifacts/32612438
Under Checks tab in that pull request, there is Artifacts button. This is the link under it.

Should be fixed to an extent with upcoming release now.
Note though that you should follow this comment for RTSS to work reliably (otherwise, console works half the time and other half is not rendering, depending on which hook was faster...)
https://github.com/yamashi/CyberEngineTweaks/issues/245#issuecomment-750009640
Working on revising whole DX12 hooking procedure now, so hopefully, we will have some more robust solution in place SOON™ which would not require similar stunts from user.


Checklist for accessibility for first 10 Scenery sims (or so)

@jonathanolson and I met with Colin Clark and Antranig Basman regarding accessibility for our HTML5 Simulations, and came up with this check list for our first 10 (or so) simulations.  I am creating this ticket here because in many cases scenery or related libraries will be required to provide the accessibility support.  We can split this up later on (into different projects)  if desired.

ohm's law: up/down arrow for the sliders

ohm's Law & Resistance in a Wire: Focus some invisible instructions or a description of the sim.

balloons: tough problem for rubbing on the sweater....  Theremin sort of proximity noise.  After focusing the balloon, use arrows.  Left = move to sweater, right = mall, up+down on sweater rubs charges.  Sounds to indicate the electrons moving about.

travoltage. arm + leg like sliders.  input type='range' for the peer.  live region "the electrons flow from the floor into the body, and are evenly separated".
I. do with words = functional but boring
II. kick it up a notch, use clever audio sounds.
A 'bump' when the electrons hit each other.
Maybe sounds should be on for everyone by default.

equation grapher. Use audio waveforms to signify the shapes.

wave on a string.  Audio difficult here.  Allocate a pitch per velocity?  Or a pitch per bead?  Maybe verbal description would help here.  A screen reader would say "far away sounds will show as higher pitch".  Perhaps play the shape of the waveform of the string (like a piano string) but at 1000x frequency.  these ideas could help seeing students as well as a11y students.

gravity force lab.  2-headed sliders.

beers law lab. Maybe when you tab to the fluid, it reads its concentration.  Sliders for the faucets.  Live region for describing the solution.  For shaking things out, press enter and it shakes some things out, and 'add solute' button. shaking noise as things come out.  another noise for when it gets into solution, a crackling noise as precipitating out.

build an atom.  Lots of live regions.
colin can look into accessible periodic tables.

build a molecule. discretize locations.  Antrenig can meet with clayton, and the two of us.

@jessegreenberg does this issue seem relevant anymore? Very old and our a11y effort has taken a clear direction, please feel free to close or such

The items listed in https://github.com/phetsims/scenery/issues/77#issue-15948358 are essentially what we have been working on lately, though we have only just begun to discuss sonification.  At this point, we have the infrastructure built into scenery to handle all of these items.  Further work would be for sim specific details and iterations on the above designs.  Closing.


Support multiple layers

It's just a matter of looping through the vector_layers received from MBTiles.info

On stand by, until we find a test case (or test file).


Remove dependency on  tags

Currently to introduce a standardised styling on blocks of content you have to wrap that content in an article tag. This removes the dependancy on an article tag and instead lets you wrap the section in an element with the class content-block.
There is also some misc tidying up which was revealed when looking for instances of article tags. Check the commits for more details.

I like this a lot :smile:

:raised_hands: Huge improvement.

Brilliant and long overdue :+1:

This would enabled us to make changes like this: https://github.com/alphagov/frontend/pull/743


[AKS] Support IMDS restriction

This checklist is used to make sure that common guidelines for a pull request are followed.
Related command

General Guidelines

[ ] Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
[ ] Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
[ ] My extension version conforms to the Extension version schema

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

AKS

@FumingZhang @zhoxing-ms @yanzhudd could you please help a review? Thanks!
The CI is failing at case "test_aks_create_with_pod_ip_allocation_mode_static_block", it seems to be irrelevant to this PR's change, @FumingZhang  do you have any idea, is this a known issue?

/azp run

/azp run


[lsp-server] 🐞 Constant syntax errors if a file is named exports.graphqls

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Naming a file exports.graphqls makes the editor throw constant errors at you.
Syntax Error: Expected Name, found "}".

Expected Behavior
No syntax errors.
Steps To Reproduce

Create a file named exports.graphqls.
Open it and try to create any schema.

For example:
enum DataExportType {}

extend type Query {
	exportData(ty: DataExportType!): Boolean!
}

Environment

LSP Server Version: v1.3.5 (extension version - is this what you're looking for?)
OS: MacOS 14.4.1 (Sonoma)
LSP Client: vscode-graphql

Anything else?
If I rename the file to export.graphqls the issue disappears.

you have an empty enum so it will throw syntax errord


Public, visitable registration is listed as embargoed with no end date

Steps

Visited public project
Clicked on registrations of that project (https://osf.io/jt652/registrations)
Clicked on title of embargoed registration
Clicked on embargo information dropdown under registration title.

Expected
Expected embargoed registration wouldn't be click-onable/visitable. When it was anyway, I expected to be brought to a page with minimal info that indicated that parts of the registration weren't available because it was embargoed. When clicking on the embargo information dropdown (step 4 above), I expected to see the date the project was embargoed until; given the information just summarized, I considered it possible the embargo had ended.
Actual
Embargoed registration could be visited and information like attached files was available. The dropdown did not give the date that the registration was embargoed until (see screenshot below).

Hi, @jlcohoon,
The 'embargoed' state was shown in error; it should have shown that it was public. This issue has been resolved to the best of our knowledge, and the existing registrations that were affected have been fixed. If you see this again, please let us know.


Handle new contestant WebSocket messages

A WebSocket message is received when a client wishes to become a contestant within a room.
this endpoint is currently stubbed, fill in logic.

Sample message
{
  "command": "new_contestant",
  "room_code": "123ab",
  "contestant_name": "Joe Bloggs"
}


rustfix: Fix Windows tests

For some reason, the parse_and_replace test of rustfix is disabled on Windows. I don't know why, but it would be nice for someone to investigate and fix that.

After removing the #![cfg(not(windows))] on line 2, tests will run on win11 powershell. 1 test passes, one test is ignored. Ignored test requires a "custom rustc build" but I'm not sure what that would entail and don't see it in cursory docs scan.
This may be another case like #13034... fix it and keep an eye out for flaky tests.


New target for CI based binary build

Title: Adding new target for ./ci/do_ci.sh to build contrib-debug image
Description:
Can we achieve the same as bazel build -c dbg //contrib/exe:envoy-static achieves using ./ci/do_ci.sh? But, in ci/README.md, I can see two different targets- debug and dev.contrib, but what if I want to achieve the output combining  these two targets as the command does mentioned earlier? But when run ENVOY_DOCKER_IN_DOCKER=1 ./ci/run_envoy_docker.sh './ci/do_ci.sh docker', I still get the intended image envoyproxy/envoy-contrib-debug-dev.
Moreover, can we build for target dev.contrib binary with 0 test running?
Relevant Links:
https://www.envoyproxy.io/docs/envoy/latest/start/building/local_docker_build

probably the easiest is to use the default path - both the docs you referenced need some work and may not be up-to-date
$ ./ci/do_ci release.server_only

this creates the following (without running tests)
$ tar tf ~/Downloads/release.tar.zst
dbg/
dbg/envoy
dbg/envoy-contrib
dbg/envoy-contrib.dwp
dbg/envoy.dwp
envoy
envoy-contrib
utils/
utils/su-exec

its built with -c opt - not sure if that matters
obviously this has a bit more than you want in it
if we were to adapt any targets it would be this one i think, the others are ~deprecated or at least need some updating

Thanks @phlax
I have run dbg/envoy-contrib to debug by attaching it CLion and set some break points but they are not hit. But when I built the envoy-contrib with bazel in local machine by passing -c dbg, the breakpoints are properly hit. What could be the reason?

not sure tbh - when you tried debugging i assume you extracted the binary from the tarball - did you also extract the dwp file?
i believe that file needs to present (adjacent i think) for debugging to work
if its not possible to debug using the standard build im wondering whether its any use including the dbg build there

when you tried debugging i assume you extracted the binary from the tarball - did you also extract the dwp file?
Yes, I have extracted release.tar.zst. No, I didn't extract dwp file.
i believe that file needs to present (adjacent i think) for debugging to work.
Yes file were present- I opened the Clion in the root dir of envoy. It worked as expected when I use my own built debug binary. I just replaced the binary and it didn't work.
if its not possible to debug using the standard build im wondering whether its any use including the dbg build there
If binary is created with proper debug symbols, it should work I believe.

i think you need to extract the dwp file and ensure its placed adjacent to the envoy binary (not 100% i didnt try it)


[Feature]: Modify Browser Tab Title When Visiting Pages Other Than the Home Page.

Description
Browser tab title should changes when the user visits (tools, prompts or datasets) to
HOME    : AI Fusion
Tools      : AI Fusion - Tools
Prompts : AI Fusion - Prompts
Datasets : AI Fusion - Datasets
Provide Screenshot
CURRENT:

title is same for remaning tabs
REQUIRED:
The homepage title should remain as it is.

It should work same for the remaning tabs (prompts and datasets).
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines.
[ ] I am willing to work on this issue (optional)

Hello @PriyansuMaurya, I would like to make the necessary changes can u plz assign it to me.


Syntax error in a particular generated RelationsResolver

Describe the Bug
I have a prisma model called Case. It is a core concept in this application and an unfortunate keyword collision in the TS world. When the RelationsResolver for it is generated, the file is syntactically invalid, and subsequent POSTs to /api/graphql fail with what's advertised as a webpack PackFileCacheStrategy Error but is in fact a syntax error in the generated file.
Module parse failed: Unexpected token (98:1)
// ...

where lines 97/98 are
 | ], CaseRelationsResolver);
 >  | null > {

Everything past that point is independently full of errors like
const: { _count } = (0, helpers_1.transformInfoIntoPrismaArgs)(info),
    return: (0, helpers_1.getPrismaFromContext)(ctx).case.findUniqueOrThrow({
        where: {
            id: , case: .id,
        },
    }).requestedBy({
        ...args,
        ...(_count && (0, helpers_1.transformCountFieldIntoSelectRelationsCount)(_count)),
    })

Notice the missing variables in the where condition id: , case: .id
If I delete all references to CaseRelationsResolver in generated code, other types work as expected. I haven't found a way to prevent it from being generated in the first place.
To Reproduce
1: schema.prisma:
model Case {
  id String @id @default(cuid())
  name String
  surgeonId String?
  surgeon Surgeon? @relation(fields: [surgeonId], references: [id])

}
model Surgeon {
  id String @id @default(cuid())
  name String
  cases Case[]
}

2: $ prisma generate
Expected Behavior
For this model's RelationsResolver to be syntactically valid and comparable to other RelationsResolvers
Logs
scheduling:dev: <w> [webpack.cache.PackFileCacheStrategy] Serializing big strings (101kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)
scheduling:dev:  ⨯<EMAIL_ADDRESS>scheduling:dev: Module parse failed: Unexpected token (98:1)
scheduling:dev: You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
scheduling:dev: |     TypeGraphQL.Resolver(_of => Case_1.Case)
scheduling:dev: | ], CaseRelationsResolver);
scheduling:dev: >  | null > {
scheduling:dev: |     const: { _count } = (0, helpers_1.transformInfoIntoPrismaArgs)(info),
scheduling:dev: |     return: (0, helpers_1.getPrismaFromContext)(ctx).case.findUniqueOrThrow({
scheduling:dev:
scheduling:dev: Import trace for requested module:
scheduling:dev<EMAIL_ADDRESS>scheduling:dev<EMAIL_ADDRESS>scheduling:dev<EMAIL_ADDRESS>scheduling:dev: ./src/pages/api/graphql.ts
scheduling:dev:  ⨯<EMAIL_ADDRESS>
Environment (please complete the following information):

OS: MacOS 13.2.1
Node:  20.10.0
typegraphql-prisma version 0.27.1
Prisma version 5.9.1
TypeScript version ~4.3.3~ 5.3.3

Additional Context
Add any other context about the problem here.

Please rename your model to something not being a keyword:
https://prisma.typegraphql.com/docs/advanced/renaming-model


Code coverage integration

As part of the NB pipeline, code coverage is being added for maintaining and increasing the code quality.

The sporadic test failure we get has been commented out until we can determine a full fix for that one.
The test coverage limits are in-place for two of the modules, but can be adjusted as we see fit in the future.

Can you make sure the PR is on the latest main and verified before merge? Notes:

I believe the correct one is there now, w/ my merged updates.

mvn-defaults might be a good place to hold default build configs, unless they have to be per-module.

Yes, answer is inline above.  We can consider that in this PR if we decide an overall min and max coverage will apply to all modules.

There should be an easy way to disable this for local testing. Maybe a profile option that includes the jacoco modules.

Yes, agreed.  The -Djacoco.skip=true will do the trick when kicking off mvn targets locally.  In some cases, this can reduce the local build time by up to one minute for a 4 minute build.

@jshook I believe we are good on this one if you want it for nb5.  A clean build showed up (except for the docs push, which has been normal).


Install Extensions cause systemcrash and reboot on MacBookPro 16-inch 2019 macOs10.15.7

Does this issue occur when all extensions are disabled?: No

VS Code Version:  1.59.0-insider
OS Version: macos 10.15.7

Steps to Reproduce:
1.I Installed “AppWorks” Extension，About 5 seconds after the installation is complete，my computer crashed，the mouse did not move，and then computer reboot
2. My computer starts vscode automatically，if I don't turn vscode off when I turn computer on, it will be crashed.
3. I has ask the "AppWorks" Extensions Team，they think it may be vscode&system api compatibility question.

Is it only with this AppWorks extension or installing other extensions also have same issue ?

stylelint may cause crash too. It's very strange in

VS Code Version: 1.59.0-insider
OS Version: macos 10.15.7

As a VS Code extension developer,  i want to know how to avoid this issue happen again.

@fyangstudio / @songjiafan Can you please provide any logs or report of the crash?


time_t is 32-bit wide, please change to 64-bit to make applications Y2K38 safe (IDF-350)

The time_t base type on which all unix-timestamp (seconds after 1970-01-01) related functions (such as gettimeofday) do rely on, is only 4 bytes (32-bit) wide. It is suggested to use an 8 byte (64-bit) variable here, as otherwise all unix-timestamps after 2038-01-18 will be wrong. To sketch this, I coded an example (main.c), which shows the exact problem. Notably is, that not only the current wall-clock time is affected by this, also calculations on the time (for example, calendar events and the like) which result in a value higher than the noted limit in 2038, are affected. This could become at some time a serious issue, so it would be best to act soon. See also the wikipedia page on this problem.
So it would be very appreciating to change the time_t base type to an "signed long long" type.
The current output of my sample code can be seen here:
I (508) example: sizeof(time_t): 4 (32-bit)
I (1508) example: Time now: 000000007FFFFFF8 (2038-01-19 03:14:00)
I (2508) example: Time now: 000000007FFFFFF9 (2038-01-19 03:14:01)
I (3508) example: Time now: 000000007FFFFFFA (2038-01-19 03:14:02)
I (4508) example: Time now: 000000007FFFFFFB (2038-01-19 03:14:03)
I (5508) example: Time now: 000000007FFFFFFC (2038-01-19 03:14:04)
I (6508) example: Time now: 000000007FFFFFFD (2038-01-19 03:14:05)
I (7508) example: Time now: 000000007FFFFFFE (2038-01-19 03:14:06)
I (8508) example: Time now: 000000007FFFFFFF (2038-01-19 03:14:07)
I (9508) example: Time now: FFFFFFFF80000000 (1901-12-13 20:45:52)
I (10508) example: Time now: FFFFFFFF80000001 (1901-12-13 20:45:53)
I (11508) example: Time now: FFFFFFFF80000002 (1901-12-13 20:45:54)
I (12508) example: Time now: FFFFFFFF80000003 (1901-12-13 20:45:55)
I (13508) example: Time now: FFFFFFFF80000004 (1901-12-13 20:45:56)
I (14508) example: Time now: FFFFFFFF80000005 (1901-12-13 20:45:57)
I (15508) example: Time now: FFFFFFFF80000006 (1901-12-13 20:45:58)
I (16508) example: Time now: FFFFFFFF80000007 (1901-12-13 20:45:59)
I (17508) example: Time now: FFFFFFFF80000008 (1901-12-13 20:46:00)

Or alternatively make it an unsigned 32-bit integer postponing the 32-bit overflow by further 68 years.

@igrr Can we close this issue?

@jack0c no, we will be working on it.

Currently we supply newlib as a set of pre-built libraries. time_t size is fixed at the time these libraries are built. We plan to also allow for doing a custom builds of newlib in IDF, which would allow changing sizeof(time_t) and other things.
For the change of default time_t size, we will have to wait until one of the major releases, since that would be a breaking change for some existing applications.

I see a v2.0 milestone that looks complete at https://github.com/espressif/esp-idf/milestone/1 being tracked (and complete), but no other issue-based tracking of release milestones in Github.
https://github.com/espressif/esp-idf/releases/tag/v3.1-beta1 is the v3.1 beta.
Do you anticipate this waiting for a v4.0 major release? I know that might be some time out (maybe 2019 at your current release cadence?)

Hi @vielmetti ,
Thanks for the reminder about the GitHub Milestones feature. As you can see, we haven't been using it. We plan to start publishing a version roadmap soon, but at the moment there isn't one publically accessible.
Currently the plan is for V4.0 to be in beta release by the end of the year, for a final release in early 2019.

Thanks @projectgus - hope that v4.0 is perking right along, and that you can confirm that the time_t changes will be in it.

Is there any further update on when this year 2038 issue will be resolved?

@projectgus Can you maybe consider a major update with just this change, (since it has a deadline..) In the spirit of continuous delivery (-;

That's a relief...
I will now subtract 883612800 seconds and dates and weekdays are the same again! Also this gives you an extra 28 years to make the update!
https://math.stackexchange.com/questions/536847/how-often-in-years-do-calendars-repeat-with-the-same-day-date-combinations-juli

Hi @remcoNL,
Glad you found a workaround!
We've decided to push this back from the v4.0 release, as we're already making a lot of other newlib changes. Sorry for the inconvenience. The current plan is as follows:

64-bit time_t will be supported in IDF v4.1 as an optional configuration. It may require building a custom toolchain where newlib is configured with 64-bit time_t (this process will be documented).
64-bit time_t is planned to become default in IDF v5.0

We're currently averaging a major version per year, so there should still be plenty of time between the v5.0 release and the 2038 deadline.
OTA updating a firmware with 32-bit time_t to 64-bit time_t should work fine, also (assuming the OTA update is complete before 2038.)

Really appreciate the work, and i'll schedule my updates for next year (or one year later).

Please remember struct timeval from gettimeofday() As of IDF 4.0 the tv_sec member is a long (defined in lwip/sockets.h(!?)

Please remember struct timeval from gettimeofday() As of IDF 4.0 the tv_sec member is a long (defined in lwip/sockets.h(!?)

Knock knock ..
Now that you have closed this issue by means of SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS, is there another ticket that tracks progress on an official 64bit time_t toolchain?

Hi @themadsens,
We have this on our internal list of breaking changes that we plan to make in ESP-IDF V5.0 (the toolchain support was unfortunately too late to be included in V4.0, so V5.0 is our next opportunity to introduce this). I'm afraid there's no public ticket apart from this one, though.

Please remember struct timeval from gettimeofday() As of IDF 4.0 the tv_sec member is a long (defined in lwip/sockets.h(!?)

Thanks for pointing this out and sorry noone replied when you first commented about it. This is something that LWIP supports (for platforms without compliant sys/time.h). However, we don't use this in ESP-IDF:

https://github.com/espressif/esp-idf/blob/v4.0/components/lwip/port/esp32/include/lwipopts.h#L814
https://github.com/espressif/esp-lwip/blob/c9e3b53c6f04052943f97210b858cec805cc98d9/src/include/lwip/sockets.h#L523

Building a custom toolchain with SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS and using it with ESP-IDF is supported since V4.1, so if you find anything else that doesn't work in this configuration (on V4.1 or newer) then please open a new GitHub issue for it and we'll fix it.

Hi @remcoNL,
Glad you found a workaround!
We've decided to push this back from the v4.0 release, as we're already making a lot of other newlib changes. Sorry for the inconvenience. The current plan is as follows:

64-bit time_t will be supported in IDF v4.1 as an optional configuration. It may require building a custom toolchain where newlib is configured with 64-bit time_t (this process will be documented).
64-bit time_t is planned to become default in IDF v5.0

So next toolchain release will support 64-bit time_t, right?

Yes, we are trying to include this time_t change into the upcoming toolchain release based on GCC 11.

time_t is now 64-bit in the GCC 11 based toolchain available on the master branch since https://github.com/espressif/esp-idf/commit/bf43076c044a58429ebd90ac508e32dd82321af1.

Is this change in v4.4.3? or only v5.0?

@igrr , what is the projected release date of v5.0?

It's already out!
https://github.com/espressif/esp-idf/releases/tag/v5.0

@chipweinberger - thank you!


UI asks for api key even when one is set on the server side

There is a regression since https://github.com/mckaywrigley/chatbot-ui/commit/83217c6d83e65b4400f5ab408d0cef9ccfc3c8c5, It is now impossible to use the UI wihtout setting an API on the UI, even if an API key is set on the server side.
(or did I miss something ?)

Shoot a branch must've gotten messed up. Thought that was pushed. I'll get that fixed!

This should be fixed now. Will wait for confirmation.

using ad2e1f0, and providing the key with the OPENAI_API_KEY environment variable, I have the following error :

I have encountered the same issue as well，when I open localhost:3000


wrong controller instantiation with multiple modules

yo m --skip-prompts
gulp watch

StartCtrl and Service from module main are properly instantiated

yo m:module test
gulp watch
go to http://<IP_ADDRESS>:9000/#/main

StartCtrl and Service from module test instead of main are falsely instantiated
This seems to be a general problem with angular since the problem occurred without using ui-router as well and even without controllerAs syntax. However I'm fairly sure this worked correctly in earlier versions.
index.html:
<ion-nav-view>
  <ion-view view-title="main module" ng-controller="StartCtrl as start">
    <ion-content>
      <ion-list>
        <ion-item class="item item-divider">
          This is your start template!
        </ion-item>
        <ion-item class="item item-icon">
          icons working?

        </ion-item>
        <ion-item class="item item-thumbnail">
          images working?

          <img width="75"<EMAIL_ADDRESS>        </ion-item>

        <ion-item class="item">{{start.someData.binding}}</ion-item>
        <ion-item class="item item-divider">Environment variables:</ion-item>
        <ion-item class="item item-text-wrap">

{{start.ENV | json}}

        </ion-item>
        <ion-item class="item item-divider">Build variables:</ion-item>
        <ion-item class="item item-text-wrap">

{{start.BUILD | json}}

        </ion-item>

      </ion-list>
    </ion-content>
  </ion-view>
</ion-nav-view>

main.js
'use strict';
angular.module('main', [
  'ionic',
  'ngCordova',
  'ui.router',
  // TODO: load other modules selected during generation
]);
// .config(function ($stateProvider, $urlRouterProvider) {

//   console.log('Allo! Allo from your module: ' + 'main');

//   $urlRouterProvider.otherwise('/main');

//   // some basic routing
//   $stateProvider
//     .state('main', {
//       url: '/main',
//       templateUrl: 'main/templates/start.html',
//       controller: 'StartCtrl as start'
//     });
//   // TODO: do your thing
// });

Just checked this out. Same for me here.
But i'm not so sure about the point, that this worked in earlier versions.
I just saw, that it depends, how you 'inject' the modules into each other.
angular.module('myProject', [
  // your modules
  'test',
  'main'
]);

Seems like last one 'wins'.
Apart from this problem, I would prefer a naming of the start controller, service etc in the module name.
This seems far more useful, than 'start' to me.

I'll look into it. Thanks for verifying :+1:

Found this: http://stackoverflow.com/questions/13406791/modules-and-name-clashes-in-angularjs/19820088#19820088
In my opinion that's a strong reason against using modules in Angular 1.x. Angular 2 won't have this problem due to ES6 modules, since the application programmer is able to manage the naming of the imports her/himself: https://github.com/lukehoban/es6features#modules

related to #148 and #161

@MathiasTim I think naming the start controller, services templates and config constant based on the module name is a good idea. Unfortunately this is quite a bit of work and it also affects how the config constant and its gulp tasks should work. Let's discuss this.

related to: #148
@gruppjo @DrMabuse23 I think we should set up a meeting via Skype, or maybe at M-Way to discuss this. Im not really convinced by our current strategy/use of modules in angular.

Result of discussion:

module: name start ctrl, template, service based on module name
name config: Config, Config

I may be being stupid here, but does this address the issue that each module is created via the  yo m:module <modName> command ends up with the view and controllers called 'start'
Which I had to manually rename as my abstract view controller with its default StartCtrl name didnt work as it was clashing with the other module (main)'s controller named StartCtrl

Hi @LunarDevelopment. That exactly is the problem.


The seed field on restore portfolio doesn't allow paste

When restoring a portfolio I am unable to paste a seed into the "Enter your Seed Phrase" screen.
Users will find this very cumbersome.

HyperDEX 0.1.0-alpha.2
Electron 2.0.2
win32 10.0.16299
Locale: en-US

How are you trying to paste it? Ctrl+V or right-click and then "Paste"?

Both

@sindresorhus there was another report of this previously. I can't seem to find the issue now but I'm pretty sure it was on Windows too.


Either BaseAsymSel or ExtAsymSelCount shall be non-zero If SignatureRequested field is set in GET_MEASUREMENTS request attributes

Refer to paragraph 412 Table 41 — GET_MEASUREMENTS request attributes in DSP0274_1.2.1.
SignatureRequested Field:
If the Responder can generate a signature ( MEAS_CAP is 10b in the CAPABILITIES response and either
BaseAsymSel or ExtAsymSelCount is non-zero) a value of 1 indicates that a signature on the
measurement log (defined in MEASUREMENTS signature generation ) is required.
The following Line 253~262 only check if MEAS_CAP is 10b in the CAPABILITIES response, but miss to check either
BaseAsymSel or ExtAsymSelCount is non-zero.
https://github.com/DMTF/libspdm/blob/ffe95fea963e2048fb3708a8f5c4e7a31440c206/library/spdm_responder_lib/libspdm_rsp_measurements.c#L253-L262

This check has already been done in ALGORITHMS.
If Responder's MEAS_CAP== 10b and its BaseAsymSel == 0, then NEGOTIATE_ALGORITHMS will error with InvalidRequest.
https://github.com/DMTF/libspdm/blob/db735a85ded19f6500133d4504351444bf87b3a3/library/spdm_responder_lib/libspdm_rsp_algorithms.c#L554-L574


Incorrect halo update scheduling

The halo update is incorrectly placed when using a mix of time and not time varying object
MFE:
from devito import Eq, Operator, VectorFunction, div, grad, Grid, TimeFunction

grid = Grid((11, 11))

s = grid.stepping_dim.spacing
st = tuple([None]*grid.dim)

p = TimeFunction(name="p", grid=grid, time_order=2, space_order=4)
tmp = VectorFunction(name="tmp", grid=grid, space_order=4, staggered=st)

op = Operator([Eq(tmp, grad(p)), Eq(p.forward, div(tmp))])

This produces the following code:
    haloupdate_0(p_vec,comm,nb,t0,nthreads);
    haloupdate_1(tmp_x_vec,comm,nb,nthreads);
    haloupdate_2(tmp_y_vec,comm,nb,nthreads);
    #pragma omp parallel num_threads(nthreads)
    {
      #pragma omp for collapse(1) schedule(dynamic,1)
      for (int x = x_m; x <= x_M; x += 1)
      {
        #pragma omp simd aligned(p,tmp_x,tmp_y:16)
        for (int y = y_m; y <= y_M; y += 1)
        {
          tmp_x[x + 4][y + 4] = (8.33333333e-2F*(p[t0][x + 2][y + 4] - p[t0][x + 6][y + 4]) + 6.66666667e-1F*(-p[t0][x + 3][y + 4] + p[t0][x + 5][y + 4]))/h_x;
          tmp_y[x + 4][y + 4] = (8.33333333e-2F*(p[t0][x + 4][y + 2] - p[t0][x + 4][y + 6]) + 6.66666667e-1F*(-p[t0][x + 4][y + 3] + p[t0][x + 4][y + 5]))/h_y;
        }
      }
    }
    #pragma omp parallel num_threads(nthreads)
    {
      #pragma omp for collapse(1) schedule(dynamic,1)
      for (int x = x_m; x <= x_M; x += 1)
      {
        #pragma omp simd aligned(p,tmp_x,tmp_y:16)
        for (int y = y_m; y <= y_M; y += 1)
        {
          p[t1][x + 4][y + 4] = (8.33333333e-2F*(tmp_y[x + 4][y + 2] - tmp_y[x + 4][y + 6]) + 6.66666667e-1F*(-tmp_y[x + 4][y + 3] + tmp_y[x + 4][y + 5]))/h_y + (8.33333333e-2F*(tmp_x[x + 2][y + 4] - tmp_x[x + 6][y + 4]) + 6.66666667e-1F*(-tmp_x[x + 3][y + 4] + tmp_x[x + 5][y + 4]))/h_x;
        }
      }
    }

Which is incorrect,     haloupdate_1(tmp_x_vec,comm,nb,nthreads) and haloupdate_2(tmp_y_vec,comm,nb,nthreads) should be called after the tmp loop because p[t1] needs to compute FD of it.

Hey guys,
My name is Victor, I'm working with @nogueirapeterson on the SENAI-CIMATEC team.
I was looking into that question and found this behavior is introduced by rule2 within _merge_halospots(iet) which is called in optimize_halospots(iet). I was able to overcome this by omitting rule2 in line 151 of mpi.py:
# merge_rules = [rule0, rule1, rule2]
merge_rules = [rule0, rule1]

I'm not sure yet what this rule exactly means, so I'm not sure if this is a misbehavior due to other code or to a badly formulated rule. If you guys bring some light into that question I'm here to help.
Hope this helps in some way.
Cheers

@Leitevmd congratz on getting deep down to that point -- yes, that's potentially the source of the problem.
As you may imagine, however, we cannot just comment out rule2; if you do so and try running all tests in test_mpi.py, you'll see that some of them will start failing. But you're definitely looking in the right direction. You need to either fix one of the three rules (maybe rule2 itself?) or add another rule such that the halo spots don't get merged, and so eventually they appear at the right place in the generated code

@FabioLuporini, rule2 always return True if loc_indices == {} because of its return statement: (mpi.py#L146)
    def rule2(dep, hs, loc_indices):
        # E.g., `dep=W<f,[t1, x+1]> -> R<f,[t1, xl+1]>` and `loc_indices={t: t0}` => True
        return all(dep.distance_mapper[d] == 0 and dep.source[d] is not v
                   for d, v in loc_indices.items())

I bet this is not what this rule wants. Adding and loc_indices != {} at the end of the return statement prevents the undesired merge of halo spots reported on this issue and I think it also maintains the proper purpose of rule2. I'm assuming this because the only test in test_mpi.py which fails when I simply omit rule2 is test_avoid_haloudate_if_flowdep_along_other_dim (test_mpi.py#L914). With the change mentioned above all tests in test_mpi.py pass. What you think, could this be a reasonable solution?

I think you're looking in the right direction.
What if we instead turn the all into an any ?
I think it makes it a bit neater while achieving the same purpose. Also, any logically makes more sense to me as we only need one access index (eg t1) to differ from the loc-index (eg t0) such that this dependence doesn't represent a treat to the halo merge.
Does it work?
I suggest you open a PR and add the MFE that @mloubout attached to this issue. Please, place the MFE right below test_avoid_haloudate_if_flowdep_along_other_dim  and give it a suitable name.

@FabioLuporini  I've opend a PR  (#1482)  with the solution you suggested but instead of using the MFE above I've wrote a simpler test (in accordance with other tests within test_mpi.py) with minimal requirements to reproduce this issue.

@Leitevmd nice job, and I really do like the new MFE !
I left a couple of minor comments in the PR. Happy to merge once they're addressed

@FabioLuporini I think, they're all addressed. I have also included a counting check for halo update calls (like previous tests).

awesome, gonna merge soon, then will close this issue.
OT: BTW, are u on our slack channels @Leitevmd ? you should be :)

fixed via #1482 , hence closing


Everything appears to be scaled down by ~20%

A 1um x 1um box appears to be only .8 um. There appears to be some logic issue in bwToGDS

BMP I was converting had a white border that I could not see. Tested converter with rectangular box bmp and it operates exactly as designed.

BMP I was converting had a white border that I could not see. Tested converter with rectangular box bmp and it operates exactly as designed.


Python interpreter reads inputs slowly after plotting with matplotlib

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.85.0 (Universal)
OS Version: macOS 14.1.2 (23B2091)

Steps to Reproduce:
I use Visual Studio Code as an interpreter for Python and I am experiencing an issue on multiple Mac machines where after plotting and viewing a plot with the matplotlib package, the Python interpreter becomes much slower at reading inputs. This is very annoying for working on workflows and debugging code.
I have provided a video below to show how the issue can be reproduced. This video was recorded on a new M3 Mac with a fresh install of Python and Visual Studio Code.
https://github.com/microsoft/vscode/assets/17301771/eaaa4b38-5f56-4508-b68e-5a8383a8f201

Not sure what's going on, I'm not sure where to send this. Any ideas @Tyriar @meganrogge?

I wasn't able to repro it.

Yea, I'm just using, shift+enter, to run selection.
It's the evening here in the UK. Tomorrow I'll get the version information for Python and the installed packages to see if that helps you reproduce it.

Hi again.
Python version: 3.9.6
Installed packages:
anndata             0.10.3
array-api-compat    1.4
cESFW               0.0.1
contourpy           1.2.0
cycler              0.12.1
dill                0.3.7
exceptiongroup      1.2.0
fonttools           4.46.0
h5py                3.10.0
importlib-resources 6.1.1
joblib              1.3.2
kiwisolver          1.4.5
llvmlite            0.41.1
matplotlib          3.8.2
multiprocess        0.70.14
natsort             8.4.0
numba               0.58.1
numpy               1.26.2
p-tqdm              1.4.0
packaging           23.2
pandas              2.1.4
pathos              0.3.1
Pillow              10.1.0
pip                 23.3.1
plotly              5.18.0
ppft                <IP_ADDRESS>
pynndescent         0.5.11
pyparsing           3.1.1
python-dateutil     2.8.2
pytz                2023.3.post1
scikit-learn        1.3.2
scipy               1.11.4
seaborn             0.13.0
setuptools          69.0.2
six                 1.16.0
tenacity            8.2.3
threadpoolctl       3.2.0
tqdm                4.66.1
tzdata              2023.3
umap-learn          0.5.5
wheel               0.42.0
zipp                3.17.0
Note that cESFW is one of my packages, which you can install from https://github.com/aradley/cESFW, but I would be very surprised if this was the issue as it uses basic Python packages.

I wonder whether this happens in an external terminal outside of vscode, with just pasting the text into the terminal with cmd+v?

@aradley can you try running this in Python REPL launched from terminal like Rob mentioned? Totally outside of VS Code? Trying to figure out if this is problem for REPL in VS Code Python or some other.

Just did, and not only is it still a problem, but it was worse. 1187 times slower when just running Python through the terminal compared to 97 times slower in Visual Studio Code.
Guess this isn't your problem then? Any idea where I should submit the problem? Either way, thank you for your engagement and help.

Guess this isn't your problem then?

Probably not.

Any idea where I should submit the problem?

If it only happens when displaying a figure, I would ask matplotlib.

https://matplotlib.org/devdocs/devel/contribute.html#submitting-a-bug-report is how to report a bug for matplotlib.

Cool, thanks for your help. I'll close the issue.

Issue appears to be outside of Visual Studio Code.


adds null case to weakref docs

I noticed the class reference for weakref doesn't mention get_ref() returns null if the object no longer exists. This is my first open source PR so let me know if this is right. Thank you.

ok I amended the commit with your suggestion. thank you!

Thanks! And congrats for your first merged Godot contribution :tada:

Cherry-picked for 3.5.


Text created after S2D_Show(window) does not display (Sample included)

#include <simple2d.h>

//Meta
S2D_Window *window;

//Arcade
S2D_Text *title;

void render() {
  if (title) {
    S2D_DrawText(title);
  }
}

void on_key(S2D_Event e) {
  S2D_Close(window);
}

int main() {
  window = S2D_CreateWindow(
    "", 1920, 1080, NULL, render, S2D_RESIZABLE
  );
  window->on_key = on_key;
  window->fps_cap = 120;
  window->viewport.mode = S2D_EXPAND;

  S2D_Show(window);
  title = S2D_CreateText("media/arial.ttf", "Combo.Zone Zap Edition", 20);
  title->x = 127;
  title->y = 740;

  return 0;
}

Needs a media folder with arial.ttf
Expected to see the text display, it doesn't.
If you move the S2D_Show to
  title = S2D_CreateText("media/arial.ttf", "Combo.Zone Zap Edition", 20);
  title->x = 127;
  title->y = 740;
  S2D_Show(window);

the text displays.
I need to dynamically create a S2D_Text after the window is already running.
How do I do this?

Closing, github UI messed up with a "see related issues beta".
Leaving #109 up


AudioContext::resume not Send anymore?

I have this error with AudioContext::resume after upgrading to 1.0.0-rc.6
error[E0277]: `std::sync::MutexGuard<'_, Box<dyn web_audio_api::io::AudioBackendManager>>` cannot be sent between threads safely
    --> src/audio_context.rs:177:13
     |
177  |       ctx.env.execute_tokio_future(
     |               ^^^^^^^^^^^^^^^^^^^^ `std::sync::MutexGuard<'_, Box<dyn web_audio_api::io::AudioBackendManager>>` cannot be sent between threads safely
178  | /         async move {
179  | |             context_clone.resume().await;
180  | |             Ok(())
181  | |         },
     | |_________- within this `{async block@src/audio_context.rs:178:9: 181:10}`
     |
     = help: within `{async block@src/audio_context.rs:178:9: 181:10}`, the trait `Send` is not implemented for `std::sync::MutexGuard<'_, Box<dyn web_audio_api::io::AudioBackendManager>>`, which is required by `{async block@src/audio_context.rs:178:9: 181:10}: Send`
     = note: required because it captures the following types: `std::sync::MutexGuard<'_, Box<dyn web_audio_api::io::AudioBackendManager>>`, `futures_channel::oneshot::Receiver<()>`
note: required because it's used within this `async` fn body
    --> src/index.crates.io-6f17d22bba15001f/web-audio-api-1.0.0-rc.6/src/context/online.rs:474:32
     |
474  |       pub async fn resume(&self) {
     |  ________________________________^
475  | |         // Lock the backend manager mutex to avoid concurrent calls
476  | |         log::debug!("Resume called, locking backend manager");
477  | |         let backend_manager_guard = self.backend_manager.lock().unwrap();
...    |
500  | |         log::debug!("Resumed audio graph");
501  | |     }
     | |_____^
     = note: required because it captures the following types: `impl Future<Output = ()>`
note: required because it's used within this `async` block
    --> src/audio_context.rs:178:9
     |
178  | /         async move {
179  | |             context_clone.resume().await;
180  | |             Ok(())
181  | |         },
     | |_________^
note: required by a bound in `napi::Env::execute_tokio_future`
    --> src/index.crates.io-6f17d22bba15001f/napi-2.16.4/src/env.rs:1075:18
     |
1072 |   pub fn execute_tokio_future<
     |          -------------------- required by a bound in this associated function
...
1075 |     F: 'static + Send + Future<Output = Result<T>>,
     |                  ^^^^ required by this bound in `Env::execute_tokio_future`

I imagine this is due to the fixes done in #499 but I can't figure out the problem
My wrapping code (which didn't change since previous version) is:
#[js_function]
fn resume(ctx: CallContext) -> Result<JsObject> {
    let js_this = ctx.this_unchecked::<JsObject>();
    let napi_context = ctx.env.unwrap::<NapiAudioContext>(&js_this)?;
    let context_clone = Arc::clone(&napi_context.0);

    ctx.env.execute_tokio_future(
        async move {
            context_clone.resume().await;
            Ok(())
        },
        |&mut env, _val| env.get_undefined(),
    )
}

Ugh, classic async Rust. Apparently we are carrying a non-Send variable across an await point in the new version. I will have a look and add regression tests for all Future return types.


Jest 28 compatabiity

Please update for Jest 28.

I will work on this over the next week

Thank you

So, I have looked into this. What problem are you running into with Jest 28? It seems to be compatible with 28.


fix for #466

What does this PR?
Where should the reviewer start?
Steps to reproduce
Issue number
Screenshots/Video

@ue updated


TableBlock with custom TabbedInterface

When new TableBlock is used with default TabbedInterface - all works fine:
from wagtail.contrib.table_block.blocks import TableBlock
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore.models import Page

class TestPage(Page):

    content = StreamField([
        ('table', TableBlock()),
    ])

    search_fields = Page.search_fields
    content_panels = Page.content_panels + [
        StreamFieldPanel('content')
    ]

I see editor as expected:

But when I try to create custom TabbedInterface:
from wagtail.contrib.table_block.blocks import TableBlock
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel, TabbedInterface, ObjectList
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore.models import Page

class TestPage(Page):

    content = StreamField([
        ('table', TableBlock()),
    ])

    search_fields = Page.search_fields
    editor_content_panels = [
        StreamFieldPanel('content')
    ]

    edit_handler = TabbedInterface([
        ObjectList(Page.content_panels, heading="Default Editor"),
        ObjectList(Page.promote_panels, heading="Promote"),
        ObjectList(Page.settings_panels, heading="Settings", classname='settings'),
        ObjectList(editor_content_panels, heading="Editor"),
    ])

After creating new page with TableBlock and re-opening it for edition - table editor don't appears:

But... After opening "Developer Tools" (F12) magic happens:

I've checked this bug with latest Chrome and Firefox. Looks like some JavaScript window refresh is needed on Tab click event.

Thanks for the report @soar! My guess is that the table control is trying to find the size of its container element in order to resize itself correctly, and is getting a result of (0, 0) when the container is hidden. (It's probably also set up to redo the calculation on window.resize events, which is why it fixes itself when you open Developer Tools...)

@gasman Do you want me to have a look at that?

@Proper-Job Yes please!

ok, will do. I'll post any progress here.

Very hard.

@gasman is there an "onTabChanged" JS event that I could subscribe to?

@Proper-Job We're using Bootstrap's tabs module, so the events should be as described here: http://getbootstrap.com/javascript/#tabs-events

It's tricky, I'm still working on it.

as a very fast and dirty workaround I've used
$(document).on('click', '.tab-nav a', function(e) {
    $('.wtHolder', $(this).attr('href')).scrollTop(1);
    $(window).resize(); // trigger resize to force handsontable relayout
});

Thanks. Using the onTabChanged listeners really wasn't working. I'll see if I can incorporate this somehow.

@agil What is .wtHolder? I don't see such element in admin pages code.

Oh, 2 hours spent and I finally found the solution:
@hooks.register('insert_global_admin_js')
def fix_editors_in_tabs():
    script = """
            <script>
                $(document).ready(function() {
                    $('.tab-nav a').on('shown.bs.tab', function (e) {
                        // Fix for TableBlock editor
                        $(window).trigger('resize');

                        // Fix for SimpleMDE editor
                        if (window.SimpleMDEInstances != null) {
                            $.each(window.SimpleMDEInstances, function(index, inst) {
                                inst.codemirror.refresh();
                            });
                        }
                    });
                });
            </script>
        """
    return script

It works for TableBlock and my MarkdownBlock.

The fix from @soar wasn’t working correctly for me, the table width was tiny when switching tabs.
I made another fix that instantiates again the table. The only downside is that we use the default TableBlock options. It should be OK in most cases, but if you changed the TableBlock, you may have to change this.
@hooks.register('insert_global_admin_js')
def fix_tables_in_tabs():
    return """
        <script>
            $(document).ready(function() {
                $('.tab-nav a').on('shown.bs.tab', function (e) {
                    $(e.target.hash + ' .handsontable').each(function () {
                        var inputId = $(this).siblings('input').attr('id');
                        if (typeof inputId !== 'undefined') {
                            initTable(inputId, %s);
                        }
                    });
                });
            });
        </script>
    """ % json.dumps(TableBlock().table_options)

$(window).resize(); called in the right moment is the answer. You can verify this by navigating to the tab where table is expected to be shown and calling this code from console (or simply resize window manually).

$(window).resize(); called in the right moment is the answer. You can verify this by navigating to the tab where table is expected to be shown and calling this code from console (or simply resize window manually).

In my case this was completely enough (wagtail v5.2.6):
@hooks.register('insert_editor_js')
def global_admin_js():
  return mark_safe(
    """
    <script>
      $(() => $('.tab-nav a').on('shown.bs.tab', _ => $(window).trigger('resize')))
    </script>
    """
  )

Small update on how to fix. Wagtail v5.2.6.
@hooks.register('insert_editor_js')
def global_admin_js():
  return mark_safe(
    """
    <script>
      document.addEventListener('wagtail:tab-changed', _ => {
        window.dispatchEvent(new Event('resize'))
      })
    </script>
    """
  )


Please unregister jquery.dirtyforms from Bower

Hello,
I realize you must have gotten tired of us to release an official package on Bower and decided to take it upon yourself, and we applaud you for that.
However, we are now working on formalizing the release process and would like to use the official distribution repo (registered by us) to distribute Bower packages under the same name (jquery.dirtyforms).
I have already contacted Bower about changing the URL, but they don't seem to be cooperating.
Please unregister the package from this repo by following the unregister package instructions in the Bower documentation (copied below for your convenience) so we can move forward on this. We have already re-released your 1.0.0 version so when we make the switch this change will be seamless (except now there will be a minified file with a sourcemap and all of the helpers as separate packages). But please do this ASAP, as we have bug fixes that need to be released as well.
Unregister with Bower

You can unregister packages with bower unregister. You first need to authenticate with GitHub with bower login to confirm you are a contributor to the package repo.

bower login
# enter username and password
? Username:
? Password:
# unregister packages after successful login
bower unregister <package>

You’ll likely want to bower cache clean after your change. If the above doesn’t work for you, you can request a package be unregistered manually.

Hello Shad,
It's great that you guys decided to release an official bower package for jquery.dirtyforms.
I am terribly sorry for the caused inconvenience, the package is already unregistered and you can now register your own version.
Thank you for the great plugin!
Cheers,
Daniel

Thanks for your cooperation. Cheers!


[IRGen] Normalize case of AccessorKind names

When generating willSet/didSet debug info, use the same casing as the language uses. This will allow breakpoints to be set by name on someProperty.willSet and someProperty.didSet.

These names appear not to be covered by any Swift tests, but will require changes to an lldb test.

@swift-ci test

It would have been nice to get this fix into 6.0, but we're running out of time, so we should try to squeeze this in later.


Use the http Context instead of creating one

The request object in http has a context of its own. Instead of creating the context in every request we should use the one already available

I'm up for the grabs 👍

Awesome. Make sure you merge it in v0.9.0 branch

Resolved in v0.9.0