Make Docker exception throw to avoid false positive

Docker related tests will falsely pass when Docker is just unavailable in the system, because the exception was caught and never thrown.

If the action fails, why we are ok with that? In that case, your tests will always pass, am Icorrect?

If the action fails, why we are ok with that? In that case, your tests will always pass, am Icorrect?

No

If the action fails, why we are ok with that? In that case, your tests will always pass, am Icorrect?

Yeah we want the action to fail. Currently it will NOT fail when Docker in unavailable in the system, because the exception will be caught in the catch block I removed, and never re-throw again.

If the action fails, why we are ok with that? In that case, your tests will always pass, am Icorrect?

Yeah we want the action to fail. Currently it will NOT fail when Docker in unavailable in the system, because the exception will be caught in the catch block I removed, and never re-throw again.

Ahaha, sorry I thought that you actually added that block. Sorry my bad


(release-1.3) [FLINK-7195] [kafka] Remove partition list querying when restoring state in FlinkKafkaConsumer

This issue is a re-appearance of FLINK-6006. On restore, we should not respect any fetched partitions list from Kafka and perform any filtering of the restored partition states. There are corner cases where, due to Kafka broker downtime, some partitions may be missing in the fetched partition list. Therefore, we should not respect the fetched partitions list on restore time to manipulate the restored state, which may lead to broken state. To be more precise, we actually should not require fetching partitions on restore.
We've stepped on our own foot again and reintroduced this bug in ed68fedbe90db03823d75a020510ad3c344fa73e. This PR adds proper unit tests for this that does not rely on the internal implementations and test only on public abstractions of FlinkKafkaConsumerBase.

For this change, I think we also need to verify how the consumers behave when some restored partition is no longer reachable. (since previously, no longer reachable partitions will be filtered out on restore, but that has a bad side effect of dropping state).

So partitions can be removed, in Kafka?

@aljoscha the issue is that there may be missing partitions when querying partitions from Kafka (e.g., if some brokers are down).

Ah, I thought you meant something else. Because this is pretty much the bug this PR is trying to solve, right? 😅

@tzulitai Could you close this PR since its subsumed by #4357?


[Feature Request]: Relocating and addign Bot button to all webpages

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
The bot button at the bottom left corner is coming onto the main webpage view and it looks a bit odd to be placed there. I noticed that other pages dont have the bot button. I would like to add the bot button to all the webpages and relocate the button to the bottom right corner.

Use Case

Enhances readability of the page.
Improves UI/UX of the website.

Benefits
No response
Priority
High
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

I would like to work on this issue. @mansiruhil13 Can you assign me this issue with Hacktoberfest and GSSOC labels? Thank you!


Add support for changing BASE

My openapi.json schema is being generated from production.
However, for this to work in localhost/testing/staging I would need the BASE to be '':
export const OpenAPI: OpenAPIConfig = {
    BASE: '', => change this!
    CREDENTIALS: 'include',
    ENCODE_PATH: undefined,
    HEADERS: undefined,
    PASSWORD: undefined,
    RESULT: 'body',
    TOKEN: undefined,
    USERNAME: undefined,
    VERSION: 'latest',
    WITH_CREDENTIALS: false,
};

Right now I need to change app code to set this to empty string instead..
Would be awesome if this could be done out of the box.

@dagadbm Try<EMAIL_ADDRESS>with the following
openapi --base foo

wow its working!
incredible! Thank you so much ! i did --base='' and it worked like a charm

you saved me from doing some terrible hacks around reading the file and doing a regex to update the BASE value

@dagadbm Try<EMAIL_ADDRESS>with the following
openapi --base foo

Is this going to be merged into main some time?

@chitalian eh? It's available in https://github.com/hey-api/openapi-ts since v0.27.22

@mrlubos I didnt want to use a mirror version. Thanks for making it, but we needed to set it to an environment variable and not a string anyways...
Thanks.
For anyone else that is looking for a solution: We ended up using this
https://github.com/drwpow/openapi-typescript/tree/main/packages/openapi-fetch

@chitalian I think you were looking to use interceptors if you need to set the base during runtime. That would achieve the same functionality as the fetch client you linked above


Can't download video from FB in 1080

Here is url: https://www.facebook.com/video.php?v=1767461283528622
When i'm trying to download, youtube-dl downloading only 720
Here is output:
youtube-dl https://www.facebook.com/video.php?v=1767461283528622 -F
[facebook]<PHONE_NUMBER>528622: Downloading webpage
[info] Available formats for<PHONE_NUMBER>528622:
format code                      extension  resolution note
progressive_sd_src               mp4        unknown
progressive_sd_src_no_ratelimit  mp4        unknown
progressive_hd_src               mp4        unknown
progressive_hd_src_no_ratelimit  mp4        unknown    (best)
Or i'm typing invalid command? How i can download this video in 1080p?

Guys? Anyone?

This video is gone or not public anymore.

What about this https://www.facebook.com/CWLegendsofTomorrow/videos/1770434619897955/ ?

What about this https://www.facebook.com/CWLegendsofTomorrow/videos/1770434619897955/ ?

In Firefox, it plays a 720p video when "HD" option is checked.

Youtube-dl's user agent problem? In chrome i have 1080p http://imgur.com/a/3EI3a
Any suggestions how i can download 1080p with current yt-dl version?

Got up to 720p too in Chrome:

Superseded by #11073, in which I can get the 1080P version from the provided link.


Ability to set fallback zones

Currently, any middleware in a zone will only be ran if a route within that zone can handle the request. There could be a benefit to setting a "fallback-zone" which will have all of it's middleware run if no zone contains a route that would handle the request.
For example, one could have "force-ssl csrf" as a fallback zone which could run the middlewares to force SSL urls and also enforce CSRF tokens.
This reveals an interesting case, though:
If a request starts to be handled within one zone, but then finishes outside of the zone, would the fallback zone be expected?
My thoughts are that if something should always be ran, it should be added with app.use and not to a zone. This is one reason I have chosen the naming "fallback zone" instead of "default zone". Saying "default" somewhat implies that the zone is always added to every request.
One could make the argument that a fallback zone does somewhat contradict this thought, as it adds middleware to the request. The difference though is that the fallback only adds the middleware if some other zone was not applied. Thus, an "hmac" zone for an API can work without CSRF tokens while any route not explicitly inside the "csrf" zone will still receive the benefits.
Another argument could be "the user should just explicitly put those routes they want protected into the CSRF zone." That is the philosophy of the existing implementation. The benefits of changing the philosophy could include

easier transition to using zones as existing routes can continue working until everything has been properly zoned
other libraries which add routes do not need to understand "zones", yet still have a zone, or set of zones, applied to those routes.

Added in release 0.2.0


Document create context for after import issue

If you do an import of a schema using Logger you still need to re-create its context: https://github.com/OraOpenSource/Logger/blob/master/source/contexts/logger_context.sql Document this somewhere.
Also look at putting exception handling which will provide developers to allow them to resolve the issue right away and provide link to the updated documentation and/or this issue.

Decided to "self document" the code. When a missing context occurs ORA-01031: insufficient privileges will be raised. Catch this explicitly and include how to create the context in the error message. Avoids developers having to read documentation to find this error.


Clarify font licensing

We're currently providing some TTF files, but I can't find their license (it'd be unusual to find that the fonts are licensed by GPL, too). Some of them looks like Computer Modern (which is distributed under something marked as "Knuth license"). We need to find the source and properly attribute these files.

See also: https://github.com/tonymanou/AndroidLaTeXMath/blob/master/LICENSE#L50-L63

To be honest, I can't remember whether they came with JMathTex (I guess you've already checked that?) or I downloaded them off some free (Creative Commons?) font website. But yes, we should definitely confirm this.

I wonder even if we can find better versions of the fonts, and who knows, maybe the font spacing/gapping issues will disappear?! Of course, I'm well aware it's probably a bug in the code. :)

Yep, I've checked that, and we're using the same files that came from the JMathTeX.
And yes, probably the issue is partially with the fonts themselves. Try to save the formula in question to SVG and look at it with maximal zoom. You'll notice some weirdness in the places where there're visible gaps in #52.
I'll check that. The first idea I have is to compare our fonts with the ones from LaTeXMath — probably the guys there have already solved the issue.


(BACKEND) Black History Month Determinants

To Do

