Please add Abbotsford, BC, Canada.

Here's a link to the letter I made to Abbotsford's Mayor and Council.
https://docs.google.com/document/d/1b2R7CHsO5XjV4EKICNemYPwIRHIOKRWj9atIo7FkZ4s/edit?usp=sharing
Doesn't matter where you live, ACAB.
Thanks!

Would be sick to get BC up there! We will take a look!

this is addressed in #339 including dividing the template list by country, then region

What's up with this issue, is it ready to be closed?


Background image resizing

I've been using Bootstrap with Vegas by @jaysalvat (https://github.com/jaysalvat/vegas). In an earlier version of Bootstrap 2.0-wip (one of the iterations with the black drop-down menus) background resizing worked just like in the Vegas plugin tutorials.
In the Bootstrap 2.0 version I'm currently using (master branch commit: 98d1659ef836cb879ce7d6260351ff35e96ebd25), the background image gets distorted instead of maintaining its aspect ratio on resizing.
Has some definition of the background changed since?

not that i'm aware of - maybe mark knows of something?

Nope, no change to the body or anything like that. We don't change the background image at all.


Annual review of the OWNERS file (2023): Maartje moved to Emeritus Maintainer

Ref: https://github.com/cert-manager/cert-manager/issues/6231
/kind documentation
NONE

/approve
/lgtm


From Nested Scene To Other Nested Scene Navigate

Version
Tell us which versions you are using:

react-native-router-flux v3.38.0
react-native v0.42.3

Expected behaviour
I have a nested scenes.I want to navigate from nested scene to other nested scene.But i didn't navigate.Actually here is example :
<Scene>
           <Scene key="scene1">
                <Scene key="scene2" hideNavBar component={Scene2}/>
            </Scene>
            <Scene key="scene3">
                <Scene key="scene4" hideNavBar component={Scene4}/>
            </Scene>
</Scene>

I want go to scene4 page on scene2 page.Here is code block that i have tried:
on `Scene2` component:
Actions.scene4();

i have tried that but i didn't happen anything also it did not throw an error.
Actual behaviour
Actually when i try this code block, it is wanted to navigate to Scene4 page
Actions.scene4() ===> Scene4 page

@aksonov can you check this issue ?

If you want to navigate from scene2 to scene4.
You should try from scene2 to scene3 instead.

Yes,I agree with you for parent child that has one child.But if parent scene called scene3 has multiple children,your recommendation is fail.Let me give an example for this situation that I mean.
<Scene>
           <Scene key="scene1">
                <Scene key="scene2" hideNavBar component={Scene2}/>
            </Scene>
            <Scene key="scene3">
                <Scene key="scene4" hideNavBar component={Scene4}/>
                <Scene key="scene5" hideNavBar component={Scene5}/>
                <Scene key="scene6" hideNavBar component={Scene6}/>
            </Scene>
</Scene>

Parent scene has multiple children in this example.When I want to navigate from scene2 to scene5,your recommendation is fail because of I use Actions.scene3.if i use this code block ,I go to scene4 not scene5.Because if you navigate parent key of scene3, you will go to the page that parent key has first child.I hope I explain clearly myself.Have you any idea for this situation ?

I had the same problem!!! any solution guys?????????????????

Same problem. I tried to set initial scene prop of nested scenes dynamically to point the navigator which nested scene to render when navigating to parent but has no luck. Has anyone any appropriate solution?

+1

<Scene>
           <Scene key="scene1">
                <Scene key="scene2" hideNavBar component={Scene2}/>
            </Scene>
            <Scene key="scene3">
                <Scene key="scene4" hideNavBar component={Scene4}/>
                <Scene key="scene5" hideNavBar component={Scene5}/>
                <Scene key="scene6" hideNavBar component={Scene6}/>
            </Scene>
</Scene>

To route from scene2 to scene4 you need to do following
Actions.scene3()
Actions.scene4()

Another working example
<Scene key="root">
    <Scene key="auth" tabs={false} hideNavBar>
        <Scene key="login" component={LoginComponent} title="Login"/>
    </Scene>
    <Scene key="drawer" component={NavigationDrawer} close>
        <Scene key="main" tabs={false}>
            <Scene key="home" component={HomeComponent} initial/>
        </Scene>
    </Scene>
</Scene>

Here to go from login scene to home scene I had to do
Actions.drawer();
Actions.main();
Actions.home();

@0mkara as i wrote above this solution has much overhead

@kirillpisarev that is true, I think it is costing my app much more time to move from scene to scene. Does anyone else experiences that behaviour ?

Really don't like double , triple calling ... Is there better solution ? Thanks

+1

Any update on this?

Hello  Aksonov,
I want to send data from one router child to another router child in React Native Router flux, the call is happening after sometime, meanwhile the page is rendering, so I am not getting data populated, Can you help me to fix this issue.
Here is how my router  structure.

Is there a solid guide to navigating through nested scenes already?


Support for importing a dataset of mapping records

When loading external concept maps, it's sometime convenient to compute the mappings themselves in their own dataset (rather than reducing them all into a single ConceptMap object). Therefore we should support the ability to import a Dataset of the expanded values along with the underlying concept map.

Closing. This has been merged and released.


Improve failed Kobo authentication behavior in the frontend

After entering incorrect credentials, it would be better to keep the login modal active and specifically say that the credentials are invalid. Right now, it just closes the modal and shows a generic failed to load message (screenshot 1 below)
If the login fails, can we not show the layer as toggled on in the navigation and legend? Currently the UI still shows the layer as active even though it shouldn't have loaded (screenshot 2)

Originally posted by @wadhwamatic in https://github.com/WFP-VAM/prism-frontend/issues/557#issuecomment-1246093325

Linked to https://github.com/WFP-VAM/prism-app/issues/753


Renaming tabs?

I think we should change the tabs at the top of the page from:
search / your district / parties / legislators / votes / blog / data / about
to
Option 1:
search / geography / party / chamber / summary / blog / data / about
and then maybe reorder
search / chamber / party / geography / summary / blog / data / about
Option 2:
votes / chambers / parties / geographies / summary / blog / data / about

Sounds good. I implemented Option 1. @JeffreyBLewis How's that?

I kind of liked it before. Seemed more obvious to users. I'm mostly talking
about the 'geography' tab.
Luke Sonnet
PhD Student, Political Science
UCLA
On Mon, Jan 16, 2017 at 12:03 AM, adamboche<EMAIL_ADDRESS>wrote:

Sounds good. I implemented Option 1. @JeffreyBLewis
https://github.com/JeffreyBLewis How's that?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/JeffreyBLewis/WebVoteView/issues/127#issuecomment-272715827,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFDZp_nGaoMC5VO-vjCVzCp3LZ3C9q5Cks5rSm1mgaJpZM4Lj-pW
.

Maybe.  'Your district'  doesn't really seem to capture it either.   Geography also seems like more of a parallel category to the others.

Fair enough. I'd just as soon nix/bury summary altogether to increase the
probability of clicks to cool stuff.
Luke Sonnet
PhD Student, Political Science
UCLA
On Mon, Jan 16, 2017 at 12:23 PM, JeffreyBLewis<EMAIL_ADDRESS>wrote:

Maybe. 'Your district' doesn't really seem to capture it either. Geography
also seems like more of a parallel category to the others.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/JeffreyBLewis/WebVoteView/issues/127#issuecomment-272790214,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFDZpyI2DvxlLDYTESRZIwXb0GFU5GmJks5rSxregaJpZM4Lj-pW
.

Agreed.  That tab could be great, but at the moment isn't.  I would be
happy to drop it for now.   Coming up with to drop list of good summaries
would be a great target for future development.

--
Jeffrey B. Lewis
Professor and Chair
Department of Political Science
University of California, Los Angeles
BOX 951472, 4289A Bunche Hall
Los Angeles, CA 90095-1472
President
The Society for Political Methodology

I don't think chamber, party, or geography are great labels. I agree we should orphan the summary page right now or at least take it off the top tier navigation.

I vote for, perhaps misleadingly but I think people would figure it out:
Members, Parties, Districts
I think it is clear, it gets you to where you need to be. I agree geography is more parallel, Jeff, but it is a bit misleading!

Can we close this or should I implement my suggestion. All I need is one vote and I'll pull the trigger (sick voting rule huh) either way.


Generate binary data in precompilation or build step

It would be nicer to generate the necessary serialised shape data in package build / precompilation or similar.
This would ensure:

Removes a race condition if we run the package with an empty cache simultaneously in multiple processes.
Slightly nicer for any "long delays" to not appear in first-run, but rather in the build step.

Perhaps there is some inspiration to be drawn from TimeZones.jl

Once we fix #12 , solving this issue becomes harder. This is because the version of the artifact we require could vary at runtime depending on the tzdata version currently active.
Empirically, the tzdata version doesn't change all that often, so we should aim to implement something that makes the common case fast, but the rare case still correct (i.e. avoid the race condition issue if possible always).


Make missing settings in the environment files with defaults

Between versions, new settings are added each time.  But, when an environment.yml file misses these settings, the application will/might crash.  This is bad implementation !
Solution:

In the settings loader, implement defaults

Implemented in the settings_loader


Package does not work with new csproj file format

The package is currently not compatible when using in new csproj file format, e.g. with .NET Core. The "content" folder is not supported.
Would be great to have this package working with .NET Core!

Just noticed your comment. I'll take a look later.
In general, this package was never planned to be used outside of the windows / test infra. And personally, I'm using docker for such infrastructure dependencies.

ok, one of the questions is - how do you plan using the package in .net core?

Also remembered of the https://github.com/mysticmind/mysticmind-postgresembed/ - @mysticmind found one of the ways to use the package in a dotnet project directly.


API page resource list not cleaning when changing to a different tab results in impossibility of searching when returning to API tab

After a search on the API tab the latest searched resource is saved so when returning to the API tab the resource is shown as follows:

However, it is not possible to search for that same resource unless the page is reloaded or another resource is selected.

There are some fixes for the api page in this PR: https://github.com/nuvla/ui/pull/1187
But I just checked and this is not one of them. Will look into it and decide if I make it part of the same PR (probably).

Ok, doesn't seem like an critical bug. Just to keep track of it.

Checked on master branch, bug is still there. No reason to be in pending. If there is a reason please put it in a comment.


