KOGITO-7999: Stunner - Editor API Canvas/Session/Domain Definitions exposed in JS

Hey @romartin, could you please review this PR?
JIRA: KOGITO-7999
Thanks!

Hey @romartin, we are good for a 2nd round of reviews here!
Thanks!

@LuboTerifaj all fixed I guess. Ready for your review! See my previous comment https://github.com/kiegroup/kie-tools/pull/1366#pullrequestreview-1260741313
Thanks!

Hey @caponetto , this PR is already reviewed and it is not waiting for qe at the current stage. Removing waiting-for-qe label.

@LuboTerifaj I would keep this label until QE approves the PR.

@caponetto I see. I thought it means the PR was not reviewed by QE yet. The label name is not straight forward. Are the the labels used documented anywhere? Thanks!

@LuboTerifaj not that I know of. But, well, this PR is still waiting for QE as QE hasn't approved it yet.
That's my understanding.

Hey @caponetto ,
It depends on point of view. One could interpret it like this: since QE provided review with comment or rejection, it means it is not approved, but no work is required from QE at the current stage, so we are not waiting for qe.
Therefore I was confused. Something like waiting-for-qe-approval would make more sense here, although it might be too long label. The other option would be to document it, but I think the self descriptive name is a better option.
Anyway, now I know what is probably meant by that.
Thanks!

Hey @LuboTerifaj and @romartin
I went through the comments above, please check my comments below.
Canvas API

setBackgroundColor(id: string, color: string)

It is not clear what format should a user use to set up the color properly. What are the allowed values? // String, Hex, RGB, etc. ("green", "magenta", "#ffff66", [255, 255, 0])?

The function description was updated to help with the supported color formats.

Default color is black. I think it should be white.

@LuboTerifaj, how did you get to default value?

getBorderColor(id: string)

Function returns null.

Fixed

setBorderColor(id: string)

Function doesn't work.

Fixed

center(id: string)

What does it mean center? I expect to center the node, but it is not clear, what is it supposed to be relative to.
I wasn't able to see any results of the function.

The description of the function was updated. This function is applicaple only to nodes out of the viewable area of the canvas. To test it load a large workflow pick a node(uuid) in the edge of the diagram, then increase the zoom until the node is not visible anymore, finally call the center function for the non visible node.

calculateCenter(id: string)

It is not clear what the returned coordinates are relative to. There are more possible expectations from users: center of canvas; X0, Y0 of canvas; respectively something different.

The description of the function was updated. This function is applicaple to nodes out of the viewable area of the canvas. It gives the values to be used in the "translate" function to center a non visible node in the canvas.

translate(x: Number, y: Number)

The function name is not very intuitive. Would it make sense to change it? Is there any specific reason why it should stay like it is?

Unfortunately in my opinion we should not change the name of this function. It is part of the Viewport API (viewort>transform>translate) so we can make developers confuse if we change it.

rotateGroupOverCenter(group: Group, degrees: Number, duration: Number)

There is missing the description of what is Group parameter and how to use it.

I removed this method, it was used to showcase the API possibilities in the past and should be removed.

getNativeContext()

Function doesn't work.
There is only getNativeContent() function.

Fixed. The name of the function 'getNativeContent()' was wrong it should be 'getNativeContext()'. It works, it returns the NativeContext2D instance. A low level API to render 2D graphics.

draw()

It should be properly described, when it is necessary to call this function.

The description of the function was updated. It should be called everytime the lookandfeel is changed.

add(shape: Primitive)

There is missing info about primitive shape, its required fields and how to use the function properly.

This function allows to add a new primitive shape to the canvas. In lienzo there is the concept of primitives/ shapes / nodes /wiresShapes. I think it would be a bit complicated to cover those implementation concepts in the function description.
e.g.

var prim = new com.ait.lienzo.client.core.shape.Rectangle(50, 50);
prim.x = 100; prim.y = 100;
canvas.add(prim); canvas.draw();

See also other thoughts section below

getWiresManager()

There is missing information how it can be used.

The function description was updated. This is another low level API, it acts upon the wiresShapes by grouping and extending the capabilities on top of the primitive shapes.

log()

There is missing information how it can be used.

The function description was updated. The idea is to provide a way to recover information about the diagram. There is still a lot of room to improvements here for now check the example below. It shows the how the nodes(uuids) are connected between them.
e.g.  canvas.log().logWiresShapes()

getNodeIdSet()

Why there is this function if we have getNodeIds()? Is it on purpose?

It was on purpose, they return diferent types. getNodeIds() return a NFastArrayList and getNodeIdSet() returns a Set that is needed to recover flatShapes(shapes in a group) in the JsWiresShape class.

getWiresShape(id: string)

What is it used for? It's not clearly described.
I was not able to use it properly.

When the functions set/getBackground color is called we are dealing with wiresShapes under the hood. I you want to have access to all the wiresShape API (JsWiresShape) you can pick a WiresShape instance and use the methods exposed.
e.g. canvas.setBackgroundColor('uuid' , 'color')  is a shortcut for  canvas.getWiresShape('uuid').setBackgroundColor('green')

Session API

getEdgeByUUID(id: string)

There is nothing wrong with the function itself, but there is no easy way how to find the edge UUID. There is no function to get all edges and their UUIDs, but only selected element UUID. The only way how to get Edge is to select the edge first.

As  far as I know getting the edges uuids is a costly operation because we have to traverse the graph to get those. However, it is something we could consider for the next iterations and improvements in the API.

getSelectedDefinition()

It seems it works as expected, but it is not described properly what the definition is and how it can be used.

Domain Definitions and Domain API and related
The APIs below are in the initial stage of development and are prety basic. They are aimed part of the configuration of the Domain, Definitions and rules via js. They are functional, however, in my opinion they should be evaluated as part of @romartin work on top of this PR so we could have the whole picture.
WDYT?

getSelectedDefinition()
Object definitionSet
Annotation domainQualifier
RuleSet ruleSet

Other thoughts
What all functions are supposed to be accessible? Do we want expose all of them? For example, the functions that are not part of the API:

contentWindow.com.ait.lienzo.client.core.shape.Group()
org.kie.workbench.common.stunner.sw.definition.InjectState()

Classes anotated with @JsType can be exposed if their methods are public. It means they are not ofuscated when transpiled to js. If there are methods available in the APIs (Editor, Canvas, Session, Domain...) to get to these objects, they can be consumed.

In regards with the documentation
@LuboTerifaj definetely your concerns about documentation are justified.
In my opinion we have somehow to find a beter way to share this knowledge other than doing it trough the code. API documentation often is restricted to the scope of each function exposed. When it comes on how to put things together maybe a tutorial alike format is more suitable.  Maybe it is something we may keep in mind for the near future thinking of Stunner as a Framewok.
WDYT guys?

Hey @romartin and @LuboTerifaj,
We are still working on an external unrelated issue to get this PR green.
In the meantime  the vsix plugin below can be used for reviewing the latest.
VS Code: plugin
Thanks!

Hey @romartin and @LuboTerifaj,
Once the PR https://github.com/kiegroup/kie-tools/pull/1536 was merged, this PR is up-to-date, green and ready for anorther round of reviews.
Thanks!

Hey @LuboTerifaj and @romartin ,
I went though the latest comments above and I made some changes.
After analyzing the the methods I  reached the conclusion that some methods we were exposing are helpers to other methods in the API. So I refactored the code to remove these helpers because they don't make sense from the point of view of the user of the API and can be confusing.
Canvas API
When you set node color using function: canvas.setBackgroundColor(nodeId, "default"), the black color will be set.

It should be the white.

There is something else happening here. Actually 'default' or any unsuported color name is accepted and set to the shape internally. However, if it is not a valid color it is somehow set to black. The curious it that if you try to recover the current bacgroundcolor after setting an invalid color the result is not 'black' or '#000000', it is the string informed.  Maybe e need to add some sort of validatation to lienzo-core to avoid this incosistency. I suggest  to open a separated Jira for this fix.

center(id: string)

I am still not able to use the function. It doesn't matter how many nodes the diagram contains, all of them are always visible. The center function didn't work even when I zoomed in, in a way that not all nodes where visible.

Lets sync about the usage of this method.

calculateCenter(id: string)

It is still not clear what the returned coordinates are relative to. This needs to be clarified.
What can be this function used for?
The function may return non integer values. Is this expected?

This method is a helper to the center method so it was removed from the API it does not make sense to expose it to the user.

add(shape: Primitive)

The function works properly.
If we are exposing API and expecting the specific parameter, it should be described properly where such parameter can be taken.

More information on how to get to the primitive types was added to the documentation.

getWiresManager()

Still missing the information how it can be used.

This is helper method to other methods and the WiresManager object is not exposed(@JsType) so this method was removed.

log()

I see there is one example canvas.log().logWiresShapes(). Are there any other functions that can be used there? If yes, this should be properly documented.

I talked about this method with @romartin and we agree that it may not make sense to the user. Users should create their own logs in a way they make sense to them so this method was also removed from the API.

getNodeIdSet()

I understand it returns a different type, but I don't understand why it is needed. Could you please clarify it to me?

I agree, it is redundant to have two methods returning the same data. So the 'getNodeIdSet' mathod was removed and the code refactored to use the getNodeIds instead.

getWiresShape(id: string)

Missing documentation
In addition, what functions can be used from WiresShape instance?

More information was added to the documentation. Basically it has everthing a shape has, but also grouping and connection capabilities through the magnets.

Session API
getEdgeByUUID(id: string)

I am okay with reporting this in separate jira.

I agree it is nice fearture to have.

getSelectedDefinition()

I didn't find any changes in comparison from my previous review.

My bad I missed this one. It gets the model object for the selected node then it is possible to recover those properties values.

Domain Definitions API
If we want to implement it in separate jira, it's okay. Just please remove all related code from the PR and update the jira's description.
Based on your comment, I didn't retest this API. Please let me know what is the plan with that, so I know if it needs to be retested or not.

Lets sync with @romartin about the best approach here.

Other thoughts
I see that "Classes annotated with @jstype can be exposed if their methods are public". Do you know if it is possible to somehow avoid such behaviour? I mean to hide undesired functions?

Actually it is not possible to hide code. When the code is transpiled from java to js we lose the access modifiers (private public). In this case the best we can do is to anotate the methods we don't want to be used with @JsIgnore. It will cause to traspiler to obfuscate them, however, they will still be there anyway. In a rough way, exposing a method means it is not obfuscated and can be easily read by the user.

Please lets sync @romartin and @LuboTerifaj if we still need more work here.
Thanks!

Hey @LuboTerifaj and @romartin,
As agreed I updated the Jira, removed the documentation from the Readme.MD and rebased this PR.
I hope we are good to move forward with this PR.
Thanks for all your work and support here!


Language parameter

I am able to send a language parameter to the ZITADEL UIs. If a language parameter is sent, ZITADEL UI will always be shown in the set language.
Acceptance Criteria

[ ] ZITADEL Console accepts a language parameter, and renders the UI with the specified language
[ ] ZITADEL Login accepts a language parameter and renders the UI with the specified language

wouldn't it make sense to have a language selection box instead ? so users aren't forced to a specific language, and can select form all the languages

wouldn't it make sense to have a language selection box instead ? so users aren't forced to a specific language, and can select form all the languages

Yes, you are right that would probably make sense. At least as an addition

can I pick this up? If yes, are we going with this suggestion? https://github.com/zitadel/zitadel/issues/6251#issuecomment-1646562164