[x] voter_participation_pres_per_100k: is null for 18-24, 45-54, 55-64 but shouldn't be. TWO ISSUES; original csv files has an extra space after 18-24 , which needs to be dealt with, and also 45-54, 55-64 should be combined to a single bucket 45-64
[ ] #1436
[ ] shuold we consider merging in other reports for more complete data? For example: preventable_hospitalizations is also present in the senior report (https://www.americashealthrankings.org/explore/senior/measure/prevhosp_Senior/state/ALL) and has by race and by sex for the 65-74 age group. The annual report we are using doesn't give any age breakdowns. There are several other determinants available in the senior report that might bolster gaps in the annual report, if we are able to combine them somehow

Description
Chronic Disease

Asthma: Percentage of adults who reported being told by a health professional that they currently have asthma
Cardiovascular disease: Percentage of adults who reported being told by a health professional that they had angina or coronary heart disease; a heart attack or myocardial infarction; or a stroke
Chronic Kidney Disease: Percentage of adults who reported being told by a health professional that they have kidney disease not including kidney stones, bladder infection or incontinence

Social / Political Determinant

Avoided Care due to Costs: Percentage of adults who reported a time in the past 12 months when they needed to see a doctor but could not because of cost
Preventable Hospitalizations: Discharges following hospitalization for diabetes with short- or long-term complications, uncontrolled diabetes without complications, diabetes with lower-extremity amputation, chronic obstructive pulmonary disease, angina without a procedure, asthma, hypertension, heart failure, dehydration, bacterial pneumonia or urinary tract infection per 100,000 Medicare beneficiaries ages 18 and older continuously enrolled in Medicare fee-for-service Part A
Voter Participation (Presidential): Percentage of U.S. citizens ages 18 and older who voted in the last presidential national election

Motivation and Context
closes #1423
closes #1415
How has this been tested?

Screenshots (if appropriate):
Types of changes

Breaking change (fix or feature that would cause existing functionality to not work as expected)

There are some mismatches with racial categories:
Asthma, Avoided Care due to Cost, Cardiovascular Diseases, Chronic Kidney Disease, Voter Participation (Presidential)

American Indian/Alaska Native
Asian
Black
Hawaiian/Pacific Islander
Hispanic
Multiracial
Other Race
White

Preventable Hospitalizations

American Indian/Alaska Native
Asian/Pacific Islander
Black
Hispanic
Other Race
White


Сreate Event Request Table 39 "Purchase Line"  OnBeforeHandleDedicatedBin

Hello, could you please create OnBeforeHandleDedicatedBin event in the GetDefaultBin procedure in the table 39 "Purchase Line"?
[IntegrationEvent(false, false)]
local procedure OnBeforeHandleDedicatedBin (var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record      "Purchase Line")
begin
end;

local procedure GetDefaultBin()
var
WMSManagement: Codeunit "WMS Management";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeGetDefaultBin(Rec, IsHandled, xRec);
if IsHandled then
exit;
    if (Type <> Type::Item) or IsNonInventoriableItem() then
        exit;

    "Bin Code" := '';
    if "Drop Shipment" then
        exit;

    if ("Location Code" <> '') and ("No." <> '') then begin
        GetLocation("Location Code");
        if Location."Bin Mandatory" and not Location."Directed Put-away and Pick" then begin
            WMSManagement.GetDefaultBin("No.", "Variant Code", "Location Code", "Bin Code");
            OnBeforeHandleDedicatedBin(Rec, xRec);   /// NEW EVENT
            HandleDedicatedBin(false);
        end;
    end;
end;

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


Auto-build broke down

For some reason, the jkan auto-update build is not working anymore.
https://github.com/GFDRR/rdl-jkan/actions/runs/12465841823
The current runner (ubuntu-24.04-x64) was detected as self-hosted because the platform does not match a GitHub-hosted runner image (or that image is deprecated and no longer supported).
In such a case, you should install Ruby in the $RUNNER_TOOL_CACHE yourself, for example using https://github.com/rbenv/ruby-build
You can take inspiration from this workflow for more details: https://github.com/ruby/ruby-builder/blob/master/.github/workflows/build.yml
$ ruby-build 2.7.6 /opt/hostedtoolcache/Ruby/2.7.6/x64
Once that completes successfully, mark it as complete with:
$ touch /opt/hostedtoolcache/Ruby/2.7.6/x64.complete
It is your responsibility to ensure installing Ruby like that is not done in parallel.

Fixed by specifying ubuntu and ruby versions in github-pages.yml file.


Can operationBased model generate graphql interface type as sealed interface?

Question
I have tried responseBased model which currently generates code as sealed interface. But I have a problem that the generated code was so large that my project never finish compiling. Right now I can use only operationBased model.
With operationBased model, the query like this one:
interface ThingWithID {
    id: ID!
}

type Human implements ThingWithID {
    id: ID!
    name: String!
}

type Droid implements ThingWithID {
    id: ID!
    model_name: String!
}

type Query {
    something: ThingWithID
}

will generate the following code:
public data class Data(
    public val something: Something?,
  ) : Query.Data

  public data class Something(
    public val __typename: String,
    public val id: String,
    /**
     * Synthetic field for inline fragment on Human
     */
    public val onHuman: OnHuman?,
    /**
     * Synthetic field for inline fragment on Droid
     */
    public val onDroid: OnDroid?,
  )

  public data class OnHuman(
    public val name: String,
  )

  public data class OnDroid(
    public val model_name: String,
  )
)

It is very difficult to handle all possible cases on multiple nullable fields.
If this code was generated with responseBased model, it will be a sealed interface. All possible cases can be handled easily with when statement.
Is it possible to generate code as a sealed interface like below? And will it against the concept of "operationBased".
sealed interface Something {
    val __typename: String
    val id: String

    data class OnHuman(
        override val __typename: String,
        override val id: String,
        val name: String,
   ): Something

    data class OnDroid(
        override val __typename: String,
        override val id: String,
        val model_name: String,
    ): Something

    data class OnOtherwise(
        override val __typename: String,
        override val id: String
    ): Something
}

Unfortunately, there's no silver bullet there. It's either responseBased and potentially long compilation times or operationBased and less type information.
If we really wanted to, we could look into changing the codegen mode per-query/per-field but that will add significant complexity to the codebase (which is already quite complex) so I'm not sure there's a lot to be gained from that.
You can read this blog post for more details. If you want to share your schema and queries, I can take a looks at potential ways to reorganize things but to be honest, I'm not sure that'd be enough. You might be able to save a factor 2 or 3 but that's nothing compared to something that grows exponentially.

@martinbonnin Thank for your quick response. I just finish reading your blog post. My project has many nested fragment and uses @if directive in many place. I think it would be very difficult to get responseBased model working.
Just want to ask for your opinion. Will it make sense if operationBased model generate code based on interesting response types as described below. Also will it be possible to implement...
Let me explain with this example:
# schema
interface ThingWithID {
    id: ID!
}
interface ThingWithName {
    name: String!
}

type Human implements ThingWithID & ThingWithName {
    id: ID!
    name: String!
}

type Droid implements ThingWithID {
    id: ID!
    model_name: String!
}

type Query {
    something: ThingWithID
}

I give example queries below to explain how to determine interesting types:
# query1: No interesting type (because no '... on type' in response)
query Query1 {
    something {
        id
    }
}
# query2: No interesting type (because ThingWithName is an interface)
query Query2 {
    something {
        id
        ... on ThingWithName {
            name
        }
    }
}
# query3: Interesting type = Human
query Query3 {
    something {
        id
        ... on Human {
            name
        }
        ... on ThingWithName {
            name
        }
    }
}
# query4: Interesting type = Human and Droid
query Query4 {
    something {
        id
        ... on Human {
            name
        }
        ... on ThingWithName {
            name
        }
        ... on Droid {
            model_name
        }
    }
}

For the generating based on interesting type, I try to make it backward compatible with the old operationBased source code.
Query1
Change: something is generated as a sealed interface instead, but all the field is still the same.
// Query1.Data
public data class Data(
    public val something: ISomething?, // something is a sealed interface instead of class
  ) : Query.Data {

    public data class Something(
      public val id: String,
    ): ISomething

    // Interface
    public sealed interface ISomething {
      public val id: String
    }
  }

Query2
Change: Similar to Query1 code because there is still no interesting type.
  // Query2.Data
  public data class Data(
    public val something: ISomething?, // something is a sealed interface instead of class
  ) : Query.Data

  public data class Something(
    public val __typename: String,
    public val id: String,
    /**
     * Synthetic field for inline fragment on ThingWithName
     */
    public val onThingWithName: OnThingWithName?,
  ): ISomething

  public data class OnThingWithName(
    public val name: String,
  )

  // Interface
  public sealed interface ISomething {
    public val id: String
    public val onThingWithName: OnThingWithName?
  }

Query3
Change: Similar to Query1 with additional type for query's interesting type ... on Human { } .
  // Query3.Data
  public data class Data(
    public val something: ISomething?,
  ) : Query.Data

  public data class Something(
    public val __typename: String,
    public override val id: String,
    public override val onHuman: OnHuman?,
    public override val onThingWithName: OnThingWithName?,
  ): ISomething

  public data class OnHuman(
    public val name: String,
  )

  public data class OnThingWithName(
    public val name: String,
  )

  // Interface
  public sealed interface ISomething {
    public val id: String
    public val onHuman: OnHuman?
    public val onThingWithName: OnThingWithName?
  }
  // HumanSomething
  public data class HumanSomething(
    public val __typename: String,
    public override val id: String,
    public override val onHuman: OnHuman, // OnHuman of HumanSomething is non-null
    public override val onThingWithName: OnThingWithName?,
  ): ISomething

Benefit:

Now it is possible to use when statement to handle all interesting type easily

  fun handleSomethingResult(something: ISomething) {
    when (something) {
      is HumanSomething ->
        // no need null checking for onHuman here
        registerHuman(name = something.onHuman.name)
      is Something -> registerSomething(id = something.id)
    }
  }

When adding more ... on type in the query, it is easy to find all affected place by looking at compiler warning.

Thanks for the nice and detailed description 💙 . A few comments:

In query 1 and 2, since the interface is implemented only once, I think it makes sense to keep a data class there?
In query 3, the problem we're going to face is "how to define an interesting type". Looks to me like it's about different Json shapes (as we compute them here). If there are more than one possible shape, generate a sealed interface that has different implementations that overrides the nullability of fragments that we know for sure will be non-null. I think that'd work 👍 . What I'm trying to figure out is how much this is worth the added work and complexity.