JsonDecode(ApplicationError("No field for inferring message type is set"))

Hi, I'm getting this error for a message when trying to use the library.
JsonDecode(ApplicationError("No field for inferring message type is set"))
Seems like it's encountering a message type the library doesn't know?
I can give you the source code if needed but it's almost the same as the example.
If you can't reproduce it I am willing to give you the bot token so you can see it happening.
Also taking a look at trying to fix it myself, but I cannot promise anything on that front.

Deleted and recreated the bot and it started working again. I still don't know what caused this. I modified the library to print every message it decodes in JSON form and that told me roughly where the crash was, but I couldn't see anything that might've caused it.

Thanks for your report! It would be great if you could provide a minimal example that has this behavior. We might try to reproduce the bug on our own some time in the future; sadly I am pretty busy for at least a week still.
But your issue made me think, that we could include more logging for debugging purposes -- preferably via the official log crate.

Thanks for the reply.
I can't provide an example at the moment because as far as I can tell it's a certain type of message that caused it. I've deleted the bot which the problem was happening with and created a new one, which fixed it (as it started fresh from the newest message). The library is working perfectly so far.
If I encounter the issue again I'll determine how to reproduce it.

I believe this issue was resolved in 0.5.0.


Duplicates a lot of code from the attackstyles plugin. Basically just need to extend what attackstyles does in tracking the players current combat style to also provide the xp per hp damage dealt info from the wiki (https://oldschool.runescape.wiki/w/Combat_Options) on a per skill basis for each combat style. Probably should be refactored but does work.

This should definitely be refactored if you're going to copy hundreds of lines of code from another plugin.

so the way I would want to refactor the attackstyle stuff is to have an AttackStylesManager in the client.game package. But the main issue I see with this is that the attackstyle plugin needs to have it's warnings be fired only after the attack style is changed (which is seen in the onVarbitChanged event. So a possible race condition if the attackstyle tracking is refactored out of the attackstyles plugin itself is that the onVarbitChanged event fires for the attackstylesplugin before the AttackStylesManager gets the onVarbitChanged event to update the attack style.
A potential solution is to have a publisher/subscriber system where things can subscribe to an attackstyle changed event list in the AttackStylesManager that would then fire only after the attackstyle was changed within the AttackStylesManager.
Thoughts?

@Nightfirecat I made the requested changes to refactor out the attack style and equipped weapon tracking. Now that tracking is done in its own manager to which both the xp tracker plugin and attack styles plugin subscribe to weaponchanged and attackstylechanged events to get the info they need.

Realized I was missing copyright headers for a few of the added files. Should be fixed now.


CI: 2.4.6, 2.5.5, 2.6.2, jruby-<IP_ADDRESS>

Description
Updates the CI matrix
Also: Removes an old setting from Travis. See https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration
Why are we doing this?
Check against latest.
Benefits
We will know that it still works as intended.
Drawbacks
...

Coverage increased (+0.05%) to 97.239% when pulling 1208b42f308652af6e1c2438bab0cec200ca61d4 on olleolleolle:patch-1 into 41e1edeaa3b66d59e717b03de9a7bbaf4a05d484 on piotrmurach:master.

Coverage increased (+0.05%) to 97.239% when pulling 1208b42f308652af6e1c2438bab0cec200ca61d4 on olleolleolle:patch-1 into 41e1edeaa3b66d59e717b03de9a7bbaf4a05d484 on piotrmurach:master.

@piotrmurach Now that 2.3 is also EOL, perhaps the CI matrix could be pruned?

Thank you! ❤ I believe that if it is easy I should support as many Ruby versions as possible. 2.3 may be EOL but you will probably find tools and production systems that still use it. I'm sure the time will come but there is no need to rush.


HARP does not exit model loading state after attempting to load invalid model.

If you open up HARP, type in an invalid path, and try to load, a window with an error message will appear. After closing the window, the load button is still semi-transparent with the text "loading...", and there is the message "loading <INVALID_PATH>... if this takes a while ..." in the middle of the plugin window. It seems to be stuck here.

Frank, do you still have this issue? I can't replicate it. I think this was fixed in a past commit, but I must have forgotten to close the issue.

Yes, the state issue seems to be fixed, but the bad path is now added to the dropdown and the GUI link to attempt to open the HuggingFace Space is still added.

Closing for now as this is no longer reproducible. The remaining issues are now captured by #143.


arch/arm64/src/imx9/imx9_usdhc.c: Simplify eventwait logic and remove…

… race condition
There is a race condition when timeout and completion interrupts occur at the same time.
Fix this and simplify the eventwait code.

tested with sdstress, 200 iterations with 300 10k files
sdstress -r 200 -b 10000 -f 300

tested again with sdstress 4000 iterations over weekend, without errors. Will now merge this


Unhandled rejection Error: Can't set headers after they are sent.

I'm getting this error sometimes, what can possibly be happening?

I think you are trying to set the headers after micro already sent the response.
You are calling send() before setting headers?

I discovered what's going on: I thought send() would end the response and return from all logic but actually I have to return manually. This is a pain point with micro(and vanilla node.js), because if I have many places with send() in the same route but different modules I have to check res.headersSent a lot

send() DOES end the response. There's no way send() would be able to "return from all logic" by itself, looking at how JavaScript is designed. You would have to do return send() for that... 😊

but you agree with what I have to do? Check res.headersSent before every module executing in the request?

No, I don't get that part. Reading from top to bottom, you can expect everything BEFORE send(), including everything AFTER send() (if you don't use return) to be executed. So if you want something to be executed after the response was sent, place it after send() and there's something that is required to generate the response, you need to place it before send()... 🙈

It will be easier with a example:
module.exports = (req, res) => {

await authorization(req,res); // inside authorization there are some validations that can return send(403)
if(!res.headersSent) {
    await bootstrapSession(req, res); // again, more validations that can return send(403)
    if(!res.headersSent) {
         await routeLogic(req, res); // again, more validations that can return send(403)
         if(!res.headersSent) {
              render(req, res); // will do some stuff and return send(200)
         }
    }
}

I suggest making each of these methods return a value based on which you can then decide if you want to return or not. Like:
const authNeeded = await authorization(req,res)

if (authNeeded) {
  return
}

you are totally right :)


Add agent's availability in chat widget

It would be helpful for users to see if any agent is online. We can even have offline mode.
Currently there is nothing shown irrespective of agent's availability.

good idea @rosinghal! what do you think is the best way to display this information in the chat?

@reichert621
When agents are available
Open chat window - 'Agents availlable'
Close chat window - show default color
When agents are not available
Open chat window - 'Agents not availlable'
Close chat window - gray color the chat icon

@rosinghal I'm thinking of starting off with a pretty simple UI for this, something like:

what do you think?

@reichert621
Looks, nice. What about when agents are not available?

maybe just this for now?

Looks good @reichert621.