can I pick this up? If yes, are we going with this suggestion? #6251 (comment)

Sure, lets us know if you hit a blocker, the current login code can be a little fuzzy 😁

What should be the position of the language box and also you want the language parameter? @fforootd

What should be the position of the language box and also you want the language parameter? @fforootd

personally I think it should be visible all the time, and at the top, with an icon next to it for accessibility.

just noticed the issue and wanted to give some insights for the login UI:
we used to have a language selection in the registration forms:
https://github.com/zitadel/zitadel/commit/f40931e81ecb5ac0dcb8d5ab4bd6bc606de5578f
as we removed that, there's currently the possibility to specify the language (of the user to be created) by a query parameter (is set into a hidden form field). It will however not change the languange used to display the labels / texts in the UI


Fix CuArray compatibility with NNlib

ref https://github.com/JuliaGPU/CuArrays.jl/commit/da7107bb2f20d8ed8147b1b148e0db93b5d59bc7
fix https://github.com/JuliaGPU/CuArrays.jl/issues/327
OT: what does the -0 mean? CuArrays 1-1.0.1 just has NNlib = "0.5".

OT: what does the -0

Compatible up to 1.0  (exclusive).

It should be:

OT: what does the -0 mean

Compatible up to 1.0 (exclusive)

NNlib = "0.5".

Compatible 0.5 - 0.6 (exclusive). This is "semver notation" for pre 1.0.

This is "semver notation" for pre 1.0.

Right; then why did JuliaRegistrator convert the NNlib = "0.5, 0.6" compatibility line in Project.toml to a non semver-compatible 0.5-0? I had expected it to be just 0.5-0.6 is why I was confused by the -0.
https://github.com/JuliaGPU/CuArrays.jl/blob/v1.0.2/Project.toml#L34
https://github.com/JuliaRegistries/General/pull/288/files#diff-19dac3c8014f2b183d8c7bac1804f85eR94

There was some normalization that ran but I thought that was a one time thing. This looks wrong, yes. cc @StefanKarpinski

Because when I wanted to follow semver strictly, people didn't like that it would require people to change their version bounds when new 0.x versions were released. So for now normalization is done considering all 0.x versions to be compatible. Unless there's a 0.7 version to be incompatible with, 0.5-0.6 is equivalent to 0.5-0.

Is this good to go? Users are running into this.


Update picture source markup and make sizes attribute configurable from shortcode.

In general images plugin works quite nicely for setting up responsive sizes for the same image.
'Art direction' would be too complicated to handle for such a general tool.
Have some proposals though. Current picture markup looks like this
<picture>
	<source type="image/webp" data-srcset="/images/img-ejs-1000.webp" media="(min-width: 1000px)">
	<source type="image/webp" data-srcset="/images/img-ejs-500.webp">
	<source data-srcset="/images/img-ejs-1000.jpeg media="(min-width: 1000px)">
	<source data-srcset="/images/img-ejs-500.jpeg">
	<img ...>
</picture>

🔗respimagelint complains about source elements:

Images in different  elements shouldn’t be the same
The  element should only be used for art direction and format-based selection. For providing multiple resolutions of the same image use the srcset attribute instead.

So, with w descriptors and sizes attribute it should look like this instead ('data-' prefixes are added for 🔗vanilla-lazyload)
<picture>
	<source type="image/webp" data-srcset="/images/img-ejs-500.jpeg 500w, /images/img-ejs-1000.webp 1000w" data-sizes="100vw">
	<source data-srcset="/images/img-ejs-500.jpeg 500w, /images/img-ejs-1000.jpeg 1000w" data-sizes="100vw" >
	<img ...>
</picture>

According to 🔗css-tricks x descriptors  (1x 2x etc) only account for a small percentage of responsive images usage while using srcset / w + sizes accounts for around 85% of responsive images usage on the web.

As sizes attribute is too layout specific, it could have default value "100vw" and be configurable from shortcode as
{{picture src='/images/img.jpg' alt="img" sizes="(min-width: 1000px) 33vw, 96vw" /}}
{{picture src='/images/img.jpg' alt="img" sizes="(max-width: 500px) calc(100vw - 2rem), (max-width: 700px) calc(100vw - 6rem), calc(100vw - 9rem - 200px)" /}}

As I understand, exact sizes are almost impossible to set by hand as each browser does its own thing:

So, given the same viewport size and screen density, Chrome, Safari, Firefox, and Edge may very well each pick a different resource out of a given srcset.

Also 🔗respimagelint tool gives sizes suggestions that can be copied to shortcode from there.
No idea how this works but for example using it's suggested sizes on above the fold image:
sizes="(min-width: 560px) 100vw, calc(9.58vw + 471px)"

effectively calmed down lighthouse complaints about images with inappropriate size.

Used resources

https://css-tricks.com/a-guide-to-the-responsive-images-syntax-in-html/
https://observablehq.com/@eeeps/w-descriptors-and-sizes-under-the-hood

Hey man, great contribution. Sorry for the delay. In testing it locally here is what I'm seeing.

scaled images are causing issues with the output, easily fixed.
using the default sizes seems to cause Firefox and Safari to always load the largest image. Maybe we offer an override of that default in the plugin config instead of having to specify it in the shortcode?.. taking the idea further, maybe there are "named" types of photos so you could pass in type="thumbnail" and the corresponds to a smaller sizes calculation?

using the default sizes seems to cause Firefox and Safari to always load the largest image. Maybe we offer an override of that default in the plugin config instead of having to specify it in the shortcode?.. taking the idea further, maybe there are "named" types of photos so you could pass in type="thumbnail" and the corresponds to a smaller sizes calculation?

Hi Nick,
I'm definitely no expert, just testing out responsive images feature.
This test: https://thirsty-aryabhata-198022.netlify.app/ has upper image sizes set to default ('100vw') and lower one ('(min-width: 500px) 500px, 100vw'). So I assume it would hint to browser that first image would be always scaled to the full width of screen and second one would be scaled to display width only when display is narrower than 500px and after that would be locked to 500px.
There are images with widths 500, 100 and 1500px.
So the second image would only need to be loaded with width 500px.
Observations on first image

Loading page with screen width about 300px > both chrome and firefox load 500px version of image.
Scaling up the screen width > Firefox loads 1000px version at screen width 400px and chrome ~560px.
Scaling up > Firefox loads 1500px version at screen width 800px and chrome ~980px.

So chrome works as expected - loads all sizes for the first image depending on screen width and only 500px version for second one.
Firefox switches to higher resolution much earlier and loads also 1000px version for second image even if it's not needed.
Also chrome will stick to largest image loaded, firefox will keep loading images when screen width goes up or down.

It might be that reformulating media conditions for sizes would affect this behaviour for firefox, hard to say, probably needs further research.
Default sizes attribute could be specified in config but overridden also from shortcode as it's usually quite image and layout specific.

There are other things as well could be made configurable, like webp options as currently the output is quite heavy. Related to these hard coded  options
nearLossless: true,
smartSubsample: true,

but should deal with these separately probably


feat: publish artifacts to S3

I've updated the value for AWS_DEFAULT_REGION to mirror the one used when publishing with the newrelic-cli (east 1).


Rule tester improvements

Happy path with parameter resolution -
$ st2reactor/bin/st2-rule-tester --rule-ref default.rule4 --trigger-instance-id 56ec763832ed35226d5b9094
2016-03-18 15:41:08,350 INFO [-] Connecting to database "st2" @ "<IP_ADDRESS>:27017" as user "None".
2016-03-18 15:41:08,383 INFO [-] Validating rule default.rule4 for st2.generic.actiontrigger.
2016-03-18 15:41:08,407 INFO [-] 1 rule(s) found to enforce for st2.generic.actiontrigger.
2016-03-18 15:41:08,413 INFO [-] Action parameters resolved to:
2016-03-18 15:41:08,414 INFO [-] 	i1: core.local
2016-03-18 15:41:08,415 INFO [-] 	i3: date
2016-03-18 15:41:08,415 INFO [-] 	i2: core.local
2016-03-18 15:41:08,416 INFO [-] === RULE MATCHES ===

Parameter resolution fails -
$ st2reactor/bin/st2-rule-tester --rule-ref default.rule4 --trigger-instance-id 56ec763832ed35226d5b9094
2016-03-18 15:56:59,768 INFO [-] Connecting to database "st2" @ "<IP_ADDRESS>:27017" as user "None".
2016-03-18 15:56:59,798 INFO [-] Validating rule default.rule4 for st2.generic.actiontrigger.
2016-03-18 15:56:59,829 INFO [-] 1 rule(s) found to enforce for st2.generic.actiontrigger.
2016-03-18 15:56:59,837 ERROR [-] Failed to resolve parameters
	Original error : 'mongoengine.base.datastructures.BaseDict object' has no attribute 'does_not_exist'
2016-03-18 15:56:59,839 INFO [-] === RULE DOES NOT MATCH ===

Action does not exist
$ st2reactor/bin/st2-rule-tester --rule-ref default.rule4 --trigger-instance-id 56ec763832ed35226d5b9094
2016-03-18 15:57:57,859 INFO [-] Connecting to database "st2" @ "<IP_ADDRESS>:27017" as user "None".
2016-03-18 15:57:57,892 INFO [-] Validating rule default.rule4 for st2.generic.actiontrigger.
2016-03-18 15:57:57,915 INFO [-] 1 rule(s) found to enforce for st2.generic.actiontrigger.
2016-03-18 15:57:57,916 ERROR [-] Failed to resolve parameters
	Original error : Action "core.nooop" doesn't exist
2016-03-18 15:57:57,917 INFO [-] === RULE DOES NOT MATCH ===

Rule disabled
$ st2reactor/bin/st2-rule-tester --rule-ref default.rule4 --trigger-instance-id 56ec763832ed35226d5b9094
2016-03-18 15:58:31,804 INFO [-] Connecting to database "st2" @ "<IP_ADDRESS>:27017" as user "None".
2016-03-18 15:58:31,835 INFO [-] Validating rule default.rule4 for st2.generic.actiontrigger.
2016-03-18 15:58:31,836 INFO [-] Validation failed for rule default.rule4 as it is disabled.
2016-03-18 15:58:31,836 INFO [-] 0 rule(s) found to enforce for st2.generic.actiontrigger.
2016-03-18 15:58:31,837 INFO [-] === RULE DOES NOT MATCH ===

Coverage decreased (-4.7%) to 71.316% when pulling 6d16996b60a612101843c8b75b85a616036fd977 on rule_tester_improvements into ac43049088811ed01987c6a3ce5b09132b8cd375 on master.

Overall, the end result looks good to me :+1:

Coverage decreased (-0.04%) to 76.006% when pulling aedf44d322807ea3c72d6e1c1f6a83cd6d4c3022 on rule_tester_improvements into ac43049088811ed01987c6a3ce5b09132b8cd375 on master.


adding <> for pairs

I was missing this pair so I have added it.

This is not a good idea to be included by default, because those are frequently used as "smaller/greater than" signs.


Users had to take a digital photo and upload it on the device, but couldn't do so without support because they were unsure of definitions of ‘computer’, ‘device’ and ‘camera’

“I’m not on my computer, I’m on my phone” [in response to ‘Is your photo on this computer?’]
“I don’t think of my phone as a ‘digital camera’. It’s a phone. A camera is a camera.” [in response to ‘Do you have a digital camera?’]