If I understand correctly (let me know if I'm mistaken), we're looking at replacing code like this:
    // current way of doing things
    when {
      data.something?.onHuman != null -> {
        data.something.onHuman.name
      }
      data.something?.onDroid != null -> {
        data.something.onDroid.model_name
      }
    }

with code like this:
    // proposed way of doing things
    when(data.something) {
      is HumanSomething -> {
        data.something.onHuman.name
      }
      is DroidSomething -> {
        data.something.onDroid.model_name
      }
    }

Is this what you're looking for?

When adding more ... on type in the query, it is easy to find all affected place by looking at compiler warning.

I see, you could have the Kotlin compiler do the exhaustive check and make sure you handle all cases, right. That's definitely an interesting use case 👍
Overall, I think that'd be doable, not super easy but doable if you find that it's making the code easier to consume. As always, using @skip or @include on fragments would increase the number of possible shapes. Any chance you can do without? (@skip and @include on individual fields are ok)

@martinbonnin I'm still working on this issue. Let me update a bit before this issue getting too old.
I opened this issue because I want to handle graphql interface easily. I found ResponseBased model generates code as sealed interface, GREAT. OperationBased model generates multiple nullable fields which is hard to maintain. I prefer to use responseBased model, but the generated code was too big and never finish compiling.
I reviewed the problem of responseBased code with my project. I found the real cause is that my project reuses fragments a lot, and has fragment nested inside another fragment in many place.
I picked one fragment PhotoFragment that being used in many place. This fragment is being used by 57 other fragments and 10 operations. The generated interface PhotoFragment is found being supertype of more than 5120 places. Then I realized that fragments play important role in reducing duplicate class in my project. If fragment is generated as interface, it will not reducing duplicate class anymore.
Back to my proposal: to modify operationBased model to generate sealed interface for graphql interface. This also apply to fragment which on interface type. The code will be like shown below:
fragment HumanOrDroidFragment on ThingWithID {
    ... on Human {
        id
        name
    }
    ... on Droid {
        id
        build_name
        model_name
    }
}

public sealed interface IHumanOrDroidFragment {
  public val onHuman: OnHuman?
  public val onDroid: OnDroid?

  public data class OnHuman(
    public val id: String,
    public val name: String,
  )
  public data class OnDroid(
    public val id: String,
    public val build_name: String,
    public val model_name: String,
  )
}

public data class HumanHumanOrDroidFragment(
  public val __typename: String,

  public override val onHuman: IHumanOrDroidFragment.OnHuman,
  public override val onDroid: IHumanOrDroidFragment.OnDroid?,

) : Fragment.Data, IHumanOrDroidFragment

public data class DroidHumanOrDroidFragment(
  public val __typename: String,

  public override val onHuman: IHumanOrDroidFragment.OnHuman?,
  public override val onDroid: IHumanOrDroidFragment.OnDroid,

) : Fragment.Data, IHumanOrDroidFragment

public data class HumanOrDroidFragment(
  public val __typename: String,

  public override val onHuman: IHumanOrDroidFragment.OnHuman?,
  public override val onDroid: IHumanOrDroidFragment.OnDroid?,
) : Fragment.Data, IHumanOrDroidFragment

Answer to your previous questions

In query 1 and 2, since the interface is implemented only once, I think it makes sense to keep a data class there?

No problem.

In query 3, the problem we're going to face is "how to define an interesting type". Looks to me like it's about different Json shapes (as we compute them here). If there are more than one possible shape, generate a sealed interface that has different implementations that overrides the nullability of fragments that we know for sure will be non-null. I think that'd work 👍 . What I'm trying to figure out is how much this is worth the added work and complexity.

I feel it will be similar problem as possible json shapes. I want to spend more time to study what we already have there, and see if I can create a POC for my proposal.

If I understand correctly (let me know if I'm mistaken), we're looking at replacing code like this:

Correct.

Thanks for the update! There's one question left you didn't answer (there were a lot of questions :)): can you do without @skip and @include directives on fragments? That would simplify the shapes calculation.

Yes, I removed all @skip and @include on fragments. There are still ~40 places of skip/include on query in my project but that shouldn't affect number of possible shape, right?

that shouldn't affect number of possible shape, right?

Indeed, @skip and @include on individual fields (not fragments) are ok 👍

@martinbonnin I rewrite code to use shapes() here.. Now the output code is changed. It now generates sealed interface with subclass for each possible shape (instead of each subclass for each interesting types). I still have to test a bit more before it can be ready for PR.
The current code now can generate complete kotlin code, but generating java is not working yet. Do you think we need to add this feature to java codegen?
I will summarize of how I implemented this feature here:

In OperationBasedModelGroupBuilder.kt fun buildField, I calculate all possible shapes, filter out shapes that won't happened, and attached that information inside OperationField.

In OperationField.toModelGroup(), if there are more than one possible shape,  the result IrModelGroup will be generated with subclass for each possible shape.

In OperationFieldSet.toShapedTypeModel(shape: Shape, rawTypeName: String): IrModel, this is where I generate subclass for each shape. I make nullable field become non-null field by evaluating whether field condition always true after considering shape's possible type.

There is a bit ugly code here. I add prefix to "I" to model name when there are more than one possible shapes. Still think about the way to make it better.
Please review if there is some point you think there is a better alternative solution.

@martinbonnin Let discuss about the expectation of this operationBased2 codegen here. Please check if you agree with this expectation below. Then I will revise my code as discuss here.
Expectation
This operationBased2 codegen is mostly the same as operationBased codegen. The only difference is that it generates polymorphic model for the field that

Contains inline fragment and
Inline fragment type is not always assignable for that field

Polymorphic model consists of:

Abstraction Model: generated as sealed interface
Possible TypeSet Model: generated as data class extending Abstraction Model
Fallback Model: generate as data class extending Abstraction Model

// Abstraction Model
sealed interface IAnimal { val onCat: Animal.OnCat? }
// TypeSet Model: Cat
data class CatAnimal(val onCat: Animal.OnCat): IAnimal
// Fallback model
data class Animal(val onCat: Animal.OnCat?): IAnimal

In TypeSet Model, each field will be a non-null field if its type condition always satisfied in that TypeSet. For example, CatAnimal.onCat is non-null because it is surely a Cat.
Examples

If there is no inline fragment, the output code shall be the same as operationBased model.

No inline fragment: Example 1
query TestOperation {
  animal {
    species
  }
}

public data class Data(public val animal: Animal?)
data class Animal(val species: String)

No inline fragment: Example 2
query TestOperation {
  animal {
    ... LionFragment
    ... CatFragment
  }
}
fragment LionFragment on Cat {
  species
}
fragment CatFragment on Cat {
  species
}

public data class Data(public val animal: Animal?)
data class Animal(
  val lionFragment: LionFragment?,
  val catFragment: CatFragment?,
)

If there is an inline fragment and inline fragment type is always assignable for field type, the output code shall be the same as operationBased model.

Inline fragment is always assignable: Example 1
query TestOperation {
  animal {
    # Field type = Inline fragment type
    ... on Animal {
      species
    }
  }
}

public data class Data(public val animal: Animal?)
data class Animal(val onAnimal: OnAnimal)

Inline fragment is always assignable: Example 2
query TestOperation {
  cat {
    # Field type Cat is subtype of inline fragment
    ... on Animal {
      species
    }
  }
}

public data class Data(public val cat: Cat?)
data class Cat(val onAnimal: OnAnimal)

If there is an inline fragment and inline fragment type is not always assignable for field type, the output code shall be polymorphic model.

Inline fragment is not always assignable: Example 1
query TestOperation {
  animal {
    ... on Cat {
      species
    }
  }
}

public data class Data(public val animal: IAnimal?)

sealed interface IAnimal { val onCat: Animal.OnCat? }
data class CatAnimal(val onCat: Animal.OnCat): IAnimal
data class Animal(val onCat: Animal.OnCat?): IAnimal

Note For compatibility, field's type in Abstraction Model will be declared in Fallback Model. This will minimize change needed when migrate from operationBased to operationBased2
Inline fragment is not always assignable: Example 2
Possible TypeSet Model are depend on the possible concrete types.
query TestOperation {
  animal {
    species
    ... on WarmBlooded {
      temperature
    }
    ... on Pet {
      name
    }
  }
}

public data class Data(public val animal: IAnimal?)

// Abstraction Model
sealed interface IAnimal { val onAnimal: Animal.IOnAnimal }
// 3 TypeSet Models
data class WarmBloodedAnimal(val onAnimal: Animal.IOnAnimal): IAnimal
data class PetAnimal(val onAnimal: Animal.IOnAnimal): IAnimal
data class WarmBloodedPetAnimal(val onAnimal: Animal.IOnAnimal): IAnimal
// Fallback Model
data class Animal(val onAnimal: IOnAnimal): IAnimal

There are 3 TypeSet Models from possible concrete types:
type Lion implements Animal & WarmBlooded
type Cat implements Animal & WarmBlooded & Pet
type Turtle implements Animal & Pet

- [Animal, WarmBlooded] => Lion (concrete)
- [Animal, Pet] => Turtle (concrete)
- [Animal, Pet, WarmBlooded] => Cat (concrete)

// To access `species` in a polymorphic way and account for new types being added
- [Animal] => (fallback model)

Inline fragment is not always assignable: Example 3
Nested inline fragment is considered separately inside its parent inline fragment
query TestOperation {
  animal {
    ... on Animal {
      species
      # Nested WarmBlooded
      ... on WarmBlooded {
        temperature
      }
      # Nested Pet
      ... on Pet {
        name
      }
    }
  }
}

// animal is not generated as polymorphic model because inline fragment ... on Animal is always assignable
public data class Data(public val animal: Animal?)
data class Animal(val onAnimal: IOnAnimal)

// onAnimal field has two nested inline fragments -> generated as Polymorphic model
public sealed interface IOnAnimal {
  val species: String,
  val onWarmBlooded: OnAnimal.OnWarmBlooded?,
   val onPet: OnAnimal.OnPet?
}
data class WarmBloodedOnAnimal(
  val species: String,
  val onWarmBlooded: OnAnimal.OnWarmBlooded,
  val onPet: OnAnimal.OnPet?
): IOnAnimal
data class PetOnAnimal(
  val species: String,
  val onWarmBlooded: OnAnimal.OnWarmBlooded?,
  val onPet: OnAnimal.OnPet,
): IOnAnimal
data class WarmBloodedPetOnAnimal(
  val species: String,
  val onWarmBlooded: OnAnimal.OnWarmBlooded,
  val onPet: OnAnimal.OnPet,
): IOnAnimal
data class OnAnimal(
  val species: String,
  val onWarmBlooded: OnWarmBlooded?,
  val onPet: OnPet?,
): IOnAnimal

Inline fragment is not always assignable: Example 4
Inline fragment in fragment spread is considered separately inside its parent fragment
query TestOperation {
  animal {
    ... AnimalFragment
  }
}
fragment AnimalFragment on Animal {
  species
  ... on WarmBlooded {
    temperature
  }
  ... on Pet {
    name
  }
}

// animal is not generated as polymorphic model because there is no inline fragment
data class Animal(val animalFragment: IAnimalFragment)

// AnimalFragment is generated as polymorphic model because it contains inline fragments
sealed interface IAnimalFragment {
  val species: String
  val onWarmBlooded: AnimalFragment.OnWarmBlooded?
  val onPet: AnimalFragment.OnPet?
}
data class WarmBloodedAnimalFragment(
  val species: String,
  val onWarmBlooded: AnimalFragment.OnWarmBlooded,
  val onPet: AnimalFragment.OnPet?
): IAnimalFragment
data class PetAnimalFragment(
  val species: String,
  val onWarmBlooded: AnimalFragment.OnWarmBlooded?,
  val onPet: AnimalFragment.OnPet
): IAnimalFragment
data class WarmBloodedPetAnimalFragment(
  val species: String,
  val onWarmBlooded: AnimalFragment.OnWarmBlooded,
  val onPet: AnimalFragment.OnPet
): IAnimalFragment
data class AnimalFragment(
  val species: String,
  val onWarmBlooded: AnimalFragment.OnWarmBlooded?,
  val onPet: AnimalFragment.OnPet?
): IAnimalFragment

@chalermpong thank you so much for writing this! I put the samples in a separate doc there: https://github.com/chalermpong/apollo-kotlin/blob/operationBased-possible-shape/design-docs/operationBased2.md
I have a few comments, I'll make them inline in the pull request so that there's more context attached to the comments.


Allow wildcard url in domain list

Hello,
Just a small proposal to be able to use wildcard URL instead of having to specify the entire hostname in the domain list.
One question: what do you think about using a testing framework ? :p

Thanks for your work on this. Released in https://github.com/joeldenning/import-map-overrides/releases/tag/v1.17.0


Implement file_operator content

Fixes #288
Replaces #289 with tests for all operating systems.
https://github.com/sahansk2/git-gud/actions
CircleCI build error because there's no CircleCI config.yml

@benthayer , this is ready for review.

@benthayer , the matrix strategy is properly set up, and I added further modifications so that we can see all occurring errors across all OS's, even if the other OS's failed, and even if the previous (relevant) steps failed, since we don't necessarily want to have multiple commits just to fix flake8, which is the test that's run last.
See here: https://github.com/sahansk2/git-gud/runs/1024141817?check_suite_focus=true
I cancelled the workflow, but notice how even though pytest for ubuntu-latest failed, flake8 was run anyway.
So, this PR is ready for review again.

@sahansk2 Can you update this so that flake8 only runs once? For now, it's fine that the windows test uses bash, but we should fix that at some point. Also can you put all of the testing commits on another branch? I'd like to merge into master with that first, then get to reviewing this PR. Once we merge that branch into master, then it will be appropriate to merge master into this branch and do a review

Caching of the commit content doesn't actually seem to be necessary. I've added a commit to show this is the case.

@benthayer This is ready for review. Could you comment on what needs to be done in order for this to be merged?

This looks good, I just added subdirectory tests since they were unused.

Great, will check it out within a day or two
On Sun, Sep 6, 2020, 2:36 PM Sahan Kumarasinghe<EMAIL_ADDRESS>wrote:

This looks good, I just added subdirectory tests since they were unused.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/benthayer/git-gud/pull/301#issuecomment-687880325,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABORCY5RZ4LURST3F3VXA2LSEPQC7ANCNFSM4QJ7B23A
.


Works poorly on Windows 10

This is partly to supplement this post and also to respond to the official documentation.
Windows 10 support is very spotty to non-existent. After weeks of following the instructions in the previous links and getting rewarded with "This security key can't be used. Please try a different one," in Windows 10, it (very briefly) started working today when I tried using it in Edge (after failing with Firefox and Chrome). If I unplugged it, plugged it back in, did the right tap sequence and Hermes smiled upon me, Windows would recognise the key. However, I couldn't get it working consistently enough to actually try doing any useful work with it (like logging in to GitHub with it).
The Internet consensus is that Windows support should work, as there are no warnings to say that it's not. Given that the key briefly worked with Edge open, I'm guessing that there is some protocol issue where the communication between the Nitrokey and Windows is out of sync and Windows gives up. However, I don't know where in Event Viewer to start looking for the source of the problem, so I would be grateful for guidance to help troubleshoot.
My system is dual boot and, notwithstanding KDE's limited support for U2F, the exact same hardware works on Linux, so replacing my computer or Nitrokey is currently unnecessary.

Hi! Thank you for the report.
Indeed on Windows one has to touch the button within the very first second the request comes from the browser, which is not handy to say the least.
We are currently testing v1.0.4 version to address that. Release is scheduled within the next 2 weeks.

Just for completeness / future reference: I have tested a release candidate build of the v1.0.4 today under Windows and I did not see any UX issues.

https://github.com/Nitrokey/nitrokey-3-firmware/releases/tag/v1.0.4-rc.2

Curious. Maybe there was a USB reset thingy or something because I definitely got it working (again, one or two times) tapping the key well after 1 second. I assume that this issue/fix also extends to the Windows Hello system, since they all (I'm told) use the same library.

Hard to tell. The v1.0.3 problems under Windows are connected with on-device memory usage.
The v1.0.4-rc3 beta firmware, signed with the production keys, should be available this week on the proper release page. It can be used with pynitrokey to update by directly specifying the beta version to use.

@bordenc The v1.0.4-rc.3 is now available and you can test it if you want too.  See this document for more information.

Bravo, @robin-nitrokey & team. New firmware is superb. Seems to work perfectly in Windows - and didn't break any of my FIDO2 logins (like on GitHub, for example). I'll let you know if I find anything.


remove React defaultProps and move them to ES6 static defaultProps. u…

…pdated Changelog
TODO

[ ] Documentation
[ ] Tests
[ ] Experimental evidence (required for Masonry changes)
[ ] Accessibility checkup

On Changelog, I referred my PR with #568 which was the next number on the list. I see now that's actually #569.


[helm] bump helm version to 2.16.12

This PR bump Helm supported version to 2.16.12 to address security and bug
fixes from 2.16.11 (see release note) and 2.16.12 (see release note).

backported to 6.8, 7.9 and 7.x branches


[FEATURE] manifestCreator: Copy 'sap.cloud' values from .library to manifest.json

Fixes https://github.com/SAP/ui5-tooling/issues/491

Coverage: 94.593% (-0.03%) from 94.623% when pulling 48aef394673502472a2b7c805c12974bef2d912b on manifest-creator-sap.cloud into 4a4037b8dfade0b26e3efe7512c433b39778a7b6 on main.


UX - Public Data is Confusing

As an end user, it's not clear to me what I'm seeing on the public data screen. It says "The light purple circles represent the public dataset". What does that mean?

Does a purple circle represent someone with COVID-19 who has been running the app has been in the circled region?
How does an end user use this information to help contain the virus? It's not obvious what steps I should take if I find myself within one of those circles.
The "For more information on the dataset for this  map" button does not lead to anything that is in any way user friendly enough for the general public to understand. I am a software engineer I still don't understand what I am supposed to make of the site this button linked to.

This will be addressed after the v1.0 release.  This functionality is being removed from the product for now because of the confusion it causes.  We will revisit this functionality in the following release.
Leaving this open for now as it is something to address.

@kenpugsley
Why not just describe the intended function and behavior right now? (What do you want to wait for exactly?)  And as an end user, not showing anything, is certainly not going to make this app more attractive. At minimum, at least point the developers to the right documentation for this, if there is any.

No longer part of Safe Paths.


Dumb tests rule

@volodya-lombrozo hi, today I found this test in the project I am working in, I have an idea to have jtcop detect tests that are not acceptable for jtcop.

We can discuss a solution here, what do you think?

@l3r8yJ as I see it, this name follows the next pattern rule:
void <given>_<condition>*_<result>(){
}

And it might be "ok" for some projects. What exactly do you want to change in this name? Do you want to forbid using underscores? Or in opposite, do you want to allow such a pattern?

@volodya-lombrozo I'm not talking about the name with underscores, but about the bad assertTrue(true) statement, which is written to falsely increase the coverage of the code

@l3r8yJ I see your point here. Thanks for the explanation :) Actually, it is awesome idea.
We have many unit testing anti-patterns:

https://stackoverflow.com/questions/333682/unit-testing-anti-patterns-catalogue
https://www.yegor256.com/2018/12/11/unit-testing-anti-patterns.html

What you are talking about is a "Line hitter":

At first glance, the tests cover everything and code coverage tools confirm it with 100%, but in reality the tests merely hit the code, without doing any output analysis.

And you are right, we can help to catch such "line hitters". Maybe you have more examples?

@volodya-lombrozo I'll try to find more examples from the real projects

@volodya-lombrozo @l3r8yJ it will be great if such a rule appears

@l3r8yJ the puzzle #254 is still not solved.

@l3r8yJ the only puzzle #254 is solved here.


product ID

for example:

bootloader product ID - mikroe converter board
product ID - mikroE converter + air quality 4

Tasks

[x] There is one product ID for each h/w revision. The JSON should keep a list of product IDs.
[x] The bootloader needs to support different bootloader and non-uploader
[x] work out the CSV thing
[x] update the specification - rename firmware ID to product ID

cc @jamesadevine

Also, we need a story for Brains...

@jamesadevine test commisioner. qrcodes should redirect once they are defined in the device catalog

awesome! and what's the story with Brains? Do they get a product id? If so, how?

Yes they should, and the device spec should mention that they are brains. We should discuss brains further

How would we persist the firmware ID on a brain? Bootloader? Eg an Arcade program would be the same for meowbit and brainpad, so the info would need to come from bootloader I guess? What about micro:bit?

As per your point, that would require someone to update the bootloader of their arcade device. IMO it might be more prudent, for the time being at least, to have a product id for <PROCESSOR>_GENERIC_ARCADE and allocate a CFG_ID for jacdac product id in the bootloader. From now on, boards that want to support jacdac can add this CFG to their bootloader. Devices with an updated bootloader will get the specific variant stored in the bootloader, while every other board will have the GENERIC_ARCADE product id.
There will likely be a long tail of microcontroller dev boards that will use the edge connector breakout to add Jacdac. We therefore can't rely on bootloaders for everyone of these dev boards...
For micro:bit, do we need to worry about storing the product id in the bootloader? Jacdac only works for binaries that are compiled with the pxt-jacdac extension. Could we have a macro that defines the product id there?
Because the product id is not stored consistently, it seems like we might need a product id list. That way third party integrators (for say cpy/upy) could implement a product id register in their respective runtime environments.


go: 1.17.9 -> 1.17.10, go: 1.18.1 -> 1.18.2

go: 1.17.9 -> 1.17.10
go: 1.18.1 -> 1.18.2

Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

1.18 can go to master, please move it to a separate PR.

Commit titles should be go_1_17 go_1_18 instead of just go for ofborg to built them automatically.


issues/182: replace custom logger with slog

Fixes: https://github.com/komuw/ong/issues/182

goos: linux
goarch: amd64
pkg: github.com/komuw/ong/newLog
cpu: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz

BenchmarkBestCase/Zap-8                   13_518 ns/op          349 B/op        1 allocs/op
BenchmarkBestCase/sirupsen/logrus-8       21_844 ns/op          2_340 B/op      27 allocs/op
BenchmarkBestCase/ong/oldLog-8            795.5 ns/op           56 B/op         3 allocs/op
BenchmarkBestCase/ong/newLog-8            5_717 ns/op           768 B/op        5 allocs/op
BenchmarkBestCase/no_logger-8             4.203 ns/op           0 B/op          0 allocs/op

BenchmarkAverageCase/Zap-8                12_416 ns/op          352 B/op        1 allocs/op
BenchmarkAverageCase/sirupsen/logrus-8    20_114 ns/op          2_105 B/op      26 allocs/op
BenchmarkAverageCase/ong/oldLog-8         45_824 ns/op          4_488 B/op      42 allocs/op
BenchmarkAverageCase/ong/newLog-8         25_710 ns/op          1_532 B/op      8 allocs/op
BenchmarkAverageCase/no_logger-8          4.320 ns/op           0 B/op          0 allocs/op

BenchmarkWorstCase/Zap-8                  17_853 ns/op          700 B/op        2 allocs/op
BenchmarkWorstCase/sirupsen/logrus-8      38_179 ns/op          4_223 B/op      53 allocs/op
BenchmarkWorstCase/ong/oldLog-8           98_277 ns/op          9_265 B/op      96 allocs/op
BenchmarkWorstCase/ong/newLog-8           39_648 ns/op          2_339 B/op      13 allocs/op
BenchmarkWorstCase/no_logger-8            4.468 ns/op           0 B/op          0 allocs/op

Codecov Report
Base: 72.60% // Head: 72.69% // Increases project coverage by +0.08% :tada:

Coverage data is based on head (c1eee2e) compared to base (ece5804).
Patch coverage: 71.75% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #215      +/-   ##
==========================================
+ Coverage   72.60%   72.69%   +0.08%
==========================================
  Files          33       33
  Lines        2241     2208      -33
==========================================
- Hits         1627     1605      -22
+ Misses        532      523       -9
+ Partials       82       80       -2

Impacted Files
Coverage Δ

id/id.go
80.00% <0.00%> (+5.00%)
:arrow_up:

middleware/client_ip.go
100.00% <ø> (ø)

middleware/loadshed.go
68.00% <ø> (-0.63%)
:arrow_down:

middleware/middleware.go
100.00% <ø> (ø)

server/cert.go
2.07% <0.00%> (+0.01%)
:arrow_up:

server/server.go
45.83% <4.76%> (+0.27%)
:arrow_up:

server/pprof.go
80.48% <44.44%> (-6.70%)
:arrow_down:

log/log.go
86.66% <86.48%> (+5.27%)
:arrow_up:

middleware/panic.go
90.62% <86.66%> (-2.71%)
:arrow_down:

middleware/log.go
79.56% <93.75%> (+0.22%)
:arrow_up:

... and 3 more

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

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


[Update Request] Change identifier: MystiPanda.ClashVerge

What type of update are you requesting?
A change to the Package Identifier
Current Package Identifier
MystiPanda.ClashVerge
Package Version
1.6.2
Please describe the changes you would like to see

[!NOTE]
This is related to #153116

According to the InstallerUrl of the package, should we change the package identifier to clash-verge-rev.clash-verge-rev? It seems the manifest does not meet the value in Owner's repository.

Package homepage: https://github.com/clash-verge-rev/clash-verge-rev

Thsi appears to have been completed.


⚠ ClamAV has degraded performance

In 1387824, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 221 ms

Resolved: ClamAV performance has improved in 3e57fe2.


nightly build to run slow verification

Description
nightly build to verify code that cannot do on every merge

fuzz test
release candidate

We should create a release in every nightly build just to check if the release job is still working, since we had issues in the past were the release workflow broke and we only noticed when we wanted to create a new release.
Also worth considering:

creating docker images and pushing them to docker hub for all supported platforms
some basic checks on a created release / docker image -> start node, query status, shut down node

We should add that we should deploy the "normal" nightly network here and run some longer tests too that can be implied by the first points that Kimmy stated but thought that it makes sense to make it explicitly obvious :)

