could not rebuild router via timer: could not create router: concurrent incremental router rebuild without mutex, this is unsafe

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
3.0.0
Current Behavior
add route
 2022/09/20 09:14:53 [error] 5442#0: *976 [lua] handler.lua:1195: could not rebuild router via timer: could not create router: concurrent incremental router rebuild without mutex, this is unsafe, context: ngx.timer 2022/09/20 09:14:57 [error] 5443#0: *721 [lua] handler.lua:1195: could not rebuild router via timer: could not create router: concurrent incremental router rebuild without mutex, this is unsafe, context: ngx.timer
Expected Behavior
restart kong
route success
but the route that matches the fewest rules
Steps To Reproduce
No response
Anything else?
No response

Hello,
Could you provide more information on how to reproduce this?

We have found some potential bugs in 3.0's router, these fixes will be released in 3.0.1, you can test it again at that time.

I think PR #9480 will help you. if you get other problems, please reopen this issue.


Persisting a Recorded Session

This tool you build saves us a ton of time! 💯
Is it possible to persist the recorded API's somehow? I want to have the API's next time I opened the website.

That's great to hear, thanks @pshaddel . You can persist the session by exporting it if that works?

@AndrewWalsh Yes, but u cannot resume what u were doing. What I am aiming for requires persisting it in somewhere like local storage. In case I close the inspection tab, or close the tab, I would like to have the recorded tabs still there.

I hear you. There are multiple processes of sorts in a browser extension, each with isolated environments and specific tasks. In this case the developer tool script that runs the extension would need to communicate with a background script, which would then store this information in localstorage. I'd also need to update the UI to enable this feature, so it's a fair bit of effort. Are you ok with just saving the exported text somewhere? Even temporarily, like a VSCode tab?


chore: add Node.js 10

Coverage remained the same at 70.796% when pulling d7d6d7fda262482ffba5a0d4c63ddb6f794a1b34 on DanielRuf:chore/add-nodejs-10 into 5e15619fc6599ce0639865bd51f78bb8d760e9dd on dvajs:master.

Coverage remained the same at 70.796% when pulling d7d6d7fda262482ffba5a0d4c63ddb6f794a1b34 on DanielRuf:chore/add-nodejs-10 into 5e15619fc6599ce0639865bd51f78bb8d760e9dd on dvajs:master.


Deploy : php.ini set file size

Change max size file in php.ini to accept at most 15Mb files

Done


Application error

Server is down, doesn't allow any requests to be made

I noticed and restarted the server around the time that you had posted the comment.

A recent update increased the likelihood of failing, which I've fixed in a new update.


Debugger shows wrong value for some parts of an expression

Environment data
dotnet --info output:
.NET Command Line Tools (1.0.0-preview2-002983)

Product Information:
 Version:            1.0.0-preview2-002983
 Commit SHA-1 hash:  90fbc3bb53

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  15.04
 OS Platform: Linux
 RID:         ubuntu.15.04-x64

VS Code version: 1.0.0
C# Extension version: 1.0.3-rc2
Steps to reproduce
Consider this statement:
Matrix4x4.CreatePerspectiveFieldOfView(
    _fieldOfView,
    (float)Window.Width / Window.Height,
    _nearPlane,
    _farPlane);

When I debug this statement, Window.Width is equal to 960, and Window.Height is equal to 540. Both are Int32.
Expected  behavior
Width should display 960 when hovered, and Height should display 540.
Actual behavior
When I hover over "Width", 960 is displayed, as expected. When I hover over "Height", 1.77777779 is displayed. This is actually the result of the entire expression, 960 / 540. Ideally, I would expect that value to be displayed if I hovered over the / operator, like in Visual Studio Full.

@mellinoe do I correctly understand that when you evaluate "Width" in the watch window, you get the correct result? If so, this is a VS Code issue. My guess would be https://github.com/Microsoft/vscode/issues/4059, but it could be something new.

Yes, that is correct. I can manually evaluate Width in the "Debug Console" pane, and it prints out "540" as expected. I didn't check the watch pane, but it's probably the same. Your other issue sounds like it's the same thing. Feel free to close this one if it's definitely a VS Code issue.


'UrlLink' only refers to a type, but is being used as a value here.

🚨 The issue tracker is not for questions 🚨
node v18.0.0
npm 8.6.0
typescript:4.6.3
修改过很多版本，都报这个错误。框架式nestjs。
import {  Wechaty, Message, WechatyBuilder,  UrlLink   } from 'wechaty';