(I'll also make the text editable in case you want to customize it, e.g. "We're not available at the moment" vs "Agents are offline")

@rosinghal @timgl this should be ready now in our latest version! (https://github.com/papercups-io/chat-widget/pull/46)
for this to work, just add the following to your config:
config: {
  // ...
  showAgentAvailability: true,
  // ...and if you want to customize the text:
  // agentAvailableText: "Agents available",
  // agentUnavailableText: "Agents not available",
}

let me know if you have any issues!

actually seeing some issues with this in production for some reason, reopening for now 😞

should be fixed now 🤞


Should we allow multiple different unit names for the same units?

Some units are equivalent, but (sometimes) go by different names. For example: torqueU / momentOfForceU and springConstU / stiffnessU from SI_Units.
Should we have multiple copies with different names, or collapse them into one "chosen" name (possibly something more general)?

The following wikipedia page does a good job of explaining the terminology of torque, moment of force and moment.  Engineers in the UK and the US use the terms slightly differently.  In some cases torque is reserved for dynamics problem (change in angular momentum) and in other cases torque is used for both dynamic and static problems.
What about introducing the idea of a synonym?  We can define the concept using our version of the terminology, but allow for synonyms that can give the same concept a different name?
With respect to stiffness versus spring constants, stiffness is a more general concept.  A spring has stiffness, but so does a metal bar, or a structure.  I guess we could think of spring stiffness as a special case of stiffness in general?

Looks like you forgot to past in the link?
Yes, synonyms will definitely be needed!  And 'specialization' is a special kind of synonym.

Oops.  Here is the link I was referring to:
https://en.wikipedia.org/wiki/Torque
Here is another one that discusses stiffness:
https://en.wikipedia.org/wiki/Stiffness

This is now a duplicate of #166


memory leak while unmounting the lottie component

Description
The Lottie React Native component seems to be causing a memory leak when unmounted. After the component is unmounted, the device does not release the memory, which causes the RAM usage to spike up.
Haven't checked in Android devices yet.
Steps to Reproduce

Mount a list of Lottie components inside a modal-like component
Unmount the component continuously
Watch the RAM level spike up

Code

import {useState, useRef, useEffect} from 'react';
import {View, Text, StatusBar} from 'react-native';
import LottieView from 'lottie-react-native';

StatusBar.setHidden(true);

const lottieImage = require('./assets/money_mouth_face.json');
const RE_RENDER_LIMIT = 50;
const INTERVAL_LIMIT = 1500;
const LOTTIE_VIEW_COUNT = 12;

export default function App() {
  const [show, setShow] = useState(false);
  const renderCountRef = useRef(0);

  useEffect(() => {
    const lastIntervalRef = setInterval(() => {
      if (renderCountRef.current >= RE_RENDER_LIMIT) {
        setShow(false);
        clearInterval(lastIntervalRef);
      } else {
        renderCountRef.current++;
        setShow(p => !p);
      }
    }, INTERVAL_LIMIT);
  }, []);

  if (renderCountRef.current >= RE_RENDER_LIMIT) return <Text>Done...</Text>;

  return (
    <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
      {show ? (
        Array.from({length: LOTTIE_VIEW_COUNT}).map((p, idx) => {
          return (
            <LottieView
              source={lottieImage}
              style={{height: 40, width: 40}}
              key={idx}
              autoPlay
              renderMode="HARDWARE"
            />
          );
        })
      ) : (
        <Text>Re-rendering...</Text>
      )}
    </View>
  );
}

Repo: https://github.com/pSapien/lottie-memory-leak
https://user-images.githubusercontent.com/26534891/232324421-0737fd99-9731-482d-b6b5-7be5c644b282.mov
Expected behavior:

When the Lottie React Native component is unmounted, I expect the device to release the memory used by the component, which should prevent the app's RAM usage from spiking up.

Actual behavior:
When the Lottie React Native component is unmounted, the device does not release the memory used by the component, causing the memory leak.
Versions
lottie-react-native: 6.0.0-rc.3, 6.0.0-rc.2, 5.1.5

This is a very accurate representation of things. We have been using animationref.current. Reset() on unmount but this has to be automatic process.

This is a very accurate representation of things. We have been using animationref.current. Reset() on unmount but this has to be an automatic process.

Well, I went ahead and wrote this in the LottieView library component itself
  componentWillUnmount(): void {
    if (this.props.autoPlay) this.reset();
  }

Although the reset command is being triggered, the problem still persists.

ahh i m not sure of the behavior with class components. we use it like this
in conjugation with react-navigation. This is how it looks like.
On Mon, Apr 17, 2023 at 12:36 PM Prateek Thapa @.***>
wrote:

This is a very accurate representation of things. We have been using
animationref.current. Reset() on unmount but this has to be an automatic
process.
Well, I went ahead and wrote this in the LottieView library component
itself
componentWillUnmount(): void {
if (this.props.autoPlay) this.reset();
}
Although the reset command is being triggered, the problem still persists.
—
Reply to this email directly, view it on GitHub
https://github.com/lottie-react-native/lottie-react-native/issues/1010#issuecomment-1510816228,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGGUBYF6IWX3NDMP4EMQTLXBTTY7ANCNFSM6AAAAAAXAGMLOU
.
You are receiving this because you commented.Message ID:
@.***
com>

useFocusEffect(
useCallback(() => {
if (animation.current) {
animation.current.play();
}
return () => {
animation.current && animation.current.reset();
};
}, []),
);
On Mon, Apr 17, 2023 at 1:40 PM Nikit Phadke @.***> wrote:

ahh i m not sure of the behavior with class components. we use it like
this in conjugation with react-navigation. This is how it looks like.
On Mon, Apr 17, 2023 at 12:36 PM Prateek Thapa @.***>
wrote:

This is a very accurate representation of things. We have been using
animationref.current. Reset() on unmount but this has to be an automatic
process.
Well, I went ahead and wrote this in the LottieView library component
itself
componentWillUnmount(): void {
if (this.props.autoPlay) this.reset();
}
Although the reset command is being triggered, the problem still
persists.
—
Reply to this email directly, view it on GitHub
https://github.com/lottie-react-native/lottie-react-native/issues/1010#issuecomment-1510816228,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGGUBYF6IWX3NDMP4EMQTLXBTTY7ANCNFSM6AAAAAAXAGMLOU
.
You are receiving this because you commented.Message ID:
@.***
com>

Thank you for the detailed explanation. I will try to look into that on the weekend.

Thank you for the detailed explanation. I will try to look into that on the weekend.
However, the reset method does not unmount the view. It just resets the frame. @nikitph
Do you have new architecture turned on? Meanwhile, can you try adding removeClippedSubviews on the outer view and see how it behaves? @pSapien

Thanks for your quick reply.
In our organizational code, the new architecture is not turned on.  I could see no changes by adding removeClippedSubviews though

Any solution for this?

Any news @matinzd ?

Any news @matinzd ?

I put some time into that but still not luck. I will try again on the weekend.

@matinzd would really appreciate an update on this. The library is working near perfect for us except for this problem.

Now, we have addressed the issue and the pull request is in review.
Waiting for @emilioicai with higher access to approve.

The fix is included in v6.0.0-rc.8:
https://github.com/lottie-react-native/lottie-react-native/releases/tag/v6.0.0-rc.8


hashes: Make more effort with the macros docs

A quick cleanup to try and make the docs better around our macros.
Last patch might be churn, can drop it if wanted. Came about because the macros module shows empty in the docs currently.

Interesting about needing to link them to make them show up in the docs. Sounds like a bug in rustdoc to me. But this looks good to me. Will ack.

Hey @jamillambert, as someone newer to the bitcoin_hashes crate, could you take a look at the docs with this patch applied and see if anything stands out to you as confusing or wrong? I mean to check the state of the docs after this PR not the changes in this PR.


updateddocs-features.md

WasmEdge-features-docs
Docs rephrased to make it more focused on the main topic of the text also made it intuitive to read, which is the integration of WasmEdge with Kubernetes and remove redundant information. The brief description of certain topics was done while making changes making it intuitive and user friendly while each options were kept unchanged.
What type of PR is this
docs

Thanks for your contribution! @Aryanryn09


finally fixes #27

thank you so much @ADawesomeguy for helping me big-time with this! very appreciated :) #27

lgtm, thanks for the PR!


Option to refund Proposal Deposits even on failing props

Might be nice for some communities to not have a penalty for creating a failing proposal. We can add an option to the DAO config for this. If it's enabled, in excute_close we include a refund message.

Closed with #35


shift register outputs for DIR/EN cannot exceed 2 stepper motors

I have a project where I'd like to control 12 stepper motors with one ESP32.
When writing the prototype, I found that assigning EN and DIR to shift register output, for some reason when I create virtual pins higher than 134, the library stops working.  So as a result, I can create Enable pins like
#define Stepper1EnablePin 1
#define Stepper1DirPin 2
#define Stepper2EnablePin 3
#define Stepper2DirPin 4
and everything works great, using the example code including adding a callback to SPI to send some info to update pins in the required callback.  when called the bitwise OR converts say Stepper1 Enable Pin to 129, Dir to 130, and so on.
However when adding more *stepper3 using the factory method, and using
#define Stepper3EnablePin 5... converting using the bitwise OR to convert to 134, etc the library stops working.
I am using Version 3.11 on platformio.  Any thoughts why this might be happening?

Interestingly, I can get 4 steppers to work but only with blocking move() commands.  Any thoughts if I am exceeding a queue length, or similar, that I need to be mindful of when using the stepperengine?

It would be of help, if example code can be shared, which illustrates the problem. Based on the problem description, I have no clue, what is going on. Besides, stop working means what exactly?

Sorry, not the best bugreport in the world :)  Here is some code to take a peek at.  Sorry about all the chickenscratch about as I was just getting a feel for the problem before I get out the Jlink.
main_Issue 243.zip
Per how I programmed the device, I expect a good output to look like this:
Good_Pulse_Output.zip
Unless otherwise noted, I generally get good outputs.  However, some pins magically don't work, and as I start to add more pins, I start to see problems.
Pertinent lines where pin assignment doesn't work are in 24-38.  I have them listed below for reference:
#define dirPinStepper1 129
#define enablePinStepper1 130
#define stepPinStepper1 2
#define dirPinStepper2 131  //If I number as 21, and enablePinStepper2 as 18, this works. if I number as 131 and 132 then I get what looks like an EN signal on Stepper 3. (See Video)
#define enablePinStepper2 132
#define stepPinStepper2 4
EN_Signal_Defect.zip
#define dirPinStepper3 19 //numbered as 19 this works.  If I change to 51, then stepper 4 stops outputting pulses. Steppers 1, 2, 3 unaffected. please note: Ignore this defect, I was not able to get it to reproduce easily
#define enablePinStepper3 21
#define stepPinStepper3 22
See Poor Pulse Output for if I change to 51.
Poor_Pulse_Output.zip
#define dirPinStepper4 137 //numbered as 67 this works.  If I change to 137 then stepper 3 starts outputting what looks like an EN signal. (see video) Stepper 1, 2, 4 unaffected.
#define enablePinStepper4 27
#define stepPinStepper4 23
EN_Signal_Defect.zip
If I add two more steppers, I get weird behavior again:
main_Issue 243_6Stepper.zip
#define dirPinStepper1 129
#define enablePinStepper1 130
#define stepPinStepper1 2
#define dirPinStepper2 133
#define enablePinStepper2 134
#define stepPinStepper2 4  //
#define dirPinStepper3 132
#define enablePinStepper3 131
#define stepPinStepper3 22
#define dirPinStepper4 135
#define enablePinStepper4 136
#define stepPinStepper4 23
#define dirPinStepper5 140 //adding this stepper and stepper 6 , I get EN signals on pin 19/18 (steppers 5 and 6) all other steppers not affected.  Not sure why this is.  Same behavior as previous EN Signal Problems.
#define enablePinStepper5 139
#define stepPinStepper5 19
EN_Signal_Defect.zip
#define dirPinStepper6 137
#define enablePinStepper6 138
#define stepPinStepper6 18  // OC1B in case of AVR

Also- for main Issue243.cpp, the 4 stepper file - I just tried to download myself the zip file to reproduce - and now the issue creating an EN-Like signal isn't there.  Something is really weird. I'll try to dig into it a little more with Jlink first.

I have had a look at the main issue 243 6stepper.zip file.
Findings:

spi is not used for digital pins.
setExternalPin() only strips bit 7 (external pin flag) and uses this as pin number
please check possible esp32 pinning. as per that document,  pin numbers higher than 33 cannot be used. which esp32 variant/board do you use?
you enable Serial, so pin 1 is not available.
if setExternalPin() is called every 4ms, then the call does not return the expected value and the stepper task tries on each cycle again and again.

Thanks for the reply.  A couple questions:
spi is not used for digital pins.
I am attempting to use the HSPI bus. Per https://docs.espressif.com/projects/esp-idf/en/v3.3.6/api-reference/peripherals/spi_master.html that is
#define HSPI_MISO   12
#define HSPI_MOSI   13
#define HSPI_SCLK   14
#define HSPI_SS     15
or perhaps I am mistaken? my understanding is that VSPI and HSPI are available for applications, SPI0 and SPI1 are for the ESP's flash use.  SPI is working ok as far as I can tell.
setExternalPin() only strips bit 7 (external pin flag) and uses this as pin number
got it.  So In other words, I need to use pin numbers > 170 (170 = 128+ 42, the highest ESP numbered pin per your link)   is that correct?  In syntax this could be written  as setEnablePin(43 | PIN_EXTERNAL_FLAG).
please check possible esp32 pinning. as per that document, pin numbers higher than 33 cannot be used. which esp32 variant/board do you use?
I use the ESP32 Devkit V1, which has pins exposed up to 35.
you enable Serial, so pin 1 is not available.
Just to confirm: does this mean a pin definition of 129 will collide with GPIO1?  it seems in the example from the repo then, setExternalPin(pin, value) if you set a pin to 129, will result in pinMode(1, OUTPUT).  Is that correct?
if setExternalPin() is called every 4ms, then the call does not return the expected value and the stepper task tries on each cycle again and again.
Ah I see.  read too fast. I added a register that acts as a dummy for now.
I got it working up through stepper 6, but then i had to skip some pin numbers to make it work.  The ESP appears to be crashing if I add more than 6 steppers.  See semiworking.txt.
semi_working.txt