foud out that infra for fuzzinng needs to be stateful. when golang fuzzer finds execution that increase code coverage it will add it to the initial corpus. so the larger the state the better utilization of the fuzzer, and betteer guarantee of finding regression


Help

Will this work if I use Xamarin Android?

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

ID: 0686fa95-cbeb-1f4d-ceca-80c04255fb0e
Version Independent ID: 68f4a465-066f-5cb8-ed0c-346dc9d38bd1
Content: Walkthrough: Creating a simple WCF Service in Windows Forms - Visual Studio
Content Source: docs/data-tools/walkthrough-creating-a-simple-wcf-service-in-windows-forms.md
Product: visual-studio-dev15
GitHub Login: @gewarren
Microsoft Alias: gewarren

@charlespetzold do you know if you can create a WCF service in a Xamarin app?

We have a page and sample for WCF and Xamarin: Consuming a WCF service (in Xamarin). Note that only BasicHttpBinding is supported.


this is more of a question, not an issue - how to install and manage multiple nodes ?

I'm super green when it comes to docker, we currently run all production with chef but containerization was a good enough reason to consider switching over to docker.
When i found your repo - it made it a lot more obvious that it is so much easier to configure and manage things but I'm having a bit of a difficulty understanding how to deploy this setup over multiple nodes (all dedicated servers). Is it even possible?
Say we want to have 2 of MYSQL + REDIS servers and 2 separate web servers
we currently also have 2 haproxy load balancers (also dedicated servers)
I couldn't understand a few things:

If i set all of this up the way I described above - how will the machines know about each other? Ie. if haproxy is configured on web servers - then will they automatically pick up IPs that need to be connected to haproxy for mysql availability monitoring?

Is there a real benefit to having mutliple NGINX + PHP-FPM + MYSQL instances running on the same node vs 1 of each instances? or is this something that's been tested and performs better when more instances are available and that they are load balanced through the local installation of haproxy?

With the multip-IP DNS entries - it almost seems pointless to have additional LOAD BALANCER hardware when haproxy can reside on 2 of the same physical nodes that host web servers app?

are there any self-hosted utilities to monitor DOCKER resource utilization / service availability / etc.?

what's the best way to add some customizations to the included configs? for example NGINX, ie - we use GEOIP, IMAGE RESIZE, CACHE, REALIP nginx modules. What's the best practice to customize that and save it as a reusalbe image, would it still allow us to stay in sync with your repository changes ?

thank you very much.

This repository contains Consul image for DNS and HAPtoxy for load balancing - they are super simple when it comes to use and provide service discovery functionality, so that you'll be able to see the whole network topology (and even few separate topologies); each container in this setup should be cluster-aware, for instance MariaDB image is not a regular one, this is already cluster with single node, as soon as you scale it up - cluster will grow and replicate automatically, the same about Consul configuration - new nodes join cluster on scale completely automatically

Depends on your setup, can't say anything about your specific use case, I do not have multi-server setups yet

Yes, you can even have multiple HAProxy instances to increase redundancy

Yes, there are few of them both open source and proprietary, there was a good talk on some of Docker conferences, just search for it

I'd suggest to create own image based on existing

Currently there are 2 issues with multi-server (Docker Swarm) setups:

Ceph image is not finalized (and thus not documented, crucial in order to have automatic distributed file system for Nginx and PHP-FPM), you can track it here: #5
Docker 1.10 released few days ago changed fundamentally how hostnames are resolved and doesn't use /etc/hosts anymore, so images will not work as cluster until support for this will be added, you can track it here: #11

Basically, these images are aimed to provide flawless automatic clusterization with zero-configuration in simplest cases, namely you execute docker-compose scale mariadb=21 and after some time (while replication happens) you'll get 20 MariaDB Galera cluster with 21 nodes.
Any contributions are welcomed:)

Thank you so very much for such detailed reply.
i am a little confused with 1. and 2. - almost seems like the contradict each other. maybe I didn't ask the questions correctly, let me try to re-phrase it:
Your images allow to deploy multiple instances of the same service-daemon on the same machine (ie. physical node). It looks very cool and easy to do this but I'm trying to understand the benefit of have multiple NGINX or MYSQL instances on the same Node. Is there a reason for having 2 nginx daemons running on the same node, or is there a performance benefit of having multiple mysql daemons running on same node? I would imagine that running multiple mysql will in turn decrease amount of resources that can be dedicated to each instance of mysql, make it "less-performant"?
and the answer 2. seems like it's a part to the answer of the 1. or did i misunderstand it?
Did you mean that this can already be deployed across multiple physical nodes with some services running on one node and other services running on the other node and that they would auto-discover themselves using CONSUL DNS? or did you mean that this hasn't been done across multiple physical nodes?
and in 5. - when you say create own image, i'm assuming you mean docker commit or do you actually mean docker save ? would that render my image to be no longer upgradable from from yours? Ie. you mentioned that there will be some fixes to a couple of problems and I would like to be able to add all your fixes to my already running cluster. Is that even an option with Docker? (as i mentioned i'm still a super new to docker)

I do not think there is any reason to have 2 instances on the same node on the same hardware. It is possible (you can even run multiple VMs, combine them in Docker Swarm cluster and setup cross-server replication), but not necessary should be done. The reasonable use case might be 2 MariaDB instances with very different configs and residing on different physical drives within the same server.
It cannot be deployed right now out of the box with Docker 1.10. With Docker 1.9 you can, for instance, create MariaDB cluster. But for Nginx you'll need to manually prepare volumes using distributed file system (Docker docs). Ceph image in this repository aims to provide Cephfs distributed file system for these container that will just work out of the box across multiple physical hosts, but it is not finished yet (it works with Docker 1.9 though).
No, I mean write your own Dockerfile that will extend existing image from this repository, just like images from this repository extends others (MariaDB image is based on official MariaDB image and so on).
When Docker 1.10 compatibility will be implemented and Ceph image finished - you'll be able to run multi-host cluster as simple as running docker-compose up -d


xml2json is undefined

Hi all,
After solving the bug of getData (returns always false due to a wrong boolean expression) as described in another issue, I got xml2json is undefined. Indeed xml2json is used in the xml2Object (line 910 and 918) and is not defined anywhere else.
I suspect that the developers depend on something installed on their computers but not provided in the release. Anyway, given the name of the function, I assume that it converts XML data to JSON data (yes, I know, this is a quite clever deduction 😉), so I implemented a new one:
function xml2json(xml) {
  var json = {};

  if (xml.nodeType == 1) { // element node
    if (xml.attributes.length > 0) {
      json['@attributes'] = {};
      for (var j = 0; j < xml.attributes.length; j++) {
        var attribute = xml.attributes.item(j);
<EMAIL_ADDRESS>= attribute.nodeValue;
      }
    }
  } else if (xml.nodeType == 3) { // text node
    return xml.nodeValue;
  }

  // deal with children
  if (xml.hasChildNodes()) {
    for(var i = 0; i < xml.childNodes.length; i++) {
      var child = xml.childNodes.item(i);
      var nodeName = child.nodeName;
      if (json[nodeName] == null) {
        json[nodeName] = xml2json(child);
      } else {
        if (json[nodeName].push == null) {
          var old = json[nodeName];
          json[nodeName] = [];
          json[nodeName].push(old);
        }
        json[nodeName].push(xml2json(child));
      }
    }
  }

  return json;
}

Of course, you are free to use it at your convenience.