请问我做错了什么？
[问题]
src/modules/wechaty/wechaty.service.ts:123:37 - error TS2693: 'UrlLink' only refers to a type, but is being used as a value here.
123           let urlLink:UrlLink = new UrlLink({
~~~~~~~
Found 1 error(s).

In Wechaty v1.x, you can not instantiate UrlLink directly.
Use new wechaty.UrlLink({...}) instead.

With Wechaty v1.x, you can not instantiate UrlLink directly. (UrlLink in your code is a Interface type instead of a JS value)
Use new wechaty.UrlLink({...}) instead.

I have same problem, and I cannot find wechaty any where. Could you give me a short demo with import statements? Thank you! 🙏

You can learn from the official getting started example at here: https://github.com/wechaty/getting-started/blob/main/examples/ding-dong-bot.ts


WIP: 4.0.0 rewrite

This is a PR to rewrite the internals of Aff to be faster and have actual guarantees around cancellation and finalization. There's still a lot to do, but I wanted to go ahead and get some feedback on the implementation.

I've added a bunch of tests and worked out a lot of the kinks. I still have more tests to add back pertaining to ParAff.
I'd like to detail the behavior around the threading model and exceptions, and the interplay of effect labels. I've removed the exception label from launchAff, because it is extremely misleading. This is always a lie because it implies you should use catchException to remove the label, yet no exception will actually be caught because it is thrown asynchronously. Instead, I guarantee the following: if a thread throws an exception, and there are no other threads observing the exception (via joinThread), the exceptions will always be thrown in a fresh stack so as not to interrupt another thread, and still remain observable (eg., by a global onerror handler). Alternatively, I've added an async :: ASYNC effect to launchAff and runAff. These are equivalent to starting up a new thread scheduler, so I think it's appropriate for them to carry an appropriate effect.
I've also tried something different here with regards to liftEff and makeAff:
type AffModality eff =
  ( exception ∷ EXCEPTION
  , async ∷ ASYNC
  | eff
  )

-- Needs to have alias inlined because synonym desugaring bug in instance declarations
instance monadEffAff ∷ EffectRowEquals eff1 (exception ∷ EXCEPTION, async ∷ ASYNC | eff2) ⇒ MonadEff eff1 (Aff eff2)

makeAff ∷ ∀ eff a. ((Either Error a → Eff (AffModality eff) Unit) → Eff (AffModality eff) (Canceler eff)) → Aff eff a

In other words, any underlying Eff actions used to build an Aff implicitly carry EXCEPTION and ASYNC effects. This means that calling liftEff will remove the EXCEPTION label, as exceptions are an implicit effect in Aff. This mostly just works the way you want it to, except in one case.
someAff = makeAff \k -> do
  thread <- launchAff do
    delay (Milliseconds 100.0)
    liftEff $ k (Right unit)
  pure $ Canceler (flip killThread thread)

Or in other words, take the continuation from one scheduler, launch a new one, and invoke the continuation from the new scheduler. The effect rows won't unify in this case. Even though this is how some things are implemented internally, I'd argue this is an inherently unsafe thing to do, so I've provided unsafeLaunchAff and unsafeLiftEff functions without the AffModality restriction on effect labels. I'm open to removing it, but then we are back to what we currently have.

@paf31 suggested trying ASYNC :: # Effect -> Effect to describe whatever async effects are happening. So launchAff would have the following type:
launchAff
  :: forall eff1 eff2.
   . Aff eff1
  => Eff (async :: ASYNC (exception :: EXCEPTION | eff1) | eff2) Unit

I think this is interesting, and perhaps more accurately describes what's going on.

@natefaubion Last time I tried that, the type inferencer had major problems, and adding labels of any kind selectively results in user-pain.
What is the pain that adding ASYNC solve? The use of string labels to model semantic effects is already provably a failure IMO.

@natefaubion Last time I tried that, the type inferencer had major problems, and adding labels of any kind selectively results in user-pain.

Likely before fundeps? The EffectRowEquals constraints uses functional dependencies, so it should be the same as wrapping every Eff with catchException. I'd like to use RowLacks to actually prevent exception labels from being introduced at all, but the currying of the multiple runtime dictionaries used to encode it has significant overhead.
But you are right, it just may not be worth it, and there are tons of instances in the current ecosystem where exception labels are introduce asynchronously and can't be caught.

I think I will still elide the additional EXCEPTION effect from launchAff, but will probably remove the other machinery.

We have withResource defined on purescript-transformer and I always use it when want similiar feature of Haskell's bracket function. It look like we implement that here. I wonder what's difference here. Also try on purescript-transformer have similiar behaviour with attempt. Should we really implement same functionality here?

@syaiful6 We could probably formulate Aff so catchError is the primitive operation rather than attempt. attempt is slightly easier to implement, but you are right, it is otherwise redundant. bracket however must be a primitive because it's not as simple as just error handling (which is what withResource does). It also affects cancellation behavior. Actions run during acquisition and cleanup cannot be cancelled. If you try to kill a thread during these actions it will block until they have completed.

This still needs documentation updated, but otherwise the code is ready for review.

The ParAff instance is clearly not stack safe, so I will try to reformulate it with some sort of free applicative.

SOMEBODY PLEASE REVIEW QUICK (before I'm tempted to do any more to it).

This looks phenomenal to me. I did not attempt to "bug check" the native code. Going to have to rely on tests for that one. 😆
The one suggestion I might have is including a few redundant functions in here purely for backward compatible reasons, i.e. making upgrade easier (e.g. attempt).

I wanted to make sure everything worked whether or not we decided to schedule forks (rather than evaluating immediately), and there were some edge cases that failed. That was a red flag to me, so I've refactored the internal Fiber API to be more robust, and at least manually verified that it works and all tests pass regardless of evaluation strategy around forks in case we decide to change it at some point.

@jdegoes I think we just need to decide whether we want supervised threads to be the default, and what we should do about laws in https://github.com/slamdata/purescript-fork/issues/4#issuecomment-320749770.

@natefaubion All right. Give me a day to think this over and we can hash out the details tomorrow.

I've added attempt, apathize, cancelWith, and nonCanceler.

I've changed the default behavior of forkAff to be unsupervised, and added a supervise combinator instead.

This is ready to go. Would anyone like to review the README changes?

All the new changes to the readme LGTM!

Edits made, with slightly more explanatory avar stuff.

@jdegoes @garyb Should we merge this? We can do a pre-release, I guess, since there's quite a bit to look into updating.

@natefaubion Yes, let's merge and do a pre-release as well.

🎉

🎆 🍾 🎈


Implement a 404 page

Description
If you navigate to unknown url we should redirect to a 404 page.
Screenshots

Additional information
No response

Hey, i can do this tomorrow 😄

Just wanting to clarify, does it have to redirect or could it just show a 404 on that URL?

Just wanting to clarify, does it have to redirect or could it just show a 404 on that URL?

@kymppi Hey 👋
We need to create a new 404 page and redirect clients to this page.
Thanks for taking this issue, I will assign you to it.

Okay, thanks. Most likely a PR ready in 24 hours :P

@kymppi I liked it 🔥
Thank you so much for your contibution!


operator-sdk build fails with 'not enough arguments in call to r.Create'

Bug Report
What did you do?
Followed the steps to install operator SDK, create a new operator, add custom resource and a controller, then tried operator-sdk build to build my operator
What did you expect to see?
That my operator will be correctly built
What did you see instead? Under which circumstances?
operator-sdk build gelidus/krane-operator
2018/10/28 19:12:23 failed to build operator binary: exit status 2 (go: creating new go.mod: module github.com/petomalina/krane
go: finding github.com/operator-framework/operator-sdk/pkg/util/k8sutil latest
go: finding github.com/operator-framework/operator-sdk/version latest
go: finding github.com/operator-framework/operator-sdk/pkg/util latest
go: finding github.com/operator-framework/operator-sdk/pkg latest
go: finding k8s.io/apimachinery/pkg/runtime latest
go: finding k8s.io/apimachinery/pkg/apis/meta latest
go: finding sigs.k8s.io/controller-runtime/pkg/handler latest
go: finding sigs.k8s.io/controller-runtime/pkg/source latest
go: finding sigs.k8s.io/controller-runtime/pkg/runtime/signals latest
go: finding sigs.k8s.io/controller-runtime/pkg/manager latest
go: finding sigs.k8s.io/controller-runtime/pkg/client/config latest
go: finding sigs.k8s.io/controller-runtime/pkg/client latest
go: finding sigs.k8s.io/controller-runtime/pkg/runtime/scheme latest
go: finding k8s.io/client-go/plugin/pkg/client/auth/gcp latest
go: finding k8s.io/apimachinery/pkg latest
go: finding k8s.io/apimachinery/pkg/apis latest
go: finding sigs.k8s.io/controller-runtime/pkg latest
go: finding sigs.k8s.io/controller-runtime/pkg/runtime latest
go: finding k8s.io/apimachinery latest
go: finding k8s.io/client-go/plugin/pkg/client/auth latest
go: finding sigs.k8s.io/controller-runtime/pkg/reconcile latest
go: finding k8s.io/client-go/plugin/pkg/client latest
go: finding k8s.io/apimachinery/pkg/types latest
go: finding sigs.k8s.io/controller-runtime/pkg/controller latest
go: finding sigs.k8s.io/controller-runtime/pkg/controller/controllerutil latest
go: finding k8s.io/apimachinery/pkg/runtime/schema latest
go: finding k8s.io/apimachinery/pkg/api/errors latest
go: finding k8s.io/client-go/plugin/pkg latest
go: finding k8s.io/apimachinery/pkg/api latest
go: finding k8s.io/client-go/plugin latest
go: finding k8s.io/api/core latest
go: finding k8s.io/api latest
go: finding github.com/google/gofuzz latest
go: finding golang.org/x/oauth2/google latest
go: finding github.com/go-logr/logr latest
go: finding golang.org/x/crypto/ssh/terminal latest
go: finding github.com/gregjones/httpcache/diskcache latest
go: finding github.com/gregjones/httpcache latest
go: finding github.com/golang/glog latest
go: finding golang.org/x/oauth2 latest
go: finding golang.org/x/crypto/ssh latest
go: finding github.com/gogo/protobuf/proto latest
go: finding github.com/gogo/protobuf/sortkeys latest
go: finding golang.org/x/crypto latest
go: finding github.com/mattbaird/jsonpatch latest
go: finding github.com/go-logr/zapr latest
go: finding github.com/golang/groupcache/lru latest
go: finding github.com/golang/groupcache latest
go: finding github.com/golang/protobuf/proto latest
go: finding k8s.io/kube-openapi/pkg/util/proto latest
go: finding golang.org/x/time/rate latest
go: finding k8s.io/kube-openapi/pkg/util latest
go: finding k8s.io/kube-openapi/pkg latest
go: finding golang.org/x/time latest
go: finding golang.org/x/net/http2 latest
go: finding k8s.io/kube-openapi latest
go: finding github.com/googleapis/gnostic/OpenAPIv2 latest
go: finding golang.org/x/net latest
go: finding github.com/davecgh/go-spew/spew latest
go: finding go.uber.org/zap/zapcore latest
go: finding golang.org/x/sys/unix latest
go: finding golang.org/x/text/unicode/bidi latest
go: finding golang.org/x/text/secure/bidirule latest
go: finding golang.org/x/text/unicode/norm latest
go: finding github.com/google/btree latest
go: finding github.com/modern-go/concurrent latest
go: finding golang.org/x/text/unicode latest
go: finding golang.org/x/sys latest
go: finding golang.org/x/text/secure latest
go: finding cloud.google.com/go/compute/metadata latest
go: finding cloud.google.com/go/compute latest
# github.com/petomalina/krane/krane-operator/pkg/apis/krane/v1alpha1
pkg/apis/krane/v1alpha1/canary_types.go:44:25: cannot use Canary literal (type *Canary) as type runtime.Object in argument to SchemeBuilder.Register:
        *Canary does not implement runtime.Object (missing DeepCopyObject method)
pkg/apis/krane/v1alpha1/canary_types.go:44:36: cannot use CanaryList literal (type *CanaryList) as type runtime.Object in argument to SchemeBuilder.Register:
        *CanaryList does not implement runtime.Object (missing DeepCopyObject method)
# sigs.k8s.io/controller-runtime/pkg/client
/home/peto/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.6/pkg/client/unstructured_client.go:49:20: not enough arguments in call to r.Create
        have (*unstructured.Unstructured)
        want (*unstructured.Unstructured, v1.CreateOptions, ...string)
/home/peto/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.6/pkg/client/unstructured_client.go:67:20: not enough arguments in call to r.Update
        have (*unstructured.Unstructured)
        want (*unstructured.Unstructured, v1.UpdateOptions, ...string)
/home/peto/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.6/pkg/client/unstructured_client.go:145:26: not enough arguments in call to r.UpdateStatus
        have (*unstructured.Unstructured)
        want (*unstructured.Unstructured, v1.UpdateOptions)

Environment

operator-sdk version: 5a9f7d1c7dd3bfe1f19c53679eced252674e8d8c (master)

Are you writing your operator in ansible or go?
Go

Possible Solution
There may be a version mismatch with the newest kubernetes go-client, which causes the methods r.Create, r.Update and r.UpdateStatus to have 2 arguments instead of a single

@petomalina Hello, master is not compatible with previous releases. You can either switch to the latest release or even better can have a look at the migration-guide for more information on how to switch to new API.
Closing this, but feel free to ask any more questions about the new API. Thanks!

Hi @LiliC, I am trying to use the latest master and created a new project, so I believe there is nothing to migrate for me (I don't have any previous versions).

@petomalina can you share the code snippet where you call the Create function?

@LiliC I am sharing my whole operator here. I believe this may have something to do with my switch from dep to go mod, but the same error happened for me during new operator creation. I may get to this again tomorrow and try to reproduce the error in a sandbox.

@petomalina I would suggest to keep using dep since we haven't tested go modules yet.
Also can you please share the error that you see from doing:
$ operator-sdk new krane-operator
$ operator-sdk add api --api-version=krane.petomalina.com/v1alpha1 --kind=Canary
$ operator-sdk add controller --api-version=krane.petomalina.com/v1alpha1 --kind=Canary

I can see a few other discrepancies as well from the expected project structure that should be there from operator-sdk new.
Mainly that cmd/krane-operator/main.go should be cmd/manager/main.go
See the example memcached-operator for an example of the expected layout.
https://github.com/operator-framework/operator-sdk-samples/tree/master/memcached-operator

@petomalina I tried the same command and it worked for me, using master:
○ operator-sdk add api --api-version=krane.petomalina.com/v1alpha1 --kind=Canary
Create pkg/apis/krane/v1alpha1/canary_types.go
Create pkg/apis/addtoscheme_krane_v1alpha1.go
Create pkg/apis/krane/v1alpha1/register.go
Create pkg/apis/krane/v1alpha1/doc.go
Create deploy/crds/krane_v1alpha1_canary_cr.yaml
Create deploy/crds/krane_v1alpha1_canary_crd.yaml
Running code-generation for custom resource group versions: [krane:v1alpha1, ]
Generating deepcopy funcs

Are the deepcopy files now generated as it seems to have failed right before that? Can you maybe double check, thank you!

@LiliC @hasbro17 thank you both for help during debugging. I had my GO111MODULE set to on which caused the generate to fail (still don't know why tho). After setting the env to auto, the problem disappeared.
Should I open a new issue for this? It would be awesome to reset the variable for the time of installation or support it.

@petomalina We can open up a separate issue for that. The issue being that the SDK should support and be tested with Go modules.
We're still on Go 1.10 and I think modules are experimental in 1.11.
So it might be a while until we can prioritize that.

Thank you, closing

@hasbro17 @LiliC I am just giving one more update - I won't be creating a new issue:
Creating the operator completely from the SDK and then running go mod init will copy the lock files and the build passes without problems. I initialized the go mod without the lock files previously, which caused the go mod init to download newest versions that conflict with the current sdk.


Request header loss when chaining I18nMiddleware with other middleware

Describe the bug
Request headers added by other middleware are being lost when I18nMiddleware is used.
To set request header in middleware, we need to pass modified header toNextReponse.next() and NextResponse.rewrite() but they are called inside of I18nMiddleware.
To Reproduce
Just following app router setup https://next-international.vercel.app/docs/app-setup and setting request header document https://nextjs.org/docs/app/building-your-application/routing/middleware#setting-headers .
// middleware.ts
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { createI18nMiddleware } from "next-international/middleware";

const I18nMiddleware = createI18nMiddleware({
  locales: ["en", "fr"],
  defaultLocale: "en"
});

export function middleware(request: NextRequest) {
  // Clone the request headers and set a new header `x-hello-from-middleware1`
  const requestHeaders = new Headers(request.headers);
  requestHeaders.set("x-hello-from-middleware1", "hello");

  // You can also set request headers in NextResponse.rewrite
  const response = NextResponse.next({
    request: {
      // New request headers
      headers: requestHeaders
    }
  });

  // cannot pass requestHeaders argument to NextResponse.next() or NextResponse.rewrite() inside a middleware
  const responseByI18nMiddleware = I18nMiddleware(request);

  // x-hello-from-middleware1 header is lost
  // return response;
  return responseByI18nMiddleware;
}

export const config = {
  matcher: ["/((?!api|static|.*\\..*|_next|favicon.ico|robots.txt).*)"]
};

page.ts example here:
export default async function Page() {
  const t = await getI18n();
  const allHeaders = [...headers().entries()].map(([key, value]) => `${key}: ${value}`);
  return (

{t("hello")}

      {allHeaders.map((header, index) => (

{header}

      ))}

  );
}

You can see there is no "x-hello-from-middleware1" header.
Replace return responseByI18nMiddleware with return response then the header is shown, but i18n not works.
Expected behavior
Able to set request header in middleware.
It may be good if I18nMiddleware can receive argument to pass to NextResponse.next().
About (please complete the following information):

next-international version 1.2.3
Next.js version 14.0.3

Additional context
https://github.com/QuiiBz/next-international/issues/187#issuecomment-1907933546

Could this be solved inside createI18nMiddleware function at line 33, by adding the passed request when creating the response?
let response = NextResponse.next();

to
let response = NextResponse.next({ request: request });

I  tried it out on my local repo and it copies all headers... However, I am not sure this is desired in all cases... And if it solves the problem of chaining middleware.

don't know if this makes perfect sense but what about having createI18nMiddleware return a function that also takes a response? Something like
const i18nMiddleWare = createI18nMiddleware(config);

export function middleware(request: NextRequest) {
  const response = NextResponse.next({request});

  // do stuff to response;

  return i18nMiddleware(request, response);
}

In createI18nMiddleware, you would take that response if passed in and add the locale header and whatever else
export function createI18nMiddleware() {
  return function I18nMiddleware(request: NextRequest, response?: NextResponse) {
    const nextResponse =
      response || NextResponse.next({ headers: request.headers, request });

    const headers = new Headers(request.headers);

    // do i18n stuff
    // update headers object

    // upsert nextResponse headers with properties from headers object
    headers.forEach((value, key) => {
      nextResponse.headers.set(key, value);
    });

    return nextResponse;
  }
}

I'm working with chaining middlewares as in https://github.com/QuiiBz/next-international/issues/354 and my custom middlewares are doing something like my example above. It would make it so that you don't need to pass in a response, but you can if you need to do other stuff with it. My current workaround is to have i18nMiddleware be the first middleware in my chain, since it can't modify the incoming response.


caddy: remove unused code.

there are two same definations:
https://github.com/mholt/caddy/blob/04789a24467cbf47a6e9adfc270df01b57295230/caddy.go#L64-L65
https://github.com/mholt/caddy/blob/04789a24467cbf47a6e9adfc270df01b57295230/caddyhttp/httpserver/plugin.go#L716-L717
the first is unused, whether it is legacy code?

Hmm, actually I think we meant to use that... it should force a graceful shutdown to terminate after some time. In fact, I think we just need to use it right here to give the context a timeout: https://github.com/mholt/caddy/blob/04789a24467cbf47a6e9adfc270df01b57295230/caddyhttp/httpserver/server.go#L487

Closing for inactivity (should probably apply the default rather than remove the variable entirely); irrelevant for Caddy 2, anyway. :) Thanks for the contribution! Would you like to help contribute to Caddy 2? Checks like that could be very helpful.


Makes LayerView a subclass of NativeView

Fixes #574
This fix also requires setting the view of the main controller in
Main.Storyboard to a LayerView (in whichever project you’re adding C4
framework to) and having that view require a CALayer

What's the point of this?

2 points:

makes this work without modifying very much at all:

class ViewController: C4CanvasController {
    override func setup() {
        canvas.backgroundColor = C4Blue
    }
}

discussion: I'm unclear as to the need to differentiate NativeView and LayerView... For example, if I want to create a movie that has a border width, and it's subclassed native view is a NativeImageView (different from native view or layer view) we'll need to have the .border.width property in both NativeImageView and LayerView (and so on for other subclasses)... However, if most classes are by default LayerView then we don't have to copy / etc.

Prob requires a chat?


Heartbeat Custom Metric Name is Incorrect

The custom metric for heartbeat is "HeartbeatState", not "HeartBeatState" as the article shows. And the log queries are case sensitive, so using a where clause with "HeartBeatState" shows no results.

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

ID: 4b88d8c4-0013-70aa-7997-a2203afd9743
Version Independent ID: 0ab99d5e-4ebd-8cb9-3d27-efe58def249f
Content: Azure Application Insights for ASP.NET Core applications - Azure Monitor
Content Source: articles/azure-monitor/app/asp-net-core.md
Service: azure-monitor
Sub-service: application-insights
GitHub Login: @mrbullwinkle
Microsoft Alias: mbullwin

@mover333 thanks for catching that, updating now.

The update is merged internally, it will go live in the public docs between 3 PM - 4 PM UTC-7

@mover333 Thank you for bringing this to our attention!  We are going to look into this and get back to you shortly.

I can see the change on the live site already, so I will close this issue as it has been fixed. Thanks for the quick response!


display connection name on cube dropdown

In old version when you select the dropdown with connections also the connection name specified was shown. I think this was useful when you configure multiple connections.
Thanks,
Mauro

this is implemented in 2.2 already. check out the latest dev version here: http://dev.analytical-labs.com
Foodmart (foodmart) <<< Foodmart is the catalog and (foodmart) the connection name
does that work for you?


FLOPs in Tab. 3 may be incorrect

I used the following script to compute FLOPs of segformer-b0-s2 and segformer-b3-s2.
import torch
from thop import profile
from thop import clever_format

from isegm.model.is_segformer_model import SegFormerModel

def model_segformer_b0_s2():
    model = SegFormerModel( pipeline_version = 's2', model_version = 'b0', use_leaky_relu=True,
        use_rgb_conv=False, use_disks=True, norm_radius=5, binary_prev_mask=False, with_prev_mask=True,
        with_aux_output=True)
    return model

def model_segformer_b3_s2():
    model = SegFormerModel( pipeline_version = 's2', model_version = 'b3', use_leaky_relu=True,
        use_rgb_conv=False, use_disks=True, norm_radius=5, binary_prev_mask=False, with_prev_mask=True,
        with_aux_output=True)
    return model

input = torch.randn(1, 4, 256, 256)
point = torch.randn(1, 2, 3)

models = ('segformer-b0-s2', model_segformer_b0_s2()), ('segformer-b3-s2', model_segformer_b3_s2())
for model_name, model in models:
    model.eval()
    macs, params = profile(model, inputs=(input, point))
    gflops, params = clever_format([macs*2, params], "%.3f")

    print(model_name, params, gflops)

Results:
segformer-b0-s2 3.719M 3.422G
segformer-b3-s2 45.658M 24.748

It seems the numbers in Tab. 3 are more like MACS, not FLOPS.

Thank you, the discussion with FLOPs and MACs could refer to https://github.com/Lyken17/pytorch-OpCounter/tree/master/benchmark
As we use some python libs that calls them self "FLOPs", we directly use the name FLOPs

Thanks for your reply.
Yes, FLOPs ~= 2 * MACs. We first calculate the MACs and then multiply by 2 to get the FLOPs.
    macs, params = profile(model, inputs=(input, point))
    gflops, params = clever_format([macs*2, params], "%.3f")

We use the above code to calculate the FLOPs of your method and report in Tab. 5 of SimpleClick.
We may be wrong, and we are happy to run the python libs that you used.


DRILL-6331: Revisit Hive Drill native parquet implementation to be ex…

…posed to Drill optimizations (filter / limit push down, count to direct scan)

Factored out common logic for Drill parquet reader and Hive Drill native parquet readers: AbstractParquetGroupScan, AbstractParquetRowGroupScan, AbstractParquetScanBatchCreator.
Rules that worked previously only with ParquetGroupScan, now can be applied for any class that extends AbstractParquetGroupScan: DrillFilterItemStarReWriterRule, ParquetPruneScanRule, PruneScanRule.
Hive populated partition values based on information returned from Hive metastore. Drill populates partition values based on path difference between selection root and actual file path.
Before ColumnExplorer populated partition values based on Drill approach. Since now ColumnExplorer populates values for parquet files from Hive tables,
populateImplicitColumns method logic was changed to populated partition columns only based on given partition values.
Refactored ParquetPartitionDescriptor to be responsible for populating partition values rather than storing this logic in parquet group scan class.
Metadata class was moved to separate metadata package (org.apache.drill.exec.store.parquet.metadata). Factored out several inner classed to improve code readability.
Collected all Drill native parquet reader unit tests into one class TestHiveDrillNativeParquetReader, also added new tests to cover new functionality.
Reduced excessive logging when parquet files metadata is read.

Link to Jira - DRILL-6331.

@vdiravka / @parthchandra please review.

@vdiravka thanks for the code review! Addressed code review comment.

@parthchandra added two new commits:

reverted custom Stopwatch implementation and used logger checks instead.
allowed to create several non-tracking fs but only one tracking per operator context (details in prior discussion).

Looks Good. Thanks for making the changes Arina.
+1

When moving files around please preserve the history of modifications done to the file.


Including Dependencies as a php package

Hi,
I have made a WordPress plugin using your domain parser.  Just before the launch, I realized that the dependencies PECL-INTL and PECL-IDN need to be installed.
I cannot afford to put a notice to the users to install dependency first. Is there any 'way around' for this?
Or any suggestions?
Thank You.

Sorry for the late reply. intl and idn are both necessary to do what the parser does, so I'm afraid there's no way around that.


Allow clue giver to pick between two options -- the "front" or "back" of the card

I think have the option would be more fun for a first-time clue-giver, or if you feel one option isn't appropriate with your group of friends.
From the rules I think it could work like this:

Choose a wavelength: Draw 1 wavelength card from the deck. They're double sided, and the Psychic can choose the side they want to use for their clue. On most cards there's a "normal" side and a "weird" side. Don't think too hard about it: just pick the one you find most interesting!
Place the card in the slot in front of the device, with your chosen side facing forward, and read the card text so both teams can hear.

Perhaps a half-way version of this feature (that would be quick to implement) could simply be a button that lets you draw a new spectrum and it replaces the old one. Then the group has the option of deciding what they want the rule to be: one redraw allowed, infinite redraws, whatever is right for the group.

There is a "Draw a different card" feature available in Free Play and Teams modes. I'm not likely to implement any "two-sided cards" though.

Oh, I had no idea "draw a different card" was there! Thanks for the tip.


Reduce memory usage

As mentioned in #9, current image conversion pipeline uses a lot of memory by copying images instead of operating on them in-place. This PR aims to address this issue.

Made some improvements:
old @ f22c060, new @ b03878d:
name             old time/op    new time/op    delta
AdjustGamma-12      106µs ± 1%     105µs ± 1%   -0.99%  (p=0.004 n=10+8)
AutoContrast-12     118µs ± 9%     126µs ± 5%   +6.69%  (p=0.007 n=10+10)

name             old alloc/op   new alloc/op   delta
AdjustGamma-12     49.5kB ± 0%     0.3kB ± 0%  -99.40%  (p=0.000 n=10+9)
AutoContrast-12    51.6kB ± 0%     2.4kB ± 0%  -95.31%  (p=0.000 n=9+8)

name             old allocs/op  new allocs/op  delta
AdjustGamma-12       5.00 ± 0%      3.00 ± 0%  -40.00%  (p=0.000 n=10+10)
AutoContrast-12      9.00 ± 0%      7.00 ± 0%  -22.22%  (p=0.000 n=10+10)

old @ f22c060, new @ 631984f:
name             old time/op    new time/op    delta
AdjustGamma-12      106µs ± 1%      73µs ± 8%   -31.37%  (p=0.000 n=10+10)
AutoContrast-12     118µs ± 9%      97µs ± 2%   -17.82%  (p=0.000 n=10+10)

name             old alloc/op   new alloc/op   delta
AdjustGamma-12     49.5kB ± 0%     0.0kB       -100.00%  (p=0.000 n=10+10)
AutoContrast-12    51.6kB ± 0%     2.1kB ± 0%   -95.88%  (p=0.000 n=9+8)

name             old allocs/op  new allocs/op  delta
AdjustGamma-12       5.00 ± 0%      0.00       -100.00%  (p=0.000 n=10+10)
AutoContrast-12      9.00 ± 0%      4.00 ± 0%   -55.56%  (p=0.000 n=10+10)

By looking at all the benchmarks @ f22c060 though, the biggest elephant in the room seems to be the inefficient imgutil.Fit implementation:
name                  alloc/op
Grayscale/RGBA-12     49.3kB ± 0%
Grayscale/RGBA64-12   49.3kB ± 0%
Grayscale/NRGBA-12    49.3kB ± 0%
Grayscale/NRGBA64-12  49.3kB ± 0%
Grayscale/YCbCr-12    49.2kB ± 0%
Grayscale/Gray-12     49.2kB ± 0%
AdjustGamma-12        49.5kB ± 0%
AutoContrast-12       51.6kB ± 0%
Fit-12                1.07MB ± 0% # this is a lot of memory

name                  allocs/op
Grayscale/RGBA-12       4.00 ± 0%
Grayscale/RGBA64-12     4.00 ± 0%
Grayscale/NRGBA-12      4.00 ± 0%
Grayscale/NRGBA64-12    4.00 ± 0%
Grayscale/YCbCr-12      2.00 ± 0%
Grayscale/Gray-12       2.00 ± 0%
AdjustGamma-12          5.00 ± 0%
AutoContrast-12         9.00 ± 0%
Fit-12                  12.0 ± 0%

I could also optimize some parts of imgutil.Grayscale, but that would only really make a difference for images which are already decoded as image.Gray (conversion between types necessitates copying at least parts of the underlying pixel array), and it would get in the way of stride correction. This may be worthwhile to do down the road anyway, as most images in a typical manga archive are grayscale and able to be decoded as such.

Copied parts of x/image/draw into imgutil and modified them for usage with grayscale images specifically. This should be a temporary solution until https://github.com/golang/go/issues/44808 is implemented or grayscale dest fast paths are added to x/image/draw.
old @ f22c060, new @ c012e2b:
name    old time/op    new time/op    delta
Fit-12    1.26ms ± 1%    0.71ms ± 4%  -43.70%  (p=0.000 n=9+10)

name    old alloc/op   new alloc/op   delta
Fit-12    1.07MB ± 0%    0.30MB ± 0%  -72.23%  (p=0.000 n=10+10)

name    old allocs/op  new allocs/op  delta
Fit-12      12.0 ± 0%       8.0 ± 0%  -33.33%  (p=0.000 n=10+10)

Further optimization requires changing the imgutil api to take advantage of Kernel.NewScaler, WIP.

old @ f22c060, new @ 6ce5af4:
name             old time/op    new time/op    delta
AdjustGamma-12      106µs ± 1%      73µs ± 4%   -31.17%  (p=0.000 n=10+9)
AutoContrast-12     118µs ± 9%      93µs ± 5%   -21.05%  (p=0.000 n=10+10)
Fit-12             1.26ms ± 1%    0.72ms ± 2%   -42.84%  (p=0.000 n=9+10)

name             old alloc/op   new alloc/op   delta
AdjustGamma-12     49.5kB ± 0%     0.0kB       -100.00%  (p=0.000 n=10+10)
AutoContrast-12    51.6kB ± 0%     2.1kB ± 0%   -95.88%  (p=0.000 n=9+8)
Fit-12             1.07MB ± 0%    0.30MB ± 0%   -72.23%  (p=0.000 n=10+10)

name             old allocs/op  new allocs/op  delta
AdjustGamma-12       5.00 ± 0%      0.00       -100.00%  (p=0.000 n=10+10)
AutoContrast-12      9.00 ± 0%      4.00 ± 0%   -55.56%  (p=0.000 n=10+10)
Fit-12               12.0 ± 0%       8.0 ± 0%   -33.33%  (p=0.000 n=10+10)

The Grayscale implementation remains mostly unchanged, due to issues explained in https://github.com/naisuuuu/mangaconv/pull/11#issuecomment-817136588.
This seems to be about as much as is possible without bigger API changes outside of the imgutil package.
Performance of Fit can be further improved by taking advantage of *Kernel.NewScaler, however this requires changes to how the image processing pipeline works in general. This should be worthwhile, as illustrated by benchmarks:
name             time/op
Fit-12            720µs ± 2%
KernelScaler-12   394µs ± 4%

name             alloc/op
Fit-12            296kB ± 0%
KernelScaler-12  18.8kB ± 1%

name             allocs/op
Fit-12             8.00 ± 0%
KernelScaler-12    2.00 ± 0%

This work will be continued in a following PR, this time optimizing the entire image processing pipeline instead of isolated imgutil functions.


[CSL-861] Sort out unknown data checks

There was some mess with unknown data checks. Some checks were done in Txp, some checks in Pos.Types.Block.Functions. Currently they are all done in Txp and are configured by a single boolean flag in VTxContext. They are performed if we are verifying block and our software is aware of adopted protocol version. Also they are performed when we are verifying transaction in isolation (received through relay). They are not performed if adopted version is not fully known to our software.
I have also fixed a predicate to determine whether we know protocol version. There is a big comment which explains this stuff.
Some final notes:

I cherry-picked a commit by @neongreen from CSL-976 branch because there are some changes which overlap with my changes and I don't want to do an unpleasant merge. Depending on how soon CSL-976 will be merged, I will either rebase on master and remove that cherry-picked commit or @neongreen will do it in his branch.
I am 99% sure that other checks regarding unknown data are still missing. There is CSL-938 about it. So within scope of this task I didn't care about that. I am planning to do it soon but as a separate task.

@gromakovsky to be honest, I don't understand what does mean known/unknown adopted version here

our software is aware of adopted protocol version
They are not performed if adopted version is not fully known to our software.

can you explain?


Create and support a PPA

As suggested by @aahlenst in https://github.com/AdoptOpenJDK/openjdk-installer/issues/10#issuecomment-606524942, I open a new issue, because I think many downstream PPA maintainers would benefit of AdoptOpenJDK being published in a PPA.
Rationale
I want to use AdoptOpenJDK as a build time dependency in my own PPA. However, one can only depend on packages within Ubuntu's main repo or on packages from different PPAs.
In order to publish packages in a PPA, you need to create a debian source file (debuild -S) and upload it together with the original source taball to the build system. The build itself will run "offline", i.e. we can not download additional packages at build time. Therefore it is not possible to depend on @rpardini's PPA, which just downloads the pre-built binaries.
Alternatives
One could use Ubuntu's OpenJDK builds, but they have some issues preventing me from using jlink. Also, one can't use recent OpenJDK builds on older distros and have to live with their release cycle.

@aahlenst

Is it possible for us the upload the pre-built packages to a PPA?

No, you need to upload source packages. Only binaries built by the PPA build system get published.

This is going to be tough one. We have an extensive test suite that we run as part of the build process. It ensures that our packages work. This cannot be easily ported, would be needless duplication and I'm not sure the PPA system could handle it. Besides, we're not even using debuild to build our packages.
Do you have a contact at Ubuntu? Maybe we can work something out with them.

Do you have a contact at Ubuntu? Maybe we can work something out with them.

I think @doko42 is responsible for the openjdk builds on Ubuntu. Doesn't seem to be too active on GitHub, though. There are some further contact options on his launchpad profile.

So far, we haven't found the right people to talk to at Canonical.
At Adoptium, we won't be allowed to distribute builds that haven't gone through the JCK. The JCK is a proprietary Oracle product and access to it is highly restricted. Therefore, building over at Launchpad won't be possible. Even if Canonical entered into a JCK agreement with Oracle, I doubt that building at Launchpad would be possible.


Missing type="episode" for podcasts

I want to download the following episode of a podcast: https://open.spotify.com/episode/3rvzfSClqA4RRI5ZikehaI
This is not a track, or album or playlist or artist. It's a episode.

Yes please, we need this!!!


VCP in ODIM files is always 0

@adokter we defined Volume coverage pattern (https://aloftdata.eu/vpts-csv/#vcp) as having the following valid values:
12, 212, 112, 215, 121, 31, 32, 35

All BALTRAD files @stijnvanhoey has encountered so far however, have value 0 for VCP and thus fail validation. Can 0 be added to the valid values?
# download https://aloft.s3-eu-west-1.amazonaws.com/baltrad/hdf5/bejab/2022/08/19/bejab_vp_20220819T235500Z_0x9.h5
file <- "bejab_vp_20220819T235500Z_0x9.h5"
library(bioRad)
vp <- read_vpfiles(file)
vp$attributes$how$vcp
# 0

sure that works - vcp codes are mostly used in the US, which is why they are missing in EU files. I just checked the code and in case no vcp attribute is found in the file, a value of zero is returned:
https://github.com/adokter/vol2bird/blob/2810f331f039b9f7a28ad4afe06d1f7bf05ecb2c/lib/libvol2bird.c#L4753
Therefore currently 0 denotes missing

@peterdesmet should we keep them as 0 or rather convert them to ""?

“” makes more sense than 0. Can be part of the conversion (cf. 0/1 to FALSE/TRUE).

I can also change vol2bird to store NULL instead of 0, let me know.
@peterdesmet in historical data I have seen a few more VCP codes than the valid values listed above (11, 211, 21, 221, and there might be more). We may want to have the flexibility to assign our own VCP codes at some point for countries that do not have a pre-defined VCP classification. Checking whether VCP is a number may be sufficient.

@adokter Would be good if vol2bird set it to NULL, makes more sense to me.
@stijnvanhoey conversion to NULL for data with 0 would still be good
@adokter ok, I will remove enum.


[Candidate 2v2 Diamonds Edge ZH v1] Dark shadow dots in one base

Observed behaviour
There are dark shadow dots in one base.
Expected behavior
No such shadows are present.
Screenshots

Also a few more in center.


macOS: Cannot open directories by dropping on dock anymore

VSCode Version: Code - Insiders 1.19.0-insider (5b0fa2eddbe82df90fb07eea120c9447c93dbd2f, 2017-12-01T06:07:42.474Z)
OS Version: Darwin x64 17.2.0
Extensions:

Extension
Author (truncated)
Version

EditorConfig
Edi
0.11.1

vscode-standardjs
che
1.2.0

nasc-touchbar
fel
1.8.2

terraform
mau
0.0.19

vscode-language-babel
mgm
0.0.10

cpptools
ms-
0.14.3

node-debug2
ms-
1.19.0

platformio-ide
pla
0.8.2

project-snippets
reb
0.5.0

vscode-react-native
vsm
0.5.7

vscode-todo-highlight
way
0.5.11

debug
web
0.21.2

markdown-all-in-one
yzh
0.11.2

(2 theme extensions excluded)

Steps to Reproduce:

Install latest insider build
Drag a directory on the dock icon (or the icon in /Applications) - you can't.
Repeat with latest release, observe it working

Reproduces without extensions: Yes
The issue seems to be this PR here: https://github.com/Microsoft/vscode/pull/37106
As it doesn't even seem to fix the actual problem (see https://github.com/Microsoft/vscode/issues/25843) I propose reverting it so drag & drop keeps working.

@0ff I can reproduce. how did you find out it could be caused by https://github.com/Microsoft/vscode/pull/37106
@joaomoreno fyi

As this also happens when VSCode is not running at all, I just diff'ed the Insider Info.plist against the Release Info.plist, then removed the recently added LSItemContentTypes, verified it worked again and then traced the change back to this PR.
Please not that the dock is not the only place where this happens (though it's arguably the most used one). This also happens when trying to drop on the application icon in the finder itself.

Reverted: https://github.com/Microsoft/vscode/pull/39541
Thanks for the thorough investigation!


The repo is dirty. The distribution archive may be inconsistent

I am trying to submit a package rungen to opam.ocaml.org using the following steps:
https://ocaml-explore.netlify.app/workflows/publishing-a-new-package-on-opam/#for-dune-users
dune build and dune-release lint are fine.
$ dune-release lint
[ OK ] File README is present.
[ OK ] File LICENSE is present.
[ OK ] File CHANGES is present.
[ OK ] File opam is present.
[ OK ] lint opam file rungen.opam.
[ OK ] opam field description is present
[ OK ] opam fields homepage and dev-repo can be parsed by dune-release
[ OK ] Skipping doc field linting, no doc field found
[ OK ] lint /home/shakthi/rungen success

When I use dune-release distrib, I get an error:
$ dune-release distrib
[-] Building source archive
[+] Wrote archive _build/rungen-Changelog.tbz[-] Linting distrib in _build/rungen-Changelog
[ OK ] File README is present.
[ OK ] File LICENSE is present.
[ OK ] File CHANGES is present.
[ OK ] File opam is present.
[ OK ] lint opam file rungen.opam.
[ OK ] opam field description is present
[ OK ] opam fields homepage and dev-repo can be parsed by dune-release
[ OK ] Skipping doc field linting, no doc field found
[ OK ] lint _build/rungen-Changelog success[-] Building package in _build/rungen-Changelog
Done: 19/23 (jobs: 1)[ OK ] package builds[-] Running package tests in _build/rungen-Changelog
Done: 0/0 (jobs: 0)[ OK ] package tests[+] Distribution for rungen Changelog
[+] Commit b6ff5cef2cd7ed1631e568de8be13583866928d4
[+] Archive _build/rungen-Changelog.tbz
dune-release: [WARNING] The repo is dirty. The distribution archive may be
                        inconsistent.

Why does it say that the repo is dirty? It clearly created _build which is not tracked by Git. I checked git status:
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	_build/

nothing added to commit but untracked files present (use "git add" to track)

The same warning with dune-release opam pkg:
$ dune-release opam pkg
[-] Creating opam package description for rungen
[+] Wrote opam package description _build/rungen.Changelog/opam
dune-release: [WARNING] The repo is dirty. The opam package may be
                        inconsistent with the distribution.

When I try to submit the package to opam for review, it asks for opam-repository information. What should be the required values to set this up locally?
$ dune-release opam submit
/home/shakthi/.config/dune/release.yml does not exist!
Please answer a few questions to help me create it for you:What is your GitHub ID?
[press ENTER to use 'ocaml-bench']What is your fork of ocaml/opam-repository? (you should have write access).
[press ENTER to use 'git@github.com:ocaml-bench/opam-repository']Where on your filesystem did you clone that repository?
[press ENTER to use '/home/shakthi/git/opam-repository'][-] Submitting
[-] Preparing pull request to ocaml/opam-repository
dune-release: [ERROR] /home/shakthi/git/opam-repository is not a valid Git repository.

My rungen.opam file contents are as follows:
cat rungen.opam
opam-version: "2.0"
name: "rungen"
version: "0.1"
synopsis: "Generates dune files to run benchmarks from centralised config"
maintainer: "Sadiq Jaffer<EMAIL_ADDRESS>authors: "Sadiq Jaffer<EMAIL_ADDRESS>license: "MIT"
homepage: "https://github.com/ocaml-bench/rungen"
bug-reports: "https://github.com/ocaml-bench/rungen/issues"
dev-repo: "git+https://github.com/shakthimaan/rungen"
depends: [ "ocaml" "yojson" "sexplib0" ]
build: [
  ["dune" "build" "-p" name]
]
description: """
The rungen utility generates dune files to execute
[Sandmark](https://github.com/ocaml-bench/sandmark) benchmarks.
"""

Please advice.

Why does it say that the repo is dirty

That's because the repo contains uncommitted changes or untracked files. It is just a warning and not an error, dune-release will simply go on there and most likely do the right thing. The purpose of this warning is to let you know that you might release something different than what you have locally, e.g. if you forgot to commit changes to your opam file, you probably want to know about it.
Here it is true that the _build was generated by dune-release itself but considering your project uses dune, your .gitignore should contain _build and that will both fix this warning and improbe your dev experience!

When I try to submit the package to opam for review, it asks for opam-repository information. What should be the required values to set this up locally?

This the required information for dune-release to release packages for you. Your Github ID should be your own github handle, so shakthimaan, your opam-repository fork should most likely be git@github.com:shakthimaan/opam-repository.git (remember to fork https://github.com/ocaml/opam-repository first if you haven't done it yet). Finally you'll need a local clone of opam-repository on your machine and and answer that last question with the path to this clone.
To clarify a bit why this is all needed, when publishing your package to opam-repository, dune-release will move into your local clone of it, create branch there, commit the new opam file(s) to the right place, push this to your fork and then open a PR to merge this branch into the upstream opam-repository.
There's definitely room for improvement here, in particular it could create the fork for you if you haven't created it yet and could also clone the repo for you the first time as well.
We'll work on improving this but in the meantime I hope this answers all your questions and will allow you to complete your release. Please don't hesitate to reach out again if you need further help or have any other questions!

Thanks for your detailed reply. I am now using my shakthimaan GitHub handle, and updated the .opam file to use my repository. I have also forked opam-repository and cloned it locally. dune-release publish and dune-release opam pkg are fine.
$ dune-release publish
[-] Skipping documentation publication for package rungen: no doc field in rungen.opam
[-] Publishing distribution
[-] Publishing to github
[?] Push tag Changelog to git@github.com:shakthimaan/rungen? [Y/n]
Y
[-] Pushing tag Changelog to git@github.com:shakthimaan/rungen
[?] Create release Changelog on git@github.com:shakthimaan/rungen? [Y/n]
Y
[-] Creating release Changelog on git@github.com:shakthimaan/rungen via github's API
[+] Succesfully created release with id 37907444
[?] Upload _build/rungen-Changelog.tbz as release asset? [Y/n]
Y
[-] Uploading _build/rungen-Changelog.tbz as a release asset for Changelog via github's API

$ dune-release opam pkg
[-] Creating opam package description for rungen
[+] Wrote opam package description _build/rungen.Changelog/opam

But, dune-release opam submit is failing with:
$ dune-release opam submit
[-] Submitting
[-] Preparing pull request to ocaml/opam-repository
[-] Fetching https://github.com/ocaml/opam-repository.git#master
[-] Checking out a local release-rungen-Changelog branch
[-] Pushing release-rungen-Changelog to https://github.com/ocaml-bench/
dune-release: [ERROR] run ['git' '--git-dir' '.git' 'push' '--force'
       'https://github.com/ocaml-bench/' 'release-rungen-Changelog']: exited with 128

Why is it picking https://github.com/ocaml-bench which is mentioned in the description section of the opam file?

The first thing that strikes me is that it picked Changelog as the tag earlier, your changelog file must have a format it's not recognizing. I think you change it that way:
# Changelog

## 0.1 - January 14, 2021
### Added
- META files for dune release

It should then properly pick 0.1 as the version. Note that if you don't want to follow the expected changelog format there are CLI options you can use to pass the version yourself rather than letting dune-release infering it from the changelog.
As to the error your seeing, it seems that the URL to your remote fork is misconfigured. Could you run dune-release config and paste the output here so I can better help you fix this?

Sorry, what is the expected ChangeLog format? The output of dune-release config is as follows:
 $ dune-release config
user: ocaml-bench
remote: https://github.com/ocaml-bench/
local: /home/shakthi/opam-repository/
keep-v: <unset>
auto-open: <unset>

We should better document the changelog format but basically it reads the first word of the first header (rank 2 or higher) as the version to release.
It will ignore rank 1 hearders IIRC but it didn't here because it was confused by the header syntax that were mixed:
# Changelog
==========

either just the leading # or the ======== should work but the two together I'm not sure how it's interpreted.
If it doesn't properly ignore the first header please open an issue about this as it might be a bug.
Your remote is indeed misconfigured. What you can see here is your global dune-release configuration, the remote should point to your fork of opam-repository so probably something like git@github.com:shakthimaan/opam-repository.
You can set it using the following command:
dune-release config set remote <url to your fork>

I'd advise you to use a git@github.com:user/repo URL so that it uses your setup SSH key instead of asking for your password when you want to push there!

I now use the version number as specified in the dune-release README and removed the rank1 header:
$ (master) cat CHANGES
## v0.0.1 (2021-02-11)
### Added
- Meta files for dune release

The tag now gets picked up correctly:
 $ (master) dune-release tag
[-] Extracting tag from first entry in CHANGES
[-] Using tag "v0.0.1"
[?] Create git tag v0.0.1 for HEAD? [Y/n]
Y
[+] Tagged HEAD with version v0.0.1

I have updated ~/.config/dune/release.yml:
$ cat ~/.config/dune/release.yml
user: shakthimaan
remote: git@github.com:shakthimaan/rungen
local: /home/shakthi/opam-repository/

So, for every different remote package, I need to update the remote before submitting a request? I now get a Github API error: "Validation Failed" when trying to submit the package to opam-repository:
 $ dune-release opam submit
[-] Submitting
[-] Preparing pull request to ocaml/opam-repository
[-] Fetching https://github.com/ocaml/opam-repository.git#master
[-] Checking out a local release-rungen-0.0.1 branch
[-] Pushing release-rungen-0.0.1 to git@github.com:shakthimaan/rungen
[?] Open PR to ocaml/opam-repository? [Y/n]
Y
[-] Opening pull request to merge branch release-rungen-0.0.1 of git@github.com:shakthimaan/rungen into ocaml/opam-repository
dune-release: [ERROR] Could not retrieve pull request URL from response, unexpected Github API error: "Validation Failed"

Updated ~/.config/dune/release.yml as required and was able to push the rungen package to opam.ocaml.org through https://github.com/ocaml/opam-repository/pull/18176.


Update Azure SQL Database resource limits

Added two item limits "database per server" and "DTUs per server" to the existing "Other SQL Database limits" table.

Databases per server: up to 5000

DTUs per server: 45000

Hi @yiruxue, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

#sign-off

Hi @yiruxue, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

#sign-off

@yiruxue
Thank you for your contribution. The change has been applied to content.


A syntax analysis problem

Hello,
nice tool, works well with AIX <IP_ADDRESS> and bash 4.3.30.
The shellmetrics 0.5.0 tool pass all your tests, after I changed all "run script" statements to "run" (I use shellspec 0.20.2).
Unfortunately my favorit shell, the "ksh", is not supported today. On the other hand shellspec and shellmetrics does not support "csh" or "tcsh" also.
I do some tests based of my scripts, the calculated value seems to be correct. But sometimes your syntax analysis will not fit.
#!/bin/bash
function func1 { echo '1'; }
case "$1" in
  1) func1 ;&	<< should handled like ;;
  2) func1 ;;
  3|5) echo '3' ;;	<< only one path is counted, but this are two
  4) echo '4' ;;
  *) : ;;
esac
exit 0

On the other hand, the number of pathes are not counted well for some "if" statements also.
#!/bin/bash
function func1 { echo '1'; }
if [ "$1" -lt 0 -a "$2" -gt 10 ]; then	<< only one path is counted, but this are two
  func1
fi
exit 0

In a short form, nice tool.
The most other tools I know are not able to handle concatenated "if" or "case" terms and the old McCabe samples does not count the number of all pathes also, in these circumstances.
But you should add ";&" to your list of closeing statements, like the ";;", this is available in the bash also (but used only in "ksh" mostly).
A nice tool to give me some useful information to prepare new tests.
With regards,
Lutz

Hi @lutzmad, thank you for reporting.

Unfortunately my favorit shell, the "ksh", is not supported today.

Unfortunately ksh cannot support. This is ksh limitation.
Parsing shell script code is very difficult. In fact, ShellMetrics does very few code parsing. Supported shells has built in code formatter. I don't think it was made as a code formatter, but when display defined function, it will be formatted.
$ bash -c 'foo() { case a in (*) echo ok; esac }; typeset -f foo'
foo ()
{
    case a in
        *)
            echo ok
        ;;
    esac
}

Using this technique greatly reduces the code patterns to be analyzed. However, ksh displays defined function as is it.
$ ksh -c 'foo() { case a in (*) echo ok; esac }; typeset -f foo'
foo() { case a in (*) echo ok; esac };

To support ksh, we need true shell script parser. There seem to be some parsers, but I haven't tried them.
By the way, I think the syntax of ksh is almost the same as bash, so I think you can parse it using bash. Do you know the ksh syntax that bash cannot parse? I would like to know that syntax.

On the other hand shellspec and shellmetrics does not support "csh" or "tcsh" also.

ShellSpec and ShellMetrics is targeted POSIX compliant shells. It cannot be supported because the syntax of csh and tcsh is very different. And I am not familiar with csh and tcsh.

func1 ;&	<< should handled like ;;

Oh. It is a bashism (kshism) I forgot. There is also ;;&. This is probably easy to support. But I little busy now. I welcome the pull request. 😀

3|5) echo '3' ;;	<< only one path is counted, but this are two

if [ "$1" -lt 0 -a "$2" -gt 10 ]; then	<< only one path is counted, but this are two

ShellMetrics does not support styles like foo && bar. To tell the truth, I am not familiar with how to calculate cyclomatic complexity. There is some variants and I think depends on it.  I know there is CCN1, CCN2 and modified CCN aka CCN3.
https://blog.feabhas.com/2018/07/code-quality-cyclomatic-complexity/
https://www.fujitsu.com/jp/group/fst/en/services/pgr/function/mccabe.html
lizard has --modified option.

-m, --modified        Calculate modified cyclomatic complexity number,
which count a switch/case with multiple cases as
one CCN.

We need some more research is needed before making any changes.
I think first example ( 3|5) ) can be supported.  Removing the spaces around | as preprocessing, and formatting, then it can be distinguished from the string because space is added.
$ bash -c 'foo() { case a in a|b) :; esac; echo "a|b)"; }; typeset -f foo'
foo ()
{
    case a in
        a | b)
            :
        ;;
    esac;
    echo "a|b)"
}