in setExternalPin() a constant value is set: spiCommand(hspi, 0b01010101);. Apparently the shift register has nothing to do with any pin value.
The PIN_EXTERNAL_FLAG aka bit 7 marks a pin value to be external. The valid range is then 0…127. There is no relation anymore to the valid pin range.
The pin collision using value 1 is happening, because the current setExternalPin() uses this value and then sets the esp32 pin.
My expectation would be a routine like:
uint16_t spi_pins=0; // current value of the shift register
bool setExternalPin(uint8_t pin, uint8_t value) {
  uint8_t spi_pin = pin & ~EXTERNAL_FLAG;
  if (spi_pin >= 16) return !value;  // error case
  uint16_t pin_flag = 1<<spi_pin;
  spi_pins |= pin_flag;
  if (!value) {
     spi_pins ^= pin_flag;
  }

  spiCommand(hspi, spi_pins);

  // assume spiCommand never fails and sets the pin successfully
  return value;;
}

recommendation is, to first check, that the setExternalPin() is  working as expected - without any stepper or FastAccelStepper. Only the shiftregister and a measurement device (or LED connected).

the shift register i'll tighten up - i have not been using a stepper motor, only checking that step pulses are good.  I decided to write the fake spi transfer just to check if the esp32 was getting bogged down with tasks or not.  (I realize the spi transfer does nothing, sorry for the confusion)
I'll try and clarify the remaining issues when i am back (currently traveling)

Hi @gin66 thanks for looking at the code.  The main problem was that i referenced a bad array and I am frankly not sure how it worked at all.  I discovered it once i got out the jlink and lo and behold the numbers in my pinArray that held external register state were optimized out by the compiler and not watchable :)
Now it's working just fine after a really dumb mistake.  Once again, thanks for a great library.  I am closing as not a defect.
I do have a question, however: it appears from bench testing that the queue depth is shared among all steppers.  Is this true?  What I observe is if I have a stripped mainloop like this
void loop() {
stepper1->move(100);
stepper1->move(-100;
  stepper2->move(100);
  stepper2->move(-100);

  stepper3->move(100);
  stepper3->move(-100);

}
stepper3 will eventually stop getting pulses.  you can see how on the oscilloscope stepper 1 starts hogging all the CPU time eventually.  If I move to 100000 steps they all share nicely, and all steppers up to 12 keep moving.
If so, is there a way to confirm if a move() command successfully got into queue or not?  I believe a lot of the issues I saw once I corrected my code are around overwhelming the queue (assuming it is shared) this way I could write a repeat routine to attempt to re-add the command to queue.

Not a defect, developer implementation error


error launching dreambooth on colab

the error is ImportError: cannot import name 'KarrasDiffusionSchedulers' from 'diffusers.schedulers', I have tried reinstalling diffusers package or downgrade to 12.1, not working. Please help thank!
Exception importing api
Traceback (most recent call last):
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/scripts/api.py", line 27, in
from dreambooth.dataclasses.db_config import from_file, DreamboothConfig
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/dataclasses/db_config.py", line 10, in
from dreambooth.utils.image_utils import get_scheduler_names  # noqa
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/utils/image_utils.py", line 11, in
from diffusers.schedulers import KarrasDiffusionSchedulers
ImportError: cannot import name 'KarrasDiffusionSchedulers' from 'diffusers.schedulers' (/usr/local/lib/python3.9/dist-packages/diffusers/schedulers/init.py)
Error loading script: main.py
Traceback (most recent call last):
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/modules/scripts.py", line 248, in load_scripts
script_module = script_loading.load_module(scriptfile.path)
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/modules/script_loading.py", line 11, in load_module
module_spec.loader.exec_module(module)
File "", line 850, in exec_module
File "", line 228, in _call_with_frames_removed
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/scripts/main.py", line 7, in
from dreambooth.dataclasses.db_config import (
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/dataclasses/db_config.py", line 10, in
from dreambooth.utils.image_utils import get_scheduler_names  # noqa
File "/content/gdrive/MyDrive/sd/stable-diffusion-webui/extensions/sd_dreambooth_extension/dreambooth/utils/image_utils.py", line 11, in
from diffusers.schedulers import KarrasDiffusionSchedulers
ImportError: cannot import name 'KarrasDiffusionSchedulers' from 'diffusers.schedulers' (/usr/local/lib/python3.9/dist-packages/diffusers/schedulers/init.py)

The extension doesn't work, use the db notebook instead

The extension doesn't work, use the db notebook instead

a little off-topic, but still:
is it possible to create unique unknown file identifiers that are not numbered in a row?
Something like "qwerty (009).png, qwerty (034).png", etc.
Or does everything have to start with "qwerty (001).png, qwerty (002).png"?

yes it is possible, you can number them however you want


Twig files should be ignored

Twig files should be ignored, because scanning them will trigger phpcs errors.

Pull request here: https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/419

@insprintorob How are you normally invoking PHPCS that it would result in Twig files being processed in the first place? What's keeping it from processing HTML files or TXT files, for instance?

I actually wrote a script that runs phpcs with the right switches to
exclude anything besides php files, so I normally run that.
I just thought this might be useful for developers who are setting up the
WordPress coding standards for the first time, one less step they would
need to take.
On 03/08/2015 4:13 pm, "Weston Ruter"<EMAIL_ADDRESS>wrote:

@insprintorob https://github.com/insprintorob How are you normally
invoking PHPCS that it would result in Twig files being processed in the
first place? What's keeping it from processing HTML files or TXT files, for
instance?
—
Reply to this email directly or view it on GitHub
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/418#issuecomment-127134632
.


Fix broken migration scripts.

Without the fix, anything involving snapshots (e.g. database migrations and therefore a functional system) is broken.
There's probably a better, more "Sofie", way to fix this, but as I don't know no better, this works for me.

Thank you for this PR!
I believe the fix you proposed won't make the snapshots working, the issue you're having might instead be related to the value you have set in your Mongo-db, in the CoreSystem collection, the storePath property.
I instead suggest that the fixes to be made are:

make the storePath optional in the typings for CoreSystem
making changes to allow snapshots to work without having the storePath set.
add an UI to edit the CoreSystem settings.

I'll leave this PR open during the summer (as most of the team is on vacation, we won't act on this right now), and we'll put something together in August.

Hi.
The fix is working. See discussion in slack in the bbc_rd channel. Without it I have a completely broken Sofie - it refuses to run any migrations, so as soon as you load blueprints of any form, errors occur.
I can see the value in step 2 of your suggestion, but that would involve system.storePath having a sensible default value of something other than undefined.
I did look in meteor/server/coreSystem.ts and it usefully says: https://github.com/nrkno/tv-automation-server-core/blob/a416b0d2d5701221b6f319c8eef0244d61f1a18f/meteor/server/coreSystem.ts#L43
But the value isn't then set anywhere else to the best of my knowledge.

Ah, yes it seems like we are in a catch 22 situation, and should definitely take action to remedy this.

I am a little confused as to how this fix works, as 2 lines above it is throwing an error if the value is not set. But if it works then go with it for now :)
storePath is normally configured in the very first round of migrations, and I am sure that it would get correctly last I tried. But I can see that there are ways it could be not set, so I agree that it should be made more durable.
@nytamin As a default we could use a temp folder /tmp/sofie-snapshots or platform equivalent? Either that it just skips doing snapshots.

I think that it would be better (as I suggested above) to just make it optional.

Going back to the very 1st migration log line I encountered:
Error when taking snapshot:Error: ENOENT: no such file or directory, open 'undefined/System_2019-06-24_10_57_33.json'
So it's been with me from the very beginning. I'll drop mongo and start over to see if the err persists in a from-nothing scenario.

For completeness of this log, I deleted my mongodb and created a fresh one.
On Sofie load, I was prompted to run the very first migration (note, no blueprints have been loaded yet).
1st off, I get these messages when using the 'Migrate' button:
Step "Playout-gateway exists": Something went wrong, validation didn't approve of the changes. The changes have been applied, but might need to be confirmed. (Validation error: Playout-device is missing on studio0)
Step "Mos-gateway exists": Something went wrong, validation didn't approve of the changes. The changes have been applied, but might need to be confirmed. (Validation error: Mos-device is missing on studio0)
Step "studioConfig.slack_evaluation": Something went wrong, validation didn't approve of the changes. The changes have been applied, but might need to be confirmed. (Validation error: slack_evaluation is missing on studio0)
Step "Studios.settings.mediaPreviewsUrl": Something went wrong, validation didn't approve of the changes. The changes have been applied, but might need to be confirmed. (Validation error: settings.mediaPreviewsUrl is missing on studio0)
Step "Studios.settings.sofieUrl": Something went wrong, validation didn't approve of the changes. The changes have been applied, but might need to be confirmed. (Validation error: settings.sofieUrl is missing on studio0)

Checking mongo, this is where the fault starts, and then we're broken for all time:
{ "_id" : "core", "created" :<PHONE_NUMBER>427, "modified" :<PHONE_NUMBER>427, "version" : "0.0.0", "previousVersion" : null, "storePath" : "undefined" }

Bumping this since the vacations are over and this should be a fairly easy fix. I'm wondering if this is maybe actually an issue with the migrations input system. If the input from the input system is undefined, this would actually serialize as "undefined" and would pass the validation for the storePath step in 0_16_0.ts:
let system = getCoreSystem()
if (!system) return 'CoreSystem not found!'
if (!system.storePath) return 'CoreSystem.storePath not set!'
if (!_.isString(system.storePath)) return 'CoreSystem.storePath must be a string!'
if (system.storePath.slice(-1) === '/') return 'CoreSystem.storePath must not end with "/"!'
   return false
}

