Split configuration options by feature

Would advise not just going through the git diff for this.
Related to #261. Closes #295 (imo).
I have completely refactored how the configuration presets are stored in an attempt to make it more clear what is happening and make it easier to create new configurations, based on my experiences and what I heard from others using CSS.
I started out by creating a diagram of how everything is connected in our current architecture (turns out it's already pretty big) and marking which parts should be easy to change. This corresponds to a list of (mostly) orthogonal features that I would want to easily enable/disable or modify when creating a new config.
How I then implemented this is by making a folder for every feature. In each of those folders there are then multiple config that set the values that are specifically needed for that feature. E.g., in the authorization folder there is an acl.json that uses acl authorization and an allow-everything.json that disables authorization.
The idea is then that if a new user wants to set up CSS with specific features they just have to import 1 file from every folder and they have a completely valid CSS config with all the specifics they want. It's also set up in such a way that it is easy to add values in certain cases (e.g. if you just want to add a new converter to the conversion stack).
I added a a Configuration-format.md with some more documentation on how it all works. This is also why I recommend not (just) looking at this in the git diff, looking at it in a file explorer gives a better overview.
Some minor changes were also made to streamline certain parts of the config:

PatchHandlers now take a target store in the handle function. This makes it so much easier to just chain stores together. I also used this opportunity to clean up some things in our patch handler (it now tries to convert back to the original content type and keeps metadata).
MetadataExtractor is replaced by a ParallelHandler. Makes it more consistent with the MetadataWriter.
Some cases where the order of the handlers only partially matters have been updated:

The main initializer now consists of 3 parts that are executed in order: LoggerInitializer -> other initializers -> ServerInitializer. This makes it easier to append new initializers without having to worry about ruining the order.
The middleware handler, to make sure the CORS handler is always last (since that one can close the connection).

This is mostly finished, there are still a few things but this way a discussion can already be started since this is a subjective solution of course.
TODO:

[x] Still have to change the IDP related configs, but this is mostly an independent block where no choices have to be made (besides the e-mail settings).
[ ] The new documentation would have to be linked from somewhere. We already have several documentation resources talking about Components.js so it might get a bit difficult right now to know where to look.
[ ] Make sure I tested all sub-configs.

Would advise not just going through the git diff for this.

Woah!

I started out by creating a diagram of how everything is connected in our current architecture

Anything you can share?

E.g., in the authorization folder there is an acl.json that uses acl authorization and an allow-everything.json that disables authorization.

Excellent plan.

* `PatchHandlers` now take a target store in the `handle` function. This makes it so much easier to just chain stores together.

Can you explain this one a bit more?
I'm sure there was a reason for not passing the store around.

* (it now tries to convert back to the original content type and keeps metadata).

That worries me a bit. The general principle is good; just wonder if we need this in every patcher, or on a higher level.

Anything you can share?

I first tried making a nice diagram but it cost me too much time to make it look useful so I just wrote it as nested blocks in a txt file, so it's not something I would put in the documentation 😅 : https://gist.github.com/joachimvh/c02534481045307e398bd044c4923fe0

Can you explain this one a bit more?
I'm sure there was a reason for not passing the store around.

The main reason I think we had a different store for the patch handler was because it generated internal/quads so we had an extra conversion store in there that always convert to text/turtle. I now changed how the handler works in that it converts back to the original content-type (so no longer forced to turtle) before writing back to the store. This way it no longer needs a specific conversion store there. If there was another reason I don't remember that.
The main reason I want to do this is because it makes our store stack a lot nice and easier to configure. Now you can just configure it like store A -> store B -> etc. Before you would have to branch of when you reached the patch handler since that one needed its own store.

That worries me a bit. The general principle is good; just wonder if we need this in every patcher, or on a higher level.

Potentially. It's hard to say until we have a second patcher. Perhaps some of these features could then be moved to a superclass.

I now changed how the handler works in that it converts back to the original content-type (so no longer forced to turtle) before writing back to the store.

I take it SparqlUpdatePatchHandler is currently our only patcher?
I do like the change, but what I dislike is the conversion logic being part of the patcher.
It seems to me that there can be a whole class of patchers that:

get a representation from the source
convert it
patch
convert back
write to the store
and that only 3 is specific.

Can we perhaps just move 1/2/4/5 to a base class? In a different PR is okay.

I think the config/presets folder is a misnomer. The config folder are the presets.
Perhaps:

config/components
config/subsystems

or just even drop the presets folder altogether… but then templates would be lost. Unless we rename that one into _templates. But actually, those templates are all storage-*, so perhaps those 3 should go into .../storage/templates?
Do we still need thee config-* prefix?

or just even drop the presets folder altogether… but then templates would be lost. Unless we rename that one into _templates. But actually, those templates are all storage-*, so perhaps those 3 should go into .../storage/templates? Or maybe the templates can go and just be part of .../storage.

I would not hide the templates inbetween the presets/components/subsystems as that would cause them to be harder to find, and they have a specific purpose. Probably should also rename them so they don't get confused with the storage component.
Originally I wanted to put them in the templates folder actually, but that would require us to have another import path in the package.json so components.js could find them. Could still go that route.

Do we still need the config-* prefix?

I don't think those were ever "needed", it just was the current way to name the config options.

In the comments, try to give a broader context, and describe from the noun rather than "this configuration". I have added some examples.

My problem was that you can't have line breaks in json strings, so I preferred to keep the descriptions short. More extensive descriptions could go into the accompanying markdown file.
Regarding that markdown file, I'm thinking now that it might be better to just have a README.md in every folder, instead of one big markdown file listing all the options. This would make it easier to make sure the documentation stays in sync with the actual available options.

Seems all middleware is just header setup? Should that be named headers?

Could do that. The CORS handler sort of breaks that though, since it will resolve OPTIONS requests itself instead of passing them on to the http handlers.

I wonder if we want to add a higher-level grouping above. Such as init, http, idp, ldp, and then have a lot in the latter two folders?

I was also thinking about something like that when making this. The one issue is consistency. I really like how in the current solution you just have to pick something from every folder. So if we did a higher-level grouping, everything would need to be 2 levels deep to be consistent. The main issue there is that several features are sort of independent, so there would be multiple high-level folders with only 1 entry (unless we make some very generic ones).

Okay with all of the above!

I really like how in the current solution you just have to pick something from every folder.

That is great indeed (and we should emphasize this more).

So if we did a higher-level grouping, everything would need to be 2 levels deep to be consistent.

Not necessarily though. We can keep the "pick one thing from every (leaf) folder", even if some are 1 level and others are 2.
The current breadth might be a bit intimidating.

Not necessarily though. We can keep the "pick one thing from every (leaf) folder", even if some are 1 level and others are 2.
The current breadth might be a bit intimidating.

I agree it might be a bit intimidating, and it is quite certainly going to grow more in the future, so finding a good solution for this would be nice.
Always going to leaf folders is not going to work with the current solution though. Currently leaf folders are used for specific parts the user should not choose from. E.g., middleware/handlers contains all the current middleware handlers, but the user is not supposed to choose something there, only import a config from the middleware folder.
We could phrase it as "find the first folder that contains 1 or more config files and choose something there". This would work since those high level folders are not going to contain config files. I do feel like this woul drastically complicate the understanding of how those folders are supposed to be used though.

We could phrase it as "find the first folder that contains 1 or more config files and choose something there". This would work since those high level folders are not going to contain config files. I do feel like this woul drastically complicate the understanding of how those folders are supposed to be used though.

I think that one's okay. Pick something from every first level with files.
If needed, we can middleware/_handlers.

I had a look into how I could add high-level folders. Below a suggestion. The "from" statements are references to how that folder is currently named.

http

handler (from http)
middleware
server-factory
static

identity

email (from identity-email)
handler (from identity)

init

handler (from init)

ldp

authentication
authorization
handler (from ldp)
metadata-parser
metadata-writer
permissions

pod

handler (from pod)

storage

keyvalue (from storage)
resource-store

util

auxiliary
identifiers
index
logging
representation-conversion
resource-locker

This way everything is in a high-level folder instead of the separation suggested before but I think something like this looks fine? Other possibilities include having a conversion folder containing both index and representation-conversion.
pod only has 1 entry, but this might get merged with identity once we link up the IDP with pod provisioning.
I kept init on its own since that is the main entry point of the CSS. Could also be put in util or even http perhaps.

Excellent, looks good to me!

Last (?) changes: config templates are now in the templates folder, configs are split over high-level folders as discussed above, several configs have been renamed as suggested and also to have some more consistency.
One other big change is that I moved the documentation to the config folder. There is now a readme in the config folder and in each of the high-level folders. This way the config documentation can be seen by going to config folder on github, and the documentation of the options can be seen by going into the high-level folders.
The documentation could be more extensive, both in the markdown files as in the configs, but that would still cost quite a bit more time so I'm going to leave that as it currently is. This should already be a good starting point for people interested in the configs.


impl(generator): add non-path fields as query parameters

So we used to transcode the entire request proto in json. This worked for some cases but not all, so we then built the query path from some of the fields in the proto and transcode the "resource' field into the json request body. In the process, we dropped fields that should have been query params on the floor for non-GET http methods. This PR reinstates those non-path, non-resource fields as query parameters.
Sending empty query parameters is an error for Compute methods, so we make sure to omit them.
The accompanying integration test verifies the query parameter is being passed, but not a successful update. This is do to the lack of update methods for easily configurable test resources in compute.

This change is

Added code to not emit deprecated fields as query parameters.


description of issue

Stratux version:

Stratux config:
SDR

[ ] single
[x ] dual

GPS

[x ] yes
[ ] no
type:

AHRS

[ x] yes
[ ] no

power source:
usb cable:

EFB app and version: (e.g., WingX Pro7 8.6.2)
Droid EFB
EFB platform: (e.g., iOS 9.2)
Windows 10 and Android Lolipop
EFB hardware: (e.g., iPad Mini 2)
Surface pro 3 and Asus transformer prime

Description of your issue:

My CPU fan that plugs into the ahrs module works with v1.2r2 but doesn't come on with v1.3b2
I installed v1.3b1 and logged into the settings and used the update function to get V1.3b2
If possible, enable "Replay Logs", reproduce the problem, and provide a copy of the logs in http://<IP_ADDRESS>/logs/stratux/ and http://<IP_ADDRESS>/logs/stratux.log.

@Basalisk84 which fan/case are you using?
The fan is turned off to conserve power in v1.3b2 unless the CPU goes above 50C - at which point it will ramp up the speed of the fan. Where are your CPU temps at now?


Legacy DB migration - watermark not migrated correctly

  details: ZodError: [
    {
      "code": "invalid_type",
      "expected": "boolean",
      "received": "undefined",
      "path": [
        0,
        "watermark",
        "fixedSize"
      ],
      "message": "Required"
    },
    {
      "code": "invalid_type",
      "expected": "boolean",
      "received": "undefined",
      "path": [
        1,
        "watermark",
        "fixedSize"
      ],
      "message": "Required"
    },
    {
      "code": "invalid_type",
      "expected": "boolean",
      "received": "undefined",
      "path": [
        2,
        "watermark",
        "fixedSize"
      ],
      "message": "Required"
    },

Piece of a zod error I get from the channels endpoint on a fresh DB migration.

The fixedSize field is optional. Mark it as such.


Add ChampagneBottleLafitte.netkan, closes #2029

KerbalStuff mods:

[ ] Compare the name of the mod, the mod author, and the folder it installs to, in order to make sure the identifier makes sense.
[ ] Ensure the KerbalStuff page has a homepage set. If it doesn't google to try and find a KSP forum page. If you can't find one, netkan will assign the KerbalStuff page as the homepage.
[ ] Ensure the KerbalStuff page has an abstract and it it doesn't, write one for it.
[ ] Ensure we have the correct license, and that it's identical across .netkan, mod .zip, KerbalStuff page, mod's homepage, any other resources related to the mod.
[ ] Is the $kref accurate? If you copy and pasted from the KerbalStuffBot PR, you should be set.
[ ] Check for a .version file that we can use for "$vref" : "#/ckan/ksp-avc".
[ ] Check the install stanza for: files correctly installed, extraneous files filtered out.
[ ] Using the KerbalStuff page, homepage, the mod's zip, and any other resources related to the mod to check for conflicts, depends, recommends, and suggests as appropriate.
[ ] After everything is written, look over the .netkan and verify your spec_version is appropriate.
[ ] Verify the file with netkan.exe
[ ] Verify the file with a CKAN install
[ ] Submit PR, check back on the PR later on for Jenkins feedback (pass/fail).


Dependency check tooling.

This is pretty random, and I am not really even suggesting we merge it. But given the few conversations on the topic in the last few days I thought I would throw this up there. This is basically an encoding of what I normally do interactively to check/sync dependencies.
There are three commands

./cabal depend check which gives basic status of whether each submodule is on master and how far behind it is.
./cabal depend deep-check which compares nested submodules for consistency.
./cabal depend sync very crude force direct submodules to latest version.

If people find these useful, maybe someone can give it a bit more polish, but just throwing it out there for now. I think there are obvious better solutions (discussion around driving things off anatomy and github api in a way that doesn't have to download the world to check etc..., but they will all take longer than the 20 minutes spent on this.

Looks very handy. I see no particular reason not to merge in the short term, unless we want to isolate/extract it to the appshop (and get people using it again).

@charleso Ok, I am going to merge for now then. I added a few other fixes to make things a bit more robust. I will use it for a while to see how much it helps / hinders before forcing it onto everyone though.


[ Discussion ] Add support for different OTP sending methods.

To decouple the discussion within issue #47 i would like to start a discussion her.
Questions:

How much code is email-related in the existing code base?
What are possible methods to send a TOTP?

First: imho the only email relevant code is in the simple _validateEmailDefaults-Function. Beside that you could to a s/Email/Contact/g replace.
Second:

Email needs an Email-Address
WhatsApp needs a Phone Number
SMS needs a Phone Number
...

What about removing the validation of the email in the above mentioned function and leave it up to the client as the sending of the totp is already left up to the client?
So you would just have to find a common field name (contact, address, contactInfo, destination, ...) and decouple the code completely from relaying on an email-Address for this field?
What do you think?

Hello again, @haus23. We'll need to first deploy the v3 in order to have some proper talks about the next features/changes we could make.
I would suggest having a look at the code-base to propose proper changes, as we could not answer questions like: "How much code is email-related in the existing code base?".
In any case, if you have the time and would like to adventure yourself into it, and coming up with a Pull Request that we could review and discuss about, feel free to do so. It will be welcomed.

Closing this for now. It will probably be revisited after v3 release.

Hello @shawnmclean. Feel free to propose something or ways to achieve it, and we can look into it. Currently, we are a bit busy with some other projects, but we are up for a discussion and possible implementations!

I think so, @shawnmclean. At least, probably context can do it for us to use some other services.

Wonder if @mw10013 will be able to give a better response.

As I said before, any suggestions on how we could handle this, or a PR, would be more than welcome.


Add SE contract to home page (PoC Step 1)

Refer to #296.
This is to make sure that it works before we create the directive.
For this ticket, we're going to add the attributes directly to the html template with dynamic data from SmartEdit, but end-game is to add the attributes dynamically.
Contract spec: https://help.hybris.com/1808/hcd/622cebcb444b42e18de2147775430b9d.html
Acceptance criteria

In browser inspector, we can see the smartedit classes appearing as per the spec.
Spinner gone when viewed through SmartEdit. The warning also gone.
Not sure, but there's a page info icon, maybe that will work?
Ask Riry if there are other ways to be sure it's working properly.

PR: https://github.com/SAP/cloud-commerce-spartacus-storefront/pull/578

Note: This is a temporary solution. We may improve it in next phase. Now, the catalog-version-uuid is hard-coded.

Some unit tests are failing on the pipeline.

Wei did the PoCs and saw everything was working. closing the PoC tickets and we'll open new tickets for doing the final implementation.


remove deleteContainer() calls in integration-cli tests

In integration-cli/ there are still calls to deleteContainer(). This isn't needed anymore with gocheck. All calls should be removed where it makes sense to do so.

Hi!
If you are reporting a new issue, PLEASE make sure that does not have any duplicates already open.
We would like to take this time to remind you of the information we need to debug the problem you are seeing. This is an automated response so if this ticket is not about a bug, do not fret.
If you fail to provide this information within 7 days, we will close this because we cannot debug your issue. We can reopen whenever the information is provided.
Thank you.
Please see:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues
Description of problem:

`docker version`:

`docker info`:

`uname -a`:

Environment details (AWS, VirtualBox, physical, etc.):

How reproducible:

Steps to Reproduce:
1.
2.
3.

Actual Results:

Expected Results:

Additional info:

#ENEEDMOREINFO

#dibs


bootstrap snippets not working.

In visual studio community 2017,bootstrap snippets are not getting insert option on right of mouse in html file ,neither shortcut ctrl+k,ctrl+x is working... @elebetsamer

@Devil560, Do you have Resharper? I has the same problem but when Resharper is suspended the bootstrap snippets works fine! I think there is any conflit.

You must inspect the installation log file.
I found out that the files were installed in a different directory, If you have another visual studio installation i.e. 2015 along with 2017, you should search there and  just import the folder "Bootstrap" from the  snippet manager (of the 2017)


suggest Single Abstract Method

Expected Behavior of the rule

SAM conversion is possible, but I would like to find out where I am creating an anonymous class.
java interface
public interface Foo {
    void bar();
}

Written
val listener = object : Foo {
    override fun bar() {
         ...
    }
}

What I want
val listener = Foo {
    ...
}

Context

https://kotlinlang.org/docs/java-interop.html#sam-conversions

Hello @zmunm, this is a good idea since IntelliJ/Android Studio has the inspection to convert to the SAM syntax "Redundant SAM constructor - This inspection reports SAM constructor usages which can be replaced with lambdas". If you would like to contribute, please let us know.

It may take a while, but I want to try :)

I have met some edge cases and have had a hard time. 😞
TL; DR
Because of the default implementation of the interface, it is difficult to check if it is a SAM by looking at only the file.
Very close example is here

Long description
There is a syntax that looks like SAM. But not always.
object: Sam {
    override fun foo() {
    }
}

non compliant java interface
interface Sam {
    default void foo() {}
}

non compliant kotlin interface
interface Sam {
    fun foo() {}
}

compliant java interface
interface Sam {
    void foo();
    default void bar() {}
}

compliant kotlin interface
fun interface Sam {
    fun foo()
    fun bar() {}
}

Is there a good way to check this?

Is there a good way to check this?

I'm unsure as I never faced such scenario.
Ideally you want to access the Sam interface during the inspection and check if it's a SAM interface or not 🤔

@cortinico
It seems that I can try to check the package and import by iterating through the Class.forName.
However, I doubt that using reflect is acceptable for detekt.
+++
There were a few more cases, and I think it's hard to see without reflect.

overloading

interface A {
    fun foo(a: Boolean = true)
}

object : B {
    override fun foo(a: Boolean) {
    }
}

implement chain

interface A {
    fun foo()
}

fun interface B : A

B {}

It seems that I can try to check the package and import by iterating through the Class.forName.
However, I doubt that using reflect is acceptable for detekt.

Yup that's definitely a blocker.
By any chance is the Kotlin Compiler or IntelliJ providing any working for this?

By any chance is the Kotlin Compiler or IntelliJ providing any working for this?

It gave me a hint and thanks to that, I found a way. Thank you.


create a new telemetry event for run details page view

Summary
Implement telemetry event for tracking views of the run details page.
New event instead of reusing previous ones. Additionally, a hack has been included in the telemetry hook to prevent retrospective events to be triggered when we re-use the component inside run-details page.
Ticket Link
Fixes https://mattermost.atlassian.net/browse/MM-45546
Checklist

[ ] Telemetry updated
[ ] Gated by experimental feature flag
[ ] Unit tests updated

I'm fine with this, provided we remember to remove it before shipping :)

There's a task with some cleanup here https://mattermost.atlassian.net/browse/MM-45451

@trilopin I wanted to approve and hit merge :facepalm: but I guess it's the same result. Too early in the morning, I guess.

I'm fine with this, provided we remember to remove it before shipping :)

hack removed at https://github.com/mattermost/mattermost-plugin-playbooks/pull/1322


fixed issue with netmiko_kwargs

there was an issue when opening the connection to the device.
Please check and merge my pull request.

Coverage remained the same at 87.719% when pulling 7e153191484b521a0f8ca0aef5f23edd974f2273 on DENICeG:master into a48ce89eede5bcf77f4a782a64e1802fac1707b6 on fooelisa:master.

Hi,
We came to the same fix regarding https://github.com/fooelisa/pyiosxr/pull/48/commits/7e153191484b521a0f8ca0aef5f23edd974f2273
Regarding the second commit, that didn't work for us (actually works without it):
https://github.com/fooelisa/pyiosxr/pull/48/commits/313b1f7bf270c2a0be3afc28bb367bae4e3e3674
Thanks for the awesome work with NAPALM!

Yeah, we tested the second commit also in our production environment, but it didn't work. The cisco support told us to do so. We've asked cisco support why "show configuration merge" doesn't work in Exec environment and what to use instead.
Our xml agent at an iosxr router gets repeatedly stuck and we've opened a cisco case. We'll see what they recommend.

Coverage remained the same at 87.719% when pulling 6be480def3a3f48362e4cc57afefa517317a43eb on DENICeG:master into a48ce89eede5bcf77f4a782a64e1802fac1707b6 on fooelisa:master.

Coverage remained the same at 87.719% when pulling 6be480def3a3f48362e4cc57afefa517317a43eb on DENICeG:master into a48ce89eede5bcf77f4a782a64e1802fac1707b6 on fooelisa:master.

For some reason, I don't receive notifications from this repo.
Thanks, @thorko and apologize again for the late reply.

@mirceaulinic no big deal. I'm glad I could help
Sent from my Samsung GT-I8190 using FastHub


Add API to list role attributes in use by services, identities and edge routers

Need the following APIs

/services/role-attributes
/identities/role-attributes
/edge-routers/role-attributes

Each API service should return a unique array of role attributes associated with the given entity

Going to go with

/role-attributes-services
/role-attributes-identities
/role-attributes-edgei-routers


Documentation is not correctly generated when having producer and consumer for the same topic.

Describe the bug

We have a Spring Boot microservice, let's say it is called "test-service"
"test-service" has the following consumers:
2.1 ConsumerA -> consumers "topic-a"
2.2 ConsumerB -> consumer "topic-b"
Now let's say we configure an asyncApiDocket Bean. Everything works fine and I can see both consumers in springwolf ui.
Now we add ProducerA -> produces events to "topic-a'.
Now springwolf ui display only consumer for topic-b and producer for topic-a. Seems the consumer for topic-a documentation was overwritted.

Dependencies and versions used
springwolf-kafka version 0.6.1. I tried with 0.7.0 as well.
Code example
@SpringBootApplication(scanBasePackages = {})

public class ExampleApplication {

    public static void main(String[] args) {

        SpringApplication.run(ExampleApplication.class, args);
    }
}

@Component
@RequiredArgsConstructor
@Slf4j
@KafkaListener(
    batch = "true",
    topics = "topic-a"
)
public class ConsumerA {
    @KafkaHandler
    public void consume(Object event) {
    }
}

@Component
@RequiredArgsConstructor
@Slf4j
@KafkaListener(
    batch = "true",
    topics = "topic-b"
)
public class ConsumerB {
    @KafkaHandler
    public void consume(Object event) {
    }
}

@EnableAsyncApi
@Configuration
public class AsyncApiConfigurationTest {

    private static final String LISTENERS_SCAN_PACKAGE =
        "example.consumer";

    @Bean
    public AsyncApiDocket asyncApiDocket(
        @Value("${service.name}") String appName,
        @Value("${service.version}") String appVersion,
        @Value("${spring.kafka.bootstrap-servers}") String bootstrapServers) {

        Info info = Info.builder()
            .version(appVersion)
            .title(appName)
            .description("description")
            .build();

        String producerTopicName = "topic-a";
        ProducerData preparedDataProducer = ProducerData.builder()
            .channelName(producerTopicName)
            .operationBinding(ImmutableMap.of("kafka", new KafkaOperationBinding()))
            .payloadType(FetchUserBalances.class)
            .build();

        return AsyncApiDocket.builder()
            .basePackage(LISTENERS_SCAN_PACKAGE)
            .server("kafka", Server.builder().protocol("kafka").url(bootstrapServers).build())
            .producer(preparedDataProducer)
            .info(info)
            .build();
    }

Stack trace and error logs
No exceptions in log

Thanks for the detailed issue! @timonback here provided fixes both for the core and ui, and I will be releasing them in the next week.

Released in springwolf-kafka-0.8.0.


Suppose while migrating from Cluster Autoscaler to Karpenter, if something happens, what are the steps that need to be taken care of?

Description
During the migration from Cluster Autoscaler to Karpenter, unexpected issues may arise that require immediate attention and resolution. This issue serves to outline the steps to be taken if such situations occur.

@mdb108 Are you looking for an update to the docs that describes this or are you just asking the question in the repo?

Yeah it’s just a question

I am bit confused about this like there is any documentation or steps that I need to follow like whenever there is an issue while migrating so that I can easily rollback to the cluster auto scaler.


Fix for issue #70

This makes it clear that the default value of  should be "true" and not "false". Corresponds to issue #70.

File missing.


Add OpenShift and IBM reference to 21.1 Kubernetes tutorial

Searching for IBM currently returns no results. It's a somewhat
recurring search query, so this change should at least return
something, which is better than nothing.

This change is


wiki: Email

https://nixos.org/wiki/Email

I don't think this one is worth migrating. It has little to do with nixos in particular, and only covers already-documented options.

:+1: closing it


add isGesture to onRegionChangeComplete iOS

add isGesture prop to onRegionChangeComplete callback on iOS MapKit

Does any other open PR do the same thing?

https://github.com/react-native-maps/react-native-maps/pull/4113
What issue is this PR fixing?
https://github.com/react-native-maps/react-native-maps/issues/4112
How did you test this PR?

Test on 1 iOS(15.5) devices and 1 simulator

isGesture functionality on iOS is absolutely sought. This PR (and the other PR that did this) is completely separate from https://github.com/react-native-maps/react-native-maps/issues/4265 isGesture is not a workaround to the above issue - it is a very useful function on its own.
Currently on Android we can tell when a user has initiated map movement via the isGesture function. This function is lacking on iOS.

@RyanTG good to know :) A new PR based on the new code base is always welcome 🚀

@eduardorfreitas93 Just wondering if you’re going to try this feature again? It’s beyond my skills, but I think at least a few of us would love to have it.

@RyanTG Vou fazer alguns testes na versão 1.0.0 e vou tentar fazer esse ajuste no isGesture para IOS

@RyanTG I added this new pr, for version 1.0.0 https://github.com/react-native-maps/react-native-maps/pull/4322


Move cloud config configurations to proper location

https://github.com/kubernetes-incubator/kubespray/pull/2540

configuration defaults also should be moved

ci check this

ci check this


Public IP Sku for NatGW validated but failed deploy

2.198.0
Azure CLI task from public Azure DevOps agent.
Describe the bug
Referencing the ID of a Public IP without a Sku specified to a NAT Gateway resource passes validation, but deployment fails due to Basic Sku as default on the Public IP.
To Reproduce
Create Public IP Resource without a sku specified and reference it's ID on Nat Gateway resource.
az deployment group validate (passes)
az deployment group create (fails due to basic license on the public IP)
Additional context
Both the public ip and the Nat Gateway is created using 'for', not sure if that messes the referencing up.
main-bicep.txt

This would be a bug in the Network RPs handling of the validation request. There is not anything we can do on the bicep side.


Index permissions should not be assigned to cluster permissions and vice versa

I know the following is not important, just a nice-to-have feature. I'm using the latest opendistro 1.13.2 version.
At the moment, one can assign index permissions (e.g. indices_all) to the cluster permissions tab within Kibana UI: Security > Roles > Edit role.
Likewise, when defining index permissions, suggestions like cluster_all, cluster_monitor, etc. pop up in the drop-down list.
If I am not mistaken these cases do not make sense, thus it would be optimal that the auto-complete suggestions are relevant to the permissions one is trying to define i.e. only cluster:* permission (groups) for cluster permissions and only indices:* permission (groups) for index permissions.
Going one step forward, if user anyway enters the wrong group of permissions an error/warning should occur, letting him know that it doesn't make sense.
Please let me know if my suggestion is unclear.

[Triage] This is a similar issue to #1346. These issues could be resolved at the same time and would make a good first issue.


Fix macOS CI (broke when Github updated to macos 11.6)

[ ] Remove explicit compiler from github workflow (already in profile) from all recipes
[ ] Remove cmake build_requirement from all recipes


name === '<P3' do not show in legend

Codepen
codepen demo
Explanation
this is the series,but only 'P3' can be shown in legend,'<P3' cant be shown in legend,is this a bug?
      let series = [
        {
          name: '<P3',
          data: [0, 0, 0, 0, 0, 0, 1, 0]
        },
        {
          name: 'P3',
          data: [0, 3, 0, 5, 0, 0, 1, 0]
        }
      ]

i found this in src, why cant have '<' in name?
  static escapeString(str, escapeWith = 'x') {
    let newStr = str.toString().slice()
    newStr = newStr.replace(
      /[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,
      escapeWith
    )
    return newStr
  }

seriesName: Utils.escapeString(w.globals.seriesNames[realIndex])

It is escaped to prevent querySelector bugs when referencing elements using series-name
You can put a space in < P3 and it will work fine.
    let series = [
        {
          name: '< P3',
          data: [0, 0, 0, 0, 0, 0, 1, 0]
        },
        {
          name: 'P3',
          data: [0, 3, 0, 5, 0, 0, 1, 0]
        }
      ]

It is escaped to prevent querySelector bugs when referencing elements using series-name
You can put a space in < P3 and it will work fine.
    let series = [
        {
          name: '< P3',
          data: [0, 0, 0, 0, 0, 0, 1, 0]
        },
        {
          name: 'P3',
          data: [0, 3, 0, 5, 0, 0, 1, 0]
        }
      ]

thank you for solving my question！That is really helpful！


Device offline after 30 min

i installed it on android 10, works, firt with location but after 1 hour it shows offline. After a reboot it shows online but location (0,0) with gps on.
I set battery optimized to off, but location still is zero.

Android 10 and up has an algorithm to suspend the app running in the background if the application is not opened for a certain amount of time. I haven't have the time to investigate and find a solution for this but you can always try to contribute to this project if you find the sollution.


AzurePortalSigninfromanotherAzureTenant.yaml - Persistent storage path does not exist.

Describe the bug
In line 3 of the analytic AzurePortalSigninfromanotherAzureTenant.yaml a hard coded URL path used within the analytic is no longer live.
To Reproduce
Steps to reproduce the behavior:

Go to 'https://github.com/Azure/Azure-Sentinel/blob/master/Detections/SigninLogs/AzurePortalSigninfromanotherAzureTenant.yaml'
Scroll down to 'line 23'
See error

Expected behavior
Either a live link or a call to a list of IOCs expected for this analytic.

This has been fixed now. Closing this out.


⚠ Minecraft has degraded performance

In ad18cea, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1461 ms

Resolved: Minecraft performance has improved in 9977ea6.


Add CONTRIBUTING.md

Documentation on CONTRIBUTING.md: https://help.github.com/articles/setting-guidelines-for-repository-contributors/
Also add it to these projects:

https://github.com/ascoderu/opwen-webapp
https://github.com/ascoderu/mkwvconf
https://github.com/ascoderu/pyzmail

Didn't find a great template, postponing.


Fix player Corner Box and Healthbar

Fixed screen positions and switched place for DrawHealthBar to Drawing and as a Parameter used EntityAlive so if neede it can be used for Enemies as well

Thanks for your contribution.


Compute shader are empty

When I try to open a compute shader for editing inside SHADERed it appears always empty. This does apply for all example projects, as well as personal test project. I can write content to that file, but saving will overwrite the old content. When I reopen the project the same problem occurs.
I'm running the Archlinux-AUR version at commit 52723288ef59e4d682bcc52a362d738cb776daca.

Thanks for reporting! I've just pushed a fix for this bug. I guess the AUR package needs to get updated now - that's not in my control.

Works perfectly, thank you.


Should version() continue utilizing version from the name/description fields?

Currently, the version() function utilizes the version information from the name and description fields of the os-release file and distro release file, if it does not find version information in the usual three sources.
While it is theoretically possible that a distro has version information only in these fields, it is not known whether such a distrio exists. So we could simplify the code by dropping the processing of these two additional sources.
Please provide your review/considerations/wishes about which way to go in this matter, by commenting on this issue.

I'm all for removing unneeded code until we stumble into a case in which we need it. I haven't stumbled into a situation in which the version information is not available in the version fields. So.. i'm in for removing that code.

With LinuxMint 17, we now have the first distro where the best version comes from the NAME field of the os-release file, so it utilizes one of the two extra functions.
In fact, I found that our current parsing of the pretty versions does not tolerate the trailing " LTS" in Ubuntu versions. When I add toleration support for that, we suddenly get a more precise best version also from Ubuntu (14.04.3 instead of 14.04). That also relies on the first extra function that processes the NAME field of the os-release file.
The second extra function processing the Description field of the lsb_release command finds a parseable content of that field for Mageia, LinuxMint, Ubuntu, Debian and kvmibm. However, all of those have the best version available somewhere else with a higher precedence. Yet, it is possible that some distro relies on it.
How about disabling the second extra function because there is no distro known currently that would rely on it, but keeping the first extra function?

Hehe. It seems to me like if I just replied that I think we should remove it, you'd say we found a distro that uses the second one :)
Anyhow, sure. I have no objection here.

:-) you did :-)
I was about to agree to the removal, and then learned more, today.
Let's keep them for the moment, at least until we have figured out how to special case Linux Mint. Maybe their use becomes part of the special casing.

Should we close this for now?

Yes, my take would be to close this for now.

Closing it.


New Version: BraveSoftware.BraveBrowser.Beta 101.0.4951.41

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[ ] Have you tested your manifest locally with winget install --manifest <path>?
[x] Does your manifest conform to the 1.1 schema?

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

Microsoft Reviewers: Open in CodeFlow

I think after getting approved it should merge automatically. However it is not merging after 1 hour. Is there any issue?

I agree, but for some reason the MS team want msftbot to do the stuff, which we keep breaking, as you can see it insta merged once Levvie retriggered a event which we also don't know the reason for..


Hira Image

New

Replacing with this image:

Note: Screenshot sizes look different, but the actual size is the same i.e., 400x400

2nd commit Details
New Replaced

Old Photo

Note: Screenshot sizes look different, but the actual size is the same i.e., 400x400


Improve flake

this makes the flake.nix file a bit more readable in my opinion :)