Second example ([ "$1" -lt 0 -a "$2" -gt 10 ]) is difficult. However, I do not recommend using it because ShellCheck warns you.
if [ "$1" -lt 0 -a "$2" -gt 10 ]; then
                ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.

For more information:
  https://www.shellcheck.net/wiki/SC2166 -- Prefer [ p ] && [ q ] as [ p -a q...

Hello Koichi Nakashima,
thanks for your detailed answer.

To support ksh, we need true shell script parser. There seem to be some parsers, but I haven't tried them.
By the way, I think the syntax of ksh is almost the same as bash, so I think you can parse it using bash. Do you know the ksh syntax that bash cannot parse? I would like to know that syntax.
On the other hand shellspec and shellmetrics does not support "csh" or "tcsh" also.

ShellSpec and ShellMetrics is targeted POSIX compliant shells. It cannot be supported because the syntax of csh and tcsh is very different. And I am not familiar with csh and tcsh.
    func1 ;& << should handled like ;;

Oh. It is a bashism (kshism) I forgot. There is also ;;&. This is probably easy to support. But I little busy now. I welcome the pull request. :-)

You are right, I use the bash mode of shellspec and shellmetrics to check my ksh scripts. This works well in general. As long as the bash 4 is available.
The only new syntax moved from ksh to bash is ;& (in case). And ;;& became available with zsh.
Yes, csh and tcsh are not POSIX compliant and use a different syntax.
Thanks for your nice tools,
with regards,
Lutz
p.s.
Sorry for the sample, shellcheck does not aggree to my way to write scripts. But the suggestions from chellcheck are sometimes not verry usefull, if you are on AIX systems. The shellcheck tool is a nice tool to check Linux shell scripts.


