how we can handle performance in case of large datasets ?? i mean virtualization

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Will this help? I don't think I fully understand your intention. The screenshot posted is from youtube.

@hyochan what i mean is using Flatlist like this lib https://github.com/iftechio/react-native-virtualized-masonry

I think the point made by @soly2014 is a valid discussion. This issue was closed prematurely @hyochan
The documentation states the following:

Pinterest like listview made in React Native. It just behaves like the FlatList so it is easy to use.

I do not believe that statement to be entirely true: This module may have an api similar to that of a FlatList, but fundamentally, it behaves like a scrollview.
From the react native documentation:

Although this module may allow for infinite scrolling, as you keep scrolling, your data list will grow and eventually use up a lot of memory, especially if you are rendering images...
Supporting "windowing" could be a solution without needing to refactor the whole library. Users could then do something like:
<MasonryList
    data={moments.slice(offset, offset + 10)}
    {...}
    onEndReached={(): void => {
    setOffset(offset + 10);
    }}
  />

Unfortunately this is not supported at this time.

hi all, i was experiencing some heavy lag on Android when using the MasonryList with a large dataset, or when there are multiple lists that were rendered (some on out of focus screens), and was looking for a virtualized version, but have not found one that fits my use.
as a result, i've made some changes to this component, shown in the following patch.
more of a work in progress, only works for vertical atm (only using vertical in my app right now)
thanks!
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index 3458b95..effa73b 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -22,6 +22,9 @@ interface Props<T> extends Omit<ScrollViewProps, 'refreshControl'> {
     containerStyle?: StyleProp<ViewStyle>;
     numColumns?: number;
     keyExtractor?: ((item: T | any, index: number) => string) | undefined;
+    refreshOffsetInterval?: number;
+    windowOffset?: number; // to workaround empty space rendered when scrolling up
+    gutterWidth?: number; // width between columns ... only for vertical currently
 }
 declare function MasonryList<T>(props: Props<T>): ReactElement;
 declare const _default: React.MemoExoticComponent<typeof MasonryList>;
diff --git<EMAIL_ADDRESS><EMAIL_ADDRESS>index a70f495..f8f0f6a 100644
---<EMAIL_ADDRESS>+++<EMAIL_ADDRESS>@@ -9,8 +9,8 @@ var __rest = (this && this.__rest) || function (s, e) {
         }
     return t;
 };
-import { RefreshControl, ScrollView, View, } from 'react-native';
-import React, { memo, useState } from 'react';
+import { RefreshControl, ScrollView, View, Dimensions} from 'react-native';
+import React, { memo, useState, useRef, useEffect } from 'react';
 const isCloseToBottom = ({ layoutMeasurement, contentOffset, contentSize }, onEndReachedThreshold) => {
     const paddingToBottom = contentSize.height * onEndReachedThreshold;
     return (layoutMeasurement.height + contentOffset.y >=
@@ -18,14 +18,60 @@ const isCloseToBottom = ({ layoutMeasurement, contentOffset, contentSize }, onEn
 };
 function MasonryList(props) {
     const [isRefreshing, setIsRefreshing] = useState(false);
-    const { refreshing, data, innerRef, ListHeaderComponent, ListEmptyComponent, ListFooterComponent, ListHeaderComponentStyle, containerStyle, contentContainerStyle, renderItem, onEndReachedThreshold, onEndReached, onRefresh, loading, LoadingView, numColumns = 2, horizontal, onScroll, removeClippedSubviews = false, keyExtractor, } = props;
+    const { refreshing, data, innerRef, ListHeaderComponent, ListEmptyComponent, ListFooterComponent, ListHeaderComponentStyle, containerStyle, contentContainerStyle, renderItem, onEndReachedThreshold, onEndReached, onRefresh, loading, LoadingView, numColumns = 2, horizontal, onScroll, removeClippedSubviews = false, keyExtractor, refreshOffsetInterval=500, windowOffset=0, gutterWidth=0 } = props;
     const { style } = props, propsWithoutStyle = __rest(props, ["style"]);
+    const offset = useRef(0);
+    const [refreshOffset, setRefreshOffset] = useState(0);
+    const items = useRef({});
+
+    const _renderItem = (col, i, el) => {
+        const outOfView =
+            ((items?.current?.[col]?.[i]?.offset ?? 99999) <
+            (offset?.current ?? 0) - Dimensions.get("window").height  - windowOffset)
+            ||
+            ((items?.current?.[col]?.[i]?.offset ?? 0) >
+            (offset?.current ?? 0) + Dimensions.get("window").height)
+        if (outOfView) {
+            return (
+            <View style={{ height: items?.current?.[col]?.[i]?.height ?? 100 }} key={`masonry-empty-spacer-${col}-${i}`}/>
+            );
+        }
+        return (
+            <View
+            key={keyExtractor === null || keyExtractor === void 0 ? void 0 : keyExtractor(el, i)}
+            onLayout={({ nativeEvent }) => {
+                const itemsCopy = items?.current ?? {};
+                const itemsColumn = itemsCopy[col] ?? {};
+                itemsColumn[i] = {
+                offset: nativeEvent?.layout?.y ?? 0,
+                height: nativeEvent?.layout?.height ?? 0,
+                };
+                items.current = { ...items?.current, [col]: itemsColumn };
+            }}
+            >
+            {renderItem({ item: el, i })}
+            </View>
+        );
+    };
+
+    useEffect(() => {
+    return () => {
+        offset.current = 0;
+        items.current = {};
+    };
+    }, []);
+
     return (<ScrollView {...propsWithoutStyle} ref={innerRef} style={[{ flex: 1, alignSelf: 'stretch' }, containerStyle]} contentContainerStyle={contentContainerStyle} removeClippedSubviews={removeClippedSubviews} refreshControl={<RefreshControl refreshing={!!(refreshing || isRefreshing)} onRefresh={() => {
                 setIsRefreshing(true);
                 onRefresh === null || onRefresh === void 0 ? void 0 : onRefresh();
                 setIsRefreshing(false);
             }}/>} scrollEventThrottle={16} onScroll={(e) => {
             const nativeEvent = e.nativeEvent;
+            const offsetCurrent = nativeEvent?.contentOffset?.y ?? 0;
+            offset.current = offsetCurrent;
+            if (Math.abs(offsetCurrent - refreshOffset) > refreshOffsetInterval) {
+            setRefreshOffset(offsetCurrent);
+            }
             if (isCloseToBottom(nativeEvent, onEndReachedThreshold || 0.1))
                 onEndReached === null || onEndReached === void 0 ? void 0 : onEndReached();
             onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
@@ -42,13 +88,16 @@ function MasonryList(props) {
                 return (<View key={`masonry-column-${num}`} style={{
                         flex: 1 / numColumns,
                         flexDirection: horizontal ? 'row' : 'column',
+                        paddingRight:(num < numColumns-1) ? gutterWidth : 0
+                        // paddingRight:16
                     }}>
                 {data
                         .map((el, i) => {
                         if (i % numColumns === num)
-                            return (<View key={keyExtractor === null || keyExtractor === void 0 ? void 0 : keyExtractor(el, i)}>
-                          {renderItem({ item: el, i })}
-                        </View>);
+                            // return (<View key={keyExtractor === null || keyExtractor === void 0 ? void 0 : keyExtractor(el, i)}>
+                          return _renderItem(num, i, el)
+                          {/* {renderItem({ item: el, i })} */}
+                        // </View>);
                         return null;
                     })
                         .filter((e) => !!e)}

Hey @j-cheung Better would be if you can fork out the library and provide this patch. I think this is a much needed thing if we have to maintain performance

hi @iarmankhan, i'll look into it when i'm free, feel free to do it as well. i only did the patch because i was mostly focused on trying to get the change on my production app asap. thanks.


flux_install and flux_sync deprecation date

Hello,

The datasources flux_install and flux_sync are deprecated, with a warning about their removal in the future.

Is there some timeline for the deprecation? Those resources were removed from provider's documentation but they keep working. I'm asking because for our systems it's going to be a big change, so we would like to prepare for it. Just not sure if we have to prepare now.

@alialperak the flux_bootstrap_git resource is GA, it  uses the same code as flux bootstrap and does the same thing: installs, upgrades or reconfigures Flux.
For Flux, Terrafrom state has no value, as Flux knows how to manage itself from Git, it detects changes in its configuration and corrects drift.

@alialperak the flux_bootstrap_git resource is GA, it  uses the same code as flux bootstrap and does the same thing: installs, upgrades or reconfigures Flux.
For Flux, Terrafrom state has no value, as Flux knows how to manage itself from Git, it detects changes in its configuration and corrects drift.

@stefanprodan I would expect it to detect changes on cluster and apply if anything drifts or overwrite but after first bootstrap nothing is applied on cluster. flux bootstrap via cli works fine for me. For example I can't upgrade flux version via this terraform module using flux_bootstrap_git, may be I am missing something I will double check but I have seen some other people having issues on an another issue. I have to remove state from statefile and reapply terraform and it works ok.

We test the upgrade here: https://github.com/fluxcd/terraform-provider-flux/blob/4771d1417b3fcb248fc0d42bd7e2f05929bb1dd4/internal/provider/resource_bootstrap_git_test.go#L227-L250
If upgrade doesn't work for you, please open an issue with an example that we can replicate.

Hello @mkkot-onegini  ,
I hope you're doing well! I'm the newest contributor to this repository, and I'm currently in the process of issue grooming to ensure that all concerns are addressed promptly and efficiently.
I noticed this issue you reported and wanted to check in with you to see if it's still affecting your work. Your feedback is invaluable to us, and any additional insights or updates you can share would be greatly appreciated to help us understand and solve the problem more effectively.
If this issue has been resolved, could you please share how it was fixed? This information could be incredibly helpful to others in the community facing similar problems. It would also allow us to close this issue with a clear resolution.
In case the issue is still open and troubling you, let's work together to find a solution. Your satisfaction and the smooth functioning of our project are our top priorities.
Thank you for your time and contributions to our community. Looking forward to your response!
Best regards,
Steve

Both flux_install and flux_sync will be removed in the next release Flux v2.3 in Q2.


Live queries with axios interceptor don't work

When using live queries + axios interceptor to inject jwt - request api/stream doesn't get it.

Setup remult project live queries + jwt + axios interceptor as in this tutorial:
jwt is not added to Authorization header in requests api/stream

Expected behavior
interceptor catches these requests as well to authenticate in server
Desktop (please complete the following information):

OS: macos
Browser chrome

Hi @mihaa1,
The default implementation for the SubscriptionClient used in this tutorial, uses the browser's EventSource object that doesn't support adding header elements
But don't worry, you don't need it - because registering the the api/stream still doesn't mean that you'll get any messages.
To get a message, the live query subscribes to a channel, using the normal http call, in your case axios, and will have the authorization header - so there is no data leak risk here.
Alternatively, you can implement an alternative implementation of the SubscriptionClient that uses fetch, here's a popular fetch client:
https://www.npmjs.com/package/@microsoft/fetch-event-source
You can create an adapter for it, the entire adapter for the EventSource is only 100 lines of code, so creating an adapter should be easy enough.
Here's the code for the EventSource Adapter.
https://www.npmjs.com/package/@microsoft/fetch-event-source
All that said - I stand by the first option where you don't need the jwt for the stream, as registering to the stream doesn't give you any message
Let me know if that works

Hi,
I have the same problem.
I tried to add '/api/stream' to the list of ignored paths in ExpressJWT, but to make it work, I practically have to ignore everything...
app.use(
    expressjwt({
        secret: globalData.ACCESS_TOKEN,
        credentialsRequired: false,
        algorithms: ['HS256'],
        onExpired: async (req: JWTRequest, err) => {
            throw err;
        },
    }).unless({
        path: [
            '/',
            '/api/login',
            '/api/logout',
            '/api/signup',
            '/api/stream',
            '/api/subscribe',
            '/api/unsubsribe',
            '/api/stream/subscribe',
            '/api/stream/unsubscribe',
            '/api/_liveQueryKeepAlive',
       .... other paths.
        ],
    })
);

I tried to follow the tutorial, but it appears that the code is no longer applicable to the current version, as there is no 'remult.setUser()' function, etc.
Thanks,
Alex

Hi,
I recommend that you try the newer tutorial (remult is way more fun in newer versions):
https://remult.dev/tutorials/react/
Here's the video version:
https://youtu.be/VN27pdF3a6c?si=K-Wii_2A7Lz8dmdX
These tutorials no longer use axios and JWT - instead, they use 'cookie-session'
If you do want to have JWT - here's an example of how I got it to work without the exclude paths...
https://github.com/noam-honig/jwt-header-example
Here's the specific commit:
https://github.com/noam-honig/jwt-header-example/commit/b5a35d60886197c3abe02a47094c6ab12851ab03
Let me know if that helps

@alexchern you don't really need axios for that - but if you want to use axios, you can do the same with the intercepters there.
Let me know how it worked or if you need more help

Thanks a lot.
I replaced axios with fetch, did something similar to your example and it seems to work. The last thing I need to understand is how to catch the 403 error (in liveQuery or elsewhere) when the token is invalid or expired. I need this in order to send the customer back to the login page. I would need to catch the disconnect error as well, when the server goes offline.
How to properly do this with Remult?
Once again, thanks for your support,
Alex

Hi @impleotv ,
The quick solution would be to handle the response back from fetch - and based on it simply redirect to the login page:
window.location.href = 'https://www.example.com/signIn';
Or - you can move the code that set's the httpClient, into the component and tell it to do some react thing (navigate) when there is an error


Piral-cli throws exception

Bug Report
Running the piral command after fresh global install using pnpm throws this error:
node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[Error: ENOENT: no such file or directory, stat '/home/em/Dev/node_modules'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/home/em/Dev/node_modules'
}

Node.js v19.7.0

Steps to reproduce
Do a fresh install of the piral-cli with pnpm i piral-cli -g and then run piral in a directory that does not include a node_modules directory
System
OS: Manjaro Linux Kernel Version 5.1.51-1-MANJARO
Node Version: 19.7.0
Pnpm Version: 8.1.0

Is it global installation only? Not sure that works with pnpm and not sure if we can make this work as its quite different to npm / yarn.
Any reason for using the global installation? We usually recommend avoiding the global installation as global installations are generally considered bad practice. The only use case we can think of is for scaffolding, but here solutions such as npm initializers might anyway be better.

I went with the global install because that's what the documentation said, even though there was a disclaimer about it maybe not being the best idea.
I tried it anyway and saw this error pop up so I wanted to give you a heads up. If global installs aren't the way to use the cli and you guys don't plan on supporting it, especially with pnpm, then no worries—feel free to close the issue.
Cheers

Well, ideally I'd like to support it, but I think it will be difficult due to the differences... I'll keep this open and either make it a documentation item or solve it - either way it should "work" as documented.

Actually it was just a minor thing and it could actually also impact other package managers, even though (in case of npm) that is very unlikely. Thanks for bringing this up - is part of the next release.

Nice, thank you!


The address is not a valid Zcash address

Describe the bug
When using the URI Payments option, an error appears indicating that the transaction is not recognized.
To Reproduce
Steps to reproduce the behavior:

Enter Payments URI
Paste the payment URI
Confirm
Error, the address is not a Zcash address

The option identifies z-addresses and Zcash Unified Addresses as invalid addresses when pasting a payment URI.
Expected behavior
By pasting the payment URI and Confirm you should accept the address if it is a Zcash address.
Desktop:

OS: Windows 10
Version: v.0.0.1

Additional context
The error occurs with or without a memo in the payment URI.

Can you post here the URI that you trying to use? thanks.

Can you post here the URI that you trying to use? thanks.

Free2Z:
zcash:u19cd4nhq2l0gpn985h8d63xkqj2man6gpzm8fkjczzy7lkgaermgv5ueuyp86r4eemwef0x4mavg9mmuycxcar3x477mrp98p97x7l3qvzrut6ap4y9c8xuy7hcq8q90ek6rhkd3xlufshjyv7dzpv4mx428pzq568jrye77hratw4tjwdwqekqljgyalnm8l3y72sqdd9jed6k65vpf?amount=0.500&memo=

ZECpage:
zcash:zs1j29m7zdhhyy2eqrz89l4zhk0angqjh368gqkj2vgdyqmeuultteny36n3qsm47zn8du5sw3ts7f?amount=0.001


Question: best way to handle ad-hoc endpoints?

I was wondering if there is an easy 'insertion' point to handle non-db related requests - or if I should just slot fortune into another framework (if so, do you have any examples that are good fits?)
for example:
I want a POST to /newPayment with a body to end up making a call to paypal, and returning an object that is a combination of the original post to /newPayment & the response from paypal -
is this best handled by just making a /payment 'type' and having the business logic sit in the 'inputTransform' ?
Thanks!

is this best handled by just making a /payment 'type' and having the business logic sit in the 'inputTransform' ?

Yes, you just answered your own question. The transform functions exist to implement any sort of business logic.

thanks for responding - I appreciate the quick response! would an example help the documentation, or is there any way I can contribute?

I think the documentation about transform functions is fine, it's meant to be very open-ended.
There aren't many things I can think of as improvements at the moment, mostly I think more examples are missing.

Thanks for clarifying!

Thanks for clarifying


Validate arguments of public methods#CA1062

Source CA1062
Cause
An externally visible method dereferences one of its reference arguments without verifying whether that argument is null (Nothing in Visual Basic).
You can configure this rule to exclude certain types and parameters from analysis. You can also indicate null-check validation methods.
Rule description
All reference arguments that are passed to externally visible methods should be checked against null. If appropriate, throw an ArgumentNullException when the argument is null.
If a method can be called from an unknown assembly because it is declared public or protected, you should validate all parameters of the method. If the method is designed to be called only by known assemblies, mark the method internal and apply the InternalsVisibleToAttribute attribute to the assembly that contains the method.

I'm curious to see what happens with this PR. I have been thinking to myself of doing this with my code but never knowing for sure if the juice is worth the squeeze.

I'm curious to see what happens with this PR. I have been thinking to myself of doing this with my code but never knowing for sure if the juice is worth the squeeze.

well I'm interested in that too


admin site -- failed action still is alerted as passed

When an action is not passed, due to a policy or otherwise, the admin site is still alerted that the action was passed

is this just a visual bug? if so, we can probably close this since we are moving away from the admin site for v2 of the dashboard

closing since no longer relevant in v2


Configure use of Dispatch on Linux if included in Foundation

Its currently possible to optionally build Foundation with access to Dispatch for NSRunLoop, NSURLSession, NSOperation etc.
Once there's a dependency between Foundation and Dispatch, there's build failures for XCTest as it doesn't have access to Dispatch build artefacts.
This updates the XCTest build script to add that configuration if Dispatch has been added to the Foundation builds.
Note that there's an equivalent PR against Swift to pass in the libdispatch source and build locations as arguments, if Dispatch is included in Foundation.

@swift-ci please test

This LGTM. Thanks @seabaylea!


Enable Hoogle indexing

[ ] hoogle index is generated as part of doc generation
[ ] hoogle index is packaged in the assembly that we ship to docs.daml.com
[ ] hoogle index is included to the hoogle machine DB and tested

This is now done, however interface choices do not appear in the Hoogle index. This item has been added to our tracking document and will be raised.


When using Custom Image Handler, and you add multiple images it triggers the @image-remove event causing the past added images being removed from storage

This issue is stale because it has been open for 60 days with no activity.

This issue was closed because it has been inactive for 7 days since being marked as stale.


AttributeError: module 'pysplishsplash.GUI' has no attribute 'TweakBar'

i am getting this error .. how to solve this issue ?
SPlisHSPlasH version: 2.9.1
Output directory: C:/Users/DPL/miniconda3/envs/splash/output/Empty
Load scene file: C:/Users/DPL/miniconda3/envs/splash/data/Scenes/Empty.json
Initialize static boundary simulation
Traceback (most recent call last):
File "c:/Users/DPL/Desktop/Python/1D_Burgers.py", line 23, in
main()
File "c:/Users/DPL/Desktop/Python/1D_Burgers.py", line 10, in main
gui = sph.GUI.TweakBar
AttributeError: module 'pysplishsplash.GUI' has no attribute 'TweakBar'

Did you build the pySPlisHSPlasH for the Anttweakbar? The standard version uses imgui.

i used this method from docs to install ....
git clone https://github.com/InteractiveComputerGraphics/SPlisHSPlasH.git
cd SPlisHSPlasH
python setup.py bdist_wheel
pip install build/dist/pySPlisHSPlasH-2.8.3-cp37-cp37m-win_amd64.whl
then ran this instead of last line ...
pip install build/dist/pySPlisHSPlasH-2.9.1-cp38-cp38-win_amd64.whl

Use this line:
gui = sph.GUI.Simulator_GUI_imgui(base)
You also find this in the examples.

thanks this worked ...
i am trying this example from doc
import pysplishsplash as sph
import pysplishsplash.Utilities.SceneLoaderStructs as Scenes
def main():
# Set up the simulator
base = sph.Exec.SimulatorBase()
base.init(useGui=True,  sceneFile=sph.Extras.Scenes.Empty)
# Create a tweak bar simulator
gui = sph.GUI.Simulator_GUI_imgui(base)
base.setGui(gui)

# Get the scene and add objects
scene = base.getScene()
scene.boundaryModels.append(Scenes.BoundaryData(meshFile="../models/UnitBox.obj", translation=[0., 3.0, 0.], scale=[4., 6., 4.], color=[0.1, 0.4, 0.5, 1.0], isWall=True, mapInvert=True, mapResolution=[25, 25, 25]))
scene.fluidBlocks.append(Scenes.FluidBlock(id='Fluid', box=Scenes.Box([-1.5, 0.0, -1.5], [-0.5, 2.0, -0.5]), mode=0, initialVelocity=[0.0, 0.0, 0.0]))
scene.fluidBlocks.append(Scenes.FluidBlock(id='Fluid', box=Scenes.Box([0.5, 0.0, 0.5], [1.5, 2.0, 1.5]), mode=0, initialVelocity=[0.0, 0.0, 0.0]))

# Run the GUI
base.run()

if name == "main":
main()
now i get this error
AttributeError: 'pysplishsplash.Exec.SimulatorBase' object has no attribute 'getScene'

It seems that you use an older version of the examples with the new library.
Update the examples or use this line:
scene = sph.Exec.SceneConfiguration.getCurrent().getScene()

thank you so mush for your help ... it worked ..
i am trying to learn these things as i am kind of new to these things
i will take care of versions next time
can you please tell me are there any updated examples in the documents


how to populate tree view with a data from view model?

I'm using MvvmCross for my android application. Is it possible to populate draggable tree view with data from viewmodel??

I've never used MvvmCross but from my limited understanding of it, it is a plugin in for Xamarin. Since this is written in Java you would have to bind the library to Xamarin. I think this link could help with the process : https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/


Multiple lines in tag causes all but the first to be removed.

If an object has multiple lines in a tag such as this inscription= it removes all but the first line.
https://www.osm.org/node/5905401051/history

just encountered this as well, had to revert a whole bunch :/

Will be fixed in 1.2.


tests: Replace Update with Patch

What this PR does / why we need it:
The execution of the e2e tests are producing a large amount of conflict errors [1].
There are two methods for updating an object manifest on the API server:

Update
Patch

Update is used to change the whole object and can detect conflicts when using the resourceVersion.
Patch is used to change only a subset of the object and comes in several flavors.
This change suggests replacing all Update operations with Patch ones in the e2e tests.
It should reduce the conflict/collisions experienced as the tests will no longer race with various controllers that touch the objects being changed. When using Update, a conflict may manifest itself even when the test changes a spec value and a controller in parallel changes a status value.
Using Patch such conflicts are unlikely to occur and in some cases which require it, can be asserted against (the test JSON-patch operation type).
In order to perform the migration to Patch some small refactoring had to be applied in tests.

https://search.ci.kubevirt.io/?search=the+object+has+been+modified%3B+please+apply+your+changes+to+the+latest+version+and+try+again&maxAge=336h&context=1&type=bug%2Bjunit&name=&excludeName=&maxMatches=5&maxBytes=20971520&groupBy=job

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Not all Update operations have been replaced with Patch.
Release note:
NONE

/test pull-kubevirt-e2e-k8s-1.23-sig-storage
/test pull-kubevirt-e2e-k8s-1.23-sig-compute
/test pull-kubevirt-generate
/test pull-kubevirt-build

/test pull-kubevirt-e2e-k8s-1.23-sig-storage
/test pull-kubevirt-e2e-k8s-1.23-sig-compute
/test pull-kubevirt-generate
/test pull-kubevirt-build

/test pull-kubevirt-e2e-k8s-1.23-sig-storage

/test pull-kubevirt-e2e-k8s-1.23-sig-storage

/cc

/cc @xpivarc

/test pull-kubevirt-e2e-k8s-1.23-sig-storage
/test pull-kubevirt-e2e-k8s-1.23-sig-compute
/test pull-kubevirt-generate
/test pull-kubevirt-build

/test pull-kubevirt-e2e-k8s-1.22-sig-network
/test pull-kubevirt-e2e-k8s-1.23-sig-compute-migrations-nonroot

change: Rebase

change: Answered review comments.

change: Rebase

/approve

/lgtm

/retest

change: Rebase

/lgtm

/retest


ObjectId created in other document's field after post()

Hi,
I'm new in restangular,
I have to create a document which have an array field like this :
{
"_id" : ObjectId("542e4ad806d7f154114e38ec"),
"id" : 001,
"name" : "name",
"news" : [
{
"title" : "tittle 1",
"content" : "content 1"
},
{
"title" : "tittle 2",
"content" : "content 2"
}
]
}
when I add a document in my database, an ObjectId is also automaticaly set in my "news" field in the created document, like :
"news" : [
{
"title" : "tittle 1",
"content" : "content 1",
"_id" : ObjectId("542e4ad806d7f154114e38ed")
},
{
"title" : "tittle 2",
"content" : "content 2",
"_id" : ObjectId("542e4ad806d7f154114e38ee")
}
]
I'd like to know if there is a way to prevent that. Or at worst if there is a way to remove it after its creation.
thanks for help

The _id field is mandatory and you need to provide a unique value for each doc, but it doesn't have to be an ObjectID. You could use an integer value instead to save space, but it's up to you to ensure each doc's value is unique.If you fancy, you can define custom _id field on your schema and change the way it's being created or auto incremented.


Adjust GitLab CI pipeline

Fix GitLab CI pipeline failures:

Don't use cache: to pass data around; this is not guaranteed to work and can bring in data from old jobs.
Use bb5_build_dir: pipeline so all jobs run in the same working directory.
Disable git clone for all but the first job

This is intended to be a ~minimal change to get the pipeline running again.
cc: @pramodk

LGTM but can we run clang & cmake format in parallel to build? This way, I know the build as well as (stupid) clang/cmake formatting issues in one go and avoid one more PR?

It would be nice to have that, but it would take a little more reorganisation.
The formatting check from hpc-coding-conventions has to run after the CMake configure step, which in the current CI is part of the build job. The other concern is that everything is operating on the same working directory, so if the formatting checks are not strictly read-only they could interfere with the build.
I suggest we merge this first and see how we can improve later.

Ok good for me. We can do that in separate PR.


NETBEANS-1663: Better support for JUnit 5 ParameterizedTest

See https://issues.apache.org/jira/browse/NETBEANS-1663.
I bumped the Java version for junit.ui to 8, let me know if this isn't okay.
If anyone has suggestions for how to test this automatically, please let me know. I tested this by hand on a project with @ParameterizedTest tests, as well as a mix of JUnit 5 and 4 regular @Test tests.

Looks okay to me, seems I missed looking at parameterized tests when implementing NETBEANS-6 thanks @srdo for spotting and providing a fix


How do I pass params for application directives?

I would like to have 3 different hls_playlist_length sizes.
Can i do something like this when publishing ? rtmp://localhost:1935/appname?playlistlength=3600
and retrive this query string in application block applying to the hls_playlist_length directive ?
Or how can i achive such functionality without having to duplicate all my applications ?

Hi, you can catch this parameters passed by the get method if you define a hook, for example this directive inside your application directive:
on_play: http://expample.com:8080/index.php
Then in this index.php ( in nginx I defined the root path /var/www/html/) you can get the "3600" for example with:
if(isset$_POST["playlistlength"]) $playlistlength = $_POST['playlistlength'];


chore(lint): repaired lint error on master

In my recent PR #2639, I saw that Travis CI was failing due to a lint error on master. I also saw that nobody had opened a PR to repair it yet so here's one. In this PR:

Repaired lint error on master

Already fixed here
Thanks


Program crashing when gold graph or gold tab opened

I realised that the program usually  completely crashes when I try to open the gold graph or the gold tab. This doesn't really happen when the game that I'm spectating has just started. It usually occurs towards the end of a game and opening the program back doesn't really work out for me because it's a live game and when the program is turned back on the kill score or the, dragon's taken by teams is not displayed correctly.
This bug usually happens when spectating a live game and if the gold graph and the gold tab is opened a lot of times the program just crashes without any error. So it probably would be possible to reproduce the bug if you spectate a live game and open the gold graph and the gold tab a lot of times while spectating.
I don't really know what you meant with expected behaviour but I'm gonna assume you meant what did you expect if the bug didn't happen. I was expecting the program not to crash.
Crash-2022-01-30-16-17.log
Crash-2022-02-05-21-32.log
Crash-2022-02-06-18-39.log
Crash-2022-01-24-16-29.log
Crash-2022-01-24-19-41.log
Crash-2022-01-25-21-31.log
Crash-2022-01-26-20-16.log
Crash-2022-01-29-00-42.log
Crash-2022-01-26-20-44.log
Crash-2022-01-26-22-15.log
Crash-2022-01-27-15-34.log
Windows 10 (10.0.19044) Build 19044

Yeah this bug have been found by many people. All we know for now is that it occurs near the endgame for most of us (for me, it happen around the 35 minutes mark every time) But we arent sure "why". So after the 30 minutes mark, I just stop pressing buttons xD

From my limited testing it seems like this is an issue when the amount of gold data is too large to be serialized properly. The website itself does not crash, only the actual program?

Yeah we click on the button for the gold graph (for example) and the program stop responding and close itself (and after that, close the webpage with the graphs so we don't see any overlays at all on OBS)


output: try skipping buffer allocation if the backend allows it

When enabling an output, skip the empty buffer allocation if the
backend accepts modesets without a buffer.
This fixes mode-setting with the noop backend.

LGTM :)


fix missing semi colon, and remove double task terminateProcess

I don't know if the task need to be started twice, I also added a missing semi colon to the hygiene gulp task.

Hi @senayar, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

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

TTYL, MSBOT;


[SPARK-41276][SQL][ML][MLLIB][PROTOBUF][PYTHON][R][SS][AVRO] Optimize constructor use of StructType

What changes were proposed in this pull request?
There are two main ways to construct StructType:

Primary constructor

case class StructType(fields: Array[StructField])

Use Seq as input constructor

def apply(fields: Seq[StructField]): StructType = StructType(fields.toArray)

These two construction methods are widely used in Spark, but the latter requires an additional collection conversion.
This pr changes the following 3 scenarios to use primary constructor to reduce one collection conversion:

For manually create Seq input scenes, change to use manually create Array input instead, for examaple:

https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/mllib/src/main/scala/org/apache/spark/ml/image/ImageSchema.scala#L55-L63

For the scenario where toSeq is added to create input for compatibility with Scala 2.13, directly call 'toArray' to instead, for example:

https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/connector/avro/src/main/scala/org/apache/spark/sql/avro/SchemaConverters.scala#L108-L113

For scenes whose input is originally Array, remove the redundant toSeq, for example:

https://github.com/apache/spark/blob/bcf03fe3f86a7230fd977c059b73a58554370d5d/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala#L587-L592
All changes involved are local variables, and the input array will not escape and be accidentally change, so it is safe.
Why are the changes needed?
Reduce unnecessary collection conversion.
Does this PR introduce any user-facing change?
No
How was this patch tested?

Pass GitHub Actions
Manually test with Scala 2.13, all UTs passed

I assume it's less change to change these usages, rather than swap the implementation of the constructors so that the Array one calls the Seq one? OK if so

These Array are local variables, and they will not escape and be changed unexpectedly

Yes, not that case

For production code, Array one is used in 75 places and Seq one is used in 132 places before this pr

Merged to master

Thanks @srowen


clean up npm dependencies

grunt-contrib-uglify was present in both dependencies and devDependencies
which probably wasn't intentional

Thanks.


[VL] Improve shuffle API

This targets to do some small-scale refactoring against shuffle write / read API, to make sure the upper-layer code structure is capable to maintain / extend, and is friendly to read.
The plan (respectively):

In Java, consolidate GlutenColumnarBatchSerializer and CelebornColumnarBatchSerializer
In C++, consolidate CelebornXXSplitters and XXSpliters

Add API ShufflePartitionWriter (or probably shuffle::StreamWriter), responsible for evicting / pushing binary partition data in different ways, depending on the implementation of Writer.
ShufflePartitionWriter is different from ShuffleSplitter. It only accepts binary data then write it out. ShufflePartitionWriter will be the underlying I/O writer as a member variable in each ShuffleSplitter.
Add CelebornShufflePartitionWriter, and FileShufflePartitionWriter

Enable CelebornShufflePartitionWriter in VeloxSpliter
In C++, rename XXSpliter in splitter.h as ArrowXXSplitter

After the above is done:

Rename all Java/C++ XXShuffleSplitter / XXSplitter as XXShuffleWriter
The components with name "Splitter" actually do far more than "splitting". They read, split, then write the data out to its destination. The name "ShuffleWriter" is also aligned with vanilla Apache Spark's naming convention.

@kerwin-zk @jinchengchenghh If you have any comments here.

Very good, with this rename, we can also rename SplitterBase to ShuffleStreamWriter. A little wonder, do we need Stream in name?

Very good, with this rename, we can also rename SplitterBase to ShuffleStreamWriter. A little wonder, do we need Stream in name?

SplitterBase Will be renamed to ShuffleWriterBase or something.
ShuffleStreamWriter will be a member variable in each ShuffleWriter implementation, only for writing binary data out. E.g if CelebornShuffleStreamWriter is set, VeloxSplitter will be capable to call Celeborn once it is about to evict data.
If the naming ShuffleStreamWriter is confusing, I'd name it as shuffle::StreamWriter or ShufflePartitionWriter, I am not sure about that yet.

Changed name of ShuffleStreamWriter to ShufflePartitionWriter.

I will consider ShuffleStreamWriter extends ShuffleWriter at first sight, maybe shuffle::PartitionWriter  is better, not sure yet.

@jinchengchenghh I see. Thanks for your comment.

@kerwin-zk Can you recall the reason why we need this?
https://github.com/oap-project/gluten/blob/a04106623966f8cb384a2c64d89c02fbe18f0eb1/gluten-data/src/main/scala/io/glutenproject/vectorized/CelebornColumnarBatchSerializer.scala#L84-L116
I am not able to test against celeborn, but seems to me that if the underlying empty celeborn stream returns -1 immediately, GlutenColumnarBatchSerializer can handle this as EoS then ends reading.
Was there anything unexpected shown when you used GlutenColumnarBatchSerializer for celeborn?

Rename all Java/C++ XXShuffleSplitter / XXSplitter as XXShuffleWriter
The components with name "Splitter" actually do far more than "splitting". They read, split, then write the data out to its destination. The name "ShuffleWriter" is also aligned with vanilla Apache Spark's naming convention.

@zhztheplayer ShuffleWriter is a specific class in Spark. Splitter is only a part of ShuffleWriter. It is not suitable to directly change to ShuffleWriter. Maybe you can consider ShuffleProcessor.

@kerwin-zk Can you recall the reason why we need this?
https://github.com/oap-project/gluten/blob/a04106623966f8cb384a2c64d89c02fbe18f0eb1/gluten-data/src/main/scala/io/glutenproject/vectorized/CelebornColumnarBatchSerializer.scala#L84-L116
I am not able to test against celeborn, but seems to me that if the underlying empty celeborn stream returns -1 immediately, GlutenColumnarBatchSerializer can handle this as EoS then ends reading.
Was there anything unexpected shown when you used GlutenColumnarBatchSerializer for celeborn?

@zhztheplayer  Yes, as follows
Reader::Reader(std::shared_ptr<arrow::io::InputStream> in, std::shared_ptr<arrow::Schema> schema, ReaderOptions options)
    : in_(std::move(in)), options_(std::move(options)), schema_(std::move(schema)) {
# In the celeborn scenario, if the stream is empty, it will crash at this point
  GLUTEN_ASSIGN_OR_THROW(first_message_, arrow::ipc::ReadMessage(in_.get()))
.............
}

Splitter is only a part of ShuffleWriter. It is not suitable to directly change to ShuffleWriter. Maybe you can consider ShuffleProcessor.

Thanks for your advice. ShuffleProcessor is great but ShuffleWriterProcessor could be preferred in this speaking. But probably it's a little bit too long.
I think we don't have to worry much about the naming collision on ShuffleWriter. ShuffleSplitter does basically all the works derived from Java-side ShuffleWriter, the only different is that it's in C++. It's usual in Gluten to directly map a Java-side Spark component to C++ side with the same name, e.g. ColumnarBatch.
It's worth noting that we didn't have ShuffleSplitter on Java side. We used ShuffleSplitterJniWrapper.
And I went through current code of CelebornHashBasedColumnarShuffleWriter and GlutenColumnarShuffleWriter, then they both seem like the wrapper of C++ writer with some extra metrics and configurations. So overall I think it's safe to call the C++ Splitter as Writer. Can you double-check on that?

@zhztheplayer Yes. The main difference is metrics and configurations. I can also participate in this part of Shuffle refactoring, and you can assign part of the work to me if necessary.

you can assign part of the work to me if necessary.

Thanks for helping, and feel free to pick from the list :)
Besides I may suggest getting started with merging GlutenColumnarBatchSerializer and CelebornColumnarBatchSerializer, and give some time to let others to check on the other parts of the plan.

merging GlutenColumnarBatchSerializer and CelebornColumnarBatchSerializer

@kerwin-zk Would you like to take this? By going through your comment I think it's possible to have a fix for it.

merging GlutenColumnarBatchSerializer and CelebornColumnarBatchSerializer

@kerwin-zk Would you like to take this? By going through your comment I think it's possible to have a fix for it.

@zhztheplayer OK. I'll handle this.

@zhztheplayer Is is possible to move celebern to a extra module and user can choose whether to use it?

Very good, with this rename, we can also rename SplitterBase to ShuffleStreamWriter. A little wonder, do we need Stream in name?

+1, I more like the name without Stream

Rename all Java/C++ XXShuffleSplitter / XXSplitter as XXShuffleWriter
The components with name "Splitter" actually do far more than "splitting". They read, split, then write the data out to its destination. The name "ShuffleWriter" is also aligned with vanilla Apache Spark's naming convention.

@zhztheplayer ShuffleWriter is a specific class in Spark. Splitter is only a part of ShuffleWriter. It is not suitable to directly change to ShuffleWriter. Maybe you can consider ShuffleProcessor.

I like the name ShuffleWriter more, it is respond to the ShuffleReader, the two names represent the two ends of shuffle work

SplitterBase Will be renamed to ShuffleWriterBase or something.

how about ShuffleWriter, we don't need the base suffix, and let's keep this habit

@zhztheplayer Is is possible to move celebern to a extra module and user can choose whether to use it?

+1

@zhztheplayer Is is possible to move celebern to a extra module and user can choose whether to use it?
+1, It should not be coupled with specific implementations. In addition, it is not recommended to use third-party snapshot repositories, which can cause a lot of uncertainty

@zhztheplayer @jinchengchenghh @zuochunwei   We have discuss the code refactoring for shuffle offline，here is the  Uml diagram after refactoring:

The plan for code refactoring (respectively):
1.Rename some unreasonable Class name，like:GlutenColumnarShuffleWriter->ColumnarShuffleWriter,SplitterBase->ShuffleWriter and so on
2.Add API Partitioner, responsible for computing partitionId info.
3.Add API PartitionWriter , responsible for evicting / pushing binary partition data in different ways, depending on the implementation of Writer
4.Enable CelebornPartitionWriter in VeloxShuffleWriter
If you have any other ideas, please add them

@zuochunwei Should we keep this open until we finish the sub-tasks?

I suggest closing the issue after completing all tasks.


With flutter 2.2.3 your example doen't work

I'm trying to run your example with flutter 2.2.3 and I'm getting this error message:E/flutter ( 7230): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: type 'Null' is not a subtype of type 'Map<String, dynamic>'
E/flutter ( 7230): #0      AppClient.getData (package:android_long_task/long_task/app_client.dart:49:26)
E/flutter ( 7230):
My flutter doctor output is:
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale en-IT)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] Connected device (2 available)
• No issues found!
Best
Alex

thanks for reporting this issue. i have migrated it to null safety a while back and tested it on Flutter 2.2.1. I'll definitely check it out

@alexaccaci I didn't hit the bug myself but it was simple type casting exception. applied a fix so it won't happen again. would appreciate it if you could confirm it is fixed if your got the time

It's ok
Best Regards
Il giorno mer 28 lug 2021 alle ore 19:57 alireza easazade <
@.***> ha scritto:

@alexaccaci https://github.com/alexaccaci I didn't hit the bug myself
but it was simple type casting exception. applied a fix so it won't happen
again. would appreciate it if you could confirm it is fixed if your got the
time
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/easazade/android-long-task/issues/5#issuecomment-888507196,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMAGMVTQQUZXKD45IEJHKJ3T2BAHLANCNFSM5AZ6NUDA
.


Define criteria for signature inclusion in database

To my knowledge, there aren't any specific criteria for including an app signature in the AppVerifier database. This poses a few problems, namely:

Users don't know what it means for an app signature to be included in the database (and so may not trust it)
The database could grow to an unmanageable size without moderation

Because entries are relatively small, I don't think (2) is a significant issue for now. But in my opinion, (1) is certainly worth addressing so that users know what guarantees they have when they see an app included in the database.
Specifically, I suggest formalizing and documenting the process followed to determine whether a proposed entry should be included in the database, including a process to verify its legitimacy.

That sounds like a good idea


Failed to install josh-filter

Referring to https://josh-project.github.io/josh/reference/cli.html

Also with --bin josh-filter I got some funny errors

Also with --bin josh-filter I got some funny errors

lol, okay, thanks, that problem is on my side 🤔


⚠ Bofrost.nl has degraded performance

In a5a603c, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1263 ms

Resolved: Bofrost.nl performance has improved in 4b19fc1 after 6 minutes.


Warning: apt-key is deprecated

#cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
#curl -sSL https://apt.v2fly.org/pubkey.gpg |  apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

Debian says that apt-key is deprecated, please change the instructions to modern way.

pr weclome


[BUG] No genai.chat function yet example exists

Description of the bug:
This code doesn't run:
https://github.com/google/generative-ai-docs/blob/main/site/en/palm_docs/chat_quickstart.ipynb

Actual vs expected behavior:
No response
Any other information you'd like to share?
No response

Hi @aadya940. The PaLM API is now deprecated. Please follow below Gemini API quick start guide :
https://github.com/google-gemini/cookbook/tree/main/quickstarts

Thanks @gmKeshari :)


Make BatchedLoader configurable

The intention of this PR is to offer a mechanism that provides configurable internals (e.g. Cache implementation, capacities for batch and input channels, time to wait before triggering batch).
Please let me know what you think.

This change is

I'm not sure why the tests are failing in travis... they pass when run on my local branch. Thoughts?

I'm ok with these changes. I'm going to merge and then fix travis. My guess is that travis is failing because of the examples are not compiling.

It was a race condition on the counter. I changed the lock to be an RWMutex to account for that. Thanks again for your contributions!


when I add a 'draggable item' to the draggable list;  The new item couldn't drag;

as title;  chinese:( 当我增加一个可拖拽项目，视图更新后新增加的项目不能拖拽 )

这个应该是你使用时代码问题。只提供动图不提供代码是不友好的。

That is probably a problem on your end. The fact that you're using drag&drop to add components may suggest that click events are hijacked, but I should definitely look at the code to the code to understand what's wrong.

thank's all of your attention. that's the url of this product.----https://github.com/tingshuai/BusinessCenter

You are injecting the coordinates in each VDR instance using this code
:x="Number(item.style.left)" :y="Number(item.style.top)"

but casting something like 100px to a Number results in NaN. Use explicit numbers for that purpose.


Build Issue with DataDog Dependency

Title: Build on main fails due to datadog dependency
Description:

Executing bazelisk build //source/exe:envoy causes a build failure on main.

Repro steps:

Execute bazelisk build //source/exe:envoy

Logs:
bazelisk build //source/exe:envoy
INFO: Analyzed target //source/exe:envoy (766 packages loaded, 21765 targets configured).
INFO: Found 1 target...
ERROR: /usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6c384122ec61c2f53d1cc5de96a17c50/external/com_github_datadog_dd_trace_cpp/BUILD.bazel:1:11: Compiling src/datadog/parse_util.cpp failed: (Exit 1): gcc failed: error executing command (from target @com_github_datadog_dd_trace_cpp//:dd_trace_cpp) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer '-std=c++14' -MD -MF ... (remaining 34 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.cpp:1:
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:15: error: 'uint64_t' is not a member of 'std'; did you mean 'wint_t'?
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |               ^~~~~~~~
      |               wint_t
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:23: error: template argument 1 is invalid
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |                       ^
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.cpp:53:25: error: ambiguating new declaration of 'datadog::tracing::Expected<long unsigned int> datadog::tracing::parse_uint64(StringView, int)'
   53 | Expected<std::uint64_t> parse_uint64(StringView input, int base) {
      |                         ^~~~~~~~~~~~
external/com_github_datadog_dd_trace_cpp/src/datadog/parse_util.h:21:25: note: old declaration 'int datadog::tracing::parse_uint64(StringView, int)'
   21 | Expected<std::uint64_t> parse_uint64(StringView input, int base);
      |                         ^~~~~~~~~~~~
Target //source/exe:envoy-static failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 2.647s, Critical Path: 1.33s
INFO: 62 processes: 49 internal, 13 linux-sandbox.
FAILED: Build did NOT complete successfully

I created a new development VM and checked out a fresh copy of the repo and received this issue:

Command: bazelisk build envoy
Output:

+ /usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[1]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir'
Making all in glib
make[2]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[3]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
Making all in .
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
Making all in m4macros
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[5]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
make[5]: Nothing to be done for 'all-am'.
make[5]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/m4macros'
Making all in glib
make[4]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
  GEN      glibconfig-stamp
config.status: executing glib/glibconfig.h commands
config.status: glib/glibconfig.h is unchanged
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-recursive
make[5]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
Making all in libcharset
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[7]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
  CC       libcharset_la-localcharset.lo
  CCLD     libcharset.la
ar: `u' modifier ignored since `D' is the default (see `U')
  GEN      ref-add.sed
  GEN      ref-del.sed
  GEN      charset.alias
make[7]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/libcharset'
Making all in gnulib
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/make/bin/make  all-am
make[7]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
  CC       libgnulib_la-asnprintf.lo
  CC       libgnulib_la-printf-args.lo
  CC       libgnulib_la-printf-parse.lo
  CC       libgnulib_la-vasnprintf.lo
  CC       libgnulib_la-printf.lo
  CCLD     libgnulib.la
ar: `u' modifier ignored since `D' is the default (see `U')
make[7]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib/gnulib'
Making all in .
make[6]: Entering directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
  CC       libglib_2_0_la-gallocator.lo
  CC       libglib_2_0_la-gcache.lo
  CC       libglib_2_0_la-gcompletion.lo
  CC       libglib_2_0_la-grel.lo
  CC       libglib_2_0_la-gthread-deprecated.lo
  CC       libglib_2_0_la-garray.lo
  CC       libglib_2_0_la-gasyncqueue.lo
  CC       libglib_2_0_la-gatomic.lo
gatomic.c:392:10: error: incompatible integer to pointer conversion passing 'gssize' (aka 'long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_add ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:170:46: note: expanded from macro 'g_atomic_pointer_add'
    (gssize) __sync_fetch_and_add ((atomic), (val));                         \
                                             ^~~~~
gatomic.c:416:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_and ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:177:45: note: expanded from macro 'g_atomic_pointer_and'
    (gsize) __sync_fetch_and_and ((atomic), (val));                          \
                                            ^~~~~
gatomic.c:440:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_or ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:184:44: note: expanded from macro 'g_atomic_pointer_or'
    (gsize) __sync_fetch_and_or ((atomic), (val));                           \
                                           ^~~~~
gatomic.c:464:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
  return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:191:45: note: expanded from macro 'g_atomic_pointer_xor'
    (gsize) __sync_fetch_and_xor ((atomic), (val));                          \
                                            ^~~~~
4 errors generated.
make[6]: *** [Makefile:1317: libglib_2_0_la-gatomic.lo] Error 1
make[6]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[5]: *** [Makefile:1934: all-recursive] Error 1
make[5]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[4]: *** [Makefile:953: all] Error 2
make[4]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib/glib'
make[3]: *** [Makefile:1046: all-recursive] Error 1
make[3]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[2]: *** [Makefile:770: all] Error 2
make[2]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir/glib'
make[1]: *** [Makefile:707: all-recursive] Error 1
make[1]: Leaving directory '/usr/local/google/home/demitriswan/.cache/bazel/_bazel_demitriswan/6ef5ebc514f4b8037c822c582100a7c9/sandbox/linux-sandbox/2/execroot/envoy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig.build_tmpdir'
make: *** [Makefile:463: all] Error 2
_____ END BUILD LOGS _____
rules_foreign_cc: Build wrapper script location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/wrapper_build_script.sh
rules_foreign_cc: Build script location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/build_script.sh
rules_foreign_cc: Build log location: bazel-out/k8-opt-exec-2B5CBBC6/bin/external/rules_foreign_cc/toolchains/pkgconfig_tool_default_foreign_cc/BootstrapPkgConfig.log

Target //source/exe:envoy-static failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 70.430s, Critical Path: 62.77s
INFO: 2422 processes: 1826 internal, 596 linux-sandbox.
FAILED: Build did NOT complete successfully

I believe these build issues might be coming from the fact that I am building via bazel directly and not through the Docker container. I've tried executing via Docker using the instructions in DEVELOPER.md (docker is running as root) and I got the issue:
WARNING: The following configs were expanded more than once: [libc++, clang]. For repeatable flags, repeats are counted twice and may lead to unexpected behavior.
INFO: Repository python3_11_x86_64-unknown-linux-gnu instantiated at:
  /source/WORKSPACE:17:25: in <toplevel>
  /source/bazel/repositories_extra.bzl:26:31: in envoy_dependencies_extra
  /build/bazel_root/base/external/rules_python/python/repositories.bzl:581:26: in python_register_toolchains
Repository rule python_repository defined at:
  /build/bazel_root/base/external/rules_python/python/repositories.bzl:402:36: in <toplevel>
INFO: repository @python3_11_x86_64-unknown-linux-gnu' used the following cache hits instead of downloading the corresponding file.
 * Hash 'da50b87d1ec42b3cb577dfd22a3655e43a53150f4f98a4bfb40757c9d7839ab5' for https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.11.3+20230507-x86_64-unknown-linux-gnu-install_only.tar.gz
If the definition of 'repository @python3_11_x86_64-unknown-linux-gnu' was updated, verify that the hashes were also updated.
ERROR: An error occurred during the fetch of repository 'python3_11_x86_64-unknown-linux-gnu':
   Traceback (most recent call last):
        File "/build/bazel_root/base/external/rules_python/python/repositories.bzl", line 205, column 25, in _python_repository_impl
                fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.")
Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.
ERROR: /source/WORKSPACE:17:25: fetching python_repository rule //external:python3_11_x86_64-unknown-linux-gnu: Traceback (most recent call last):
        File "/build/bazel_root/base/external/rules_python/python/repositories.bzl", line 205, column 25, in _python_repository_impl
                fail("The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.")
Error in fail: The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.
ERROR: Error computing the main repository mapping: at /source/bazel/dependency_imports.bzl:2:6: Encountered error while reading extension file 'requirements.bzl': no such package '@base_pip3//': no such package '@python3_11_x86_64-unknown-linux-gnu//': The current user is root, please run as non-root when using the hermetic Python interpreter. See https://github.com/bazelbuild/rules_python/pull/713.

Setting the following in WORKSPACE fixes the issue for me:
envoy_dependencies_extra(ignore_root_user_error=True)

It would be nice if we can set an environment variable that allows us to thread this value through.

Just in case anyone else runs into this issue, I installing clang 14 specifically instead of using clang16 that was the default on my system and setting the appropriate environment variables in my .bashrc did the trick for building with bazel directly without Docker.


Clarify results

Hi,
Following the #238, it COULD be awesome to report :

Some result ranked by req/s
Some result ranked by latency

It also COULD help clarify results. May developers argue that comparing so languages such as node and some such as elixir (which targets are completely different) are not very relevant.
This PR show results order by req/s AND by latency
Regards,

@OvermindDL1 Should not we use percentile, instead of average latency to rank by latency ?
it will be more accurate no ?

50th percentile, 99.99th percentile, and standard deviation would be the best to show as it shows the latency range and how it grows.

@OvermindDL1 my question is want metric (one ?) use to order latency tab ?
is it accurate to differentiate  both table ?

I'd include all information on both tables, but I'd use two table, one sorted on req/s, the other sorted on 50th percentile latency.
If only Github had the ability to mark a table as sort-by-click-on-header.  Could always make a dedicated HTML for that though (github pages or so).

Don't you think tables will be huge ?
My final purpose is to compute result, store them in a BigQuery or else, and having a website displaying them
@tbrand @OvermindDL1 What do you think ?

Eh, the tables would be long sure, but that seems fine to me (especially if you can clamp the headers to the top as it scrolls).

@OvermindDL1  On a race between ruby /  node / php / python, I have different results (ranks) for latency :

average

roda
rack-routing
flame
hanami
sinatra
polka
rayo
fastify
japronto
restify

50th percentile

roda
rack-routing
flame
sinatra
hanami
polka
rayo
fastify
koa
restify

90th percentile

roda
rack-routing
flame
polka
sinatra
rayo
hanami
japronto
restify
fastify

99th percentile

roda
rack-routing
flame
hanami
sinatra
rayo
japronto
polka
restify
fastify

I suggest then to keep existing version (sorting by average) and adjust if after using a cloud  to compute results

Low latencies at high percentiles most likely means they generate little to no garbage in comparison.  :-)

@OvermindDL1 not understood

Just me guessing at what might cause 50 and 99+ percentile differences, ignore.  ^.^
For note, this is a good chart for how to display the overarching information:
Add in req/sec as well and it would be a good detail showing for each framework.

Could you remove the column which is not related to each ranking?
For example, remove Requests / s for Ranked by latency ranking.
Other things are acceptable for me :+1:

I've done a little change to the benchmarker code base, i know use a redis to store result (redis was picked because of simplicity but it add a dependency).
We need to refactor using an other key/value store (to avoid adding dependency) between :

https://github.com/kostya/kyotocabinet
https://github.com/CodeSteak/Nuummite
https://github.com/crystal-community/kiwi

(redis was picked because of simplicity but it add a dependency)

As long as it's ran via docker or so and not needed to be installed.  Why not just use leveldb/rockdb if it's just a KV store needed or sqlite for querying?

@OvermindDL1 I mean a redis installed on   sieger machines, not targets. I need a k/v store to store all results as json (at least in order to let us decide what informations to render in each tables)

I need a k/v store to store all results as json (at least in order to let us decide what informations to render in each tables)

Definitely no point in using something as crazy-heavy as redis, just embed leveldb or rocksdb, I use both rather excessively, and they will far far outperform redis.

@OvermindDL1 sure, it was I have said :stuck_out_tongue:
the list above was essentially for me picking an idea ^^
'cause it was late last night (and I was not very productive), I take a random tool -> I'll rewrite this part

@OvermindDL1 The idea with this modification was to decide what to show in tables, I have made for this a sample here => https://github.com/waghanza/which_is_the_fastest/blob/clarify_results/README.md#results but I'm not very convinced
@tbrand What do you think ?
PS : I have taken advantage of this, by adding a warm-up call :stuck_out_tongue:

@OvermindDL1 for me ranking by latency SHOULD be ranked by 50th perc. (more reliable -> ex : rack-routing SHOULD  the 5th cause of 50th perc., it is actually the 2th 'cause of average)
@georgeu2000 do you observe same results ?

@waghanza yep, 50% makes sense, for someone else then 99% may make sense, etc... etc...  I really wish github had sortable column by headers, maybe need to set up a github pages so they become clickable.  ^.^;

@OvermindDL1 I have find that it's possible, but very hard to use / maintain (sortable table). my idea is to push results is BigQuery or else and create a website for this (github's page when #252 :stuck_out_tongue: )

No need for BigQuery, just generate an html file via a template and use some progressively enhancing javascript to make the table sortable via column.

@OvermindDL1 I know it could be done like that, but I find it mor flexible to separate compuation from layout
e.g -> use travis to compute, and a website to display results :stuck_out_tongue_winking_eye:
moreover, compute and generate markdown on travis need to push from travis to github, no a big fan of this kind of solution, but I suggest we open an other issue for this question :stuck_out_tongue_closed_eyes:

@tbrand Just after merging this, I'll release :100:


That one line in grid.tsx which is an error due to Spicetify types

🔍 Is there already an issue for your problem?

[X] I have checked older issues, open and closed

ℹ Environment / Computer Info
- Spotify version:
- Spicetify version:

📝 Description
Should probably fix it at some point, or at very least sweep it under the rug even if the code executes regardless:
line 443 in Grid.tsx
📸 Screenshots

@rxri Would the change in the screenshot be okay or what are the options for fixing this?

Spicetify.Config as { [key: string]: unknown }

Any idea why i get the whole husky thing? Does everyone get this or just me?

Just follow biome checks. Run it manually from the terminal pnpm run lint and follow.


Is there a relationship between index names and instances?

Is there a relationship between index names and instances?

I'm not sure that I understand the question. Can you please expand and provide some context? What is the problem or question that your are trying to solve/answer?


add CheckmarkCollectionViewCell

Project URL
https://github.com/yonat/CheckmarkCollectionViewCell
Category
Collection View
Description
Added CheckmarkCollectionViewCell - UICollectionViewCell with checkbox when it isSelected and empty circle when not - like Photos.app "Select" mode.
Why it should be included to awesome-ios (mandatory)
Useful small library for a common UI requirement.
Checklist

[ ] Has 50 Github stargazers or more
[x] Only one project/change is in this pull request
[x] Isn't an archived project
[ ] Has more than one contributor
[x] Has unit tests, integration tests or UI tests
[x] Addition in chronological order (bottom of category)
[x] Supports iOS 9 / tvOS 10 or later
[x] Supports Swift 4 or later
[x] Has a commit from less than 2 years ago
[x] Has a clear README in English

          1 Warning

:warning:
Found 12 link issues, a project collaborator will take care of these, thanks :)

Link issues by awesome_bot

Line
Status
Link

206
403
https://www.udemy.com/arkit-beginner-to-professional/?couponCode=CREATORS

228
301
https://answers.io/ redirects tohttps://get.fabric.io

460
301
https://github.com/hyperoslo/Hue redirects tohttps://github.com/zenangst/Hue

613
404
https://github.com/mentalfaculty/impeller

932
301
https://github.com/schibsted/layout redirects tohttps://github.com/nicklockwood/layout

1333
404
https://github.com/SvenTiigi/PerfectAPIClient

1509
301
https://github.com/RC7770/MFCard redirects tohttps://github.com/MobileFirstInc/MFCard

1623
Error
https://www.packetzoom.com/  Connection refused - connect(2) for "www.packetzoom.com" port 443

1654
301
https://github.com/SlackKit/SlackKit redirects tohttps://github.com/pvzig/SlackKit

1666
404
https://github.com/SvenTiigi/PerfectSlackAPIClient

3208
301
https://www.shinobicontrols.com/blog/ios-10-day-by-day-index redirects tohttps://www.shinobicontrols.com/blog/ios-10-day-by-day-index/

3251
301
http://principleformac.com redirects tohttps://principleformac.com/

  Generated by :no_entry_sign: Danger

@yonat   We cannot merge your PR yet until you fill all of contribution guideline requirements. Feel free to open PR once it is ready.
Please check our CONTRIBUTION GUIDELINES


evaluate splore support for embedly

This would allow you to embed splore in a Medium post for example.
http://embed.ly/providers/new

@aboodman thought you might take a look if you haven't already

I did, but I can't make heads or tails of it.

... I ain't going to figure it out either.


[docs] document that impersonation, specially around using a lower privileged account in order to drops privileges doesn't work.

related RFE targeted for 2.10
https://github.com/rancher/rancher/issues/41988
https://jira.suse.com/browse/SURE-7524?focusedId=1350492&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1350492

Closing ticket since I see Sunil was able to get some PRs merged regarding the documentation. Feel free to reopen if this is incorrect @samjustus


Add option to deny serving unknown clients

One can deny serving some specific client versions via DROP_CLIENT. However, there is no way to deny serving clients, which do not identify themselves at all. This patch adds an option to do that. If DROP_CLIENT_UNKNOWN is set, the server will drop connections on a first method call (other than server.version) if the client is unknown.
Let me know what you think. I am running this fork in production myself.

This was originally submitted as kyuupichan/electrumx#1016, but I don't know what the future of that repo is, so submitting here as well, just in case.

Looks ok.
I think we should consider making this default.
The current docs say:

The client should send a server.version() RPC call as early as possible in order to negotiate the precise protocol version

This is due to historical reasons: old electrum clients used to send a few other RPCs before server.version.
Modern electrum however sends server.version first.
I think we could require server.version to be the first message on the wire, which I think is the sane behaviour in any case.
However, I don't see how this could be done in a backwards-compatible way. I guess the best way to do it would be declaring that it should be the first message now (or soon), and then at some point later - when we bump the minimum supported protocol version to be higher than anything currently supported - we can make it required.

Looks good. I'll merge tomorrow. In meantime, if you get a chance beforehand, I made a couple of nit-pick comments.

Thanks for the review


Error 400 when using gcp.spanner.DatabaseIAMMember with conditions

What happened?
Using gcp.spanner.DatabaseIAMMember with conditions results in Error 400.
With the new Spanner FG role, there is a need to apply IAM permission with conditions. However, gcp.spanner.DatabaseIAMMember throws Error 400 when applied using Pulumi.
Versions:
@pulumi/pulumi: v3.47.1
@pulumi/gcp: 6.43.0
Pulumi client: v3.47.1
Steps to reproduce
Minimal Example
import * as gcp from '@pulumi/gcp';
const policy = new gcp.spanner.DatabaseIAMMember('test-role', {
  project: 'some-project,
  instance: 'some-instance',
  database: 'some-database',
  role: 'roles/spanner.fineGrainedAccessUser',
  member<EMAIL_ADDRESS>  condition: {
    expression: `(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/some_role")))`,
    title: 'Spanner Fine-grained Access',
    description: 'Managed by Pulumi',
  }
});

Expected Behavior
Database IAM with conditions should be created on GCP
Actual Behavior
Error 400
error: 1 error occurred:
        * Error applying IAM policy for Spanner Database: some-project/some-instance/some-database: Error setting IAM policy for Spanner Database: some-project/some-instance/some-database: googleapi: Error 400: Policy cannot contain both conditions and condition hashes. Please update your client to request version 3 policy. For more information, please refer to https://cloud.google.com/iam/help/allow-policies/versions., badRequest

Output of pulumi about
CLI
Version      3.47.1
Go Version   go1.19.2
Go Compiler  gc

Plugins
NAME    VERSION
gcp     6.43.0
nodejs  unknown

Host
OS       ubuntu
Version  20.04
Arch     x86_64

This project is written in nodejs: executable='/home/weihan/.nvm/versions/node/v16.14.0/bin/node' version='v16.14.0'

Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

This looks like an upstream issue https://github.com/hashicorp/terraform-provider-google/issues/13060  - we should be able to get this to work once we upgrade the dependency to a new version that implements this.

The upstream issue got resolved, so I'll go ahead and close this one as done. Please report back if it still doesn't work.


Error: internal error, response body doesn't match error type signature

Appears that the response body isn't matching what's returned. In my cause it's probably related to a 401 or something re: access because everything looks good but returns the same error.
resource "planetscale_branch" "db" {
  organization  = "company"
  database      = "comapny-db"
  parent_branch = "main"
  name          = var.name == "production" ? "main" : var.name
}

Appears the error is related to the planetscale-go library:
https://github.com/planetscale/planetscale-go/blob/7adddf4d6d4888abc4fa77141e9facc09f32a8f7/planetscale/client.go#L196-L211

Seems like this happens when the API token is incorrect. Probably returning a 401 which isn't handled properly by the client library.

Caused by upstream planetscale/planetscale-go#118

resolved in #11

@s1ntaxe770r It wasn't actually that was just updating the library hoping it would be. It's an upstream bug with the planetscale-go library.


dbg: increase limit when safely reading envoy metrics via cilium-dbg

Currently, fetching the Envoy metrics via cilium-dbg envoy admin metrics can end up easily with the following exception.
/home/cilium# cilium-dbg envoy admin metrics
Error: cannot get metrics: failed to read "stats/prometheus" response: read limit reached

The reason is the current limit of 1MB when reading the response body with safeio.ReadAllLimit.
Therefore, this commit is increasing the limit to 100MB.

/test


build: bump b64 to v<IP_ADDRESS>

Signed-off-by: Lorenzo Fontana<EMAIL_ADDRESS>What type of PR is this?
/kind cleanup

/area build
What this PR does / why we need it:
libb64, a dependency that we use for base64 encoding/decoding was having an issue on armv7.
Reported by: @alexellis
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
NONE

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign fntlnz
You can assign the PR to them by writing /assign @fntlnz in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: e343140bff42b71ff2591d286246347b72dcacaf

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: leodido
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [leodido]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

I'm getting this error:
pi@k4s-1:~/falco/build $ make
[  0%] Performing update step for 'string-view-lite'
[  0%] No configure step for 'string-view-lite'
[  0%] No build step for 'string-view-lite'
[  0%] Performing install step for 'string-view-lite'
[  1%] Completed 'string-view-lite'
[  3%] Built target string-view-lite
[  7%] Built target tbb
[  8%] Performing build step for 'b64'
In file included from /usr/include/stdio.h:33,
                 from c-example1.c:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/stddef.h:216:23: error: conflicting types for ‘size_t’
 typedef __SIZE_TYPE__ size_t;
                       ^~~~~~
In file included from ../include/b64/cencode.h:11,
                 from c-example1.c:18:
../include/b64/ccommon.h:20:27: note: previous declaration of ‘size_t’ was here
     typedef unsigned long size_t;
                           ^~~~~~
make[4]: *** [<builtin>: c-example1] Error 1
make[3]: *** [Makefile:8: all_examples] Error 2
make[2]: *** [CMakeFiles/b64.dir/build.make:114: b64-prefix/src/b64-stamp/b64-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:147: CMakeFiles/b64.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

Arch/OS:
pi@k4s-1:~/falco/build $ uname -a
Linux k4s-1 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
pi@k4s-1:~/falco/build $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

New changes are detected. LGTM label has been removed.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign fntlnz
You can assign the PR to them by writing /assign @fntlnz in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign fntlnz
You can assign the PR to them by writing /assign @fntlnz in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/cc @leodido
/cc @leogr

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 6a4c7468bd7bc3af3bb1b6e008ce2f6e087b03a2

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: leodido, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [leodido,leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Toggle icon to disable/enable  extension

It would be a nice feature like others to have the icon clickable and toggle extension to disable and enable.

We could repurpose the "Connected to Discord" text for this


Added cache to pip

I add cache for pip, so it can work faster.
See at http://docs.travis-ci.com/user/migrating-from-legacy/ for description.

Hi thanks for the suggestion, I think it's a useful addition. However the PR you submitted fails on Travis. Can you check the errors there?


Bounding box default value conflict

Describe the bug
In 2021.1 there is a new feature - multiple bounding boxes. Default value has been changed to 16 (1 per cube, minecraft cube is 16x16x16) but when you're making a 1.12.2 mod, it actually makes the block in game size of 16x16x16 blocks.
There is also an issue with rotation of blocks - if you choose for example Y axis rotation (S/W/N/E), even though you fixed the bounding box to be 1x1x1, rotated block will have bounding box reset to 16 on sides (height seems to be fine but I guess if you chose different rotation it may be borked too)
To Reproduce
Make a block and don't change the bounding box. Load game, check block - it's bounding box is 16x16x16.
To check rotation - fix bounding box to be 1x1x1, allow rotation of block when placed, check in game.
Screenshots

Details

OS: W10
MCreator version 2021.1, newest release
Generator type: forge-1.12.2

Additional context
My guess is that it's simply because of the default value that the bounding box is set to in newer version of this option. :)

Ok generally there is something wrong with the bounding box.

Upper half slabs would have the settings: 0, 0.5, 0, 1, 1, 1

Meanwhile, "lower slab setting" works.

Lower half slabs would have the settings: 0, 0, 0, 1, 0.5, 1 (min x, y, z, max x, y, z)