Hm.. actually... I'm rethinking this a bit.

Thanks!
I'd love for any of the other nix contributors to have a look at this since I don't use nix personally.  @SignalWalker
If nobody gets to this within a week I'll try to take a look myself.  Could you briefly explain the improvements?

Could you briefly explain the improvements?

(Subjective improvement): Switching from flake-utils to flake-parts which has a cleaner structure for multiple systems
updated the flake.lock with nix flake update (you can't currently run cargo check because it's version is too old)
added rust-overlay so the nix-dev-shells are loading the tools from the given rust-toolchain.toml

though you might want to keep Alejandra or get some other formatter.

Fixed, I added the nixpkgs-fmt :)

Awesome, thanks so much you guys.


Updated dependencies, version bump to 0.4.1

Don't merge until we can publish - system-configuration-sys needs a new version on crates.io then we can remove the git dependency


[QST] anyone got success using custom container on vertex ai?

❓ Questions & Help
Details
I tried running creating a custom container on vertex ai to run my T4R notebooks
My dockerfile is as follows
FROM nvcr.io/nvidia/merlin/merlin-inference:21.11
EXPOSE 8080
EXPOSE 8888
ENTRYPOINT jupyter lab --ip <IP_ADDRESS> --port 8080 --allow-root --no-browser --NotebookApp.token='' --NotebookApp.password=''
I am getting jupyter status unhealthy error and couldn't run the notebooks. Has anyone got any success creating a custom container to run T4R library notebooks? Any hint, help much appreciated :)