Chat Template Tokenization?

Hello there, can we use the library for tokenizing a chat template (messages consisting of system, user and assistant)?
Thanks in advance :)

Hi, yes you can use the library for this purpose. The easiest way would be to take a string representation of the chat template with the messages included, and just tokenizing that. Alternatively, you can write your own code which tokenizes each part of the template separately and combines them, adding special tokens as needed.


Request documentation for adding Ignite to an existing project (if possible)

I have an existing project that I think would benefit from Ignite's capabilities. The README only seems to show a path for starting a project from scratch, so I'm left unsure as to whether adding the tool an existing project is even supported. Would love some explicit mention of the scenario and any potential approaches (supported or otherwise), if possible.

@prometheas I appreciate you asking! Infinite Red hasn't really done projects where we're adding Ignite to an existing project, so it hasn't been top of mind for us. What you might try is looking at the boilerplate folder and taking cues from there, or, alternatively, spinning up a new Ignite project and moving over existing code into it. Good idea though!


Fix all deprecation warnings in tests

There are a ton of deprecation warnings. Since the repo is almost up to date with the latest ember version, we should investigate and fix these deprecation warnings.

Closing in favor of #240


Next

:tada: This PR is included in version 9.0.1 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Reduce QSM boilerplate

At the moment all the quick-check state-machine from consensus use the scaffolding described in this blogpost. Each new test requires around 500 LOC of boilerplate. If we continue using QSM we should abstract this away.
Also, we need to evaluate if the scaffolding above is suitable for running parallel tests.

One example where abstraction would be applicable is the lockstep function, which is defined separately in each state-machine test setup, though the definitions are very similar:

test-storage.Test.Ouroboros.Storage.LedgerDB.OnDisk

lockstep :: Eq1 r
         => Model    r
         -> Cmd   :@ r
         -> Resp  :@ r
         -> Event    r
lockstep m@(Model _ hs) cmd (At resp) = Event {
      eventBefore   = m
    , eventCmd      = cmd
    , eventResp     = At resp
    , eventAfter    = Model mock' (hs' <> hs) -- new references override old!
    , eventMockResp = resp'
    }
  where
    (resp', mock') = step m cmd
    hs' = zip (toList resp) (toList resp')

test-consensus.Test.Consensus.ResourceRegistry.hs

lockstep :: (Eq1 r, Show1 r, IOLike m)
         => Model m      r
         -> At    m Cmd  r
         -> At    m Resp r
         -> Event m      r
lockstep m@(Model _ hs) c (At resp) = Event {
      before   = m
    , cmd      = c
    , after    = Model mock' (hs <> hs')
    , mockResp = resp'
    }
  where
    (resp', mock') = step m c
    hs' = zip (newHandles resp) (newHandles resp')

    newHandles :: Resp r -> [r]
    newHandles (Resp (Left _))            = []
    newHandles (Resp (Right (Unit ())))   = []
    newHandles (Resp (Right (Spawned t))) = [t]
    newHandles (Resp (Right (Threads _))) = []