I think that it could be as simple as doing:
migrate: (input) => {
   setCoreSystemStorePath(input.storePath || '')
},

in line 28-30

I believe what @jstarpl suggested above is correct. I pushed a fix for this that will be released in R14, that should resolve the issue.
Please reopen this if the issue if the problem persists after R14.


Update dependency left-pad to v1.3.0

This PR contains the following updates:

Package
Type
Update
Change
References

left-pad
dependencies
minor
1.0.0 -> 1.3.0
source

Release Notes

stevemao/left-pad
v1.3.0
Compare Source
v1.2.0
Compare Source
v1.1.3
Compare Source
v1.1.2
Compare Source
v1.1.1
Compare Source
v1.1.0
Compare Source
v1.0.2
Compare Source

Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you modify the PR title to begin with "rebase!".
:ghost: Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

This PR has been generated by Renovate Bot.

PR has been edited
:construction_worker: This PR has received other commits, so Renovate will stop updating it to avoid conflicts or other problems. If you wish to abandon your changes and have Renovate start over you may click the "rebase" checkbox in the PR body/description.


CLI sometimes generate a .ts, sometimes generate a .tsx

CLI sometimes generate a .tsx, sometimes generate a .ts file for the component. The picture bellow shows a slider.ts on the left, and slider .tsx on the right. Both generated by the cli. The wierder part is that the .ts one is coded with withContext()  call functions, and the .tsx one is coded with directly using and styling the original ark components. One problem I got is that sometimes I happen to get both .ts and .tsx at the same time, which of course causes problems.

@6qat,
Thank you for taking the time to report this issue. Allow me to clarify the situation.
As I started with Park UI, every snippet looked like the left side with a .ts extension. However, it became apparent that for some components like Checkbox, Slider, or Switch, a more encapsulated component design is preferable, enabling straightforward usage like <Checkbox />.
For additional insights into the rationale for this change, please refer to the GitHub Issue.
Currently, all components have been normalized to use a tsx extension. It's important to view these snippets as a foundation rather than items requiring regular updates. If your existing setup works well for you, that's great, and no further action is necessary.
If you have any more questions, please feel free to ask. Cheers.

Thank you very much for your second record time response and correction for me in just 2 days! Keep working in this awesome software. I think Park/Ark/Panda is a killer combo. Probably the foundation of the new Chakra framework. Congratulations and thank you very much for your spending time and effort to make this what it is today.


Bug Report: Removing Notes still not working

Whenever i right click a note in the editor it does absolutely nothing i don't think there's a way currently to get rid of any notes without clearing or resetting. pretty huge bug

First, you don't right click you just click a note, and again it works just fine for me.


[Idea] Add Spigot / Bungee

I would like to see an option to do this, due I want to create simple pie like "Spigot or Bungee" or "Locale on Bungee" and "Locale on Spigot" in the same metrics page, It is very tiring to have to change pages to see how the state of each metric is going

duplicate of #9, #21 and #38

Hi,
thank you for your idea, but for various reasons I cannot add a universal plugin type.

See https://bstats.org/faq :-)


Fix workflows

Fixes #4247

All other vars, that i use is also empty.
Run echo "Value: $GITHUB_RUN_NUMBER"
  echo "Value: $GITHUB_RUN_NUMBER"
  printenv
  shell: /usr/bin/bash -e {0}
  env:
    NPM_CONFIG_PROGRESS: false
    SAUCE_USERNAME:
    SAUCE_ACCESS_KEY:
    BUILD_NUMBER: $GITHUB_RUN_NUMBER-foobar
    BUILD_ID:
    JOB_NUMBER:
Value: 38

BUILD_ID and JOB_NUMBER is not secret, but also missing.


FYI: I made a PR to add material-about-library to AboutLibraries

material-about-library was meant to be able to replace AboutLibraries, so I'm not sure why you'd use both in conjunction.

I use your for overview and AboutLibs for third party libs.


Mi LED Ceiling Light support

Device model
yeelink.light.ceiling5
Device name
Mi LED Ceiling Light
Does the device require a MiCloud connection?
Yes
Anything special about the device?
It is detected by the plugin and switches are created, but property polling loops and controls are unresponsive.

Can you provide a debug log of that behavior?

Thanks for the reply, I was able to make it work by generating the device class and adding it to the modules


Upgrading to IdentityServer4 1.0.2 raises errors

Hello,
I have IdentityServer4 (1.0.1) running fine as an MVC application.
In order to resolve the issue: (GetProfileDataAsync not being invoked)
I migrated to 1.0.2 which is supposed to fix this issue according to the new release details:
#691 Always invoke profile service even if no claims requested.
Yes, my IProfileService is added to the pipeline.
Now, I can't run my APP. It compiles fine however it raises an error on:
app.Map("/api", apiApp =>
{
apiApp.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "https://localhost:5000",
ApiName = "api"
});
apiApp.UseMvc();
});
{"Could not load file or assembly 'Microsoft.IdentityModel.Tokens, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":
"Microsoft.IdentityModel.Tokens, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35"}
and If I go back to version 1.0.1 everything works well but GetProfileDataAsync does not get called
Any idea how I can resolve the issue with the new version 1.0.2?
I have tried adding the latest version of Microsoft.IdentityModel.Tokens (5.1.2) but it didn't work.
My IdentityServer4.AccessTokenValidation version is 1.0.2
Thank you in advance
Alec

i had that problem before as well - try cleaning your bin, obj, .vs and nuget cache.
or git clean -xdf

That worked. Thank you


Support for Sec-WebSocket-Protocol

When a WebSocket connection is made with the header Sec-WebSocket-Protocol, the server is supposed to send this header back in the response if the protocol is supported.
See: https://tools.ietf.org/html/rfc6455#section-11.3.4
The |Sec-WebSocket-Protocol| header field is used in the WebSocket
   opening handshake.  It is sent from the client to the server and back
   from the server to the client to confirm the subprotocol of the
   connection.

FYI how it's done in other libraries:

in http4s, the WebSocketBuilder accepts a list of headers that are passed in the response. This is quite flexible.
in Akka HTTP, it's more specific, there is an explicit subprotocol: Option[String] parameter that allows giving the value to use in the Sec-WebSocket-Protocol header

@ghostdogpr The underlying WebsocketResponse does take a list of headers, but I've forgotten to allow passing them in the Response.websocket constructor. You can work around it for now by using Response.websocket(req, outputFrames).addHeader("Sec-WebSocket-Protocol", "foo"), but a PR to specify extra headers on Response.websocket (like the other Response constructors allow) would be welcome!

Works well! PR incoming.


Allow PDBs to be stored in a compressed form

Allow customers that generate large amounts of PDBs to store these in compressed snupkg form. These symbols should be extracted when requested, on the fly. See: https://twitter.com/dotMorten/status/1070402374714281984
Follow up to: https://github.com/loic-sharma/BaGet/issues/130

You could gzip compress pdbs and store them. If users come in with Accept-Encoding: gz, serve the file raw, else de-/recompress and serve it.

@LordMike Oh now you're just trying to be clever :-)

Note that for NuGet not all clients support gzip. Support was introduced in v3.4.0 of the registration resource.

Additonal option, add caching to the unpacked files. The few files actually requested are stored in ready-to-consume form, those that aren't are permanently placed in archives.
Does a client request files from CDN's directly, or are they redirected to it from the Nuget services?

Right now, I'm leaning towards gzipping over storing snupkgs. Storing snupks introduces complexity since we need to store metadata in the database.

Does a client request files from CDN's directly, or are they redirected to it from the Nuget services?

You can do both. nuget.org services content directly from CDN, Azure DevOps uses redirection.

note that not all NuGet clients support gzip

It isn't the NuGet client who's requesting the symbols but Visual Studio doing it.

@dotMorten Sorry, my comment wasn't clear. I meant that we could gzip nupkgs as well.

Wouldn't gain you much. Assuming the zip file is already compressed with Deflate, which Gzip also uses :)

You guys are right. I'm being silly, don't mind me 😋

@dotMorten do you need the package to be identical to the one you uploaded?
I can get the argument that if the rewriting missed a crucial file, it would be bad, but then all files in a nupkg should be specced out, so no files should exist beyond those defined. Right?


ObservableRecyclerAdapter crashes when datasource is changed outside of Ui thread

Hi!
I am using the ObservableRecyclerAdapter to bind my view against an ObservableCollection in my ViewModel.
When I am updating the collection inside of my view model my code crashes and tells my that I have to do the changes on the UI Thread.
How can i do that? Or better question, what method do I need to invoke?
Currently I am invoking all methods to setup the ObservableRecyclerAdapter and the BindViewHolder method, but no success till now.
Thx for your help!
PS. using async/await pattern is not an option.

As you are not using Tasks (aync/await) an alternative option is to use some sort of dispatcher. A helper class is provided in MVVM Light that does this DispatcherHelper.RunAsync(Action action). We prefer to inject an IDispatcher interface into our view models that has implementations per platform (for example BeginInvokeOnMainThread for Xamarin Forms)

@robinTsl Your suggestion solved my problem, thx again.


IE11 issue

Issue Type:

[ ] Bug
On IE11 I have this errror :Can't resolve all parameters for ElTooltip: ([object Object], [object Object], ?).

Version & Environment:
Angular 5 , all polyfills installed , IE11 and chrome.
element-angular 0.5.7
Description:
Thanks for your recent update we are close to resolve IE compatibility.
When I load element-angular module on IE 11 I have errors belows :
Can't resolve all parameters for ElTooltip: ([object Object], [object Object], ?). and in more details
stack	Error: Can't resolve all parameters for ElTooltip: ([object Object], [object Object], ?).\n   at CompileMetadataResolver.prototype._reportError (eval code:16196:13)\n   at CompileMetadataResolver.prototype._getDependenciesMetadata (eval code:15913:17)\n   at CompileMetadataResolver.prototype._getTypeMetadata (eval code:15746:9)\n   at CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata (eval code:15228:9)\n   at CompileMetadataResolver.prototype._getEntryComponentMetadata (eval code:16061:9)\n   at Anonymous function (eval code:15531:40)\n   at CompileMetadataResolver.prototype.getNgModuleMetadata (eval code:15530:13)\n   at CompileMetadataResolver.prototype.getNgModuleSummary (eval code:15346:13)\n   at Anonymous function (eval code:15444:21)\n   at CompileMetadataResolver.prototype.getNgModuleMetadata (eval code:15422:13)
and access property "arguments" non authorized in strict mode
Please can you help me ?

Emm... there's nothing I can do about it, element-angular export ES5 by default in version 0.6.0 .
😔

Still Does not work with 0.6.0 version or 0.6.1. :'(
Element-angular is the only library which doesn't work on my project with IE throught all libraries I have installed.
I think the issue is in :
type	function ElTooltip(renderer, el, window) { this.renderer = renderer; this.el = el; this.window = window; this.elDisabled = false; this.watch = false; this.placement = 'bottom'; this.effect = 'dark'; this.visibleArrow = true; this.xPlacement = 'bottom'; this.showPopper = true; this.cache = {}; }


Unable to use KVM on OSX Yosemite

Hi,
I'm trying to install aspnet vnext on Yosemite but it seems something is going wrong.
I tried to follows the steps explained in the README.MD but, when I write source kvm.sh, I got this message
imperugo@Imperugos-MacBook-Pro:~$ source kvm.sh
-bash: kvm.sh: No such file or directory

of course any KVM command doesn't work.
Any hint?

Can you check if kvm.sh is in ~/.k/bin/kvm.sh?

How did you installed Mono? HomeBrew, Mono Website? You must use one of this methods before using that command source kvm.sh.
João Pinho
m: +351 961 905 059
p: pinho.icodebox.net
Sent from a mobile gadget, please excuse my brevity.

On 01/02/2015, at 22:43, Praburaj Thiagarajan<EMAIL_ADDRESS>wrote:
Can you check if kvm.sh is in ~/.k/bin/kvm.sh?
—
Reply to this email directly or view it on GitHub.