@arunslb123 thanks for your question. I am not familiar with Vertex AI. Hopefully someone who is familiar with it will respond here. But to clarify, why are you trying to launch TF4Rec notebooks with merlin-inference:21.11 container? You cannot run TF4Rec training notebooks on merlin-inference container. You need nvcr.io/nvidia/merlin/merlin-pytorch-training:21.11 container instead. Merlin inference is only to launch the Triton Inference Server and load/serve the saved models.

Thanks @rnyak , will try that. My current pain point is I cannot run nvtabular.triton inference from the current end-end notebooks, I just pip installed as pip install tritonclient[all] So thought of using docker inference container to run it on vertex ai.

Also do you have any documentations on how you created jupyter lab on your nvidia courses? Everything works well in that course. If there's any conda yaml files, I will reproduce the same to run my notebooks.

@arunslb123 sorry that your are having issues. Let me write down the steps for executing the end-to-end nb:
You need two containers:

merlin-pytorch-training:21.11 container to run the entire notebook.

in this container you can git clone the Transformers4rec and then do
cd Transformers4Rec
git checkout main
git pull origin main
pip install -e .

For the inference part of the notebook, you need merlin-inference container only to serve/load the models to Triton inference server. In order to do that please follow the explanations in the notebook:

# Launch the docker container