https://github.com/input-output-hk/ouroboros-network/issues/4116 is a related issue that proposes to explore the use of the quickcheck-dynamic package in Conensus, which seems to require less boilerplate code to run state-machine tests


compiling error 'premake5.lua:18: attempt to call global 'symbols' (a nil value)'

Hi all,
Anyone knows what does the error:
'recastnavigation/RecastDemo/premake5.lua:18: attempt to call global 'symbols' (a nil value)' mean? It occurs when I try to run 'premake5 gmake' from the RecastDemo folder.
Thanks in advance!

Hi @Siqi-Wang47,
I could get rid of this error by adding an "=" sign at the lines where it occurred.
For instance,  symbols "On" at line number 18 becomes symbols = "On".


Update Microsoft.Data.SqlClient dependency to v3.0.0

Release notes: https://github.com/dotnet/SqlClient/blob/main/release-notes/3.0/3.0.0.md
Notable changes:

This version has built-in support for Azure managed identities and could potentially allow us to simplify our own support for this.
This version has built-in automatic retry support for transient errors (in preview). This could potentially replace our customer implementation.

@cgillum
Please take a look at PR #33 - it essentially reverts changes that introduced Azure Managed Identity support and adds reference to Microsoft.Data.SqlClient package v3.0.0

PR merged! This will go out with the v0.10.0 release.