One user realised retrospectively that using their mobile device to upload a photograph was something they did on social media [Insight]
In the post-interview discussion one user ‘clicked’ that the process was analogous to how they use the image gallery on their phone to upload family pictures to Facebook – realising retrospectively that it might have been possible to continue with the bus pass application on their mobile phone.

Closing as this was covered by the recent fix #334


add calculate cost of equity

What bug or feature you wants to report.

assign this @nikhil25803

Go ahead :)


Time Formatting

Hi,
Is there a way we can format the date and time created at? If not a date stamp without the time might be useful.
Thanks.

PHP has plenty of ways to format DateTime. Closing as this isn't a question specifically to do with this library and you'll likely get a faster answer that is PHP specific for the data you have on Stackoverflow.


Customize helm operator values on the fly based on user provided values

Type of question

How to implement a specific feature

Question
What did you do?
My team created helm based operator for the cluster scheduler purposes. Our chart depends on Airflow and PostgreSQL operator CRD sub-charts. We provided default values that configure these dependencies' interactions. Such values contain a lot of boilerplate code which needs to be provided by our end-users.
What did you expect to see?
Our goal is to require only providing scheduler name and dags source code. We would like to generate all boilerplate values on the fly and apply them during chart installation. Most of the dynamic values will depend on the scheduler name and namespace. We don't know if such customization is possible with the standard helm operator flow.
What did you see instead? Under which circumstances?
Here is the example of simplified values files that we have now:
airflow:
  externalDatabase:
    host: myteam-mydb-pgsql
    passwordSecret: "airflow.myteam-mydb-pgsql.credentials.postgresql.acid.zalan.do"
    passwordSecretKey: "password"
  ingress:
    web:
      host: mydb-mynamespace.mydomain.com

externalpostgres:
  teamId: myteam
  name: mydb

all these values need to be set by the user during CRD creation, but in fact, all these values are derived from teamId, and name values.
/language helm

I'll ask around and see if anyone has any ideas for how this could work. Thanks for the report!

One approach to this will be to use not-yet-finished hybrid helm/go operator and a custom values.Mapper : https://github.com/operator-framework/helm-operator-plugins/blob/240cc447b3de0c4176b8f6304395978e5f0935d5/pkg/values/values.go#L23-L25
I'm not sure when the hybrid operator will be ready, but it is being actively developed now. I'll put this on the backlog.


working with r.js optimizer

Hi, I've tried the solution, but got worker file outside a build.
Also tried to add it explicitly by adding to include in config different ways, added and removed define wrapper from inside the worker. But it still loads async :/
Could you explain this behavior? Thanks in advance.

Is there some easy way, or I should write something using Blob as  "adapter" ?

This is by design. The browser needs to load the web worker script in a separate request.

Okay, just thought that maybe some workaround has been implemented (nonetheless saw the comment:). Thank you!


LTFS Mount Failure on iSCSI Tape Drive: XML Parser and I/O Errors (-21716)

I am experiencing issues when attempting to mount a tape formatted with LTFS on an iSCSI tape drive. After successfully connecting to the iSCSI drive and formatting the tape, I encounter the following errors when trying to mount the volume:
7395 LTFS12049E Cannot read: backend call failed (-21716).
7395 LTFS17039E XML parser: failed to read a block from the medium (-21716).
7395 LTFS17037E XML parser: failed to read from XML stream.
7395 LTFS17273E XML parser: Detected an I/O error on reading an index from the tape (-21716).
7395 LTFS17016E Cannot parse index direct from medium (-21716).
7395 LTFS11194W Cannot read index: failed to read and parse XML data (-21716).
7395 LTFS11024E Cannot mount volume: read index failed on the index partition.
7395 LTFS14013E Cannot mount the volume from device.
7395 LTFS30252I Logical block protection is disabled.

Could you please confirm if LTFS officially supports iSCSI drives? Any insights into the errors I’m encountering or general guidance on using LTFS with iSCSI would be greatly appreciated.
Command Line Output
Here are the command outputs I executed before encountering the issue:

Listing the devices:

[user@almalinux-vm ~]$ ltfs -o device_list
7392 LTFS14000I LTFS starting, LTFS version <IP_ADDRESS> (Prelim), log level 2.
7392 LTFS14058I LTFS Format Specification version 2.4.0.
7392 LTFS14104I Launched by "ltfs -o device_list".
7392 LTFS14105I This binary is built for Linux (x86_64).
7392 LTFS14106I GCC version is 8.5.0 20210514 (Red Hat 8.5.0-22).
7392 LTFS17087I Kernel version: Linux version 4.18.0-553.22.1.el8_10.x86_64<EMAIL_ADDRESS>(gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC)) #1 SMP Tue Sep 24 05:16:59 EDT 2024 i386.
7392 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7392 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7392 LTFS17089I Distribution: NAME="AlmaLinux".
7392 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7392 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7392 LTFS17085I Plugin: Loading "sg" tape backend.
Tape Device list:
Device Name = /dev/sg1 (<IP_ADDRESS>), Vendor ID = QUANTUM, Product ID = ULTRIUM-HH7, Serial Number = 90WT021621, Product Name =[ULTRIUM-HH7].

Formatting the tape:

[user@almalinux-vm ~]$ mkltfs -d /dev/sg1
LTFS15000I Starting mkltfs, LTFS version <IP_ADDRESS> (Prelim), log level 2.
LTFS15041I Launched by "mkltfs -d /dev/sg1".
LTFS15042I This binary is built for Linux (x86_64).
LTFS15043I GCC version is 8.5.0 20210514 (Red Hat 8.5.0-22).
LTFS17087I Kernel version: Linux version 4.18.0-553.22.1.el8_10.x86_64<EMAIL_ADDRESS>(gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC)) #1 SMP Tue Sep 24 05:16:59 EDT 2024 i386.
LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
LTFS17089I Distribution: NAME="AlmaLinux".
LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
LTFS15003I Formatting device '/dev/sg1'.
LTFS15004I LTFS volume blocksize: 524288.
LTFS15005I Index partition placement policy: None.
LTFS11337I Update index-dirty flag (1) - NO_BARCODE (0x0x5626409f3bf0).
LTFS17085I Plugin: Loading "sg" tape backend.
LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg1).
LTFS30250I Opened the SCSI tape device <IP_ADDRESS> (/dev/sg1).
LTFS30207I Vendor ID is QUANTUM.
LTFS30208I Product ID is ULTRIUM-HH7.
LTFS30214I Firmware revision is MA71.
LTFS30215I Drive serial is 90WT021621.
LTFS30285I The reserved buffer size of /dev/sg1 is 1048576.
LTFS30294I Setting up timeout values from RSOC.
LTFS17160I Maximum device block size is 1048576.
LTFS11330I Loading cartridge.
LTFS11332I Load successful.
LTFS17157I Changing the drive setting to write-anywhere mode.
LTFS15049I Checking the medium (mount).
LTFS11175E Cannot read ANSI label: expected 80 bytes, but received 10.
LTFS11009E Cannot read volume: failed to read partition labels.
LTFS15010I Creating data partition b on SCSI partition 1.
LTFS15011I Creating index partition a on SCSI partition 0.
LTFS17165I Resetting the medium's capacity proportion.
LTFS11097I Partitioning the medium.
LTFS30263I MODESELECT returns Mode Parameters Rounded (-20101) /dev/sg1.
LTFS11100I Writing label to partition b.
LTFS11278I Writing index to partition b.
LTFS30205I READ_ATTR (0x8c) returns -20501.
LTFS30263I READ_ATTR returns Invalid Field in CDB (-20501) /dev/sg1.
LTFS30233I Cannot read attribute (-20501).
LTFS11336I The attribute does not exist. Ignore the expected error.
LTFS17235I Writing index of NO_BARCODE to b (Reason: Format, 0 files) 90WT021621.
LTFS17236I Wrote index of NO_BARCODE (Gen = 1, Part = b, Pos = 5, 90WT021621).
LTFS11337I Update index-dirty flag (0) - NO_BARCODE (0x0x5626409f3bf0).
LTFS11100I Writing label to partition a.
LTFS11278I Writing index to partition a.
LTFS30205I READ_ATTR (0x8c) returns -20501.
LTFS30263I READ_ATTR returns Invalid Field in CDB (-20501) /dev/sg1.
LTFS30233I Cannot read attribute (-20501).
LTFS11336I The attribute does not exist. Ignore the expected error.
LTFS17235I Writing index of NO_BARCODE to a (Reason: Format, 0 files) 90WT021621.
LTFS17236I Wrote index of NO_BARCODE (Gen = 1, Part = a, Pos = 5, 90WT021621).
LTFS15013I Volume UUID is: 0d901583-1f98-4571-8153-b7d8000d3fd2.
LTFS15019I Volume capacity is 5732 GB.
LTFS30252I Logical block protection is disabled.
LTFS15024I Medium formatted successfully.

Attempting to mount the volume:

[user@almalinux-vm ~]$ ltfs -o devname=/dev/sg1 /ltfs
7395 LTFS14000I LTFS starting, LTFS version <IP_ADDRESS> (Prelim), log level 2.
7395 LTFS14058I LTFS Format Specification version 2.4.0.
7395 LTFS14104I Launched by "ltfs -o devname=/dev/sg1 /ltfs".
7395 LTFS14105I This binary is built for Linux (x86_64).
7395 LTFS14106I GCC version is 8.5.0 20210514 (Red Hat 8.5.0-22).
7395 LTFS17087I Kernel version: Linux version 4.18.0-553.22.1.el8_10.x86_64<EMAIL_ADDRESS>(gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC)) #1 SMP Tue Sep 24 05:16:59 EDT 2024 i386.
7395 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7395 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7395 LTFS17089I Distribution: NAME="AlmaLinux".
7395 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7395 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7395 LTFS17085I Plugin: Loading "sg" tape backend.
LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg1).
LTFS30250I Opened the SCSI tape device <IP_ADDRESS> (/dev/sg1).
LTFS30207I Vendor ID is QUANTUM.
LTFS30208I Product ID is ULTRIUM-HH7.
LTFS30214I Firmware revision is MA71.
LTFS30215I Drive serial is 90WT021621.
LTFS30285I The reserved buffer size of /dev/sg1 is 1048576.
LTFS30294I Setting up timeout values from RSOC.
LTFS17160I Maximum device block size is 1048576.
LTFS11330I Loading cartridge.
LTFS11332I Load successful.
LTFS17157I Changing the drive setting to write-anywhere mode.
LTFS15049I Checking the medium (mount).
LTFS11175E Cannot read ANSI label: expected 80 bytes, but received 10.
LTFS11009E Cannot read volume: failed to read partition labels.
LTFS14013E Cannot mount the volume from device.

What is the iSCSI tape drive you mentioned? Please tell us what it is more specific.

Is that provided as a iSCSI tape product from a vendor?
Is that a virtual tapa server product (or open source project) ? (like StarWind or  mhvtl)
Is that configured as an iSCSI tape using real H/W and iSCSI initiator S/W (by passthrough device) ?

Thank you very much for your quick response.
I am using Linux LIO iSCSI with targetcli on a Proxmox Debian node. The backstore is set up as pscsi (passthrough device). On the AlmaLinux 8.10 VM, I am using Open-iSCSI as the initiator. I hope this information helps. Do you need any additional details about the Quantum LTO-7 HH or the ATTO HBA?