docker run -it --gpus device=0 -p 8000:8000 -p 8001:8001 -p 8002:8002 -v <path_to_saved_models>:/workspace/models/ nvcr.io/nvidia/merlin/merlin-inference:21.11

This script will mount your local model-repository folder that includes your saved models from the previous cell to /workspace/models directory in the merlin-inference docker container.

# Start triton server
After you started the merlin-inference container, you can start triton server with the command below. You need to provide correct path of the models folder.

tritonserver --model-repository=<path_to_models> --model-control-mode=explicit

Note: The model-repository path for our example is /workspace/models. The models haven't been loaded, yet. Below, we will request the Triton server to load the saved ensemble model below.

For the error you get, can you please try to run the command below in your  merlin-pytorch-training:21.11 docker container terminal before launching the jupyter notebook:
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION='python'
Let us know if that solves the issue :)

@arunslb123 as a side info we have some instructions for running our notebooks on cloud (hope that'd help also). Please visit:
https://nvidia-merlin.github.io/NVTabular/main/resources/cloud_integration.html
but you'd still need the inference container launched there as well, and load the trained and saved models (generated from export_pytorch_ensemble()) to the Triton IS and then send request from client notebook (training notebook).

@rnyak , I followed all the above steps and currently getting this issue. Any pointers on this? Thanks

@rnyak , I followed all the above steps and currently getting this issue. Any pointers on this? Thanks

The above error message happened when I was running the below code.

Can you please share your script of  launching the inference container? Also please share the tree structure of your models folder? (model repository folder  that triton reads the configs basically)..

@rnyak , My tree structure

script I am using to launch the inference container:
docker run -it --gpus device=0 -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /home/jupyter/Transformers4Rec/examples/end-to-end-session-based/models:/workspace/models nvcr.io/nvidia/merlin/merlin-inference:21.11
tritonserver --model-repository=/workspace/models --model-control-mode=explicit
Error message:

Also, this is the error I am getting inside the docker server.

Also, this is the error I am getting inside the docker server. "No module named " nvtabular.inference.workflow"

can you please go to nvtabular directory and then do git checkout main && git pull origin main && pip install -e . to pull the latest changes in the NVTabular both in your training and inference containers.  Let us know if this solves your issue.

@rnyak , My tree structure

script I am using to launch the inference container:
docker run -it --gpus device=0 -p 8000:8000 -p 8001:8001 -p 8002:8002 -v /home/jupyter/Transformers4Rec/examples/end-to-end-session-based/models:/workspace/models nvcr.io/nvidia/merlin/merlin-inference:21.11
tritonserver --model-repository=/workspace/models --model-control-mode=explicit
Error message:

can you go to workspace/models folder in your inference container and run ls and share the print out here? Be sure there are only three models in the models folder nothing else than t4r_pytorch t4r_pytorch_nvt t4r_pytorch_nvt.

@rnyak , I tried updating nvtabular inside the triton container and ended up with this error message. What container are you using in the course? Also I can confirm that I have only 3 folders inside workspace/models.

@arunslb123 sorry for the inconvenience. I am gonna open an issue regarding that at NVTabular GH repo. Hopefully it will be solved shortly.
for the live tutorial we used:
nvcr.io/nvidia/merlin/merlin-inference:21.09 and nvcr.io/nvidia/merlin/merlin-pytorch-training:21.09 containers.
with
cd /nvtabular && git checkout main
pip install pyyaml torchmetrics==0.3.2 tensorflow-metadata ipywidgets transformers==4.9.0.
git clone  https://github.com/NVIDIA-Merlin/Transformers4Rec.git && cd Transformers4Rec && pip install -e .

A fix for the NVT issue was just merged 😅

@rnyak , I could successfully run end-end notebooks on my A100 40GB GPUs after updating nvtabular to recent versions, and also updating pytorch to pytorch nightly on my triton server containers. 👍
@karlhigley , thank you very much for fixing the issue. much appreciated :)