Implement a withEvents() mixin

Feature request
Use case(s)
I was creating a PR for https://github.com/shprink/web-components-todo/pull/9 and other implementations had a really easy way to fire events. We do have emit(), but it might be simpler to just provide a slightly more opinionated way of triggering events that support both elem.fnCall = handler and elem.addEventListener() styles for the consumer, as well as provide elem.fnCall(detail) for the author.
I ended up creating this implementation within that PR and copy / pasted it between examples that used Skate. It might be a good idea to throw it into core as it's a very common pattern.
// Mixin for auto-defining functions that emit events.
const withEvents = (Base = HTMLElement) =>
  class extends Base {
    // Since observedAttributes are called only once, we can use that as a hook
    // to do any one-time setup we need upon definition.
    static get observedAttributes() {
      (this.events || []).forEach(e => {
        const name = `on${e[0].toUpperCase() + e.substring(1)}`;

        // Allows the following for the consumer:
        //
        // - elem.onEvent = fn
        // - elem.addEventListener('event', fn)
        //
        // Allows the following for the author:
        //
        // - this.onEvent(detail)
        Object.defineProperty(this.prototype, name, {
          get() {
            if (!this.__events[e]) {
              this[name] = () => {};
            }
            return this.__events[e];
          },
          set(fn) {
            this.__events[e] = detail => {
              fn(detail);
              emit(this, e, { detail });
            };
            if (this.triggerUpdate) {
              this.triggerUpdate();
            }
          }
        });
      });
      return super.observedAttributes;
    }
    __events = {};
  };

The nice thing about this is that it supports both the DOM way if triggering events, as well as the Reacty way of just passing down functions as props. It also will queue a render when the prop is set if using the withUpdate() mixin.

There is an event prop type in the new @skatejs/element.


Uncaught TypeError: Cannot read property 'reload' of undefined

Uncaught TypeError: Cannot read property 'reload' of undefined
It happens when I navigate from another react-router page to a page that has MultiClamp component(s)
sometimes the error is
TypeError: this.multiClamp is undefined

@zamlahani
I guess you are clamping a react element, like:
<MultiClamp>

{longText}

</MultiClamp>

The react-multi-clamp dosen't support that. Just clamp pure text:

  <MultiClamp>
    {longText}
  </MultiClamp>

ah I see... It works! thank you so much, your library is cool!

My pleasure :)


The pull pipeline should fail if old PR is still active during automated pull

Description:
We have a pull pipeline which run after every 6 hours to fetch the latest changes from the portal. This pipeline creates a PR that requires a manual approval so If the PR is not approved and completed before the next pull run then it should fail the pipeline instead of just giving the message. See screenshot attached.

Screenshots

Hi @nishantmittal6239,
this seems to match my use-case so I think a better option might be for you to comment out the complete operation if PR is still active - this line
# az repos pr update --status completed --id $PRid --bypass-policy true --bypass-policy-reason "Automated pull request" > /dev/null 2>&1
Then you will see additional updates to the active PR instead - and each update based on the latest commit to 'main' if there has been any other changes in between.
Works quite well for me!

@nishantmittal6239 , @jsandquist,
Do you think this is something we should change in terms of the default behavior, or provide as an additional option?

An additional option could be fine - to communicate that there is an alternative way the client might prefer or at least consider.

@jsandquist - do you want to make a contribution to the pipeline with this as an option?


Elastic distributed training with Lightning

🚀 Feature
This is a feature request to be able to run distributed training jobs with Lightning, where the number of nodes may increase/decrease over time. For example, a distributed training job could start off with 1 node, and then more nodes could be added to the cluster later, at which point the job would include those nodes in the training process.
Motivation
We do a lot of distributed training (involving 4-8 p4d.24xlarge/p3dn.24xlarge EC2 instances on AWS), and due to these gpu servers being in-demand for cloud distributed training in general, we very frequently face EC2 insufficient capacity issues when we try to launch an node group of 4-8 such servers within the same AZ. This applies for on-demand instances, and is even more true for spot instances.
So, typically, we'll only be able to immediately launch 1-2 GPU nodes, with the rest becoming available hours (or even 1+ days) later. If Lightning can do elastic distributed training, however, we can immediately start the job with the 1-2 servers that are immediately available, and then resume the training job as more nodes become available and join the cluster.
When using spot instances, another motivation point would be to add fault-tolerance to the training job, so that the job can continue as spot instances come/go throughout the training job, greatly reducing the cost of training (~50%+ savings, depending on the AWS region). For example, we could have 1 on-demand instance and multiple spot instances per job, to be much more cost efficient due to fault-tolerance from elastic training. Less training iteration cost --> more iterations --> faster results!
Pitch
Ideally, it would be cool if we can specify min_nodes and max_nodes parameters in the Lightning Trainer (which are only valid when the ClusterEnvironment is based on multiple nodes, for example), and then launch training in Kubernetes/SLURM/etc.
Then, when the node count changes, I think this can be handled a few different ways. I'm not an expert here since I don't have any experience with elastic, distributed training, but some example projects that handle this are Horovod Elastic and torchelastic. I think torchelastic will simply stop the job and restart the training pods on k8s once there's a node count change, and then our training script would have to do any necessary check-pointing/hyper-parameter/configuration changes (such as learning rate tuning, dataloader distributed sampling with the new set of nodes, etc.).
Alternatives
I'm not sure if there are any real, viable alternatives to elastic training, apart from just waiting for all node resources to become available before training begins (which can also be expensive).
Additional context
In case this info helps, currently we're extensively using Lightning to run distributed training jobs with DDP and torchelastic on k8s, on top of AWS EKS, using p4d.24xlarge on-demand and (occasionally) spot instances.
Also, I'm not sure if/how elastic training will affect model convergence. I would love to hear any thoughts the Lightning team may have about this w.r.t how elastic training affects model convergence, based on your experience!
And finally, Lightning is AWESOME!!