This comment is not an official statement and completely based on my experience.
I made a quick experiment on the scsi-target-utils in RHEL5 before and it works. Also I made it on the targetcli in RHEL8 at the same timing, but pscsi cannot handle tape device correctly at that timing.
From the log you provided, sg device cannot report correct transfer length of data. I think this kind of incorrect length report cannot be handled in LTFS. I think you need to dig the iSCSI target or the iSCSI initiator for resolving the issue.
LTFS11175E Cannot read ANSI label: expected 80 bytes, but received 10.
LTFS11009E Cannot read volume: failed to read partition labels.
LTFS14013E Cannot mount the volume from device.

Okay, finally I got tgt working. Somehow I didn’t catch that the device changed from sg0 to sg3.
Anyway, I ran the test again with tgt, but it still failed with the same error. Before this, I also tried using the ATTO Xtend SAN iSCSI Initiator for Mac systems, and it failed with the same error too.
The iSCSI connection works perfectly with Bacula and Archiware, so I’m starting to think it’s probably not the iSCSI target or initiator causing the problem. What do you think?
Here’s the output for the ltfs -o devname=/dev/sg3 /ltfsmount command with tgt:
[root@almalinux-vm saltanat]# ltfs -o devname=/dev/sg3 /ltfs
7b76 LTFS14000I LTFS starting, LTFS version <IP_ADDRESS> (Prelim), log level 2.
7b76 LTFS14058I LTFS Format Specification version 2.4.0.
7b76 LTFS14104I Launched by "ltfs -o devname=/dev/sg3 /ltfs".
7b76 LTFS14105I This binary is built for Linux (x86_64).
7b76 LTFS14106I GCC version is 8.5.0 20210514 (Red Hat 8.5.0-22).
7b76 LTFS17087I Kernel version: Linux version 4.18.0-553.22.1.el8_10.x86_64<EMAIL_ADDRESS>(gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC)) #1 SMP Tue Sep 24 05:16:59 EDT 2024 i386.
7b76 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7b76 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7b76 LTFS17089I Distribution: NAME="AlmaLinux".
7b76 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7b76 LTFS17089I Distribution: AlmaLinux release 8.10 (Cerulean Leopard).
7b76 LTFS14063I Sync type is "time", Sync time is 300 sec.
7b76 LTFS17085I Plugin: Loading "sg" tape backend.
7b76 LTFS17085I Plugin: Loading "unified" iosched backend.
7b76 LTFS14095I Set the tape device write-anywhere mode to avoid cartridge ejection.
7b76 LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg3).
7b76 LTFS30250I Opened the SCSI tape device <IP_ADDRESS> (/dev/sg3).
7b76 LTFS30207I Vendor ID is QUANTUM .
7b76 LTFS30208I Product ID is ULTRIUM-HH7     .
7b76 LTFS30214I Firmware revision is MA71.
7b76 LTFS30215I Drive serial is 90WT021621.
7b76 LTFS30285I The reserved buffer size of /dev/sg3 is 1048576.
7b76 LTFS30294I Setting up timeout values from RSOC.
7b76 LTFS17160I Maximum device block size is 1048576.
7b76 LTFS11330I Loading cartridge.
7b76 LTFS11332I Load successful.
7b76 LTFS17157I Changing the drive setting to write-anywhere mode.
7b76 LTFS11005I Mounting the volume from device.
7b76 LTFS30216W Length mismatch is detected. (Act = 524288, resid = 0, resid_sense = 523235).
7b76 LTFS30216W Length mismatch is detected. (Act = 524288, resid = 0, resid_sense = 523235).
7b76 LTFS12049E Cannot read: backend call failed (-21716).
7b76 LTFS17039E XML parser: failed to read a block from the medium (-21716).
7b76 LTFS17037E XML parser: failed to read from XML stream.
7b76 LTFS17273E XML parser: Detected an I/O error on reading an index from the tape (-21716).
7b76 LTFS17016E Cannot parse index direct from medium (-21716).
7b76 LTFS11194W Cannot read index: failed to read and parse XML data (-21716).
7b76 LTFS11024E Cannot mount volume: read index failed on the index partition.
7b76 LTFS14013E Cannot mount the volume from device.
7b76 LTFS30252I Logical block protection is disabled.
[root@almalinux-vm saltanat]#

New Insights: I have now compiled LTFS for Debian to run on the Proxmox node with direct hardware access to the tape drive, but I encountered the exact same error. This suggests that the issue has nothing to do with iSCSI. So, what is the problem then?
Here is the output of ltfs -o devname=/dev/sg7 /ltfs on the Proxmox host:
root@pvemacpro:~# ltfs -o devname=/dev/sg7 /ltfs
a808 LTFS14000I LTFS starting, LTFS version <IP_ADDRESS> (Prelim), log level 2.
a808 LTFS14058I LTFS Format Specification version 2.4.0.
a808 LTFS14104I Launched by "ltfs -o devname=/dev/sg7 /ltfs".
a808 LTFS14105I This binary is built for Linux (x86_64).
a808 LTFS14106I GCC version is 12.2.0.
a808 LTFS17087I Kernel version: Linux version 6.8.12-2-pve (build@proxmox) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-2 (2024-09-05T10:03Z) i386.
a808 LTFS17089I Distribution: PRETTY_NAME="Debian GNU/Linux 12 (bookworm)".
a808 LTFS14063I Sync type is "time", Sync time is 300 sec.
a808 LTFS17085I Plugin: Loading "sg" tape backend.
a808 LTFS17085I Plugin: Loading "unified" iosched backend.
a808 LTFS14095I Set the tape device write-anywhere mode to avoid cartridge ejection.
a808 LTFS30209I Opening a device through sg-ibmtape driver (/dev/sg7).
a808 LTFS30250I Opened the SCSI tape device <IP_ADDRESS> (/dev/sg7).
a808 LTFS30207I Vendor ID is QUANTUM .
a808 LTFS30208I Product ID is ULTRIUM-HH7     .
a808 LTFS30214I Firmware revision is MA71.
a808 LTFS30215I Drive serial is 90WT021621.
a808 LTFS30285I The reserved buffer size of /dev/sg7 is 524288.
a808 LTFS30294I Setting up timeout values from RSOC.
a808 LTFS17160I Maximum device block size is 1048576.
a808 LTFS11330I Loading cartridge.
a808 LTFS11332I Load successful.
a808 LTFS17157I Changing the drive setting to write-anywhere mode.
a808 LTFS11005I Mounting the volume from device.
a808 LTFS30216W Length mismatch is detected. (Act = 524288, resid = 0, resid_sense = 523235).
a808 LTFS30216W Length mismatch is detected. (Act = 524288, resid = 0, resid_sense = 523235).
a808 LTFS12049E Cannot read: backend call failed (-21716).
a808 LTFS17039E XML parser: failed to read a block from the medium (-21716).
a808 LTFS17037E XML parser: failed to read from XML stream.
a808 LTFS17273E XML parser: Detected an I/O error on reading an index from the tape (-21716).
a808 LTFS17016E Cannot parse index direct from medium (-21716).
a808 LTFS11194W Cannot read index: failed to read and parse XML data (-21716).
a808 LTFS11024E Cannot mount volume: read index failed on the index partition.
a808 LTFS14013E Cannot mount the volume from device.
a808 LTFS30252I Logical block protection is disabled.

Is the note for buggy HBAs related to my problem?
https://github.com/LinearTapeFileSystem/ltfs/wiki/HBA-info#note-for-buggy-hbas

From the lines like below, I think --enable-buggy-ifs highly likely works.
a808 LTFS30216W Length mismatch is detected. (Act = 524288, resid = 0, resid_sense = 523235).

See also, https://github.com/LinearTapeFileSystem/ltfs/issues/369#issuecomment-1951539217.

Great! The --enable-buggy-ifs option is working with both direct hardware connections and through iSCSI using targetcli. Thank you very much.
I have been using the ATTO ExpressSAS H680 for years on a macOS system with LTFS and YoYotta, and I have never encountered such a problem. According to your description, the error seems to come from the HBA not being able to handle the transfer length of the SCSI data. Now, I’m wondering if the problem is really rooted in the hardware or possibly in the driver. On macOS, I use the driver provided by ATTO for the HBA. Unfortunately, ATTO doesn’t offer drivers for Debian or any newer Linux systems, so I’m relying on the pm80xx driver. If it is a driver issue, perhaps it should be reported to the developers of pm80xx?

If it is a driver issue, perhaps it should be reported to the developers of pm80xx?

I'm not sure it should be or not. But first candidate is reporting this to ATTO, second one midge be pm80xx as you said.

Thank you for your feedback.

On 9 Oct 2024, at 02:01, Atsushi Abe @.***> wrote:
If it is a driver issue, perhaps it should be reported to the developers of pm80xx?
I'm not sure it should be or not. But first candidate is reporting this to ATTO, second one midge be pm80xx as you said.
—
Reply to this email directly, view it on GitHub https://github.com/LinearTapeFileSystem/ltfs/issues/484#issuecomment-2400961182, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABYZNMF67AWU7TBDGUXFIN3Z2RP27AVCNFSM6AAAAABPOWSZNSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBQHE3DCMJYGI.
You are receiving this because you authored the thread.


refactor(mem_table): refator pk type in mem_table

What's changed and what's your intention?
Change memTable to BTreeMap<Vec<u8>, RowOp>.
Checklist

[x] I have written necessary docs and comments
[x] I have added necessary unit tests and integration tests

Refer to a related PR or issue link (optional)

Should ignore src/frontend/test_runner/tests/gen/testcases.rs this file.

Should ignore src/frontend/test_runner/tests/gen/testcases.rs this file.

I have no idea how it got there, but it's been removed now.


DISTX-679: Turn off hive.privilege.synchronizer by default in templates

DISTX-679: Turn off hive.privilege.synchronizer by default in templates
This change turns off "hive.privilege.synchronizer" by default. This property is used mainly for information schema population which users are not using actively. This can be enabled by users, in case they want to use information_schema.

@rbalamohan Juhi is setting this in a safety valve of Hive service. But should this config go to HMS service or Hive service?

Setting is for HMS service trying to communicate with DB in native SQL mode.
On Thu, 5 Aug, 2021, 22:09 amitagarwal06, @.***> wrote:

@rbalamohan https://github.com/rbalamohan Juhi is setting this in a
safety valve of Hive service. But should this config go to HMS service or
Hive service?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/hortonworks/cloudbreak/pull/11211#issuecomment-893602669,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB4ZXMLQHUXG5XBIGYBCN5DT3K5C7ANCNFSM5BUCIZMQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

@juhi-09  - could you please change this to be HMS specific, similar to the directsql change.

I guess my comment got mixed up for direct SQL.
Priv sync should be in HS2 setting. Sorry about the confusion.

Priv sync should be in HS2 setting.

@rbalamohan I have updated the property to be present in config of hive-HIVESERVER2-BASE, however it is not visible in UI. Please review.

@juhi-09 Please pull in the recent changes to these files, otherwise, you will not be able to merge the changes.

I guess it will go away if the code is rebased with the latest changes in the master.


[R4R] support websocket RPC to fullnode

What have changed:

The dependency of go-amino package changed into "github.com/tendermint/tendermint", use replace in go. mod. And emphasize it in doc.
Rewrite part of websocket client of tendermint, because it only support subscribe and unsubscribe rpc, and some other part(how to identify a request)
Extends dex api and ops api.

TODO: Something leave to phrase2.

Add keymanager to rpc client and support CreateOrder or CancleOrder such like RPC rather than what we have BroadcastTxSync, BroadcastTxCommit now.

@darren-liu @notatestuser   @yutianwu @ackratos  Can you guys review this pr again.  I have http-ap pr based on this.


Create error pages for "no search results"

Add the Shakespeare illustration (pulling hair one) with a message about the error on all 3 devices.
Point out any differences between the members, books, and cards search pages with the error, if any.

Created the "no search results" error on Members search pages on desktop, tablet, and mobile.
Uploaded all three pages to Zeplin: "No Results Error – Members Search Filters & Results – Desktop", "No Results Error – Members Search Filters & Results – Tablet", and "No Results Error – Members Search Filters & Results – Mobile", along with comments regarding the size of the error image.


auto imports are broken (Yarn PnP issue probably)

Issue Type: Bug
I haven't changed my settings at all, but after upgrading to the newest patch my imports and suggestions no longer show which package the import recommendation is coming from. Say I have 2 Configurations and I want to auto-import the one from webpack, it should say which package the current suggestion comes from, and when hitting ENTER it doesn't import, but rather just finishes the line.

 Also, can you try this with the JS/TS Nightly extension if you haven’t already?

Looks like it's trying to look for "@vsintellicode/typescript-intellicode-plugin" but can't find it. So this stems from Yarn 2's patch not including it. I tried yarn pnpify --sdk to see if that would pull a patch but it didn't. But it's definitely a Yarn issue.
tsserver.log

Using the Nightly wouldn't work since Yarn 2 uses Plug'n'Play and a virtual filesystem which uses a custom version of the latest TypeScript release. Effectively pointless in this scenario unfortunately.

Would you be able to provide either an example repo or step-by-step instructions on how to create a simple reproduction of the problem? Where does that version of TypeScript live? In order for VS Code to use it, you’d have to point to it in .vscode/settings.json. Do you have a custom typescript.tsdk entry in there? Or is there a VS Code extension that’s required for editor operations to work properly with PNP?

https://github.com/thegrimsilence/yarnberry-toolkit uses Yarn 2's Zero-Install so cloning that will give you a direct state of my own local repo since I commit frequently.
And yeah Yarn 2 has you install @yarnpkg/pnpify and run yarn pnpify --sdk to auto-configure every supported sdk, including typescript. Basically, it updates your local settings and installs a local .yarn/cache/sdks/typescript which hosts a custom TS Server and binaries. It's then added into your .vscode/settings.json to point to that server.

Got it, it's an issue with the Visual Studio Intellicode Extension, but disabling it does nothing except removing the error from the server log. Reloaded the workspace and it still has auto-import problems.

The issue is that Command in the suggestions comes from Clipanion. In a normal workflow (no pnp or virtual files) the suggestion would show what module it's from (or local file) and then hitting Enter would of course auto import it and append it to the already active import list for Clipanion.

Seems to work for me; am I missing something obvious here?

So I'm not really sure what's going on then. I have minimal extensions so I'll do some digging on my end 🤷♂

I'm going to have to play around with settings this is a fresh install of Code

Running with extensions disabled did nothing to help. I'm really not sure what it could be at this point.

I'll try to give a try on Windows to see if that makes a difference.

If it's windows I'm throwing my surface book out the window 😂

For the brief time that I had a Surface Book, I was frequently concerned for the safety of pedestrians walking underneath my office window 🙊

Yeah it's a nice-to-have but development has been horrible. WSL 2 makes things... okay, but I just wish Microsoft made a variant of Windows than ran exclusively on Linux since I can't afford a mac

For whatever reason, this has to be related to Windows. I fresh installed VS Code, no custom settings, no extensions, still the same problem. A headache is what it is

Yep, it repros for me on Windows. Thanks for the help!

Thank you. I was worried I'd have to give up my career goals if it was a local issue I was overlooking 😂😂

By the way, @andrewbranch what software did you use to capture and save as a Gif? cause currently I have to use Xbox Game Bar to capture and then save it as a horribly compressed gif which as you saw was really small even though I have a 4K screen.

I use https://getkap.co, which is macOS-only unfortunately.
Ok, so I’ve tracked this down to be the fault of yarn’s wrapper around TypeScript. It’s intercepting messages to TS Server, deserializing them, looking for file paths, modifying those paths before passing them on. Unfortunately, it seems to be doing this incorrectly on Windows, at least some of the time. First, when we send back the full list of completions, the Configuration item looks like this on the server:
{
  "name": "Configuration",
  "kind": "interface",
  "kindModifiers": "declare",
  "sortText": "5",
  "hasAction": true,
  "source": "c:/Users/andrew/yarnberry-toolkit/.yarn/cache/@types-webpack-npm-4.41.18-f868232c99-43fefaccab.zip/node_modules/@types/webpack/index"
}

The TS Server wrapper sees the path with .zip in it, and does some processing to serialize it like this (note the zip:/ prefix on source) before sending it to the client:
{
  "name": "Configuration",
  "kind": "interface",
  "kindModifiers": "declare",
  "sortText": "5",
  "hasAction": true,
  "source": "zip:/c:/Users/andrew/yarnberry-toolkit/.yarn/cache/@types-webpack-npm-4.41.18-f868232c99-43fefaccab.zip/node_modules/@types/webpack/index"
}

Now, when you highlight that item in VS Code, we make another request to get the details for that completion item. That request includes the name and source we got from the last response. The raw incoming message looks like this:
{
  "seq": 53,
  "type": "request",
  "command": "completionEntryDetails",
  "arguments": {
    "file": "c:/Users/andrew/yarnberry-toolkit/src/tools/BaseCommand.ts",
    "line": 4,
    "offset": 18,
    "entryNames": [
      {
        "name": "Configuration",
        "source": "zip:/c:/Users/andrew/yarnberry-toolkit/.yarn/cache/@types-webpack-npm-4.41.18-f868232c99-43fefaccab.zip/node_modules/@types/webpack/index"
      }
    ]
  }
}

However, before sending it on to TS Server proper, the wrapper notices the zip:/ path and changes the response to this:
{
  "seq": 53,
  "type": "request",
  "command": "completionEntryDetails",
  "arguments": {
    "file": "c:/Users/andrew/yarnberry-toolkit/src/tools/BaseCommand.ts",
    "line": 4,
    "offset": 18,
    "entryNames": [
      {
        "name": "Configuration",
        "source": "/c:/Users/andrew/yarnberry-toolkit/.yarn/cache/@types-webpack-npm-4.41.18-f868232c99-43fefaccab.zip/node_modules/@types/webpack/index"
      }
    ]
  }
}

Uh oh! Now we’ve wound up with a superfluous leading slash on that source. The rest of the process entails trying to match up existing module specifiers with that source, which we will obviously not be able to do so it’s been mangled.
So yep, this is a yarn bug.

Thank you for your help! I'll take this over to yarnpkg/berry and let them know the details so they can fix it.

Thanks for investigating! This is now fixed in https://github.com/yarnpkg/berry/pull/1534


Reduce dotnet weekly pipeline schedules

Two primary issues:

The dotnet tests-weekly pipelines are running on both Saturday and Sunday. These pipelines should only be running one day per week.
We run weeklies for all dotnet service SDKs, covering public and canary regions. This is probably unnecessary, and we only need to run the weeklies for SDKs that support sovereign cloud testing.

@heaths, it's just a guess that you're the best person to follow up on this.  Please reassign as appropriate.  @benbp is ready and available to answer questions and support making this change.

If it's all SDKs, wouldn't it be easier to write a quick script to change all pipelines' schedules? I'm happy to update my own, but changing all pipelines - especially across all languages - seems like a bulk operation would be better. And is the new pipeline creator going to stop scheduling both days going forward?

Chatting with @heaths, we're not sure why it's both days, and will change it to run on Sunday only.

I have a script we can use to update schedules if needed but we should still update our pipeline generation tool to bucket the pipelines across the entire 2 days.


swagger mixin sends all output to stderr

Problem statement
swagger mixin sends all output to stderr
Steps to reproduce
run swagger mixin and send output to file swagger mixin -o blablabla some.swagger.json other.swagger.json > output
output will be empty
run swagger mixin and send stderr to file swagger mixin -o blablabla some.swagger.json other.swagger.json 2> output
output will have all of command output
Environment
swagger version: dev/0.18.0
go version: go1.10.8 linux/amd64
OS: alpine linux docker container

Yes the -o flag is conflicting. We plan to remove this flag.


Add StyleBoxMulti that draws other style boxes

Implements and closes https://github.com/godotengine/godot-proposals/issues/7203

The crash report failure is confusing. Any ideas?

@fire Isn't it this: https://github.com/godotengine/godot/issues/78749 ?

<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><linearGradient x2="0" y2="16" gradientUnits="userSpaceOnUse" id="a"><stop offset=".188" stop-color="#ff4545"/><stop stop-color="#ffe345"/><stop offset=".313" stop-color="#ffe345"/><stop stop-color="#80ff45"/><stop offset=".438" stop-color="#80ff45"/><stop stop-color="#45ffa2"/><stop offset=".563" stop-color="#45ffa2"/><stop stop-color="#45d7ff"/><stop offset=".688" stop-color="#45d7ff"/><stop stop-color="#8045ff"/><stop offset=".813" stop-color="#8045ff"/><stop stop-color="#ff4596"/></linearGradient><path d="M10.268 6c.77-1.334 2.695-1.334 3.465 0 .188.327.428.66.685 1 .<IP_ADDRESS>4.582.75V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v5h2V3h5v3H6v1H5v1H4v1h4zM12 7c-.429.746-.946 1.387-1.429 2-.571.69-1.066 1.342-1.34 2-.138.326-.231.656-.231 1s.072.686.184 1c.413 1.163 1.512 2 2.816 2s2.402-.837 2.816-2c.112-.314.184-.656.184-1s-.094-.674-.231-1c-.275-.658-.77-1.31-1.34-2-.484-.613-1-1.254-1.43-2zM1 9v2h2V9zm0 4v1a1 1 0 0 0 1 1h1v-2zm4 0v2h2v-2z" fill="url(#a)"/></svg>
^ Smaller SVG

From the technical POV, one thing that is not resolved here is sizing resolution. The way it behaves currently basically means that the StyleBoxMulti itself needs to have margins configured, and that the default minimum size resolution is used. Internal styleboxes do not contribute to it in any way and their possibly custom ways to resolve the minimum size are ignored. I'm not sure that would be the expected behavior.

@aaronfranke did you ever finish a StyleBoxMulti addon? I'd love to use it.
Or maybe there's already something similar inside the asset library? It's difficult to browse.

@rainlizard Here you go:
@tool
class_name StyleBoxMulti
extends StyleBox

@export var style_boxes: Array[StyleBox] = []

func _draw(canvas_item: RID, rect: Rect2) -> void:
	for style_box in style_boxes:
		style_box.draw(canvas_item, rect)

And here is an SVG icon:

@aaronfranke it works but there's a big problem in the editor, when you adjust one of the array's stylebox's values it's not updating instantly in the editor. You have to switch scenes then switch back in order for it to update it.
For example you set the border color to green, then nothing will change in the editor, so you switch to a blank scene then switch back and now the border color will be green.
v4.3.dev3.official [36e943b6b]

Here you go
@tool
@icon("style_box_multi.svg")
## Style box that can draw multiple style boxes.
## It can be used to combine multiple style boxes into one.
class_name StyleBoxMulti
extends StyleBox

@export var style_boxes: Array[StyleBox] = []:
	set(mod_value):
		if style_boxes == mod_value:
			return

		for style_box in style_boxes:
			if style_box == null or mod_value.has(style_box):
				continue

			if style_box.changed.is_connected(emit_changed):
				style_box.changed.disconnect(emit_changed)

		style_boxes = mod_value
		for style_box in style_boxes:
			if style_box == null:
				continue

			if not style_box.changed.is_connected(emit_changed):
				style_box.changed.connect(emit_changed)

		emit_changed()

func _draw(canvas_item: RID, rect: Rect2) -> void:
	for style_box in style_boxes:
		if style_box == null:
			continue

		style_box.draw(canvas_item, rect)

Works perfectly, thanks theraot. This emit_changed stuff is tricky business.


Different cooperative tradeoff solutions between first and second run

Hi,
I am experiencing instability with MICOM when solving some cooperative tradeoff problems in small communities (2-5 species).
In short: assuming that a problem solved on a certain community gives a flux solution S, the same problem solved again returns a flux solution S' (all arguments and constraints being equal). After the second run, the returned solution remains S'.
Below there is a two-model community example using the E. coli iJO1366 model from BiGG.
System information:
OS Ubuntu 16.04
CPLEX 12.8
python 3.6.12
pandas 1.1.3
cobra 0.20.0
micom 0.21.3
import pandas as pd
import micom as mc

species_names = ['ecoli1', 'ecoli2']
model_paths = ['iJO1366.xml', 'iJO1366.xml']
abundances = [0.5, 0.5]
species_df = pd.DataFrame(data={'id': species_names, 'file': model_paths, 'abundance': abundances})
com = mc.Community(species_df, solver='cplex')

sol1 = com.cooperative_tradeoff(fraction = 0.5, fluxes=True, pfba=True)
sol2 = com.cooperative_tradeoff(fraction = 0.5, fluxes=True, pfba=True)
sol3 = com.cooperative_tradeoff(fraction = 0.5, fluxes=True, pfba=True)

print('first vs second:')
print((sol1.fluxes.round(6) - sol2.fluxes.round(6)).abs().max().max())
print('first vs third:')
print((sol1.fluxes.round(6) - sol3.fluxes.round(6)).abs().max().max())

Expected output:
first vs second:
0.0
first vs third:
0.0

Obtained output:
first vs second:
0.002876000000000545
first vs third:
0.002876000000000545

The status is optimal for all the three solutions.
While in this example the maximum flux difference is not dramatic, it tends to increase with more limiting medium uptake bounds, and it grows worringly large with communities composed by automatically-generated models. Apart from individual model instabilities, this behaviour would seem to depend also on some numerical instability in cooperative tradeoff that gets adjusted by CPLEX after the first run, seeing previous discussions https://github.com/opencobra/cobrapy/issues/924.
It would seem that S' is the solution to be trusted given that it remains stable even after the third run, and because the two identical models in the example above get equal growth rates only in S' (up to solver tolerance):
print(sol1.members.loc['ecoli1', 'growth_rate'].round(6) == sol1.members.loc['ecoli2', 'growth_rate'].round(6))
print(sol2.members.loc['ecoli1', 'growth_rate'].round(6) == sol2.members.loc['ecoli2', 'growth_rate'].round(6))
print(sol3.members.loc['ecoli1', 'growth_rate'].round(6) == sol3.members.loc['ecoli2', 'growth_rate'].round(6))

Expected output:
True
True
True

Obtained output:
False
True
True

Is the reasoning correct?
I was wondering if this behaviour has been observed before and if the solver version could make a difference, or else what could be done to avoid it.
Cheers,
Guido

So there is two things going on and one is indeed related to bad numeric conditioning. Let's unpack it.

pFBA solutions are different

This one is not related to numerical accuracy, but rather the fact that pFBA solutions are not unique. You can see that easily with a simple thought example. Let's assume your biomass requires 1 unit of A at its maximal value and you have two reactions producing a unit of A for example rxn1: X -> A and rxn2: Y -> A. For pFBA you minimize the sum of absolute fluxes to reach max biomass, so an optimal solution fulfills v_1 + v_2 = 1. As you can see that can be reached with various solutions like v_1 = 1, v_2 = 0, v_1 = 0, v_2 = 1, or v_1 = 0.5, v_2 = 0.5. So pFBA makes the flux space smaller but not necessarily a single point.

Growth rates are different

So in solution 1 you get different growth rates for the two taxa even though they should have the same growth rate (since that is actually the example from Fig. 1 in the paper). This one is related to numerical accuracies, however in that case it the optimality tolerance and not the feasible one. Both of your solutions are marked as optimal (you can check by sol1.status). However when you enable logging with
from micom.logger import logger
logger.setLevel("INFO")

that all three optimizations give a warning that a numerically inaccurate solution was obtained. This is due to the quadratic optimization step. Interior point methods for QP problems tend to be less accurate and often can not get solutions in the required tolerance but a slightly relaxed tolerance (think 1e-5 instead of 1e-6). See #29 for a discussion. There is no way of improving on the optimality of the solution (better growth rate estimates), but you can improve the feasibility (try to get bound compliance back to 1e-6) and that is done with a crossover step in MICOM that solves an additional LP problem. Numerical accuracy can come from many places, in that case, the medium definitely has an impact since it enforces huge import fluxes. If you lower the imports to a maximum of 10 for each metabolite you get growth rates that are about 75% of the original values but their accuracy is now in the order of 1e-6 (the nominal feasibility tolerance). Also note that you comparison is not strictly what is tested. The actual feasibility criterion is |v - v_opt| < 1e-6 * |v_opt| + 1e-6`, so there is a relative and absolute tolerance and the guarantee is made in regard to the unknown "real" optimum. Sometimes running a few more iterations can improve accuracy (which is what you observe in solution 3) but this can also go the other way and break the solution basis.
Has it been observed before? Oh yes, and I would say about 1/4 of MICOM code is trying to improve numerical accuracy.
What can you make of this?
Large models with non-curated media compositions are often numerically unstable. A good rule of thumb is to assume everything is good up to a relative error of 10x the nominal tolerance (so 1e-5 by default). This may not sound great if you are coming from numerical mathematics but it is pretty good for biology. You will never measure a growth rate of flux up to an accuracy of 99.9999% in the lab. But one should definitely check that differences observed with MICOM have a realistic magnitude. If a flux fairly large and is suddenly 2x larger you are probably in the clear.


F0530 17:50:01.090956 16067 camera_rig.cpp:106] Check failed: fileExists(FLAGS_calib_filename) Camera file does not exist.

Hi!
I have a similar issue to https://github.com/uzh-rpg/rpg_esim/issues/10.
I have followed @supitalp 's opinion. https://github.com/uzh-rpg/rpg_esim/issues/10#issuecomment-446555859
But I haven't modified the file,it's default.

*** Check failure stack trace: ***
@ 0x7fe5b4757b0d google::LogMessage::Fail()
@ 0x7fe5b47599b1 google::LogMessage::SendToLog()
@ 0x7fe5b475763d google::LogMessage::Flush()
@ 0x7fe5b475a389 google::LogMessageFatal::~LogMessageFatal()
@ 0x7fe5b220e817 ze::cameraRigFromGflags()
@ 0x7fe5b52458b0 event_camera_simulator::DataProviderOnlineMoving3DCameraRig::DataProviderOnlineMoving3DCameraRig()
@ 0x7fe5b5238457 event_camera_simulator::loadDataProviderFromGflags()
@ 0x55af8aafe223 (unknown)
@ 0x7fe5b3bb5b97 __libc_start_main
@ 0x55af8aafed8a (unknown)
Aborted
Any help would be really appreciated
thanks

There are no problems in catkin build esim_ros progress. And my ROS version is melodic.
There is another error output:
seaeast@seaeast-XPS-15-9560:~/sim_ws/src/rpg_esim/event_camera_simulator/imp/imp_multi_objects_2d$ roslaunch esim_ros esim.launch  config:=cfg/multi_objects.conf
... logging to /home/seaeast/.ros/log/63c9eaaa-a245-11ea-b4dc-9cb6d0e46b2b/roslaunch-seaeast-XPS-15-9560-16621.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://seaeast-XPS-15-9560:32839/
SUMMARY
PARAMETERS

/optic_flow_viz/arrows_scale: 0.07
/optic_flow_viz/arrows_step: 7
/optic_flow_viz/arrows_upsample_factor: 1
/optic_flow_viz/publish_rate: 100
/rosdistro: melodic
/rosversion: 1.14.5

NODES
/
dvs_renderer (dvs_renderer/dvs_renderer)
esim_node (esim_ros/esim_node)
optic_flow_viz (esim_visualization/optic_flow_converter.py)
ROS_MASTER_URI=http://localhost:11311
process[esim_node-1]: started with pid [16637]
process[dvs_renderer-2]: started with pid [16638]
process[optic_flow_viz-3]: started with pid [16639]
F0530 17:54:08.533686 16637 file_utils.hpp:43] Check failed: fileExists(filename) File does not exist: /home/user/sim_ws/src/rpg_esim/event_camera_simulator/imp/imp_multi_objects_2d/scenes/example.scene
*** Check failure stack trace: ***
@     0x7f5ac1c64b0d  google::LogMessage::Fail()
@     0x7f5ac1c669b1  google::LogMessage::SendToLog()
@     0x7f5ac1c6463d  google::LogMessage::Flush()
@     0x7f5ac1c67389  google::LogMessageFatal::~LogMessageFatal()
@     0x7f5abfb5ecb7  event_camera_simulator::MultiObject2DRenderer::MultiObject2DRenderer()
@     0x7f5ac276ccf9  event_camera_simulator::loadSimpleRendererFromGflags()
@     0x7f5ac275cc97  event_camera_simulator::DataProviderOnlineSimple::DataProviderOnlineSimple()
@     0x7f5ac27454b4  event_camera_simulator::loadDataProviderFromGflags()
@     0x555b16860223  (unknown)
@     0x7f5ac10c2b97  __libc_start_main
@     0x555b16860d8a  (unknown)
[esim_node-1] process has died [pid 16637, exit code -6, cmd /home/seaeast/sim_ws/devel/lib/esim_ros/esim_node --v=1 --vmodule=data_provider_from_folder=10 --flagfile=/home/seaeast/sim_ws/src/rpg_esim/event_camera_simulator/esim_ros/cfg/multi_objects.conf __name:=esim_node __log:=/home/seaeast/.ros/log/63c9eaaa-a245-11ea-b4dc-9cb6d0e46b2b/esim_node-1.log].
log file: /home/seaeast/.ros/log/63c9eaaa-a245-11ea-b4dc-9cb6d0e46b2b/esim_node-1*.log
[INFO] [1590832449.016783]: Started flow converter node
[INFO] [1590832449.019615]: Step size between arrows: 7
[INFO] [1590832449.022005]: Scale factor: 0.07
[INFO] [1590832449.024274]: Upsample factor: x1
[INFO] [1590832449.026559]: Publish rate: 100 Hz

Hi!
I'm also facing the same issue any leads for resolving the same
Thanks

You should change path to the camera calib file:
https://github.com/uzh-rpg/rpg_esim/blob/d7708fff4acffec1771297674c4b917b7683d16b/event_camera_simulator/esim_ros/cfg/unrealcv.conf#L15

As LarryDong said, you should change the absolute path in .conf file. More specifically, change "user" to your computer name.

Well, that's depend on where do you install and where is your ROS workspace.
You have to find this file in your computer, and change it according to it (pwd).

Thanks a lot, I have completed event camera simulation successfully via your method
------------------ 原始邮件 ------------------
发件人:                                                                                "uzh-rpg/rpg_esim"                                                                                @.>;
发送时间: 2022年8月5日(星期五) 晚上8:54
@.>;
<EMAIL_ADDRESS>主题: Re: [uzh-rpg/rpg_esim] F0530 17:50:01.090956 16067 camera_rig.cpp:106] Check failed: fileExists(FLAGS_calib_filename) Camera file does not exist. (#75)
Well, that's depend on where do you install and where is your ROS workspace.
You have to find this file in your computer, and change it according to it (pwd).
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>


Idle channels sometimes fails RPCs with UNAVAILABLE status

When a gRPC channel goes idle, the first request started after it went idle will sometimes fail with status UNAVAILABLE. This doesn't seem to be in line with the documented cases for UNAVAILABLE status, and since UNAVAILABLE is not a retriable status, implementing correct application-level semantics are more difficult.
Why does the Core say UNAVAILABLE when it doesn't have recent-in-time link-layer evidence to believe that the remote host is UNAVAILABLE? Or is there something I'm misunderstanding about channels going idle?

Hope this is helpful, I was debugging this issue (or one like it) for the ruby and python clients, and captured trace logs of the error occurring.
Test Method
The test is pretty simple

Issue first RPC
Restart server
Issue second RPC

I did this manually by having the client sleep 15 seconds between RPCs, and manually restarting the server between calls.
The tests were run from the ruby:2.3.1 and python:3.5.2 docker images.
The test used the helloworld example from the grpc repo, with modified ruby and python clients, run with the environment vars

GRPC_TRACE=connectivity_state,channel,http,tcp
GRPC_VERBOSITY=debug

The problem exists for the ruby gem version 1.2.5, and the python package version 1.3.0, however building the ruby gem from source on 1.3.1 does not contain the issue (building from source on 1.2.5 still does).
Building python from source on 1.3.1 still failed, which lead me to believe that this PR potentially had the side effect of fixing the issue for Ruby.
Logs
The logs have been annotated with markers of significant events, all prefixed by ### NOTE.

Ruby: 1.2.5 - FAIL
Ruby: 1.3.1 - SUCCESS
Python: 1.3.0 - FAIL

When you say "manually restarting the server", what do you mean exactly? Invoking the server's stop method and properly shutting it down? Sending a signal to server process? If a signal, which signal?
Thank you for the legwork!

Roughly this
$ ruby greeter_client.rb &
$ ruby greeter_server.rb
# watch for log from server receiving request
<ctrl-c>
$ ruby greeter_server.rb

I was able to reproduce the issue using both ctrl-c, and kill -9 <pid> against the server.

FWIW I could also reproduce the issue by running a client pod on K8 that looped forever, issuing requests every 15 seconds, and a deployment of 2 server pods, telling K8 to kill one pod at a time, so that there was always at least one healthy pod available.

Another data point: I couldn't reproduce the issue for python when building from source on master, but it looks like a lot of the networking internals in core have changed between v1.3.x and master.

Same error here:
Client:

<EMAIL_ADDRESS>python 3.6

Server:

<EMAIL_ADDRESS>node 6.9

Client error message:
  File "/home/project/venv/lib/python3.6/site-packages/grpc/_channel.py", line 455, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.UNAVAILABLE, Endpoint read failed)>

verified issue is no longer present (for my test case) on ruby grpc-1.3.4 and python grpcio-1.3.5

Hello I can still simulate this problem using python '3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609]' , grpcio==1.3.5, Ubuntu 16.04.2 LTS
If I edit kpayson64 ReconnectTest and put for loop around test, lets say for _ in range(2000) it will randomly fail sometimes after 10 iterations sometimes after 500+.
What I am doing in my code is, I will create grpc.insecure_channel in setUpClass once, then for each setUp / tearDown I will create server, start it, stop it, delete server while running 20+ unittests per class and having 30 classes it almost always fails my pipeline with this exception.

Fixed by #11154

Could it be that the problem still exist in the PHP client?
We are getting Sisu\Grpc\Exception\GRPCException: Endpoint read failed errors on the client on long living and (often) idle connections

PHP with newest client still has this problem.

@wenbozhu The ticket is labeled with lang/all wrapped languages.
The issue still exist in the PHP-Client but the ticket was already closed.
Should it be reopened?

@ZhouyihaiDing are you able to investigate this issue as it affects PHP?

Sorry for the delay. Start looking into this in PHP.

@MitchDart can you  provide more details about the issue you are seeing? (the usual info: platform, gRPC version, any other additional that would help reproducing etc.)

@MitchDart I think the problem was resolved by https://github.com/grpc/grpc/pull/11021 (available in v1.3.5+). Are you seeing evidence that contradicts that?

@jtattermusch It has been a rough few days but I believe this is because of my current setup. I am using Grpc 1.8.3 in C#. I am using Kubernetes pods to host all my clients and servers in a microservice architecture. I believe the problem is because each kubernetes service has multiple pods meaning that the dns remains the same but the IP address changes continuously. So these idle channels simply "loose" its connection. So I decided to rather construct a new channel for each "scope" of work and destroy the channel afterwards using ShutdownAsync. The problem is ShutdownAsync takes around 12 seconds to finish !? This however seemed to solve the "Unavailable" problem however I get Status(StatusCode=Unknown, Detail="Stream removed") instead.

ShutdownAsync taking that long can be an indication of some objects (calls, channels, ... ) not being cleaned up properly).
have you tried GRPC_VERBOSITY=debug and GRPC_TRACE=....    from https://github.com/grpc/grpc/blob/master/doc/environment_variables.md?

Thanks @jtattermusch, I will check that out and let you know. Just two quick questions maybe you can help me with.

Unary async calls are just awaited and stream calls are disposed with "using". Is there anything else I need to do to clean up the calls naturally? I can't seem to find anything in the samples.

Do you think setting up channels on a per scope basis is better than long lived channels where IP address could change during an IDLE state?

Thanks for your help, its much appreciated.

the native objects held by client-side call objects will be cleaned up when status is received from server and you have no pending operations on the call.  What Dispose() does is that it cancels the call if it hasn't finished yet, which results in status from server being delivered soon afterward (and the call is cleaned up).
With streaming calls you should always finish reading the response stream (MoveNext()) until the call finishes successfully or you get RpcException with status - abandoning the reponse stream can lead to call not being cleaned up properly.

That really depends on your application. In general, short lived channels have more overhead (creating a TCP connection) but you of course cannot have streaming calls survive things like change of backend's IP (as you seem to be describing). For long-lived streaming calls, you should always have a way to terminate the call gracefully and start a new one (that's necessary for things like loadbalancing to work properly).

@nathanielmanistaatgoogle @marshallbrekka When a gRPC channel goes idle, the first request started after it went idle will fail with Error Domain=io.grpc Code=2 "Stream removed" UserInfo={NSLocalizedDescription=Stream removed, io.grpc.TrailersKey={}}, do you have any idea? Thank you very much.


Updated /network/peers OpenAPI description.

Signed-off-by: Byron Gravenorst<EMAIL_ADDRESS>PR Description
Updated the description of the /network/peers API.
Fixed Issue(s)
#1168

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


module tty missing

I am trying to use everlive-sdk 1.6.12 but when I try to run in iOS simulator I get this:
file:///app/tns_modules/debug/./node.js:6:18: JS ERROR Error: Could not find module 'tty'. Computed path '/Users/abhaya/Library/Developer/CoreSimulator/Devices/044E7BDF-67CE-4F38-97E7-B5F73E1794DE/data/Containers/Bundle/Application/4D46429A-7040-4D24-994A-07BA2B5D85B4/ns-test.app/app/tns_modules/tty'.

Any advice?

@abhayastudios
Indeed, this error appears in the latest NativeScript environment. We are aware of this issue and I believe it will be addressed in a newer version of the SDK.
Meanwhile you can install the SDK locally by downloading the SDK package as explained here

This is fixed in the just released 1.7.1. You can import the npm package and require the SDK like:
var Everlive = require('everlive-sdk');
...

var el = new Everlive( { appid: 'myappId', scheme: 'https' });


Add Permission in Permission List in Codeunit "Sales-Post"

Please add "TableData = "Service Item" = rimd"
in Sales-Post to make it possible to work with indirect permissions.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Availability update: We will publish a fix for this issue in the next update for release 19.


Compile sync with fsm

@paili0628 is there something blocking this PR?

Yes, there seems to be a problem with while loops that I am trying to resolve

@paili0628 you mentioned this is working now? Can you push your changes so we can merge?

I am going to close this branch because I do not want to create confusion. The changes I made does not involve the fsm.


Updated nav bar routing

Moved pages under folder locations instead of the primary routes folder for Svelte routing.

Created temp routes for upcoming goal tracking. These pages are not fully completed and are "placeholders."

Will you merge main into this branch. I found an issue with CI that was stoping it from failing sometimes that I fixed and has been merged into main. #47


Update to 1.21.1

Hiii !
Can you update it to minicreft 1.21.1, plsss ! ❤

UP !

I'll do that in the next few days ^^

Here you are ^^
https://github.com/joshi1999/Features-mod/releases/tag/1.3.6-1.21.1
If you find bugs, please don't hesitate to open a new issue :D


Top navigation links overlap with the possum mascot image

Eleventy’s possum mascot overlaps the top navigation links in the Eleventy website header.
On the page https://www.11ty.dev/docs/ when browser window is more narrow, the issue becomes visible. If window is even more narrow, CSS breakpoints correct the layout issue,
but on that specific width (as seen on the screenshot) the elements get overlapped.

Deploy coming soon!


Recommendation for tools to detect tandem repeats?

I'm currently trying out pbsv on some mouse data that are aligned to multiple reference genomes that don't have tandem repeat annotations and I was wondering if y'all have recommendations for tools to generate a tandem repeat bed file?

You may use Gary Benson's Tandem Repeat Finder, TRFD public database or download TRF tool and run on mouse reference genome.
Or alternatively if you have already installed SMRTLink, you may use
python \
 -m pbsvtools.tasks.split_ref_to_chrs \
 mouse.fasta \
 chr_size.csv

python \
      -m pbsvtools.tasks.tandem_repeat_finder \
      mouse.fasta \
      chr_size.csv \
      mouse.tandemrepeats.bed

File mouse.tandemrepeats.bed will contain tandem repeats and you may use it as input for pbsv discover option --tandem-repeats


Mermaid diagrams mangled in docx/odt

❯ cat test-diagram.md
---
title: "Test: Diagram with mermaid"
date: 2024-08
diagram:
  cache: true
---

# Introduction