@arunslb123 can we close this issue if you are good?

@rnyak , thank you and happy to close this one.


add default quota to AW

What is not clear from this PR how are "default" quota contexts going to be handled? Where do you intend to add the default values and what are those default values? As this PR stands now, it seems incomplete.


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

Codecov Report

Merging #427 (515fbb7) into main (03a9971) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 515fbb7 differs from pull request most recent head 22d39dc. Consider uploading reports for the commit 22d39dc to get more accurate results

@@           Coverage Diff           @@
##             main     #427   +/-   ##
=======================================
  Coverage   95.69%   95.69%
=======================================
  Files           1        1
  Lines         395      395
  Branches       42       42
=======================================
  Hits          378      378
  Misses         17       17

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


Add package when javaType is not a fully qualified name

I am working in a POC with OCPP 1.6/2.0 that use json schemas with a not fully qualified javatype (example attacched). May be useful check if a specified javatype is fqn or not and hence add the package name if needed.

Hi @eltabo. Thanks for submitting this. I think this is a good change, but we need an integration test that checks this behaviour before we can merge this PR. Could you add one?

I have added some integration tests.

So in 1.1.1, "javaType":"Foo" produces com.example.Foo, "javaType":"subpackage.Foo" and "javaType":".subpackage.Foo" both produce subpackage.Foo, and I still have no idea how to produce com.example.subpackage.Foo.... I'm using <sourceSortOrder>FILES_FIRST</sourceSortOrder> because I have subdirectory schema that is incorrectly packages a "$ref":"../bar.json" reference, so that might be affecting my results (OS or SUBDIRS_FIRST do at least create subpackage).


feat: redefine EventLoop.Serve arg:  Listener -> net.Listener

solve issue: https://github.com/cloudwego/netpoll/pull/22


How to send String JSON Array as key in parameter?

post request
let images = ["1.png", "2.png", "3.png"]
let parameters = ["token": "xx", "user_id": 1, "images": images]
It contains a string array and some keyvalues.
docs/Examples/ParameterEncoding.md can't save me~

Just try using JSONEncoding.default to send it as JSON

It can't work


Wallet events stream error

thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: Status { code: Unimplemented, metadata: MetadataMap { headers: {"date": "Thu, 14 Jul 2022 09:05:23 GMT", "content-type": "application/grpc"} }, source: None }', applications/launchpad/backend/src/grpc/wallet_grpc_client.rs:75:71

I will confirm if this issue is still valid after I manage to run wallet container.


Typescript-Resolver: custom resolveInfo type

Hi, we are using the Postgraphile library which not only uses a custom context but also has an extended resolveInfo argument. They do provide their own AugmentedGraphQLFieldResolver type but since it returns any it's not really compatible with the proper resolver types created by graphl-codegen.
Feature request: Could you please add another configuration option so that one could choose the type of the ResolveFn's info argument?
export type ResolverFn<TResult, TParent, TContext, TArgs> = (
  parent: TParent,
  args: TArgs,
  context: TContext,
  info: GraphQLResolveInfo
//      ^^^^^^^^^^^^^^^^^^ customise this
) => Promise<TResult> | TResult;

Implemented in 1.8.2.


Format Uniprot database not working

Hello,
I am installing blobtools2 but I am having issues with fetching my UniProt database. My code is:
wget -q -O uniprot/reference_proteomes.tar.gz \
 ftp.ebi.ac.uk/pub/databases/uniprot/current_release/knowledgebase/reference_proteomes/$(curl \
     -vs ftp.ebi.ac.uk/pub/databases/uniprot/current_release/knowledgebase/reference_proteomes/ 2>&1 | \
     awk '/tar.gz/ {print $9}')

I was able to create the reference_proteomes.fasta.gz file. But I had issues creating the reference_proteomes.taxid_map file
The following command is not working:
zcat */*/*.idmapping.gz | grep "NCBI_TaxID" | awk '{print $1 "\t" $1 "\t" $3 "\t" 0}' >> reference_proteomes.taxid_map

The error is Unexpected end of file, I downloaded again the Uniprot database, in case the files were incomplete, and I had the same error.
Any thoughts about this issue?
Thank you.

I'm not able to reproduce this, I just downloaded the reference_proteomes.tar.gz, and didn't encounter any errors running:
zcat */*/*.idmapping.gz | grep "NCBI_TaxID" | awk '{print $1 "\t" $1 "\t" $3 "\t" 0}' >> reference_proteomes.taxid_map

An unexpected end of file error in that command would suggest that one of the individual *.idmapping.gz files is incomplete, which seems odd. One possibility is that you are running into disk space/quota issues and the tar extraction is incomplete, but errors associated with that should have shown up sooner.
I've run ls -l and du -s * on the uniprot directory so you can see the file sizes that I have, in case that helps with working out where any incomplete files may be:
ubuntu@btk:/volumes/data/databases/uniprot$ ls -l
total 119420720
drwxr-xr-x  327 ubuntu ubuntu        12288 Feb  8 17:10 Archaea
drwxr-xr-x 7945 ubuntu ubuntu       253952 Feb  8 17:56 Bacteria
drwxr-xr-x 1556 ubuntu ubuntu        45056 Feb  8 18:01 Eukaryota
-rw-r--r--    1 ubuntu ubuntu      1485789 Feb  8 15:52 README
drwxr-xr-x 9865 ubuntu ubuntu       266240 Feb  8 19:29 Viruses
-rw-rw-r--    1 ubuntu ubuntu<PHONE_NUMBER>03 Feb 10 22:31 reference_proteomes.tar.gz
-rw-rw-r--    1 ubuntu ubuntu<PHONE_NUMBER> Mar  4 09:42 reference_proteomes.taxid_map

ubuntu@btk:/volumes/data/databases/uniprot$ du -s *
1255924 Archaea
54915864        Bacteria
61331096        Eukaryota
1452    README
804304  Viruses
117742024       reference_proteomes.tar.gz
1676672 reference_proteomes.taxid_map


The code for [Index] doesn't compile

[Index] throws an error along these lines.
Severity	Code	Description	Project	File	Line	Suppression State
Error	CS0592	Attribute 'Index' is not valid on this declaration type. It is only valid on 'class' declarations.	Cleardragon	D:\Dropbox\Cleardragon\Models\User.cs	28	Active
The correct use is at class level:
[Index(nameof(UserName), IsUnique = true)]
public class FocusedUser {...}

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

ID: 9c7bd305-ac97-ca3c-f8c0-031d8d9c7599
Version Independent ID: 2d0b358a-5cfd-60e4-251f-c4e824bba348
Content: Code First Data Annotations - EF6
Content Source: entity-framework/ef6/modeling/code-first/data-annotations.md
Product: entity-framework
Technology: entity-framework-6
GitHub Login: @ajcvickers
Microsoft Alias: avickers

@Firesong25 Make sure you are using the EF6 IndexAttribute with EF6, and the EF Core IndexAttribute with EF Core.


react-native\packages\react-native\Libraries\Blob\URL.js Changes

Summary:

Changelog:

Test Plan:

Hi @bobbysharma05, thanks for working on this.
Could you please add a Summary explaining the changes and a Changelog in the PR, following the suggested structure?

Also, the test_js signal is failing, can you have a look at it?

ok sir I will look into it and also add the summary.

Sir I am new to the open source. Could you please help me in which part I am getting stuck.

When a new pr is open, we provide a template that has to be filled. For the Changelog, specifically, it has to follow a predefined format, which is described here.
For this pr, it should be something like:
[General][Fixed] -  implemented missing methods on URL.js

For the failures, you can click on the failed signals in the github UI and read through the logs, looking for the errors (the search function is your friend).
For example, the linter says that the community-cli-plugin has been built and it should not. If you inspect the changed files, you see that you committed a package.json that should not be committed.
The test_js says that there is an invalid expression at line 25 of the URL.js file.
Build_android failure is related to the failure for the linter, so it should be fixed by reverting the changes in the community-cli-plugin/package.json.


Increase webserver and storage replicas on master for testing

What do these changes do?
In order to test @wvangeit's work I pump-up the master deployment as follows:

Increase number of webserver replicas on master to 6
Increase number of storage replicas on master to 3

Related issue/s
Related PR/s
Checklist

[ ] I tested and it works

:fire:


iOS DB cannot be used anymore when created without iosKeychainPrefix

Describe the bug
When an iOS DB was created with the Capacitor 4 SQLite plugin without having set a iosKeychainPrefix it cannot be used on an updated App version anymore with this Capacitor 5 plugin because iosKeychainPrefix got mandatory.
To Reproduce
Steps to reproduce the behavior:

Have an iOS App creating a DB with this plugin in the Capacitor 4 version
Have an updated iOS App trying to keep using this DB with the Capacitor 5 plugin
See error: "SetEncryptionSecret: keychain prefix must not be empty" or "No Passphrase stored" when iosKeychainPrefix  is not set or set to "" in capacitor.config.ts. If you define a prefix it also does not work because the secret cannot be found.

Expected behavior
iOS DBs created with a previous major version of this plugin must be openable with Capacitor 5+.
Desktop (please complete the following information):

OS: iOS 16.2

Smartphone (please complete the following information):

Device: iPhone 14 Simulator

To workaround this I have to delete (SQLiteDBConnection.delete()) and re-initialize the db with the prefix.
Instead of loosing app data it would be better to make UtilsSecret.checkEncryptionSecret less strict and allow an unset prefix like in the previous major release.

@mobilemarines this will allow you to reopen the database correctly

Thanks @jepiqueau, but what if I did not safe the passphrase because it was not needed yet? :)

@mobilemarines i do not really understand.
To encrypt a database you need to set a passphrase from à suite long time already. So nothing change in moving to Capacitor 5. If as you said you did not set it means that you are always using the secret defined in the GlobalSQLite.swift file so look at the value and set this one following the  procedure setEncryptionSecret

Sorry for the misunderstanding, @jepiqueau , the database initialization process we use is as follows:

check if a passphrase is already set with isSecretStored()
if not, generate a random password and set it with setEncryptionSecret(). So this is done once. This secret was not needed to be saved in another place yet because it was never asked again with the next app startup where step 2 is not needed anymore.
if isConnection() then retrieveConnection() else checkConnectionsConsistency() + createConnection()
open()

So we set a secret and cannot use the default one from GlobalSQLite.swift but also did not safe our own secret because it was not needed (and would be insecure with no encrypted SharedPreferences available on Android via Capacitor yet).
Now, with Capacitor 5, we cannot restore the saved secret from the keychain because it's not allowed to use no prefix anymore which seems to be the only way to retrieve it because there is only setEncryptionSecret() and no getEncryptionSecret().
I hope this makes it clear.
A solution/workaround for this scenario would be nice.

It has been quite a debugging odyssey and much trial and error but now I found a workaround to migrate a DB that should have been encrypted with the Capacitor 4 plugin but wasn't because the iosKeychainPrefix was missing and then trying to open that DB with the Capacitor 5 plugin having an iosKeychainPrefix set.
So the now working startup procedure is as follows:

this.sqlitePlugin = CapacitorSQLite;
this.sqlite = new SQLiteConnection(this.sqlitePlugin);
const isSecretStored = !!(await this.sqlite.isSecretStored()).result;
if (!isSecretStored) {
await this.sqlite.setEncryptionSecret("secret");
}
try {
// this.dbConnection = await this.sqlite.createConnection(dbName, true, "secret", 1); // Not working
// this.dbConnection = await this.sqlite.createConnection(dbName, false, "no-encryption", 1); // Not working
const isDbUnencrypted = !!(await CapacitorSQLite.isDBExists({ database: dbName })).result; // needs open connection -> not available/possible on first run
} catch (error) {}
if (isUnencrypted) {
// Encrypt unencrypted DB
await this.sqlite.closeConnection(dbName); // Close concurring secret connection to setup encryption
this.dbConnection = await this.sqlite.createConnection(dbName, true, "encryption", 1);
await this.dbConnection.open(); // This encrypts the db
await this.sqlite.closeConnection(dbName, false);
}
if ((await this.sqliteService.isConnection(dbName)).result) {
this.dbConnection = await this.sqliteService.retrieveConnection(dbName);
} else {
const openedConnections = (await this.sqliteService.checkConnectionsConsistency()).result;
if (openedConnections) {
console.info("Open database connections cleaned up.");
}
this.dbConnection = await this.sqliteService.createConnection(dbName, true, "secret", 1)
}
try {
await this.dbConnection.open();
} catch (error) {
// Fails on first attempt so try the whole procedure once more, then the unencrypted DB gets encrypted and the DB connection can be opened
}

But it has an issue I could not fix yet:

The CapacitorSQLite.isDBExists command fails because there is no connection yet. No matter if I try to open an unencrypted  or encrypted connection (they fail, too). So I cannot check if the DB is encrypted or not and we have a chicken-and-egg-problem. But on the 2nd attempt the connection is available and thus I can check if the DB is not encrypted yet, which is the case, then I can encrypt it and it can be opened.

Is the startup procedure wrong then or is it a bug?
It is so hard to understand how to implement a DB startup that can handle migration.
These tests https://github.com/jepiqueau/angular-sqlite-app-starter/blob/master/src/app/test/testencryption/testencryption.page.ts were the only examples that helped me make encryption work at all but I'd really appreciate help or examples to make a robust DB startup that can handle all migration scenarios, including getMigratableDbList of old unencrypted Capacitor DBs.
So the most important open question is:

How can be checked if a DB is encrypted or not in this scenario?

@mobilemarines i do not know where is the problem. For me all these commands work fine and are usedin ionic7-angular-sqlite-app. I am bisy rewriting the electron part of the plugin which take all my free time. So i have no time to go in the detail of what your are doing

No worries, @jepiqueau.
Thanks again and hopefully this thread can help someone else.


Initial commit of dataset cleanup package

A small WhizzML library and script to do dataset cleanup.  At this point, the library just includes a function to plug missing values in a dataset and put the result in a new dataset, and a function to create a template map for default values from the source dataset.

looks mostly good, just a couple of minor nits

Added all updates suggested by jaor

rebased and merged (closing manually). thanks!


added MRF HiFi-GAN and 44100Hz sampling rate

Description
MRF HiFi-GAN is the original method of generating speech audio proposed in https://arxiv.org/abs/2010.05646
It provides noticeably better/faster fills on the spectrogram.

44100Hz sampling rate is the most common and widely used standard. Additionally the odd upscaler values prevent the mirroring effect from occuring in the upper ranges of the spectrum.

Motivation and Context
The goal is to improve the training of models from scratch, previously almost impossible to do properly due to poorly chosen upscaling methods and algorihms. Also the updated generator should provide  a better quality overall for generated audio.
How has this been tested?
Ran a training from scratch using the old and new method using the same 1hr speaking dataset, compared results.
Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

moved the changes to a new branch


STONEBLD-1515 refactor logic to allow for multiple JDKs

/test jvm-build-service-in-repo-jbs-e2e
/test jvm-build-service-in-repo-apicurio-e2e


Fix build error on Windows by making OpenClipboard public

Ref issue #136.
Fixes build error on Windows.
Might want another solution for this that doesn't directly expose the OpenClipboard type.

Thank you for the eager contribution to fix the issue! I opened up an alternate PR via #138 that also has some hardening against similar issues cropping up in the future. And, like you said, OpenClipboard should not be public because its an internal detail of how arboard manages clipboard locking on Windows where that's needed.
I'm going to go ahead and close this as superseded, but thanks again for the attempt.


Upgrade folly to v2<IP_ADDRESS> (from v2<IP_ADDRESS>)

Probably best to rebase on  https://github.com/facebookincubator/velox/pull/8931 to make sure the version is fresh enough to fix it :)

#8931 is reverted here https://github.com/facebookincubator/velox/pull/9197

@majetideepak @spershin @amitkdutta @mbasmanova @kgpai @kevinwilfong  just merged this as we need a newer version of folly. You may need to generate the Prestissimo docker containers next time we advance Presto's Velox submodule.


referenceFilters and robotsTxt: robots.txt being checked for "external" sites

Dear norconex team,
could you please clarify, why the http collector does check the robots.txt of the "remote" (or "external") sites, although it is configured to "stay-on-site", e.g.
<startURLs stayOnDomain="true" stayOnPort="true" stayOnProtocol="true">
        <url>https://www.intranet.site.com/index.htm</url>
</startURLs>

<referenceFilters>
        <filter
            class="com.norconex.collector.core.filter.impl.ExtensionReferenceFilter"
            onMatch="exclude" >jpg,gif,png,ico,css,js</filter>
</referenceFilters>

<robotsTxt ignore="false" class="com.norconex.collector.http.robot.impl.StandardRobotsTxtProvider"/>

When the collector finds an external link (link to another site/domain), it tries to download the robots.txt from that site. Basically, it not that bad for the intranet sites, but if a link is pointed to an Internet site, the crawler gets run into a connection timeout.
I tried to add an "include" regex (with the domain name) into <referenceFilters>, but it did not help.
The question, is it possible to disable the checking of "robots.txt" not belonging to the sites configured inside <startURLs>
Thanks!

I could not reproduce this. It never tries to download the robots.txt on another site. Did you encounter this with 2.3.0-SNAPSHOT? Can you please attached your config?
If you change the loglevel in classes/log4j.properties to DEBUG, you should see lines like these to indicate external URLs are rejected.  Do you get them?
DEBUG [LinkExtractorStage] URL not in crawl scope: http://externalsite.com/blah
DEBUG [URLCrawlScopeStrategy] Rejected domain for: http://externalsite.com/blah

Just tested again with the latest snapshot (norconex-collector-http-2.3.0-20151017.032546-23.zip).
I cannot reproduce the issue now - no external "robots.txt" are getting fetched.

Good feedback like this is why we keep doing it.  Thank you!

Sorry to drop in, but even with the latest snapshot, I experience the same issue.
I realized this behavior when I saw sporadic exceptions in the log (e.g. SSLHandshakeException) during a crawl with the message "Not able to obtain robots.txt at: ..." for external references that should not be crawled but only listed by the crawler event "URLS_EXTRACTED".
The setting of the stayOnDomain attribute doesn't change the behaviour and I also use a RegexReferenceFilter that is applied in code.
Unfortunately, I can't see the LinkExtractorStage or URLCrawlScopeStrategy in the log for the fetched robot.txt (after changing the collectors to DEBUG), but I see it in the stack trace, e.g.:
WARN  [StandardRobotsTxtProvider] Not able to obtain robots.txt at: https://www.openstreetmap.ch/robots.txt
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at com.norconex.collector.http.robot.impl.StandardRobotsTxtProvider.getRobotsTxt(StandardRobotsTxtProvider.java:80)
	at com.norconex.collector.http.pipeline.queue.HttpQueuePipelineContext.<init>(HttpQueuePipelineContext.java:41)
	at com.norconex.collector.http.pipeline.importer.LinkExtractorStage.queueURL(LinkExtractorStage.java:131)
	at com.norconex.collector.http.pipeline.importer.LinkExtractorStage.executeStage(LinkExtractorStage.java:89)
	at com.norconex.collector.http.pipeline.importer.AbstractImporterStage.execute(AbstractImporterStage.java:31)
	at com.norconex.collector.http.pipeline.importer.AbstractImporterStage.execute(AbstractImporterStage.java:24)
	at com.norconex.commons.lang.pipeline.Pipeline.execute(Pipeline.java:90)
	at com.norconex.collector.http.crawler.HttpCrawler.executeImporterPipeline(HttpCrawler.java:285)
	at com.norconex.collector.core.crawler.AbstractCrawler.processNextQueuedCrawlData(AbstractCrawler.java:475)
	at com.norconex.collector.core.crawler.AbstractCrawler.processNextReference(AbstractCrawler.java:376)
	at com.norconex.collector.core.crawler.AbstractCrawler$ProcessReferencesRunnable.run(AbstractCrawler.java:703)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

My config is located at #163. What am I missing?
Thanks for your help!

Re-opening. I will try reproduce with your config.

@comschmid, after approximately how many docs processed do you get this exception?

First, let me explain that the exception is correct, since the SSL certificate is expired. Thanks to this kind of exceptions I realized that robots.txt of external references are fetched, which is not intended, according the current configuration. This exception is just an example and I just realized, that this exception is not thrown for this exact configuration, but an SSLHandshakeException for another external domain is thrown.
Now, let me answer your question:
I don't see that there is a certain limit of docs that need to be processed.
As of now, a complete crawl with this configuration produces 58 documents and I see a SSLHandshakeException after about 20% of the log output (with log level DEBUG for the collector).
I also checked with Wireshark (with filter 'http.connection') and I already see from the beginning a lot of connections to external domains, requesting the robots.txt.

@comschmid, I just crawl "http://www.etools.ch" with your config.  It worked just fine. I got no exception and the site mentioned in the exception your reported was filtered out and no attempt to get a robot for it was made.  The rejection:
Issue Crawler: 2015-10-22 00:23:13 DEBUG - Rejected domain for: https://www.openstreetmap.ch/
Issue Crawler: 2015-10-22 00:23:13 DEBUG - URL not in crawl scope: https://www.openstreetmap.ch/

Do you get that rejection too?
What may be happening is using an old crawl database.  Did  you delete your work directory before trying again (especially the crawldb)? When new features are introduced or when you make particular config changes, you sometimes need to do a fresh re-crawl. The reason being, those external sites may have been previously crawled so the crawler has kept a memory of them and tries them again in case they have changed.
Try again with a fresh crawl and let me know if you still have the problem.

Thanks for your feedback!
Unfortunately I don't get this rejection messages, even by setting all log levels to DEBUG.
And yes, I did a fresh crawl.
FYI: I set the RegexReferenceFilter with the value https?://www\.etools\.ch/.* in code.
There must be something I looked over...

This is not related to why it tries to go outside, but if you want to get rid of the SSL Exception, this flag will probably do it for you:
<httpClientFactory>
  <trustAllSSLCertificates>true</trustAllSSLCertificates>
</httpClientFactory>

Your RegexReferenceFilter suggests I did not use the exact same config as yours.  If you do it in the code, I understand it may be trouble to convert it to a config.  This has not been tried a lot, but you can try to save the config created via code to a file using HttpCrawlerConfig#saveToXML(Writer) and attach it here.

Thanks for the pointer concerning trusting all SSL certificates.
Unfortunately, the creation of the config XML stops somewhere in the middle with an NPE:
Exception in thread "main" java.lang.NullPointerException
	at com.ctc.wstx.sw.BaseNsStreamWriter.doWriteAttr(BaseNsStreamWriter.java:493)
	at com.ctc.wstx.sw.BaseNsStreamWriter.writeAttribute(BaseNsStreamWriter.java:228)
	at com.norconex.commons.lang.xml.EnhancedXMLStreamWriter.writeAttribute(EnhancedXMLStreamWriter.java:208)
	at com.norconex.importer.handler.filter.impl.RegexMetadataFilter.saveFilterToXML(RegexMetadataFilter.java:138)
	at com.norconex.importer.handler.filter.AbstractDocumentFilter.saveHandlerToXML(AbstractDocumentFilter.java:134)
	at com.norconex.importer.handler.AbstractImporterHandler.saveToXML(AbstractImporterHandler.java:224)
	at com.norconex.importer.ImporterConfig.writeObject(ImporterConfig.java:295)
	at com.norconex.importer.ImporterConfig.writeObject(ImporterConfig.java:282)
	at com.norconex.importer.ImporterConfig.writeHandlers(ImporterConfig.java:275)
	at com.norconex.importer.ImporterConfig.saveToXML(ImporterConfig.java:246)
	at com.norconex.collector.core.crawler.AbstractCrawlerConfig.writeObject(AbstractCrawlerConfig.java:443)
	at com.norconex.collector.core.crawler.AbstractCrawlerConfig.writeObject(AbstractCrawlerConfig.java:423)
	at com.norconex.collector.core.crawler.AbstractCrawlerConfig.saveToXML(AbstractCrawlerConfig.java:266)
...

Yeah, saving the config that way is very rarely done.  It does not mean it should not work though :-)  I will look at fixing the issue you just reported.

The latest snapshot should save properly now. I recommend you try again with it and attach the generated config. If you are overwriting an existing install with the snapshot, make sure you do not get Jar conflicts (different versions of the same Jars under lib).

Thanks again for you attention and support!
I updated the norconex jars to the latest snapshot as advised and now I could generate the corresponding XML:-) Please note, that the external robots.txt still gets fetched.
  Stay tuned for a fix.

Fixed. Let me know how this new snapshot release goes.

Thanks a lot, this snapshot fixed this issue, I also checked it with Wireshark and looks good!
Just a quick question: where can I add additional HTTP request headers, such as 'Accept-Language'?
BTW: when I was looking at the generated XML above, I realized that some of the child-elements of <httpClientFactory>appear after this element, like <connectionTimeout>.

Try to create new issues when you have questions/new issues not related to the original issue you are in. That's much easier to keep track.
Right now there is no configurable feature to add request headers.  The easiest would probably be to extend GenericHttpClientFactory to add this, by overwriting its buildCustomHttpClient method.  That's a pretty easy addition so I will add a new feature request for it.
For the order problem when you save, that should be considered a bug so it should be in its own ticket.  I will create it this time.
Since the original issue is fixed, I am closing.


Redesign five buttons on the entrance page

Steps to reproduce:

Select Ukrainian language
Switch to entrances mode
Pick entrance

Actual result: "OK" button is almost out of the screen

Expected results: All buttons should fit screen width.

Thanks, it really is time to untangle that row of buttons.

Okay, did this in 2.0 the easiest way: just two rows of buttons.


[BUG] SKCanvas owned by SKSurface gets disposed

Description
The SKCanvas object that is originally owned by the SKSurface ends up being disposed at some point in a highly multi-threaded environment. We have seen this happen with both surfaces provided by a SKElement as well as surfaces created off screen. The issue may appear immediately or after a couple mins of running the demo.  The more threads the more likely it is to happen. The debugger shows that the SKSurface still holds a canvas object but looking through source I suspect this is a newly created canvas different from the original one.
Code
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        xmlns:skia ="clr-namespace:SkiaSharp.Views.WPF;assembly=SkiaSharp.Views.WPF"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <skia:SKElement
            Name="Canvas"
            PaintSurface="SKElement_PaintSurface" />
    </Grid>
</Window>

using SkiaSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        const int NUM_THREADS = 16;
        SKImage _image = null;
        object _imageLock = new object();
        Random random = new Random();

        public MainWindow()
        {
            InitializeComponent();

            for (int i = 0; i < NUM_THREADS; i++)
                Task.Run(() =>
                {
                    for (; ; )
                        UpdateImage();
                });
        }

        private void UpdateImage()
        {
            using (var surface = SKSurface.Create(new SKImageInfo((int)ActualWidth, (int)ActualHeight, SKImageInfo.PlatformColorType, SKAlphaType.Premul)))
            {
                if (surface != null)
                {
                    var canvas = surface.Canvas;

                    canvas.Clear(SKColors.Orange);
                    using (var paint = new SKPaint() { TextSize = 136, TextAlign = SKTextAlign.Center })
                        canvas.DrawText($"{random.Next()}", new SKPoint((float)ActualWidth / 2, (float)ActualHeight / 2), paint);
                    canvas.RestoreToCount(-1);

                    var image = surface.Snapshot();

                    lock (_imageLock)
                        _image = image;
                }
            }
            Application.Current?.Dispatcher?.Invoke(() => Canvas?.InvalidateVisual());
        }

        private void SKElement_PaintSurface(object sender, SkiaSharp.Views.Desktop.SKPaintSurfaceEventArgs e)
        {
            lock (_imageLock)
            {
                if (_image != null)
                    e.Surface.Canvas.DrawImage(_image, new SKRect(0, 0, _image.Width, _image.Height), new SKRect(0, 0, e.Info.Width, e.Info.Height));
            }
        }
    }
}

Expected Behavior
The canvas should live until the surface is disposed.
Actual Behavior
The canvas is being disposed mid render sequence.
Basic Information

Version with issue:  1.68.3 , 2.80.0 preview 14
Last known good version:  N/A
IDE:  VS 2019 Pro
Platform Target Frameworks: .Net Standard 2.0 , .Net Framework 4.7.2, WPF, Windows 10 update 1809

Screenshots

Reproduction Link
See source code above. That encompasses the entire program to force this to happen. The more threads the more it becomes visible. May take a few seconds to a few mins of the code running to recreate.

Thanks for reporting this. I think it might be because for some reason I decided it would be better to dispose the managed objects after I told the native side to clean up.
This meant that when the new surface is created in the exact same memory location, it's canvas had the same handle. Then the var canvas = surface.Canvas; retrieved the old managed object, which was immediately disposed.
Effectively, I was a bit dumb...
I'll get a fix up ASAP and then you can let me know if it fixes things and I'll make sure it gets into the 2.80 series before it gets stable.

Built the latest master and tested with our test app. Did not run into any crashes over an extended period of time. Awesome Job. Thank you!

That is good news! Thanks for the test and feedback!


Decrease default resource request and limits in values.yaml

As discussed in #14, the default resource requests and limits currently used are too high. Better values would be the following:
resources:
    limits:
        cpu: 200m
        memory: 96Mi
    requests:
        cpu: 50m
        memory: 64Mi

solved, thanks @Carsten-St !


Add Superposition task 2.4

Part of #1185

Thank you for your review comments @Manvi-Agrawal, have pushed some changes which should address those!


⚠ Bofrost.lu has degraded performance

In 9dc3b58, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1155 ms

Resolved: Bofrost.lu performance has improved in 2950124.


Mounting interfaces produces bad code

Attempting to mount an interface produces an implementation in the shell that extends the interface instead of implementing it.
Also, doing this is most probably a mistake. Consider a warning about it.
Interestingly, I found a test case for this, and there's issue #38. So, this should be fixed. The specific case where I ran into this was when I was using an unnamed mount (i.e. by attribute on Configuration). Investigate.

See test case c.codegen.mountInterface: fixed.


About proactive auto-healing and auto-healing

Hello, I believe the these two features are actually different features but similar.
Pro active auto-healing is enabled by default, but auto-healing must be configured manually.
Please consider to add to the document about the [auto-healing] to prevent user to get confused

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

ID: fd8426b2-dbe5-9a46-4045-55cc26806641
Version Independent ID: 99eef6e6-7978-1008-4d6f-a5ae566a6305
Content: Azure App Service diagnostics overview
Content Source: articles/app-service/overview-diagnostics.md
Service: app-service
GitHub Login: @Jen7714
Microsoft Alias: jennile

@KeiroKamioka0000 Thanks for the feedback! We are currently investigating and will update you shortly.

@KeiroKamioka0000 Thanks again for the feedback! I have assigned the issue to the content author to review further and update the document as appropriate.

@KeiroKamioka0000 and @SnehaAgrawal-MSFT,
Can you verify that this issue has been addressed and close it?

@yunjchoi Thanks, We will now close this out.


why a fork of om

See ref: https://github.com/pivotal-cf/aws-concourse/issues/8
This is just a copy of the issue.

@wjjk940
https://github.com/c0-ops/om (0.8.1) https://github.com/pivotal-cf/om/releases (0.22.0) — I don’t know why the script isn’t using om [options] configure-bosh []

@ryanpei
this is a good point. we should refactor the pipelines to use om configure-bosh now that this is supported in om master.

yup, and it's prioritized in our backlog but we haven't gotten to it yet. thanks for everyone's patience on this!
i'll close this out as a duplicate issue, for now

actually, i should close the other one. my bad.

@ryanpei could you also please make sure to delete your fork when finished 😄

yup, will do!

Removed the beta om usage in https://github.com/pivotal-cf/pcf-pipelines/commit/11923ad. The fork can be deleted whenever.


.NET Core Versioning assumes same version number structure in process and csproj

VSTS Extension you are using
VersionDotNetCoreAssembliesTask
Where are you running it?
VSTS
Version of Extension/Task
1.19
Problem Description
The extension uses the same regular expression to find the existing assembly version in the .csproj as it uses to parse the version number from the "$(VersionNumber)" variable of the task.
Steps to reproduce the problem
Use a $(VersionNumber) task variable that contains a different scheme for the one present in the  field of the .csproj
Solution suggestions
Replace all of the Whatever string with a new DETECTEDBUILDNUMBER string instead.

So as an example are you finding something like:
csproj has <IP_ADDRESS>
$(VersionNumber) has 1.0.0
If so then I'll have to look at how we currently do things with the task but I think I have a few possible solutions I can try to fix this.

Ill submit a pull request, then you can consider my solution or discard it
as you please :-)
On 13 Oct 2017 12:52 pm, "Chris Gardner"<EMAIL_ADDRESS>wrote:

So as an example are you finding something like:
csproj has <IP_ADDRESS>
$(VersionNumber) has 1.0.0
If so then I'll have to look at how we currently do things with the task
but I think I have a few possible solutions I can try to fix this.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/rfennell/vNextBuild/issues/176#issuecomment-336419448,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABUH_p0xOqDAY1o13S4ABxKGpoP7sWcMks5sr0D9gaJpZM4P2uds
.

Merged PR, will push out a new release later today.


linter: fix all bugs in getter-return and promote to correctness

getter-return is rewritten with cfg, but it is buggy
  ⚠ eslint(getter-return): Expected to always return a value in getter.
     ╭─[vscode/src/vs/workbench/services/themes/common/colorThemeData.ts:578:13]
 577 │
 578 │ ╭─▶     get type(): ColorScheme {
 579 │ │           switch (this.baseTheme) {
 580 │ │               case VS_LIGHT_THEME: return ColorScheme.LIGHT;
 581 │ │               case VS_HC_THEME: return ColorScheme.HIGH_CONTRAST_DARK;
 582 │ │               case VS_HC_LIGHT_THEME: return ColorScheme.HIGH_CONTRAST_LIGHT;
 583 │ │               default: return ColorScheme.DARK;
 584 │ │           }
 585 │ ╰─▶     }
 586 │
     ╰────
  help: Return a value from all code paths in getter.

  ⚠ eslint(getter-return): Expected to always return a value in getter.
    ╭─[vscode/src/vs/workbench/browser/window.ts:83:82]
 82 │         const originalClearTimeout = targetWindow.clearTimeout;
 83 │         Object.defineProperty(targetWindow, 'vscodeOriginalClearTimeout', { get: () => originalClearTimeout });
    ·                                                                                ──────────────────────────
 84 │
    ╰────
  help: Return a value from all code paths in getter.

  ⚠ eslint(getter-return): Expected to always return a value in getter.
    ╭─[vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.ts:52:23]
 51 │
 52 │ ╭─▶     get preferredWidth(): number | undefined {
 53 │ │           const activeComposite = this.getActivePaneComposite();
 54 │ │
 55 │ │           if (!activeComposite) {
 56 │ │               return;
 57 │ │           }
 58 │ │
 59 │ │           const width = activeComposite.getOptimalWidth();
 60 │ │           if (typeof width !== 'number') {
 61 │ │               return;
 62 │ │           }
 63 │ │
 64 │ │           return Math.max(width, 300);
 65 │ ╰─▶     }
 66 │
    ╰────
  help: Return a value from all code paths in getter.

cc @camc314 @TzviPM

Hi. Is there anything I can do to help?

Yes, you may try and fix these false positives in https://github.com/oxc-project/oxc/blob/main/crates/oxc_linter/src/rules/eslint/getter_return.rs

Hi. Is there anything I can do to help?

Yes, you may try and fix these false positives in https://github.com/oxc-project/oxc/blob/main/crates/oxc_linter/src/rules/eslint/getter_return.rs

Ok. I'll look into it.

  ⚠ eslint(getter-return): Expected to always return a value in getter.
    ╭─[vscode/src/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarPart.ts:52:23]
 51 │
 52 │ ╭─▶     get preferredWidth(): number | undefined {
 53 │ │           const activeComposite = this.getActivePaneComposite();
 54 │ │
 55 │ │           if (!activeComposite) {
 56 │ │               return;
 57 │ │           }
 58 │ │
 59 │ │           const width = activeComposite.getOptimalWidth();
 60 │ │           if (typeof width !== 'number') {
 61 │ │               return;
 62 │ │           }
 63 │ │
 64 │ │           return Math.max(width, 300);
 65 │ ╰─▶     }
 66 │
    ╰────
  help: Return a value from all code paths in getter.

In this example, the complaint looks justified. In places with return undefined, it is not explicitly returned.
Or is it acceptable for functions declared as:
function fn(): SomeValue | undefined

I turned getter-rule off in https://github.com/oxc-project/oxc/pull/3693 but still see lots of false positives.

@Boshen Are these false positives only happening in the typescript files? It might be a logical error instead of a control flow issue. If I have access to our current false positives to create a unit test for them I can start working on a fix.

I'm just seeing this. I haven't touched this code in a while, but the CFG generally works at the level of statements, rather than expressions, if I recall correctly. Many expression-level nodes are special-cased. I'd confirm the structure of the ast with this example, both for the getter and for the switch and case statements. I'd be happy to take a look later tonight as well.

If you find the time it would be awesome, But be prepared since the code has been changed quite a bit due to recent refactors for Traverse and CFG.


Server updates?

When / how should we update the OS of servers and packages?

The decision is to keep using Linux VMs on the servers of the Faculty of Science. This means, we'll have to switch to a new Linux distribution every 2-3 years. The server maintenance team monitors versions and will flag when it is time to switch.


Add MarkedYAMLException#mark

This request adds MarkedYAMLException#mark.
It is useful for debugging and also enables users of D-YAML to make fine-grained error messages.

Thanks!


Fix onRangestart and onRangeend Events in Cally Library

The onRangestart and onRangeend events in the Cally library do not always function correctly. To avoid ESLint complaints in StencilJS, the following rules need to be added:
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error onRangestart={this.handleCalendarRangestart} onRangeend={this.handleCalendarRangeend}
Please fix these event issues or consider changing the event handling mechanism to improve reliability and performance.

do not always function correctly

in what way?

avoid ESLint complaints

what is it complaining about?

consider changing the event handling mechanism

it uses standard events, there's nothing that can be changed

Hi, the issue is the name of the events onRangeStart / onRangeEnd are not recognised if attached to <calendar-range>. Can you rename them in the types to onRangestart / onRangeend.
Currently we are using exported interfaces to enhance our jsx

Oh it's a typescript issue? You can probably get away with mapping the types yourself:
type MapEventName<T> = T extends `on${infer Rest}`
  ? `on${Capitalize<Lowercase<Rest>>}`
  : T;

type MapEvents<T> = {
  [K in keyof T as MapEventName<K>]: T[K];
};

type MappedRangeProps = MapEvents<CalendarRangeProps>

Closing for now, as I think the above will solve your issues


Make Yoga “GitHub First”

Today, the source of truth for Yoga’s source code is inside of Meta. Yoga is projected out of our monorepo, into GitHub.
Working in a monorepo with product code can have a lot of advantages. Changes are validated against the test coverage of real products, and it’s easy to make API changes which span library and product code. Engineers at Meta, including most on the React Native team, use the tooling built for the monorepo as well.
For its advantages, this structure creates issues in OSS projects that affect both React Native and Yoga. PRs are duplicated into internal “diffs” and we have two sets of code reviews, with a lack of transparency, and an increase in complexity in merging and getting sign off for changes made OSS first. It also means that the “easy” way to develop a change is one that is non-transparent, showing up in OSS once the commit happens.
Yoga has a relatively small, testable, API surface. As such we get a good amount of coverage from the tests, and don’t often have these sort of breaking changes the monorepo setup helps with. The divide instead creates barriers in contribution, and the need for duplication of resources between OSS and external builds.
This issue tracks a goal of moving Yoga to be “GitHub first”, where the source of truth and contribution becomes GitHub, and code is then synced from GitHub to fbsource, instead of the other way around. This will require a good amount of technical changes internally, but also creates changes to the workflow of reviewers (and limits the pool of those able to execute on changes). I think the risks are still likely worth it though.

As I've started to make more interesting changes, I've discovered how valuable it is to test Yoga changes against Meta's frameworks ( e.g. React Native, Litho, ComponentKit) and apps at PR time. E.g. a recent change of mine had a revision which added a clamp somewhere it didn't belong. Yoga's hundreds of unit tests did not catch it, but it caused over a hundred other test failures, both in tests for higher level UI frameworks, and in visual comparison of product surfaces.
That's something I want to continue to leverage, both as a safeguard, but also as a tool of velocity to have greater confidence in defects being caught by automated tooling. This means the source of truth to Yoga would remain in the monorepo, with us being intentional to not let that reduce the ability to contribute to or consume Yoga.


Message audio send but in whatsapp dont play

The audio messages sent are not play in wpp, I couldn't find a way to fix it due to me being terrible at TS,
but it appears that it was sent, with time it will reproduce.., I even tested it with ogg, oga, mp3

Work fine here