If you enjoy Lightning, check out our other projects! ⚡

Metrics: Machine learning metrics for distributed, scalable PyTorch applications.

Flash: The fastest way to get a Lightning baseline! A collection of tasks for fast prototyping, baselining, finetuning and solving problems with deep learning

Bolts: Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

Lightning Transformers: Flexible interface for high performance research using SOTA Transformers leveraging Pytorch Lightning, Transformers, and Hydra.

@kiukchung - any recommendations?

torchelastic indeed enables what is described above. TL;DR torchelastic makes the training job "as elastic as possible" without requiring a ton of changes to the training script / pytorch. Just make sure you checkpoint as often as you can tolerate scaling events and reload from the most-recent checkpoint. We've tried the finer grained elastic trainers and in practice they not only do not work but they are hard to maintain and improve over time due to the user having to be uber conscious about state management.
To actually understand what is needed to support "elasticity" we have to dissect it into a few parts:

Node (or worker) membership changes (departures and admission)
DDP being able to update ranks on such changes
Your trainer (or model) being able to correct adapt to changes in world_size

1. Node (or worker) membership changes (departures and admission)
torchelastic deals with this. As @thecooltechguy correctly pointed out, when a node/worker joins/leaves torchelastic will first check whether the job is still (min - max) compliant and will restart ALL the worker procs.
2. DDP being able to update ranks on such changes
the reason why torchelastic restarts all the worker procs on scaling events is because DDP's world_size is static. We can try fixing this in two ways:

re-initialize process groups inplace on surviving procs (and this is precisely what torchelastic v0 did) but that comes with a TON of other baggage (e.g. there are other states outside of process groups that also need to be restored or reinitialized and it is hard to keep track of all of them, especially so if they are user-defined).
make DDP (process groups) elastic - this is non-trivial since it also implies you have to make the backends (nccl, gloo) elastic

3. Your trainer (or model) being able to correct adapt to changes in world_size
In the simplest case your global batch size changes when the world_size changes, and you could deal with this by adjusting the learning rate and other hyperparameters that are a function of global batch size accordingly. But even if the results are good (unless we keep track of scaling events) it will be impossible to recreate the experiments unless we reproduce the scaling events w.r.t the training progress)

Hi @kiukchung thanks for sharing this! It helped me better understand how torchelastic does elastic training.
So, is there a way to use Lightning while also doing elastic training with torchelastic?
Resuming from the latest checkpoint upon a restart won't be an issue I think, but I'm wondering how we could change things like the num_nodes parameter of the Trainer upon a torchelastic restart, update learning rate, etc.
Would love any pointers for this, thanks! :)

@thecooltechguy happy to help/provide context! Assuming you have the following:

some code in your training script that loads from "the-most-recent-checkpoint"
no special ddp (process_group) initialization (e.g. that you are just going through lightning to get this done).

Things should work for you almost out-of-the-box. Check out this docs page: https://pytorch-lightning.readthedocs.io/en/stable/advanced/multi_gpu.html#torch-distributed-elastic
torchelastic is exposed to the end-user as a CLI (if you've used MPI think of it as mpirun) so its completely decoupled from your training script. More info on how torchelastic works can be found here: https://pytorch.org/docs/stable/elastic/agent.html
Also, if you could share what your scheduler/infra setup is, I can point you to relevant docs/best-practices.


Added nullable annotations to Avalonia.Data.

What does the pull request do?
Adds nullable annotations to the Avalonia.Data namespace in Avalonia.Base.
This is a big one, and I'm not at all sure I've got it 100% right. A lot of code in this part of the code base was rather confused about where nulls are allowable, and on top of that, C#'s type system isn't sufficiently advanced to handle nullability in the context of our typed binding pipeline (it's missing overloading based on nullability).
I've tried to fix individual cases where annotations show that a null might be dereferenced, but I've not done any larger refactoring to make things more null-safe as this is intended to be non-breaking.

@grokys btw, how did you checked this project with net5/net6 target framework? It will show more nullable warning due to better nullability coverage comparing to netstandard.


Deck name sanitization improvements.

bors r+

Travis tests have failed
Hey @bakert,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
1st Build

     python dev.py mypy

decksite/deck_name.py:117: error: Call to untyped function "regex_pattern" in typed context
decksite/deck_name.py:121: error: Call to untyped function "regex_pattern" in typed context

Exit status: 1 (Failure)

bors r+

bors r+


Update js/ Cargo.toml to use gloo-utils for serde handling

Replace wasm-bindgen's deprecated APIs by gloo-utils

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
11 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.01%) to 98.592%

Files with Coverage Reduction
New Missed Lines
%

core/src/data/value/convert.rs
11
98.76%

Totals

Change from base Build<PHONE_NUMBER>:
0.01%

Covered Lines:
37108

Relevant Lines:
37638

💛  - Coveralls


[WIP] pact-broker: Add job for saas pact-broker service

Can one of the admins verify this patch?

Depends on: Parametrize saas organization #931

@pmacik please ping me once repos will be created with hooks in rhdt org

[test]


feat: Call ConfigureServerFrameRate in StartClient for headless clients

Fixes #2610 by calling ConfigureServerFrameRate in StartClient for headless clients

@MrGadget1024 please rebase on master.
btw my issue was for server-only mode in non-headless builds, not for clients.
i.e. if you build & run on mac and run the server but still see rendering


Support for f4 fs otg

Im trying to port to f401ceu6 device with USB-OTG-FS. My target is 1 CDC-ACM and a HID_KEYBOARD. I can generate code using the USBD_Test which generates a COMPOSITE directory under COMPOSITE/Class which contains usbd_composite.c which defines USBD_COMPOSITE_Mount_Class(). When I set up the project for the f401 I can only use USB_OTG_FS along with the cdc and hid classes. The code generator never generates the COMPOSITE classes but does generate the CDC and HID classes. The compilation fails trying to find the Mount_Class function. Any help is greatly appreciated.

Pilot error - I failed to check the "COMPOSITE" box listed in the "Software Packs/Select Components/AL94.I-CUBE_USBD_COMPOSITE/USB Composite/COMPOSITE tree. Now compiling, cross loading and enumerating on the PC.


[Epic]: Branding appsmith experience

Objective
Why now?

End users or app viewers within an enterprise have a hard time trusting the apps built on appsmith.
Potential enterprise edition users evaluate the platform with the support for branding and whitelabelling and this becomes a critical purchase factor
Agencies and enterprises with multiple clients need white labelling to ensure their clients only reach out to them and not us

Success Metrics

Metric

Faster conversion to EE

Prioritised User Stories
No response
Developer Handoff Document in Figma
No response
Test Plan
No response
RACI matrix
| ------------- | ------------- |
| Responsible   | @dilippitchika                |
| Accountable   |  @dilippitchika              |
| Consulted     | |
| Informed      |               |

@dilippitchika can we create a tag for branding that links to app viewers pod?


UI updates

Basically - removed all margins from screen. Also - using for config (and search) a vertical layout - which IMHO looks nicer. Fixed wording in some texts.
Note that I killed the main menu, and instead I put the actions on a new toolbar. IMHO - all actions should be there, but this is a major re-design. Keeping it simple here.
... and removed the setting that sets the font size. Now the app follows whatever you use in your desktop - and looks more "native".
Settings before

Settings after

Side note, this is my first time using QML. So far - not impressed. The widgets available are too trivial
and the lack of instantaneous feedback while designing UI is frustrating.  I wish it had a "hot reload". Maybe there is -
and I don't know.
The lack of markdown support (out of the box? can I configure it?) on controls/label.. is so not 2023.

Hi

There is Markdown out of the box (Not for TextArea though,
but TextEdit has it. Not sure about Labels.

https://github.com/shemeshg/pass-simple-qt/blob/main/QmlApp/TextEditComponent.qml

Hot reload available for Fegme users, I'm not sure it worth the effort


Support for Ros2 Humble

I'm running into issues trying to run Humble. Does Husanet support Humble and would it be possible to make a simple example in that case?

Hi @ketill1, yes, Husarnet supports Humble and Jazzy as well.
Please take a look at this repository and specifically the demo folder: https://github.com/husarnet/ros-docker
Here's a website showing you different ways you can connect your hosts or docker containers over the internet with Husarnet: https://husarnet.com/docs/tutorial-ros2/


Attribute visitor

Visitor for node attributes, providing read/write access via standard types, as well as variant-like access via actual attribute type.
Can be extended for additional attribute types.

@wenzhe-nrv @jbobba @silee2  Could you please take a look to this PR?

@silee2 We are waiting only for your review.


match the user responses to the OC10 format

Solves the last problem for https://github.com/owncloud/product/issues/181.

 Here is an overview of what got changed by this pull request:

Clones removed
==============
+ pkg/service/v0/users.go  -2

See the complete overview on Codacy


cant debug. missing setWebContentsDebuggingEnabled(true) method

supposedly the default WebView has setWebContentsDebuggingEnabled so that you can debug the webview. but using this webview you can't. Is there a way to debug the webview that's not this one?

@bidah AFAIK debugging of webview is already available without any additional manipulations. But anyway this is a good point, there is should be a way to call methods of native webview


head: simplify rbuf_n_bytes() in head.rs

This pull request simplifies the code in rbuf_n_bytes() to use existing abstractions provided by the standard library. Specifically, use Read::take() to limit reading to the first n bytes, and use io::copy() to read from the input and write directly to the output.

wahou, simplified indeed!