This is a test using
[diagram extension](https://github.com/pandoc-ext/diagram)
The
[results](test-mermaid.html)
of [mermaid-filter](https://github.com/raghur/mermaid-filter).
will be different.

``` mermaid
%%| filename: flowchart
%%| fig-cap: A simple flowchart.
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
```
❯ pandoc -s --lua-filter diagram.lua test-diagram.md -o test-diagram.docx -w docx

That's a bug: the filter produces a SVG image by default, but it seems that ODT does not support SVG images, and pandoc converts the image with an external program. It would be better if the filter would default to PNG images when targetting ODT.
As a temporary workaround, you can configure the mermaid engine to always produce PNG output:
diagram:
  cache: true
  engine:
    mermaid:
      mime-types: [image/png]

Thanks @tarleb, that does work. (I'll note that mermaid-filter also fails at SVG in docx/odt.)

It seems that the patch didn't fully fix this, thus reopening.

Now it's fixed.


When the ReactRouterPrompt is active and you try to Go Back or Go Forward the prompt will show but onConfirm doesn't continue the browser navigation. The user just stays stuck on the prompt.
Attempted to test commit 7c64c7d79828d2149e021f56b9a25ea1668dc2f5 on https://github.com/sshyam-gupta/react-router-prompt/pull/17 but found the same issue occurs.

Thanks for creating issue @nimajalali . I will check this today.

The issue is now resolved with the recent release.


Missing language icon

Just updated to 212 from 210, it appears the language icon at the upper left corner during search is missing?

Fixed in 2.1.3


g15daemon: add -fcommon workaround

Without the change the build fails on -fno-common toolchains like gcc-10 as:
$ nix build --impure --expr 'with import ./. {}; g15daemon.override { stdenv = clang13Stdenv; }'
ld: g15daemon.h:218: multiple definition of `lcdlist_mutex'; utility_funcs.o:g15daemon.h:218: first defined here
ld: g15daemon.h:203: multiple definition of `lcdnode_s'; utility_funcs.o:g15daemon.h:203: first defined here

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/help-disabling-fno-common-hack/19031/1


feat: Support \vcenter, \raise, \lower, and \hbox

This PR adds support for \vcenter, \lower, and \raise.  It provides each function in two versions.
The strict version follows TeX syntax and can act only on a box. The function \hbox is provided for this purpose. As in TeX, \hbox puts its contents into text mode and textstyle.
The non-strict version of each function follows MathJax syntax and will accept any math or text as an argument. It does not change the argument’s style.
\hbox is a valid stand-alone function. By itself, it doesn’t do anything except prevent a soft line break.
\raise and \lower do what you would expect. The first argument is a size and the second argument is what gets raised.
\vcenter sets the vertical alignment of its argument to center on the math axis. This is handy for something within extensible delimiters because the delimiters will extend symmetrically to the math axis. Thus, \vcenter can be used to change the first fraction below into the second one:

This PR is a refresh on earlier PR #1167, which was set aside until a strict setting was available.

This PR currently succeeds at rendering M\raise3pt{$M^2$}M but it fails at rendering M\raise3pt\hbox{$M^2$}M. The second syntax is there to provide strict compatibility with LaTeX.
The difference is \hbox. I originally was able to make this syntax work by setting \raise to be less greedy than \hbox. Now that the greediness attribute no longer exists, I have been unable to get \hbox to work. I've tried to set primitive and allowedInArgument to reasonable values. No success.
M\raise3pt\hbox{$M^2$}M parses in LaTeX. It ought to work in KaTeX.
@ylemkimon Do you have any ideas on how to make this happen?

Correction: It also fails when the dimension is not braced. That also used to work.

I withdraw \raise and \lower from this PR. It now supports only \vcenter and \hbox.
I could not get a strict version of \raise or \lower to work and I suspect that such support may require parser changes. That's more than I signed up to do for this PR. \vcenter is the most valuable part of this PR. I'm glad that it works.

The screenshotter tests aren ow listed as failures, but the diff shows no error. Furthermore, the previous commit showed success for Chrome and Firefox screenshotter tests and this commit made no change to those files.
This seems to me to be a screenshotter error.

Issues with size argument will be mitigated with #2139. Sorry for not clearing with existing PRs.

The screenshotter tests aren ow listed as failures, but the diff shows no error. Furthermore, the previous commit showed success for Chrome and Firefox screenshotter tests and this commit made no change to those files.

The version of browsers used in screenshotter is updated in #2543 and #2544, and there may be subpixel changes.

Safari screenshotter is not emitting an artifact, so I have no way to update that particular file.

Codecov Report

Merging #2452 (52005dc) into master (ebd86b9) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #2452      +/-   ##
==========================================
+ Coverage   93.83%   93.85%   +0.02%
==========================================
  Files          84       86       +2
  Lines        6148     6169      +21
  Branches     1262     1262
==========================================
+ Hits         5769     5790      +21
  Misses        348      348
  Partials       31       31

Impacted Files
Coverage Δ

src/functions.js
100.00% <ø> (ø)

src/functions/raisebox.js
100.00% <ø> (ø)

src/parseNode.js
73.33% <ø> (ø)

contrib/render-a11y-string/render-a11y-string.js
85.33% <100.00%> (+0.26%)
:arrow_up:

src/functions/hbox.js
100.00% <100.00%> (ø)

src/functions/vcenter.js
100.00% <100.00%> (ø)

src/functions/supsub.js
94.40% <0.00%> (-0.14%)
:arrow_down:

Continue to review full report at Codecov.

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

Thank you for the PR!


EOSIO accounts should include a 3rd permission (named "action") after creation

At the moment EOSIO accounts are created with just an "owner" and an "active" key. I propose that accounts are created with also a 3rd key, which is for the "action" permission.
The "action" key should be used to sign for actions which don't involve money (tokens), which in case of some contracts might always be the case. Requiring that all users of the EOSIO platform have an "action" permission means they don't have to unnecessarily expose their active key in these situations. An "action" key would make it possible for wallets to auto-sign actions which only require the "action" key (during a session or even permanently). It's also much less disastrous if someone's "action" key is compromised compared to when keys above that permission level are compromised.
I believe this proposal would increase both security and usability greatly!
P.S.: This is my first time on Github and I felt my idea was important enough to share. I assumed it would have been implemented by now, but it still isn't, so I'll just let it be known. I don't know if it's appreciated that people who never contributed add issues, but I feel like this one would never be a waste of time since it's that important.

Accidentally made a duplicate when I tried to add the issue to RC2 (sorry guys, new to Github). If anyone agrees to move this one to RC2 that would be appreciated.
Looking forward to any feedback regardless.

I think we can give the owner key the ability to lock the contract on the account. That’s say before the contract is been lock on, owner key can updates it’s code freely, but when the contract is mature enough, owner key can just lock the code.That means even the owner key has been compromised, the code is still there, function as normal. I took this idea from the fuse bit in microcontroller. Developers can burn the fuse bit to keep their code safe in chips. Although I think multisig is still the best choice.

On Apr 13, 2018, at 11:48 PM, PunchPlump<EMAIL_ADDRESS>wrote:
Accidentally made a duplicate when I tried to add the issue to RC2 (sorry guys, new to Github). If anyone agrees to move this one to RC2 that would be appreciated.
Looking forward to any feedback regardless.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/EOSIO/eos/issues/2376#issuecomment-381177812, or mute the thread https://github.com/notifications/unsubscribe-auth/Ad6ZPjeAenKRKVEs1z2BANIOML4JUNvuks5toMjBgaJpZM4TTjOQ.

You can always make a new key that is derived from active by using cleos set account permission. And you can link that permission to any action you want by using cleos set action permission. :)

At this stage of the released code, regardless of how good the idea was, this would be more drastic than a hard fork, since it would require changing every contract that is already deployed.  To garner the support that would be required to get a change like this accepted, I would suggest using the EOS Developer telegram channel


Different levels for console and file

Is there a way to do this? I think it's a very common case - to send all the levels to the console, but only errors to file.

Good idea! Might be just a loglevel parameter to logzero.logfile(..)...
I'll take a look!
On Jul 5, 2017 17:40, "Imblc"<EMAIL_ADDRESS>wrote:

Is there a way to do this? I think it's a very common case - to send all
the levels to the console, but only errors to file.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/metachris/logzero/issues/16, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHIyxO_oPqEWOueZtq_zQcxSli_lMm0ks5sK653gaJpZM4OOg7r
.

I Please take a look at this implementation: c5cb7fb8bbd61239590d32e4eb68927027316f8a
The only downside I see with the current implementation is that if you call logzero.loglevel(..), it will override the custom loglevel of the filehandler. Perhaps this should not happen. What do you think?

Yes, I think such behavior isn't obvious. I wouldn't use default logger at all :)

Fixed with afb82c2472841906a3038cf04f6a9264b18dc7f3 // v1.2.1 which was just released. You can now set specific loglevels for file handlers with both logzero.logfile(..) and logzero.setup_logger(..).


Fixing Dockerfile to reduce size from 782M to 364M

Trying to remove files from a previous layer doesn't actually reduce the image size, so this PR simply combines the two RUN commands into one.  As a result, the newly built image is half of the size.

Thanks for the update!


There is Something wrong with NioEventLoop in Android 7.1.1

Expected behavior
The closeFuture's ChannelFutureListener  callback when the phone network change from enable to disable
Actual behavior
I got the callback in other android version when  I build up socket connetion and trun off the network others version except for Android 7.1.1.
Netty version
4.1.6.Final
JVM version
java version "1.8.0_141"
OS version
Android 7.1.1

@wooi please try use a more recent version of netty and if the issue still exists please provide more details and maybe even a minimal reproducer


[bootstrap] Force SQLite to be picked from the SDK for llbuild

New cmake is looking for sqlite in the wrong place for some reason. We
can fix it by explicitly passing -DSQLite3_INCLUDE_DIR=$(xcrun -sdk
macosx -show-sdk-path)/usr/include in the cmake invocation.
rdar://problem/57437541

@swift-ci smoke test

@swift-ci smoke test

Chatted with Mishal. This specific PR is ok to land once it passes CI.


Problem with the inspector' slider for Float values and ColorPicker in exported arrays

Godot version:

Master(3.1) a3bd9c2
OS/device including version:

Windows 7 Ultimate x64
OpenGLES 3.0: Intel  HD Graphics 4400
Issue description:

Before continuing with the development of my game, I have tried to play with the new inspector of the future version, trying to export different values. When testing the Arrays, I experimented with the data that could be put in the inspector. bool, int, string, float ... When I got to try the float type in the exported array, I tried to put the value with the keyboard. No problem. But when I tried to slide the mouse over the value of the float to change its value, the mouse pointer disappeared. I dragged in all directions and no trace of the mouse. And Godot did not respond. I just had to put Alt + F4.
I tried again, but with the Color type in a exported Array. When I click anywhere in the Color Picker, it disappears after set the color. Which causes you to have to click again on the color field to change the selected color.
Steps to reproduce:
Create a Node, Attach Script and create an export Array.
In the inspector, create a field for a float value and slide the mouse over the cell trying to change its value. Look with wide eyes!
Create another field (or change the type of the previous one) for a Color type, click and change the color by clicking on a point in the ColorPicker palette, trying to change a numeric value or trying to pull a slider. Look with wide eyes!
Minimal reproduction project:

LaboApr.zip

Related to #19321.

This seems to be a Windows problem (does not happen on X11), I will give it a check there

Ok, this should be fixed thanks to the switch to raw input in #20523, plus some extra fixes I added.


[Bug] Cannot select colour from colour picker (on release)

Description
Colour picker opens up when user clicks on the text part of an object but does not allow colour selection
Steps to reproduce the behaviour:

Go to any widget with a colour field on the property pane and click on the text part of the object. Colour picker appears and can be clicked but changes are not relefected.

Now click on the icon and repeat colour selection process - colour can be selected

Important Details

Version: Cloud
OS: Win10
Browser: Chrome
Environment: Deploy preview

closing this in favour of #6978