@Praburaj
cd ~/.k/bin/ gets No such file or directory
@jpinho
installed using Homebrew.
running mono --versionI got this message
imperugo@Imperugos-MacBook-Pro:~$ mono --version
Mono JIT compiler version 3.12.0 ((detached/a813491 Thu Dec 11 12:24:44 EST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           normal
	SIGSEGV:       altstack
	Notification:  kqueue
	Architecture:  x86
	Disabled:      none
	Misc:          softdebug
	LLVM:          yes(3.6.0svn-mono-(detached/5486eb2)
	GC:            sgen

Can you follow this post? It worked for me yesterday: https://www.jeremymorgan.com/tutorials/vnext/how-to-build-c-sharp-on-mac-osx/
I think you forgot to run brew install kvm.
João Pinho
m: +351 961 905 059
p: pinho.icodebox.net
Sent from a mobile gadget, please excuse my brevity.

On 01/02/2015, at 23:06, Ugo Lattanzi<EMAIL_ADDRESS>wrote:
@Praburaj
cd ~/.k/bin/ gets No such file or directory
@jpinho
installed using Homebrew.
running mono --versionI got this message
imperugo@Imperugos-MacBook-Pro:~$ mono --version
Mono JIT compiler version 3.12.0 ((detached/a813491 Thu Dec 11 12:24:44 EST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS:           normal
SIGSEGV:       altstack
Notification:  kqueue
Architecture:  x86
Disabled:      none
Misc:          softdebug
LLVM:          yes(3.6.0svn-mono-(detached/5486eb2)
GC:            sgen
—
Reply to this email directly or view it on GitHub.

@jpinho
I run brew install kvm, same for your post. Still getting kvm: command not found

Can you restart your machine and confirm the command again, please?
João Pinho
m: +351 961 905 059
p: pinho.icodebox.net
Sent from a mobile gadget, please excuse my brevity.

On 01/02/2015, at 23:32, Ugo Lattanzi<EMAIL_ADDRESS>wrote:
@jpinho
I run brew install kvm, same for your post. Still getting kvm: command not found
—
Reply to this email directly or view it on GitHub.

I followed the tutorial and got a project to run with localhost:5004.
I got "command not found" after I relaunched the terminal.
-bash: k: command not found

Can you run source kvm.sh again and see if k works? I can see this in the OS X instructions in home repo. Alternatively put this command in the bash profile?
Run command source kvm.sh on your terminal if your terminal cannot understand kvm.

@jpinho just rebooted my Mac but the problem still here.
@Praburaj source kvm.sh I get -bash: kvm.sh: No such file or directory

@imperugo I presume you installed kvm using homebrew right ? Can you check the location /usr/local/Cellar/kvm and reply with the contents ?

Finally I fix the problem running brew update and installing again kvm.
Thanks to all for the support

I realize this thread is more than 2 years old, but I'm having the same issue and not getting the same result.
I was able to use brew to install mono
$ mono --version
Produced this output
Mono JIT compiler version 4.6.2 (Stable <IP_ADDRESS>/08fd525 Tue Nov 22 22:06:40 GMT 2016) Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com 	TLS:           normal 	SIGSEGV:       altstack 	Notification:  kqueue 	Architecture:  amd64 	Disabled:      none 	Misc:          softdebug  	LLVM:          supported, not enabled. 	GC:            sgen
When I run brew update I get the following error
touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied error: cannot open .git/FETCH_HEAD: Permission denied /usr/local/Homebrew/Library/Homebrew/cmd/update.sh: line 522: /usr/local/Homebrew/.git/UPDATE_FAILED: Permission denied error: cannot open .git/FETCH_HEAD: Permission denied /usr/local/Homebrew/Library/Homebrew/cmd/update.sh: line 522: /usr/local/Homebrew/.git/UPDATE_FAILED: Permission denied fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied error: could not lock config file .git/config: Permission denied Already up-to-date.
I then ran
brew install kvm
and got
touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied error: could not lock config file .git/config: Permission denied Error: No available formula with the name "kvm"  ==> Searching for similarly named formulae... Error: No similarly named formulae found. ==> Searching taps... Error: No formulae found in taps.
Any ideas are appreciated


Intermixing time zones

Description of the Issue and Steps to Reproduce:
This should've been a fairly simple operation, but with intermixing time zones everything got blown up. The issue arises when having multiple time zones, those could come from localized calendar components or external services.
When I am only interested in the date (according to the timestamp), I want to neutralize the time (set it to 00:00) in a way that corresponds to the server where I store the data, let's say GMT, and the server stores nothing but the date (like many date database types does), just to intercept the argument with having time zones should solve it, because if there is no time zone only the date is left. So my approach was to do something along the lines of:
var fixTimeZoneOffset = function(date) {
    var correctedDate = moment(date); // Overcome the nasty mutability... btw., what? A mutable date component, really?
    correctedDate.hours(0).minutes(0);

    var timezoneOffset = moment.parseZone(correctedDate).utcOffset();
    correctedDate.add(timezoneOffset, "minutes");

    return correctedDate;
};

If the date object is in the same time zone as the browser, this works fine: fixTimeZoneOffset(moment("2016-01-13T13:37:00")), sweet.  But what happens when I get a date that does not correspond? Let's say the browser is set to GMT+02 (either through timezone or just being the settings the browser is run with), and we pass the following: fixTimeZoneOffset(moment("2016-01-13T13:37:00-03:00")), then I would expect the hours(0).minutes(0) part to act relative to GMT-03, not GMT+02, however the resulting time after that step will be: "2016-01-12T19:00:00-03:00" or "2016-01-12T22:00:00Z". When correcting for the offset now the result will end up in "2016-01-12T22:00:00Z" in stead of the expected "2016-01-12T00:00:00Z".
For the love of sanity, could you please change hours, minutes etc. to operate of the time zone of the actual object? It is highly unexpected to have something defined with moment("[...]+XX:XX") operate in timezone "+YY:YY".
Environment:
Browsers, combined with external data. Tested with Firefox on Ubuntu, Chrome on Ubuntu, Edge Windows 10 and Internet Explorer Windows 10, behavior is identical

There is a lot to unpack here, but I think I'll just give you some resources.
Docs explaining the difference between timezone and offset:
http://momentjs.com/guides/#/lib-concepts/timezone-offset/
Docs explaining how to use parse zone, which would fix your problem: http://momentjs.com/guides/#/parsing/
Blog post explaining moment's factory functions, which will also show you how to parse while ignoring the time: https://maggiepint.com/2016/05/14/moment-js-shows-the-wrong-date/
Why moment isn't immutable, and our plan for getting it there: https://maggiepint.com/2016/07/16/immutability-its-happening/

Also, in the future, if you are swearing, even with *, on github issues, they will get closed without a response.

Removed the swearing, will look at the links asap, thanks for those. Still doesn't change that the way to work around this became extremely complicated, I have been searching for hours to solve these issues.

I think the links Maggie gave will answer your questions, but also in general recognize that adding or subtracting time to account for time zone is not going to work well.  If you need to adjust the offset from UTC, or work in a specific time zone, we have functions for that already.


pausing actor reminder operations before placement tables updated

Signed-off-by: jigargandhi<EMAIL_ADDRESS>Description
Pausing reminder operations before actor table is updated so that duplicate reminder and timer are not updated.
Issue reference

Please reference the issue this PR will close: #3921
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Unit tests passing
[ ] End-to-end tests passing
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Specification has been updated / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Provided sample for the feature / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

@jigargandhi this is possibly fixed with this, no? https://github.com/dapr/dapr/pull/4421


add user case

Please answer these questions before submitting pull request

Why submit this pull request?

[ ] Bug fix

[ ] New feature provided

[ ] Improve performance

Related issues

Bug fix

Bug description.

How to fix?

New feature or improvement

Describe the details and related test reports.

/retest


maven-jib-plugin not passing authorization header on from.

Environment:

Jib version: 2.6.0
Build tool: Maven
OS: reproduced on macos and redhat

Description of the issue:
I'm using a local repository and seeing 'HTTP/1.1 401 Unauthorized' on the from repository due to JIB not passing the Authorization Header. The logs confirm the maven settings are being selected. I've also tried explicitly setting the credentials in the from/auth and in the docker config. The behavior is consistent, the header is never passed. The 'to' image is working correctly and passing credentials.
If I manually issue the jib curls and add the Authorization Header the requests are successful.
Full logs below but here are the excerpts of failed calls

curl -v --compressed -H 'Accept: ' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://dockercentral:5100/v2/'
HTTP/1.1 401 Unauthorized

curl -v --compressed -H 'Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://dockercentral:5100/v2/com.mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk'
HTTP/1.1 400 Bad Request

I also want to note that this has been working for over six months. It just recently broke. No build/code changes. The team that manages the repository claim no changes.
Expected behavior:
Authorization Header passed on https://dockercentral:5100/v2/ and 'from' calls.
Steps to reproduce:
mvn -s setttings.xml -Djava.util.logging.config.file=logging.properties -Djib.serialize=true -Dimage=dockercentral:5100/com.mydomain/myservice:1.0.268 jib:build
jib-maven-plugin Configuration:
<plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>jib-maven-plugin</artifactId>
      <version>2.6.0</version>
      <configuration>
            <from>
                <image>${docker-baseimage}</image>
           </from>
          <to>
              <image>${docker-serviceimage}</image>
          </to>
          <container>
              <creationTime>USE_CURRENT_TIMESTAMP</creationTime>
           </container>
      </configuration>
</plugin>

Log output:
[INFO] --- jib-maven-plugin:2.6.0:build (default-cli) @ myservice ---
[WARNING] 'mainClass' configured in 'maven-jar-plugin' is not a valid Java class: ${start-class}
[WARNING] Setting image creation time to current time; your image may not be reproducible.
[INFO]
[INFO] Containerizing application to dockercentral:5100/mydomain/myservice:1.0.268-wc1091...
[WARNING] Base image 'dockercentral:5100/mydomain.public/anapsix/alpine-java:8u221b11_jdk' does not use a specific image digest - build may not be reproducible
[INFO] Using credentials from Maven settings file for dockercentral:5100/mydomain/myservice:1.0.268
[INFO] Executing tasks:
[INFO] [=                             ] 4.2% complete
[INFO] > authenticating push to dockercentral...

Nov 20, 2020 8:45:04 AM com.google.api.client.http.HttpRequest execute
CONFIG: -------------- REQUEST  --------------
HEAD https://dockercentral:5100/v2/mydomain/myservice/blobs/sha256:ad802fec9f8c711f97571e2cbff1b45d181e07148d4367b3a8d5bca3de204df4
Accept:
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)

Nov 20, 2020 8:45:04 AM com.google.api.client.http.HttpRequest execute
CONFIG: curl -v --compressed -X HEAD -H 'Accept: ' -H 'Accept-Encoding: gzip' -H 'Authorization: <Not Logged>' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://dockercentral:5100/v2/mydomain/myservice/blobs/sha256:ad802fec9f8c711f97571e2cbff1b45d181e07148d4367b3a8d5bca3de204df4'
Nov 20, 2020 8:45:04 AM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
....
.... NOT an issue for 'to' images ...
....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.317 s
[INFO] Finished at: 2020-11-20T08:45:04-05:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:2.6.0:build (default-cli) on project myservice: Tried to pull image manifest for dockercentral:5100/mydomain.public/anapsix/alpine-java:8u221b11_jdk but failed because: registry returned error code 400; possible causes include invalid or wrong reference. Actual error output follows:
[ERROR] {"errors":[{"code":"UNAUTHORIZED","message":"[ERROR-400] DOCKER Either Authorization header is missing or invalid"}]}
[ERROR]  | If this is a bug, please file an issue at https://github.com/GoogleContainerTools/jib/issues/new: 400 Bad Request
[ERROR] {"errors":[{"code":"UNAUTHORIZED","message":"[ERROR-400] DOCKER Either Authorization header is missing or invalid"}]}
[ERROR] -> [Help 1]
[ERROR

Hi @zebu,
Jib has never sent the Authorization: header for the very first base image manifest query (in the hope that a public base image repository would just return a manifest without requiring credentials). If the registry returns 401 Unauthorized for the first manifest request without credentials, Jib will prepare a proper form of Authorization: based on the auth challenges that the registry asks for. So in this case, the server should normally return 401 with an auth challenge (e.g., the WWW-Authenticate: BASIC ... as you can see for the target image repository), and I think it doesn't make much sense that it returns 400 bad request. I don't believe Jib is making a bad request.
What's the output of this? (Update the mydomain.public portion if that's not part of a real repository name.)
$ curl -v --compressed -H 'Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://dockercentral:5100/v2/mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk'

And are you behind a proxy? For example, do you have any proxy settings in settings.xml?

Yes, proxy is configured but ignored for this domain. I just tested removing it completely with the same result.
Based on your response, it sounds like something was changed on the repository and it is no longer sending challenges?
GAML01WC1091:service bconner$ curl -v --compressed -H 'Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://dockercentral:5100/v2/public/anapsix/alpine-java/manifests/8u221b11_jdk'
* Uses proxy env variable no_proxy == 'olakscluster-dns-.eastus2.azmk8s.io,.att.com,.sbc.com,localhost,<IP_ADDRESS>'
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to dockercentral (<IP_ADDRESS>) port 5100 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=US; ST=Texas; L=Dallas; O=AT&T Services, Inc.; OU=ACSI; CN=dockercentral
*  start date: Aug 18 00:00:00 2020 GMT
*  expire date: Aug 19 12:00:00 2021 GMT
*  subjectAltName: host "dockercentral" matched cert's "dockercentral"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global CA G2
*  SSL certificate verify ok.
> GET /v2/public/anapsix/alpine-java/manifests/8u221b11_jdk HTTP/1.1
> Host: dockercentral:5100
> Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json
> Accept-Encoding: gzip
> User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)
>
< HTTP/1.1 400 Bad Request
< Server: nginx/1.15.8
< Date: Fri, 20 Nov 2020 15:28:32 GMT
< Content-Type: application/json;charset=iso-8859-1
< Content-Length: 222
< Connection: keep-alive
< X-Upstream: <IP_ADDRESS>:5100
<
* Connection #0 to host dockercentral left intact
{"errors":[{"code":"UNAUTHORIZED","message":"[ERROR-400] DOCKER Either Authorization header is missing or invalid"}]}* Closing connection 0

Based on your response, it sounds like something was changed on the repository and it is no longer sending challenges?

Basically, yes. I think previously the server sent 401 instead of 400. And it's not just the auth challenge. I think the problem is the code "400 Bad Request", and from our perspective, it is not quite right. (400 will not accompany an auth challenge anyway). The server is Sonatype Nexus, right?
And now I just realized that the server made the following output.
{"errors":[{"code":"UNAUTHORIZED","message":"[ERROR-400] DOCKER Either Authorization header is missing or invalid"}]}

which when rendered correctly is
{"errors":[{"code":"UNAUTHORIZED","message":"[ERROR-400] DOCKER Either Authorization header is missing or invalid"}]}

So probably if Jib initiated an auth workflow in a different way than directly trying to access the manifest without credentials as the first attempt (for example, like in the target repository case where Jib started with contacting GET https://dockercentral:5100/v2/), it could have worked. However, the error message says code: UNAUTHORIZED, so I think it's more appropriate for the server to return "401 Unauthorized" (plus an auth challenge) instead of "400 Bad Request." I'm not sure if Sonatype had a reason to make this breaking change or if it's unintentional, but I think it's worth filing an issue against them. It's possible that this is not a deliberate decision. (If they insist this is an intended breaking change and will return 400 going forward, we really need to think about how we can support Sonatype.) But all other registries (including Sonatype until now) return 401 if it requires authentication when accessing a manifest, and I think it really makes sense.
For now, unfortunately I can't think of any workaround.

Thanks for all of your help, I'll see what I can do from the Sonatype end.

Please keep us updated.
If you're blocked, you can use a different registry, make the base image repo public, or set <from><image>docker://... to use a local Docker daemon image. Using a local Docker image can be slow though.

Hello,
Was any solution found for this issue?
Provided workaround are not an suitable option for my case.
Regards

@zebu have you filed a bug against Sonatype? Any update?

@zebu any update on this?

@zebu any update on this?

I think we loose @zebu, but I will like to have this working. @chanseokoh Will this scenario be fixed or closed as per no reaction of zebu?

I think we loose @zebu, but I will like to have this working. @chanseokoh Will this scenario be fixed or closed as per no reaction of zebu?

It depends on whether Sonatype Nexus will fix it. I do think it's a bug in Sonatype that they will fix.

It depends on whether Sonatype Nexus will fix it. I do think it's a bug in Sonatype that they will fix.

I think the same, they wont do anything about it.

I think the same, they wont do anything about it.

Sorry, I think you misunderstood. I do think it's their bug.

Sorry, I think you misunderstood. I do think it's their bug.

Sorry, this got buried in my email with the holiday break. I don't have full visibility of the details because a separate team handles our nexus. They did knowledge there was an upgrade and it was the root cause. Before our internal ticket was closed, they noted they made a code fix and were working with Sonatype for something more permanent. If interested, I can try and get more information.

Sorry, this got buried in my email with the holiday break. I don't have full visibility of the details because a separate team handles our nexus. They did knowledge there was an upgrade and it was the root cause. Before our internal ticket was closed, they noted they made a code fix and were working with Sonatype for something more permanent. If interested, I can try and get more information.

@zebu thanks for the update. So what did Sonatype say about https://github.com/GoogleContainerTools/jib/issues/2898#issuecomment-731270470? Did they admit that it's their bug to have introduced a breaking change that changed the return code from Unauthorized (401) to Bad Request (400)? Will they fix it? Is Jib working fine right now? It'd be helpful to us if you provide more details.

@zebu thanks for the update. So what did Sonatype say about https://github.com/GoogleContainerTools/jib/issues/2898#issuecomment-731270470? Did they admit that it's their bug to have introduced a breaking change that changed the return code from Unauthorized (401) to Bad Request (400)? Will they fix it? Is Jib working fine right now? It'd be helpful to us if you provide more details.

It may take some time to pull this information together. I only know that was posted to our internal ticketing system which doesn't have a lot of details. I'll open a new ticket requesting details.
What I do know:
Nexus 3.23.0. JIB was working fine.
Nexus 3.27.0. JIB started seeing the issue.
An internal patch was made to correct the issue. Sonatype was engaged for a long term fix.

It may take some time to pull this information together. I only know that was posted to our internal ticketing system which doesn't have a lot of details. I'll open a new ticket requesting details.
What I do know:
Nexus 3.23.0. JIB was working fine.
Nexus 3.27.0. JIB started seeing the issue.
An internal patch was made to correct the issue. Sonatype was engaged for a long term fix.

I was able to get some more details. The issue started with the Nexus 3.27.0 upgrade. There was a change in the nexus principle which broke how our custom authentication plugin handled anonymous users. A ticket was opened with Sonatype but they would not address the issue from their side. We updated our custom plugin to handle the change in behavior.

I was able to get some more details. The issue started with the Nexus 3.27.0 upgrade. There was a change in the nexus principle which broke how our custom authentication plugin handled anonymous users. A ticket was opened with Sonatype but they would not address the issue from their side. We updated our custom plugin to handle the change in behavior.

Thanks. Could you clarify one thing? Which one is true?

The issue (that you see the return code Bad Request 400) is because of the presence of your custom auth plugin. Normal Sonatype users won't hit this issue. (Nothing to be done on the Jib side, so we can close this issue.)
Sonatype did make this change to return Bad Request in this situation, so all Jib users on Nexus 3.27.0 will hit the issue. The auth plugin is irrelevant. You just implemented your own workaround through the custom auth plugin. (Jib needs to do something to support Nexus.)

Thanks. Could you clarify one thing? Which one is true?

The issue (that you see the return code Bad Request 400) is because of the presence of your custom auth plugin. Normal Sonatype users won't hit this issue. (Nothing to be done on the Jib side, so we can close this issue.)
Sonatype did make this change to return Bad Request in this situation, so all Jib users on Nexus 3.27.0 will hit the issue. The auth plugin is irrelevant. You just implemented your own workaround through the custom auth plugin. (Jib needs to do something to support Nexus.)

2 is the true.
I'm user from different environment and I'm hitting the same issue

2 is the true.
I'm user from different environment and I'm hitting the same issue

Understood. Since Sonatype said they won't fix this, we will work on this as a priority to have special auth path for Sonatype.

Understood. Since Sonatype said they won't fix this, we will work on this as a priority to have special auth path for Sonatype.

I can't speak to 1 vs 2 being the root cause of the issue. I did not write the plugin and I don't have access to the code. All I can say if Nexus 3.27.0 broke our custom plugin

I can't speak to 1 vs 2 being the root cause of the issue. I did not write the plugin and I don't have access to the code. All I can say if Nexus 3.27.0 broke our custom plugin

Thanks for the info.
I set up a local Sonatype Nexus (using sonatype/nexus3 (3.27.0-03 as of now) and sonatype/nexus3:3.27.0) in hopes to reproduce this. For testing, I created both a hosted Docker repository and a proxy repository for Docker Hub. However, Jib was able to push and pull images. Sonatype Nexus correctly returns 401 Unauthorized with the message access to the requested resource is not authorized. For example with curl,
$ curl -k -v --compressed -H 'Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://localhost:5443/v2/mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk'
...
...
> GET /v2/mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk HTTP/1.1
> Host: localhost:5443
> Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json
> Accept-Encoding: gzip
> User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 401 Unauthorized
< Date: Mon, 25 Jan 2021 20:59:22 GMT
< Strict-Transport-Security: max-age=7776000
< Server: Nexus/3.27.0-03 (OSS)
< X-Content-Type-Options: nosniff
< Content-Security-Policy: sandbox allow-forms allow-modals allow-popups allow-presentation allow-scripts allow-top-navigation
< X-XSS-Protection: 1; mode=block
< WWW-Authenticate: BASIC realm="Sonatype Nexus Repository Manager"
< Docker-Distribution-Api-Version: registry/2.0
< Content-Type: application/json
< Content-Length: 113
<
* Connection #0 to host localhost left intact
{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":null}]}

The server identifies itself as Nexus/3.27.0-03 (OSS). I see that in @zebu's case, it's NGINX. AFAIK, Sonatype runs Eclipse Jetty, and it looks like Nexus is secured behind an NGINX reverse proxy. I wonder if it isn't the NGINX proxy sitting in the middle that is intercepting the response and causing an issue. (Or the custom plugin @zebu uses. At least it's certain there are other components involved.) Probably the actually Sonatype repository is behind the proxy at X-Upstream: <IP_ADDRESS>:5100 as shown in the header. I tried to find who returns the original error message Either Authorization header is missing or invalid but searching on the internet effectively shows up nothing. I don't feel strongly that the issue is on Jib or Sonatype.
As Jib and Sonatype seem to work correctly and this seems like an isolated instance in a specific user environment, I'm a bit hesitant to implement a special handling to Jib at the moment. If Jib didn't work with Sonatype outright, we would have received a lot of user reports and have seen the error message in multiple places.

Thanks for the info.
I set up a local Sonatype Nexus (using sonatype/nexus3 (3.27.0-03 as of now) and sonatype/nexus3:3.27.0) in hopes to reproduce this. For testing, I created both a hosted Docker repository and a proxy repository for Docker Hub. However, Jib was able to push and pull images. Sonatype Nexus correctly returns 401 Unauthorized with the message access to the requested resource is not authorized. For example with curl,
$ curl -k -v --compressed -H 'Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json' -H 'Accept-Encoding: gzip' -H 'User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://localhost:5443/v2/mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk'
...
...
> GET /v2/mydomain.public/anapsix/alpine-java/manifests/8u221b11_jdk HTTP/1.1
> Host: localhost:5443
> Accept: application/vnd.oci.image.manifest.v1+json,application/vnd.docker.distribution.manifest.v2+json,application/vnd.docker.distribution.manifest.v1+json,application/vnd.docker.distribution.manifest.list.v2+json
> Accept-Encoding: gzip
> User-Agent: jib 2.6.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 401 Unauthorized
< Date: Mon, 25 Jan 2021 20:59:22 GMT
< Strict-Transport-Security: max-age=7776000
< Server: Nexus/3.27.0-03 (OSS)
< X-Content-Type-Options: nosniff
< Content-Security-Policy: sandbox allow-forms allow-modals allow-popups allow-presentation allow-scripts allow-top-navigation
< X-XSS-Protection: 1; mode=block
< WWW-Authenticate: BASIC realm="Sonatype Nexus Repository Manager"
< Docker-Distribution-Api-Version: registry/2.0
< Content-Type: application/json
< Content-Length: 113
<
* Connection #0 to host localhost left intact
{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":null}]}

The server identifies itself as Nexus/3.27.0-03 (OSS). I see that in @zebu's case, it's NGINX. AFAIK, Sonatype runs Eclipse Jetty, and it looks like Nexus is secured behind an NGINX reverse proxy. I wonder if it isn't the NGINX proxy sitting in the middle that is intercepting the response and causing an issue. (Or the custom plugin @zebu uses. At least it's certain there are other components involved.) Probably the actually Sonatype repository is behind the proxy at X-Upstream: <IP_ADDRESS>:5100 as shown in the header. I tried to find who returns the original error message Either Authorization header is missing or invalid but searching on the internet effectively shows up nothing. I don't feel strongly that the issue is on Jib or Sonatype.
As Jib and Sonatype seem to work correctly and this seems like an isolated instance in a specific user environment, I'm a bit hesitant to implement a special handling to Jib at the moment. If Jib didn't work with Sonatype outright, we would have received a lot of user reports and have seen the error message in multiple places.

As explained above, neither Sonatype nor Jib seems to cause or hit the issue. Both of them are working fine, and I think the issue is from a different component, but there's no more information. Closing the issue.


docker(install): switch to lima

related to https://github.com/docker/actions-toolkit/pull/201#issuecomment-1814246382
closes #210
closes #160
closes #157

@AkihiroSuda SGTY?


Make Zookeeper usage optional for KafkaContainer

Hi
Starting since Kafka 2.8 Zookeeper is now an optional component because Kafka node can act as an active controller (new "process.roles" property).
However I see from the code (configure method in the KafkaContainer class), that zookeeper.connect property is always added via environment variables:
if (externalZookeeperConnect != null) {
            withEnv("KAFKA_ZOOKEEPER_CONNECT", externalZookeeperConnect);
        } else {
            addExposedPort(ZOOKEEPER_PORT);
            withEnv("KAFKA_ZOOKEEPER_CONNECT", "localhost:" + ZOOKEEPER_PORT);
            command += "echo 'clientPort=" + ZOOKEEPER_PORT + "' > zookeeper.properties\n";
            command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n";
            command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n";
            command += "zookeeper-server-start zookeeper.properties &\n";
}

And by default Zookeeper is always started (externalZookeeperConnect is not initialized).
Also there's no API to distinguish between two modes (with and without Zookeeper) which I guess will be useful for the developers.

Hi @eddumelendez
Yes, it'd be nice to try that. Although I've never committed to the open-source. So how can I help here? Any instructions?

Thank you, @eddumelendez Do you have any suggestions/ideas regarding the design and functionality for this task?

As a first step, I would experiment with using Kafka without Zookeeper and how the container would need to be configured, to be usable in the Testcontainers context. Once you understand how this work, we would probably transition the module to allow 3 different modes:

External Zookeeper
Internal Zookeeper
Kafka as Zookeeper

You can add tests to KafkaContainerTest for the new functionality and get inspiration from the existing tests and the container implementation.

Hi @kiview
Thank you, I got your idea. Unfortunately I can't check the latest Kafka containers due to this blocker: https://github.com/testcontainers/testcontainers-java/issues/4781
So once it will be resolved I can start working on this ticket.

Hi, @kiview
Is this issue currently in progress?
If not, @ecsimsw and I would like to work on it.

Sure, have a look at it @pkeugine and @ecsimsw @ecsimsw. As outlined in the comments, you might need to have a look at https://github.com/testcontainers/testcontainers-java/issues/4781 as part of it.

pointing to kraft mode (kafka without zookeeper) documentation as a reference. @pkeugine @ecsimsw let us know if you want to discuss something. You can reach out via slack too

Further update, #4781 is not in effect anymore, so this issue has been unblocked.

thanks for the update @kiview,
@ecsimsw and I read the comments as well.
We'll focus on this issue from now on.

Hi,
A made a Kraft POC.
https://github.com/testcontainers/testcontainers-java/pull/6129
Feedbacks are welcome!

It's part of version 1.18.0