I'm seeing this as well, but as a log at the end of this function.
    function xml2Object(xml) {
        try {
            var obj = {};
            if (xml.children.length > 0) {
              for (var i = 0; i < xml.children.length; i++) {
                var item = xml.children.item(i);
                var attributes = item.attributes;
                for(var idx in attributes) {
                    var itemAtt = attributes[idx];
                    var dataKey = itemAtt.nodeName;
                    var dataValue = itemAtt.nodeValue;

                    if(dataKey !== undefined) {
                        obj[dataKey] = dataValue;
                    }
                }
                var nodeName = item.nodeName;

                if (typeof (obj[nodeName]) == "undefined") {
                  obj[nodeName] = xml2json(item);
                } else {
                  if (typeof (obj[nodeName].push) == "undefined") {
                    var old = obj[nodeName];

                    obj[nodeName] = [];
                    obj[nodeName].push(old);
                  }
                  obj[nodeName].push(xml2json(item));
                }
              }
            } else {
              obj = xml.textContent;
            }
            return obj;
          } catch (e) {
              console.log(e.message);
          }
    }

Thanks for this! I was banging my head into my keyboard until I found your solution here. I hope this gets resolved soon.

Thanks @benjaminbillet.
I don't know who added the call to xml2json. There is also a xml2json package in npm. But for simplicity's sake I have now included your xml2json function!


tf.contrib.metrics.streaming_precision doesn't accept predictions and labels of dtype tf.bool

According to documentation and comments in code, "tf.contrib.metrics.streaming_precision" should accept predictions and labels of boolean type, but it doesn't seem to be true.
To reproduce, modify testAllCorrect procedure in this file by adding dtype=tf.bool to tf.constant, as below:
  def testAllCorrect(self):
    inputs = np.random.randint(0, 2, size=(100, 1))

    predictions = tf.constant(inputs, dtype=tf.bool)
    labels = tf.constant(inputs, dtype=tf.bool)
    precision, update_op = metrics.streaming_precision(
        predictions, labels)

The test will fail:
tensorflow/contrib/metrics/python/ops % python ./metric_ops_test.py
======================================================================
ERROR: testAllCorrect (__main__.StreamingPrecisionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./metric_ops_test.py", line 656, in testAllCorrect
    predictions, labels)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/framework/python/framework/deprecation.py", line 218, in new_func
    return func(*args, **kwargs)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/metrics/python/ops/metric_ops.py", line 572, in streaming_precision
    updates_collections=None, name=None)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/contrib/metrics/python/ops/metric_ops.py", line 215, in _streaming_true_positives
    is_true_positive = math_ops.logical_and(math_ops.equal(labels, 1),
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/gen_math_ops.py", line 726, in equal
    result = _op_def_lib.apply_op("Equal", x=x, y=y, name=name)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 490, in apply_op
    preferred_dtype=default_dtype)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 657, in convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 180, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 163, in constant
    tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 353, in make_tensor_proto
    _AssertCompatible(values, dtype)
  File "/home/sergeii/tools/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 290, in _AssertCompatible
    (dtype.name, repr(mismatch), type(mismatch).__name__))
TypeError: Expected bool, got 1 of type 'int' instead.

This happens in _streaming_true_positives function in this file, when executing math_ops.equal(labels, 1)
Can be repeated simply as:
import numpy as np
from tensorflow.python.ops import math_ops
import tensorflow as tf

label = tf.constant(np.array([1, 0, 1]), dtype=tf.bool)
math_ops.equal(label, 1)

Environment info
Operating System: Ubuntu 14.04.1
%ls -l /usr/local/cuda/lib64/libcud*
-rw-r--r-- 1 root root    558720 Oct 20 14:53 /usr/local/cuda/lib64/libcudadevrt.a
lrwxrwxrwx 1 root root        16 Oct 20 14:53 /usr/local/cuda/lib64/libcudart.so -> libcudart.so.8.0
lrwxrwxrwx 1 root root        19 Oct 20 14:53 /usr/local/cuda/lib64/libcudart.so.8.0 -> libcudart.so.8.0.44
-rwxr-xr-x 1 root root    415432 Oct 20 14:53 /usr/local/cuda/lib64/libcudart.so.8.0.44
-rw-r--r-- 1 root root    775162 Oct 20 14:53 /usr/local/cuda/lib64/libcudart_static.a
lrwxrwxrwx 1 1000 users       13 Jul 26 22:55 /usr/local/cuda/lib64/libcudnn.so -> libcudnn.so.5
lrwxrwxrwx 1 1000 users       17 Jul 26 22:55 /usr/local/cuda/lib64/libcudnn.so.5 -> libcudnn.so.5.1.5
-rwxrwxr-x 1 1000 users 79337624 Jul 26 22:53 /usr/local/cuda/lib64/libcudnn.so.5.1.5
-rw-rw-r-- 1 1000 users 69756172 Jul 26 22:53 /usr/local/cuda/lib64/libcudnn_static.a

python -c "import tensorflow; print(tensorflow.__version__)"
Version: 0.11.0rc2

The links to files are both broken for me.

Updated the links, please check again

To fix this, we'll need to replace the 1 with True if the input is a bool.  Contributions welcome!

Automatically closing due to lack of recent activity. Since this issue is old at this point, please reopen the issue if it still occurs when tried with the latest version of Tensorflow. Thank you.


Fix authenticated flag in a transfer adapter response

The authenticated flag in the /batch endpoint response is always true, which surely is not the case when the PRE_AUTHORIZED_ACTION_PROVIDER is null in the startup configuration.
This prevented me from using the github auth provider, because with authenticated: true the git client doesn't try the stored credentials previously used to authenticate against the batch endpoint.
There's couple loosely related tweaks included, see the details in the particular commits.

Finally fixed all lints and tests. Also here's a little story on how I got here.
In my setup, I'm using a storage backend on a private network (while the API is public), so I naturally ended up using the basic streaming transfer adapter. With this, the default JWT PRE_AUTHORIZED_ACTION_PROVIDER hitched a ride and everything seemed to be heading for the brightest future. This worked OK during numerous smoke tests, but once our folks started using the service for real (with a tens GiB project with a thousands binary files), the default JWTs coming back with the download action (but I guess other actions would be hit, too) beared a little ticking time bomb. Because suddenly an innocent git pull started downloading many of those changed files... and then hung forever (as luck would have it, when my colleague eventually ^C'd that, his day's worth of work was gone - I'd attribute that to the git lfs client, but there's still something we/I could have done better).
After some time trying to figure out what's wrong, I found there's a handful of successfully downloaded objects, but then just an endless string of 401s. All due to the JWTs being expired.  The only thing that made it stop retrying a particular file was ironically a 503 (server temporarily unavailable, usually to be retried) from the poor proxy I have on the front...
But let's focus now on why it had to retry in the first place. The default lifetime for those JWTs is 60s, but it's obviously possible that the downloading won't start at once for all the files due to some sane connection limits in the client. Therefore I'd expect the JWT's lifetime would span at least the lifetime of the batch response, which, as I found later, has its own 15 minute default. Giftless docs mention this config parameter only for the multipart transfer mode, which seems to have a different default. This could use some unification, I'm sure. And docs.
Looking at the decoded JWTs eventually made me do this mostly cosmetic https://github.com/datopian/giftless/pull/159/commits/40eee64ef690dca10c810191ae5a3536df4a0e6c.
Finally understanding what's most of this preauth logic about (it took a while :roll_eyes:), I realized I could use my github auth provider to serve the same purpose (the streaming storage API URL neatly overlaps with the batch API URL, so the auth provider still know which org/repo it is) without dragging in the the JWT preauth logic. That's what I tried by disabling the PRE_AUTHORIZED_ACTION_PROVIDER in the config. Disabling worked, but then the streaming transfer adapter still always responded with authenticated: true, which made the git lfs client assume the authentication data is present in the object's metadata, which wasn't the case (client started with 401s right away and didn't even stop after the action lifetime expired, lol, it's a tough one) . Counting on the fact the preauth is disabled, I believe this flag should be rightfully false. So I introduced a piece of basic logic that sets authenticated to false if the preauth provider is not there at all. I can imagine we could push it further by introducing an interface for letting the preauth provider say how this flag should be set, but I don't see a particular use case for that atm. After the fix the git lfs client correctly provided saved github credentials for the hostname, which was properly handled by the github auth. I'm happy there, one auth for everything, and the github token doesn't expire that easily.
The last change https://github.com/datopian/giftless/pull/159/commits/55751473a7d1a9e2192a02beb1b9925aab07d593 just tells setuptools to package only the giftless directory/package (because in my fork I have a new directory which breaks tox). I know this is rather presumptuous of me to want this upstream, but then again it doesn't break anything here :innocent: (Just flick a finger and I'll revert it :wink:).

I dunno if I should tag you, dear @athornton (whoops, I did it again :innocent:), as you previously said you're not really part of the Datopian pack (still you were the most fruitful partner in getting things merged).

Sorry!  Way behind on my email.  I'll take a look at this stuff in a bit.

Packaging just giftless is fine, and, yeah, I got really lost trying to go through the preauth stuff too several months back.
This looks OK to merge to me, but I want to build an image from it and run that in testing for a little while to make sure that my sort-of-different-s3-via-Google-Workload-Identity doesn't break under it.  From what I'm reading it shouldn't, but I should make sure, especially since I have a tough time following the thread through all the abstraction layers.

{
    "business": "GitLFS",
    "failure_count": 1,
    "monkey_count": 1,
    "name": "gitlfs",
    "start_time": "2024-03-28T22:52:07.192506Z",
    "success_count": 56033
}

The failure was when I restarted it with the new image.  I'm going to merge, and then I'll get the dependabot PRs.

sweet! Thank you! I'm polishing some further patches for github (including docs), so stay tuned :)


booksearcher returns url-encoded links

The returned urls by bookSearchJs-search do not work if you try to open them directly or as part of a link's href-tag. The urls are urlencoded for some reason.

check if that behavior can be changed inside Google
check if it's a bug inside the bookSearchJs
if all fails, run all urls through decodeURIComponent before storing them in the results
write a test

Fixed


Remove useless make target

/assign @morvencao

@gyliu513 It depends. The intention for these lines is to enable build-in-container locally, maybe we should give each repo more options to customize their makefile.

The Makefile should be very simple to use and easy to read, I don't like too many wrappers in Makefile.
Here is the quay-operator makefile, it is very clean: https://github.com/redhat-cop/quay-operator/blob/master/Makefile

/lgtm


here is an problem with MS deform

when I run the following sentence:
output = MSDA.ms_deform_attn_forward(value, value_spatial_shapes, value_level_start_index, sampling_locations, attention_weights, ctx.im2col_step)
The error occurs:
type object 'MultiScaleDeformableAttention' has no attribute 'ms_deform_attn_forward'
pls help, Thanks

when I run the following sentence: output = MSDA.ms_deform_attn_forward(value, value_spatial_shapes, value_level_start_index, sampling_locations, attention_weights, ctx.im2col_step)
The error occurs: type object 'MultiScaleDeformableAttention' has no attribute 'ms_deform_attn_forward'
pls help, Thanks

Hello, which task are you running on, detection or segmentation?
I recommend checking if deformable attention is compiled correctly.
The commends to compile deformable attention are:
For detection:
cd detection/
cd ops & sh make.sh

For segmentation:
cd segmentation/
ln -s ../detection/ops ./
cd ops & sh make.sh

thank u, the deformable attention is not compiled yet, and I run the setup.py under the ./detection/ops folder
I can not run the make.sh cause I use the win10 system
I really appreciate it, @czczup


FOSSA workflow should not run on forks

Signed-off-by: Shubham Sharma<EMAIL_ADDRESS>If FOSSA workflows run on forks, it creates a new project on FOSSA. The workflow was introduced in https://github.com/dapr/go-sdk/pull/266

/cc @yaron2 can you please have a look at this?


How include the SSR'd View css into the ssr'd html? - FOUC issue

Hello,
I am having an issue regarding FOUC (flash of unstyled content) when entering a SSR'd route and I was wondering if there's something that could be done in the bundle-render config to avoid this. So, I have a pretty standard Vue app with a router:
{
    name: 'page1',
    path: '/page1',
    component: () => import(/* webpackChunkName: "page1-path" */ './views/Page1'),
},

And the page SFC is also pretty simple:
<template>

Page1

</template>

When hitting /page1, I call the vue-bundle-renderer's createRenderer (giving renderToString from @vue/server-renderer as part of the renderer options) , then the renderToString (that createRenderer returns, passing all context) and I get the SSRd html, and the supporting render script/styles/resources functions as normal which is what I'll use to generate the full html page.
So the bundle renderer knows which route code to load, which chunks to render and etc and I got the correct html with the css scopes and etc:

Page1

The issue is that I don't see anywhere the CSS for that page. It was not added to the renderStyles() stylesheet list. So while I do get the SSR'd HTML properly, it takes a split second for the app JS to kick in, hydrate the HTML and call in __webpack_require__.f.miniCss (mini-css-extract function) that will call loadStylesheet and attach the .css of that view into the page. (I use sass-loader->css-loader->mini-css-extract-plugin for the style loaders in webpack).
So in that split second the page is loading, I see "Page1" black (default style) then it becomes blue when loadStylesheet is called and the css for that view attached.
Q: Is there a way to make bundle-renderer also include the relevant CSS for the chunks it loaded into the SSR'd html (either inline or include the .css paths in the renderStyles list)? The flash of unstyled becomes more and more apparent the bigger the component is in the viewport.
I started looking into a few "critical css" projects such as penthouse, critters and addyosmani's critical but none look like it would work together correctly with bundle-renderer page. I also played a bit with webpackMode "eager", which would make the route not be a separate chunk (behaves as if I imported the component directly instead of arrow function with an import), but that means if I go straight to /page2, it would have /page1 code in the app js, which isn't desirable.
Do you have any suggestion regarding this? How do you include the CSS of the SSR'd view into the SSR'd html?

Vue 3 does not extract CSS or support doing so on its own. But you can see the custom implementation we have in Nuxt here:
https://github.com/nuxt/nuxt/blob/ff1bb56e3f90472ff7aae69b214e21197c78400b/packages/vite/src/plugins/ssr-styles.ts#L1

Hi @danielroe thank you for taking your time to answer me, I appreciate it :-)
I looked at it, thanks for pointing out! I noticed it is a vite-specific plugin, I couldn't see a webpack equivalent. I see in renderer.ts that you get the styles from styles.mjs (which is what the vite plugin emitted) and since has no webpack equal plugin, nitro.ts just sets style.mjs to export default {} if webpack is the builder.
Did Nuxt team already assessed that Webpack isn't able to do the same? I'm not familiar with Vite hooks yet to see if there would be webpack analogous hooks, but if Webpack is possible, I can try converting it to a webpack plugin.
Thank you once more for the reply 👍

You’re right, we haven’t implemented this for webpack but we really should. I haven’t had time to do it yet but feel it must be possible.


Update OKD-based CRC build (2022-02)

Describe the bug

Same issue as #636.  OKD CRC certificates are expired.
Also, an observation in the hope it helps:
This is my OKD/OpenShift "What the heck is it" first experience.  The minimal commitment for me is CRC.  Oops, it's out of date and broken. :(
I wonder if either longer cert expiry or an automated monthly build of OKD CRC would make for a better first time experience.
As it stands now, I either have to signup for a Redhat 30-day Trial or commit to a full OKD install (say on AWS or whatever) just to be able to do some hands on exploring.  Either path is less palatable than a working OKD CRC.
Not to mention that I only find this out after several Gib of downloads.
Anyway, hope you take this in the kind spirit it is offered. :)
Version

4.9.15, I guess.
How reproducible

100%. Certs expire every 30 days.  The CRC is dated Nov 2021.
Log bundle

INFO Kubelet client certificate has expired, renewing it... [will take up to 8 minutes]
INFO Kubelet serving certificate has expired, waiting for automatic renewal... [will take up to 8 minutes]
Failed to renew TLS certificates: please check if a newer CodeReady Containers release is available: Temporary error: certificate /var/lib/kubelet/pki/kubelet-server-current.pem still expired (x60)

WARN A new version (1.39.0) has been published on https://developers.redhat.com/content-gateway/file/pub/openshift-v4/clients/crc/1.39.0/crc-linux-amd64.tar.xz

cc  @cgruver

@justkrys   Fully understand your frustration.  The OKD build of CRC hasn't been getting much attention since it's all volunteer, and for a while I've been the sole volunteer...  :-)
If it helps, you can get the official CRC free of charge, and it does not require a 30 day trial.
It does require that you sign up for a Red Hat developer account to get a pull secret, but that's also free and gets you access to some nice free books and other resources.  The CRC install does not limit you to a 30 day trial.
https://cloud.redhat.com/openshift/create/local

OKD CRC isn't dead, it just doesn't have a community invested in it yet.
OKD has a vibrant community around it, so it's not going anywhere.  But, that really is the difference.  There's enough interest in OKD, and users of OKD that there are folks both in and out of Red Hat who spend time contributing to it.
CRC just hasn't found that level of interest.  I built and maintained the first few releases of CRC for OKD as a favor.  But I have never been a user of it.
Thus, if I have to choose where to invest my FOSS community contributions, it's going to be on projects that I am actively using.  This is just the nature of FOSS.
I really would encourage @everflux and @justkrys, if you have some time, we'd love for you to join the OKD community.
There are a few other folks who have expressed interest in getting a CRC group formed to maintain it.  They'd love for you to join them.  https://github.com/openshift/community#okd-working-group-meetings
I've published some info on how to build CRC for OKD.  My forks of crc and snc are likely out of date now, but it might get you started.
https://upstreamwithoutapaddle.com/home-lab/okd-crc/
Cheers

Thanks very much for the information and alternative path.  I will check that out as a starting point.
Also thank you for your invitation to join the community.  :)  Unfortunately, I leaned long ago that I do not have the right personality type for any sustained engagement with any community.  But I will check things out.  Who knows, things change.
Anyway, thanks again for the help. :D

One thought, though, if OKD CRC is not getting the love it needs, maybe a word about that in the install docs might be in order.  Perhaps an open invitation for help.  Just so people are not surprised and confused.
Thanks again!

@justkrys It takes all types of personalities to make a community.  Come on over.
:-)

This is my OKD/OpenShift "What the heck is it" first experience. The minimal commitment for me is CRC. Oops, it's out of date and broken. :(

This issue comes from the upstream OpenShift release that prevents certificates to exist longer than 30 days. We from @code-ready/crc-team have tried to resolve this for a long time, but has been denied

My proposal is as follows:

@gbraad   Let me get some time set aside for this, and I'll work with @praveenkumar.

If the OKD based CRC is no longer useable, it should be taken offline to not confuse and frustrate potential users.

I'm getting this on the latest version:
INFO Kubelet client certificate has expired, renewing it... [will take up to 8 minutes]
Failed to renew TLS certificates: please check if a newer CodeReady Containers release is available: Temporary error: certificate /var/lib/kubelet/pki/kubelet-client-current.pem still expired (x60)

I’ve been asking for a volunteer to do a fresh build. So far no takers. At the WG Docs Subcommittee meeting Tuesday, I’ll add this topic to the agenda.

The certificate renewal process should work. Please delete and retry start. If this remains this needs to be looked into soon. Ideally we want to make automated images for okd-crc, but need access to the location to store these.

From: Jaime Magiera @.>
Sent: Saturday, April 16, 2022 2:50:52 AM
To: openshift/okd @.>
Cc: Gerard Braad @.>; Mention @.>
Subject: Re: [openshift/okd] Update OKD-based CRC build (2022-02) (Issue #1123)
I’ve been asking for a volunteer to do a fresh build. So far no takers. At the WG Docs Subcommittee meeting Tuesday, I’ll add this topic to the agenda.
—
Reply to this email directly, view it on GitHubhttps://github.com/openshift/okd/issues/1123#issuecomment-1100290010, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAAAOZW753GN3P4WZYPXIK3VFG3AZANCNFSM5PNJEQFA.
You are receiving this because you were mentioned.Message ID: @.***>

@JaimeMagiera can the volunteer reach out to us? getting the preset working and let us do part of the upstream releases will solve the problem long-term

Hey guys, apologies that I'm MIA here.  #DayJob has consumed everything.
@JaimeMagiera Did you get a volunteer?

@JaimeMagiera I may be able to set aside some time over in the next couple of weeks.  I'll keep you posted.

It is not a thing you do in just a few mins. We are still in the process to automate some stuff. We might pick this up also soon. Any assistance is welcomed. Currently we are looking into enabling upstream bundles in our regular builds... This could become a replacement for the okd-crc fork.

It seems OpenShift CodeReady is now OpenShift Local...
Don't know if there is an OKD "flavor" of OpenShift Local...

OpenShift Local is a rebrand of CodeReady Containers, but the command and project are still named crc.
We are moving CRC to be the upstream effort for also OKD, so yes... it will hopefully support this soon as a preset.
But I do not think there will be a flavour of this as OpenShift Local is a productization of CRC...
You will see crc releases to be made on our github page and hopefully this issue tracker can be seen as preset-/bundle specific.
Does this answer your question?

If the OKD based CRC is no longer useable, it should be taken offline to not confuse and frustrate potential users.

Spot on ..l just started exploring Openshift and I am extremly confused if I should use OKD or CRC but hanging here and there to be honest

Yes. That is the overall issue. The certificate expires and the installer needs to be recreated. We (the OKD Working Group) are looking for a volunteer to build a fresh installer. We just don't have the cycles.

I made it work with the workaround, but happy to build it. Any instructions
to follow, access needed? Can pm me
Den tors 23 juni 2022 11:41Jaime Magiera @.***> skrev:

Yes. That is the overall issue. The certificate expires and the installer
needs to be recreated. We (the OKD Working Group) are looking for a
volunteer to build a fresh installer. We just don't have the cycles.
—
Reply to this email directly, view it on GitHub
https://github.com/openshift/okd/issues/1123#issuecomment-1164185639,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGB3CPL76OQ4ZBLO3WMJ33VQQWLNANCNFSM5PNJEQFA
.
You are receiving this because you commented.Message ID:
@.***>

As part of crc-2.x we have decoupled the bundle from the crc binary and as part of setup we download it. It will allow us to generate the bundle adhoc fashion and upload it publicly and renew the bundle when cert expire. Bundle generation happen from https://github.com/code-ready/snc/ and have instruction about how to create an OKD bundle. Our (crc team) near term goal is to put more document/how-to for bundle creation and also update the bundle to latest okd release sooner. We are working on having those bundles as part of container image which will allow us to upload those quickly to quay.io than waiting for any internal/fedora infra.

thanks, docs are appreciated. the latest crc binary with oc 4.10 "just works" on my ubuntu 22.04 now, when I tried to follow instructions for snc I got into all kind of redhat related things to get libvirt and other stuff installed.
When working around it in the script, eventually it complaiend about tcp for libvirt - not sure why because it seems everything works as it should now. Anyway, happy to give it another shot if there are more docs, perhaps I can add Ubuntu support if wished for. Thank you

https://github.com/code-ready/blog/pull/6
Functionality has been added to the 2.7.1 of CRC: https://github.com/code-ready/crc/releases/tag/v2.7.1

One of the next steps is to describe the automated generation flow. Perhaps a terraform or pulumi definition of the setup might help.

code-ready/blog#6 Functionality has been added to the 2.7.1 of CRC: https://github.com/code-ready/crc/releases/tag/v2.7.1

https://crc.dev/blog/posts/2022-08-22-okd-on-crc/

Awesome!
Too bad I can't Circle/TravisCI this for https://app.circleci.com/pipelines/github/kaovilai/reliable-ci/15/workflows/e65e2e00-0e06-44da-9598-a0d1a0e593a3/jobs/22

We need to update the info on https://www.okd.io/crc/
The current version published there is nearly unusable due to cert rotation
any idea where we can propose these changes?
/cc @vrutkovs @JaimeMagiera @cgruver

@praveenkumar is a longer term cert extension possible for the OKD bundle too or is this already published?

The site content is here: https://github.com/okd-project/okd.io
Those images are almost a year old too.  It's the last CRC for OKD that I built manually.
I'll bring it up in the next OKD working group meeting.  For now, that content should probably just be removed until we have an automated process to build OKD bundles.

Are you sure it is worth investing scarce manpower into CRC for OKD? The CRC from Red Hat based on OCP is basically free to use, too (you just need a free Red Hat developer account).

I think it is, people run OKD for a reason. The idea of the image decoupled
is better too. I would made an attempt if there was documentation that made
the workings and packaging clearer. I see no reason why CRC cannot be
improved to just point to an image for OKD or Openshift, have certificate
rotation or have them valid for 20 years.
Up to day I have still not run OKD locally to test it because of this.
Thank you
On Sat, Oct 8, 2022, 19:24 kai-uwe-rommel @.***> wrote:

Are you sure it is worth investing scarce manpower into CRC for OKD? The
CRC from Red Hat based on OCP is basically free to use, too (you just need
a free Red Hat developer account).
—
Reply to this email directly, view it on GitHub
https://github.com/okd-project/okd/issues/1123#issuecomment-1272362979,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGB3CO2BICFFB3RVCVUI2TWCGU45ANCNFSM5PNJEQFA
.
You are receiving this because you commented.Message ID:
@.***>

Good news, this has been resolved in CRC itself. Now it has presets and OKD is included. See https://crc.dev/blog/posts/2022-08-22-okd-on-crc/

@praveenkumar is a longer term cert extension possible for the OKD bundle too or is this already published?

No, I still have to figure out this for OKD bundles. I will discuss that internally with @vrutkovs next week and try to create next bundle with cert validity of 1 year.

Great. Why not make it 30 years? Or have a refresh mechanism.
On Wed, Oct 12, 2022, 08:58 Praveen Kumar @.***> wrote:

@praveenkumar https://github.com/praveenkumar is a longer term cert
extension possible for the OKD bundle too or is this already published?
No, I still have to figure out this for OKD bundles. I will discuss that
internally with @vrutkovs https://github.com/vrutkovs next week and try
to create next bundle with cert validity of 1 year.
—
Reply to this email directly, view it on GitHub
https://github.com/okd-project/okd/issues/1123#issuecomment-1275683205,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGB3CNNNQSEQBJNDJSK73LWCZOSVANCNFSM5PNJEQFA
.

@VGerris cert refresh mechanism already present and rotation happen successfully, it just take more time (extra for cert rotation) than usual.

hi, ok, how does one do that?

@VGerris End user doesn't have to do anything, it just happen automatic when cert expire.


Laptop goon fix

#66

Closes #66. Don't forget the keyword closes its important 🙃

@BrandonPacewic Took changes from a branch that isn't main. Closing it and changing to main


[Trivial] Download page: make expandable sections use clickable mouse cursor

Preview: http://dg1.dtrt.org/en/download/
On the live BitcoinCore.org site, if you hover your mouse over one of the expandable sections in the Download Page verification docs, it shows the default mouse cursor (mouse not pictured in image below).

With this commit, the cursor is changed to the cursor used for clicking on a link (e.g. a hand with pointer finger extended).  I've tested this works using a Chromebook running the Chrome browser (on my usual OS, nothing in any browser seems to change the cursor).
Suggested by Daniel E. Renfer, duck1123, on Twitter

utACK 7c7c25cde4ac1ee00163d200fa17bf95e1348ec9


feat: add developer support

This pull request is for handling developers in Go-kong and finally to allow deck to do it.

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

I observe 404 errors, it seems like developers are only available on enterprise version. Is there any way to validate those entities ?

Haven't reviewed this completely yet, but it'll be affected by the same issue with enabling the Portal before testing it that necessitated https://github.com/Kong/go-kong/pull/30
You may want to wait for another reviewer to complete review before making changes to your PR in case #30 changes at all, but assuming it goes in as-is, tests would need to add the new runWhenEnterprise() argument, portalRequired=true, and then add test code to enable a workspace's Portal and disable it once complete.
Since adding developers further requires authentication (and by extension, basic session conifuration), your workspace Config would need some additional items. I believe this should work:
{"portal_auth": "basic-auth","portal_session_conf": map[string]interface{}{"secret":"garbage"},"portal": true}

Tests will need to provide Meta with a full_name when creating a developer. Note that this requires a raw JSON string. Currently they fail:
POST /developers HTTP/1.1
Host: localhost:8001
User-Agent: Go-http-client/1.1
Content-Length: 55
Content-Type: application/json
Accept-Encoding: gzip

{"email":"foo@example.com","custom_id":"custom_id_foo"}

HTTP/1.1 400 Bad Request
Date: Mon, 29 Mar 2021 22:03:33 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Kong-Admin-Request-ID: LkfFBBPxW4CwbJEgwHV1FjJz0t7PWYnK
vary: Origin
Content-Length: 67
X-Kong-Admin-Latency: 14
Server: kong/<IP_ADDRESS>-enterprise-edition

{"fields":{"meta":{"full_name":"required field missing"}},"code":2}

I added what was recommended concerning the password and meta fields. What should we do next, wait for the merging of the pull request #30 ?

Yeah, once #30 is reviewed and merged, rework tests against it final merged version to enable the Portal and set other Portal settings needed for this.
Something is still going wrong with part of the tests when I set up the Portal manually first. The updated developer isn't being set properly from the Update() return, and instead it returns a developer with all fields nil:
> github.com/kong/go-kong/kong.TestDevelopersService() ./developer_service_test.go:45 (PC: 0x84ada6)
    40:		assert.Nil(err)
    41:		assert.NotNil(developer)
    42:
    43:		developer.Email =<EMAIL_ADDRESS>    44:		developer, err = client.Developers.Update(defaultCtx, developer)
=>  45:		assert.Nil(err)
    46:		assert.NotNil(developer)
    47<EMAIL_ADDRESS>*developer.Email)
    48:
    49:		err = client.Developers.Delete(defaultCtx, createdDeveloper.ID)
    50:		assert.Nil(err)
(dlv) p developer
*github.com/kong/go-kong/kong.Developer {
	CreatedAt: *int nil,
	ID: *string nil,
	Status: *int nil,
	Email: *string nil,
	CustomID: *string nil,
	UpdatedAt: *int nil,
	Roles: []*string len: 0, cap: 0, nil,
	RbacUser: *github.com/kong/go-kong/kong.RBACUser nil,
	Meta: *string nil,
	Password: *string nil,}

That then panics when it attempts to assert the Email equality.
Not immediately sure what's causing that: the update does in fact go through (I can see the modified email when looking at the admin API) and there's nothing that jumps out as unusual in the developer Update() function that suggests why on initial review.

f863f02 is interesting; thanks for figuring out that oddity.
https://github.com/Kong/go-kong/runs/2249818490 is a CI run for branch on this repo that includes this suggestion along with the rest of the PR. Pulling fork branches into local repos is a bit of a clunky solution to make Enterprise CI run/work around GitHub limitations on secret use in PRs from forks, but it works.


Fix OpenGL Telemetry

Tasks:

[x] Fix first telemetry opengl strings.
[ ] Clean module dependencies.

test me

Build Passed :ok_hand:
You can safely merge 'hotfix-telemetry' into 'master'.

:+1:

:eyes: