[YUNIKORN-2834] [shim] Add non-YuniKorn allocation tracking logic

What is this PR for?
Add foreign pod handling logic to the shim. Existing code which deals with occupiedResources will be removed in a follow-up PR.
What type of PR is it?

[ ] - Bug Fix
[ ] - Improvement
[x] - Feature
[ ] - Documentation
[ ] - Hot Fix
[ ] - Refactoring

Todos

[ ] - Task

What is the Jira issue?
https://issues.apache.org/jira/browse/YUNIKORN-2791
How should this be tested?
Screenshots (if appropriate)
Questions:

[ ] - The licenses files need update.
[ ] - There is breaking changes for older versions.
[ ] - It needs documentation.

I think we need to handle orphan pods for foreign pods similar to yunikorn ones. In other words, if a pod references a non-existent node, it needs to be "orphaned" and not sent to the core. If a node appears, any currently orphaned pods (foreign or otherwise) which reference the new node need to be adopted and registered with the core.

I think we need to handle orphan pods for foreign pods similar to yunikorn ones. In other words, if a pod references a non-existent node, it needs to be "orphaned" and not sent to the core. If a node appears, any currently orphaned pods (foreign or otherwise) which reference the new node need to be adopted and registered with the core.

Makes sense. I'll update the PR with these changes tomorrow.

Also, I'm pretty sure the removal of the context lock broke the logic around ensuring orphan pod handling is done correctly (and is likely responsible for some of the resource mismatches in 1.6.0). This PR was where this was done: https://github.com/apache/yunikorn-k8shim/pull/859
I think we need to re-add the locks here. The context lock was not used to gaurd the context object itself, but to act as a "meta-lock" to ensure that we don't process node and pod events simultaneously.

I think we need to handle orphan pods for foreign pods similar to yunikorn ones. In other words, if a pod references a non-existent node, it needs to be "orphaned" and not sent to the core. If a node appears, any currently orphaned pods (foreign or otherwise) which reference the new node need to be adopted and registered with the core.

@craigcondit I looked at the code in more details, here are my findings:

Adding orphan foreign pod: handled inside updateForeignPod():

if oldPod == nil && utils.IsAssignedPod(pod) && !utils.IsPodTerminated(pod) {
		if ctx.schedulerCache.UpdatePod(pod) {
			// pod was accepted by a real node
			log.Log(log.ShimContext).Debug("pod is assigned to a node, trigger occupied resource update",
				zap.String("namespace", pod.Namespace),
				zap.String("podName", pod.Name),
				zap.String("podStatusBefore", podStatusBefore),
				zap.String("podStatusCurrent", string(pod.Status.Phase)))
			allocReq := common.CreateAllocationForForeignPod(pod)
			if err := ctx.apiProvider.GetAPIs().SchedulerAPI.UpdateAllocation(allocReq); err != nil {
				log.Log(log.ShimContext).Error("failed to add foreign allocation to the core",
					zap.Error(err))
			}
		} else {
			// pod is orphaned (references an unknown node)
			log.Log(log.ShimContext).Info("skipping occupied resource update for assigned orphaned pod",
				zap.String("namespace", pod.Namespace),
				zap.String("podName", pod.Name),
				zap.String("nodeName", pod.Spec.NodeName))
		}
		return
	}

Pod becomes assigned to a real node: handled together with YK pods (adoptedPods slice)
Orphan pod update: same as addition, handled in updateForeignPod()
Deleting orphan pod: this is where probably the only change is necessary, don't send message to the core:

func (ctx *Context) deleteForeignPod(pod *v1.Pod) {
	releaseReq := common.CreateReleaseRequestForForeignPod(string(pod.UID), constants.DefaultPartition)
	if err := ctx.apiProvider.GetAPIs().SchedulerAPI.UpdateAllocation(releaseReq); err != nil { <--- don't send if orphan pod
		log.Log(log.ShimContext).Error("failed to remove foreign allocation from the core",
			zap.Error(err))
	}

	log.Log(log.ShimContext).Debug("removing pod from cache", zap.String("podName", pod.Name))
	ctx.schedulerCache.RemovePod(pod)
}

Is there anything else?

Is there anything else?

That seems pretty complete. I'd like to see some tests that verify correctness before and after each of these scenarios. The locking definitely needs to be there in the context regardless.

Added tests for orphan pods.
I didn't do anything with 4) because it's much safer to always send a release request.

@pbacsko Can you rebase? YUNIKORN-2910 got merged.


A non-serializable value was detected in the state, in the path: auth.user

Challenge
When we integrate the redux-oidc state into our project, we get the following error on all store calls:
A non-serializable value was detected in the state, in the path: `auth.user`. Value:
t
expires_in: (...)
expired: (...)
scopes: (...)
id_token: "1234.1234"
session_state: undefined
access_token: "ey"
refresh_token: undefined
token_type: "bearer"
scope: "openid"
profile: {sub: "123456-123456", email_verified: true, jtt: "id_token", lee: Array(1), acr: "https://example.com", …}
expires_at:<PHONE_NUMBER>
state: undefined

The problem seems to be that the user object is a class
Our fix
We could fix that, by rewriting the following method inside src/OidcProvider.js:
  onUserLoaded = (user) => {
    this.props.store.dispatch(userFound(JSON.parse(user.toStorageString())));
  };

Parts of our code
This is how we make use of the reducer:
import { combineReducers } from '@reduxjs/toolkit';
import { connectRouter } from 'connected-react-router';

import { reducer as oidcReducer } from 'redux-oidc';

import myProfileReducer from 'components/my-profile/MyProfileSlice';

import { createBrowserHistory } from 'history';

export const history = createBrowserHistory();

const rootReducer = combineReducers({
    auth: oidcReducer,
    router: connectRouter(history),
    myProfile: myProfileReducer,
});

export type RootState = ReturnType<typeof rootReducer>;

export default rootReducer;

And this is the callback component
import React from 'react';
import { CallbackComponent as CallbackComponentOidc } from 'redux-oidc';
import userManager from '../userManager';
import { useHistory } from 'react-router-dom';

export const CallbackComponent: React.FC<{}> = () => {
    const history = useHistory();
    console.log('callback component is called');
    return (
        <>

Callback Componengt

            <CallbackComponentOidc
                userManager={userManager}
                successCallback={() => {
                    console.log('Success');
                    history.push('/dashboard');
                }}
                errorCallback={error => {
                    history.push('/');
                    console.error(error);
                }}
            >

Redirecting...

            </CallbackComponentOidc>
        </>
    );
};

also we needed to change this on all other places where you make user of the user:

oidcMiddleware.js

 nextMiddleware(userFound(JSON.parse(user.toStorageString())));

OidcProvider.js

  onUserLoaded = (user) => {
    this.props.store.dispatch(userFound(JSON.parse(user.toStorageString())));
  };

src/helpers/loadUsers.js

export function getUserCallback(user) {
  if (user && !user.expired) {
    reduxStore.dispatch(userFound(JSON.parse(user.toStorageString())));
  } else if (!user || (user && user.expired)) {
    reduxStore.dispatch(userExpired());
  }
  return user;
}

I have created a fork here:
https://github.com/bastiW/redux-oidc

I'd also like to get rid of non-serializable warning. We're using Redux Toolkit which includes serializable checks for state as a default dev-only middleware (https://redux-toolkit.js.org/api/other-exports#createserializablestateinvariantmiddleware) and I'll be happier without warnings which I should always ignore.

Any updates on this? I am also using the redux toolkit and the console is getting quite cluttered over here. I did manage to temporarily disable the serializable check, but this is not a valid fix for anything. This just gives me back my console.
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'
...
const store = configureStore(
    {
        reducer: YOUR_REDUCER(S)_HERE,
        middleware: [
            ...getDefaultMiddleware({
                serializableCheck: false
            }),
            ...otherMiddlewares
        ],
        devTools: process.env.NODE_ENV !== 'production' ? { CONFIG_GOES_HERE } : false
    }
);

This disables the check for serializable data in you store, so i wont recommend this as a fix to the problem.

Adding onto @japalo solution, you can disable the serializationCheck specifically just for the oidc reducer by providing the options below:
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'
...
const store = configureStore(
    {
        reducer: YOUR_REDUCER(S)_HERE,
        middleware: [
            ...getDefaultMiddleware({
                serializableCheck: {
                    ignoredActions: ['redux-oidc/USER_FOUND'],
                    ignoredPaths: ['oidc.user']
                }
            }),
            ...otherMiddlewares
        ],
        devTools: process.env.NODE_ENV !== 'production' ? { CONFIG_GOES_HERE } : false
    }
);

Documentation on these options for redux-toolkit can be found on the redux-toolkit docs.

Any updates on this? I am also using the redux toolkit and the console is getting quite cluttered over here. I did manage to temporarily disable the serializable check, but this is not a valid fix for anything. This just gives me back my console.
import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'
...
const store = configureStore(
    {
        reducer: YOUR_REDUCER(S)_HERE,
        middleware: [
            ...getDefaultMiddleware({
                serializableCheck: false
            }),
            ...otherMiddlewares
        ],
        devTools: process.env.NODE_ENV !== 'production' ? { CONFIG_GOES_HERE } : false
    }
);

This disables the check for serializable data in you store, so i wont recommend this as a fix to the problem.

in 2023 we have to write getDefaultMiddleware like this
import { configureStore } from '@reduxjs/toolkit'
...
const store = configureStore(
    {
        reducer: YOUR_REDUCER(S)_HERE,
        middleware: getDefaultMiddleware =>
            getDefaultMiddleware({
                serializableCheck: false,
            }).concat(OTHER_MIDLEWER),
        devTools: process.env.NODE_ENV !== 'production' ? { CONFIG_GOES_HERE } : false
    }
);


build new artifact (entire actions-server subdir)

see - https://github.com/avimoondra/fishbowl/pull/93/commits/94896672aafe8e6f6bb1cb842efce78c0c47b5d0
Took 13 min to upload the artifact..
https://github.com/avimoondra/fishbowl/pull/93/checks?check_run_id=735824183

Never completed here...
https://dashboard.render.com/web/srv-brbuqlol1r14mk5lfn70/deploys/dep-brbv4up8vr2dqesnhpj0
Jun 3 11:57:06 AM  $ ts-node src/index.ts actions-server
Jun 3 11:57:09 AM  Downloading actions-server artifact
Jun 3 11:58:47 AM  Creating directory /opt/render/project/src/deploy
Jun 3 11:58:47 AM  Writing artifact to /opt/render/project/src/deploy/actions-server.zip
Jun 3 11:58:47 AM  Done in 100.26s.
Jun 3 11:58:47 AM  Archive:  actions-server.zip
Jun 3 11:58:47 AM    End-of-central-directory signature not found.  Either this file is not
Jun 3 11:58:47 AM    a zipfile, or it constitutes one disk of a multi-part archive.  In the
Jun 3 11:58:47 AM    latter case the central directory and zipfile comment will be found on
Jun 3 11:58:47 AM    the last disk(s) of this archive.
Jun 3 11:58:47 AM  unzip:  cannot find zipfile directory in one of actions-server.zip or
Jun 3 11:58:47 AM          actions-server.zip.zip, and cannot find actions-server.zip.ZIP, period.
Jun 3 11:58:47 AM  ==> Build failed 😞

I think it's fine to install dependencies on the server itself?
cc: @namoscato


Enums are broken since 1.0?

In <IP_ADDRESS>.1, the following enum compiled just fine:
public class LogLevel {

    public static final LogLevel DEBUG   = new LogLevel(0);
    public static final LogLevel VERBOSE = new LogLevel(1);
    public static final LogLevel INFO    = new LogLevel(2);
    public static final LogLevel WARN    = new LogLevel(3);
    public static final LogLevel ERROR   = new LogLevel(4);

    private int level;
    private LogLevel(int level) { this.level = level; }
    public boolean smallerThanOrEqualTo(LogLevel o) {
        return this.level <= o.level;
    }

}

It would translate to:
#ifndef ComPackageName.h
#define ComPackageName.h

#include "J2ObjC_header.h"

@interface SCLLogLevel : NSObject

#pragma mark Public

- (jboolean)smallerThanOrEqualToWithSCLLogLevel:(SCLLogLevel *)o;

@end

J2OBJC_STATIC_INIT(SCLLogLevel)

FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_DEBUG__;
J2OBJC_STATIC_FIELD_GETTER(SCLLogLevel, DEBUG__, SCLLogLevel *)

FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_VERBOSE_;
J2OBJC_STATIC_FIELD_GETTER(SCLLogLevel, VERBOSE_, SCLLogLevel *)

FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_INFO_;
J2OBJC_STATIC_FIELD_GETTER(SCLLogLevel, INFO_, SCLLogLevel *)

FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_WARN_;
J2OBJC_STATIC_FIELD_GETTER(SCLLogLevel, WARN_, SCLLogLevel *)

FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_ERROR_;
J2OBJC_STATIC_FIELD_GETTER(SCLLogLevel, ERROR_, SCLLogLevel *)

J2OBJC_TYPE_LITERAL_HEADER(SCLLogLevel)

@compatibility_alias ComPackagenameLoggingLevel SCLLogLevel;

#endif // ComPackageName.h

But, since 1.0 it translates to
#include "J2ObjC_header.h"

#pragma push_macro("ComPackageNameLoggingLogLevel_INCLUDE_ALL")
#ifdef ComPackageNameLoggingLogLevel_RESTRICT
#define ComPackageNameLoggingLogLevel_INCLUDE_ALL 0
#else
#define ComPackageNameLoggingLogLevel_INCLUDE_ALL 1
#endif
#undef ComPackageNameLoggingLogLevel_RESTRICT

#if !defined (SCLLogLevel_) && (ComPackageNameLoggingLogLevel_INCLUDE_ALL || defined(SCLLogLevel_INCLUDE))
#define SCLLogLevel_

@interface SCLLogLevel : NSObject

#pragma mark Public

- (jboolean)smallerThanOrEqualToWithSCLLogLevel:(SCLLogLevel *)o;

@end

J2OBJC_STATIC_INIT(SCLLogLevel)

inline SCLLogLevel *SCLLogLevel_get_DEBUG();
/*! INTERNAL ONLY - Use accessor function from above. */
FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_DEBUG;
J2OBJC_STATIC_FIELD_OBJ_FINAL(SCLLogLevel, DEBUG, SCLLogLevel *)

inline SCLLogLevel *SCLLogLevel_get_VERBOSE();
/*! INTERNAL ONLY - Use accessor function from above. */
FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_VERBOSE;
J2OBJC_STATIC_FIELD_OBJ_FINAL(SCLLogLevel, VERBOSE, SCLLogLevel *)

inline SCLLogLevel *SCLLogLevel_get_INFO();
/*! INTERNAL ONLY - Use accessor function from above. */
FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_INFO;
J2OBJC_STATIC_FIELD_OBJ_FINAL(SCLLogLevel, INFO, SCLLogLevel *)

inline SCLLogLevel *SCLLogLevel_get_WARN();
/*! INTERNAL ONLY - Use accessor function from above. */
FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_WARN;
J2OBJC_STATIC_FIELD_OBJ_FINAL(SCLLogLevel, WARN, SCLLogLevel *)

inline SCLLogLevel *SCLLogLevel_get_ERROR();
/*! INTERNAL ONLY - Use accessor function from above. */
FOUNDATION_EXPORT SCLLogLevel *SCLLogLevel_ERROR;
J2OBJC_STATIC_FIELD_OBJ_FINAL(SCLLogLevel, ERROR, SCLLogLevel *)

J2OBJC_TYPE_LITERAL_HEADER(SCLLogLevel)

@compatibility_alias ComPackageNameLoggingLogLevel SCLLogLevel;

#endif

#pragma pop_macro("ComPackageNameLoggingLogLevel_INCLUDE_ALL")

Which doesn't compile in Xcode 7.3.1.
The error message says:
Interface type 'SCLLogLevel' cannot be passed by value; did you forget * in 'SCLLogLevel'?
Conflicting types for 'J2OBJC_STATIC_FIELD_OBJ_FINAL'
Expected ';' after top level declarator
and a warning in the same line:
Type specifier missing, defaults to 'int'.
I'm using the j2objc-gradle plugin to do the translation, but I don't think that's the problem, since the translated files themselves seem to be erroneous.
Any ideas as to what is going wrong here?

Your java code translates and compiles fine for me. Can you include the expanded compiler command and output so I can see which lines of code it's complaining about?

Sorry, maybe I should have added that I'm working with swift.
The final compiler message is Failed to import bridging header ....
I tried to shorten the output to the relevant lines:
/Users/.../File.h:10:
#import "JavaSources.h"
        ^
/Users/.../JavaSources.h:76:
#import "at/wirecube/core/logging/LogLevel.h"
        ^
error: interface type 'SCLLogLevel' cannot be passed by value; did you forget * in 'SCLLogLevel'?

Thanks for the help!

I can't tell if swift is having trouble with the J2OBJC_STATIC_FIELD_OBJ_FINAL macro or the "DEBUG" name of your constant. Do you get the same errors for all the other constants?

Yes, I get the same errors for all the constants. :(

Did you update your j2objc runtime to the new version and update your header search paths to point at it? The "previous declaration is here" message for J2OBJC_STATIC_FIELD_OBJ_FINAL makes me suspicious that the compiler never saw the macro as defined in J2ObjC_header.h.

Thank you, that was spot on. It seems upgrading the j2objc version and then doing a pod install with the new podspec didn't remove the old header and library search paths from the workspace. Deleting the workspace file and doing a clean pod install did the trick.

Sorry for reopening the issue, but I think this is better than opening a new one.
I got the generated files to compile, but I cannot access enum types that are declared within a class like this:
public class MyClass {
  public enum EnumName {
    Type1, Type2
  }
}

I get Use of unresolved identifier 'EnumName' when trying to access the enum in swift. In objc, I also cannot use the enum type, because Receiver 'EnumName' for class message is a forward declaration.
I used the --swift-friendly flag to transpile the java sources.
Looking at the generated file, I see the following preprocessor macro right before the enum type is defined (there is a forward declaration at the top of the file, which is why objc can see it):
#if !defined (EnumName_) && (INCLUDE_ALL_PackageNameMyClass || defined(INCLUDE_MyClass_EnumName))
It seems like this condition is never true?
I'm now using release 1.1.

The names of inner types will be appended to the name of the outer type with an underscore delimiter. So in your case your enum type will be called "MyClass_EnumName".
The preprocessor macros that you're seeing are part of Segmented Headers, which as far as I know are not a problem for Swift bridging, but I could be wrong. They can be disabled with --no-segmented-headers

I failed to realize I had to include the generated headers using the #include directive instead of #import.
Thank you once more, I owe you a 🍺


Bluetooth: GATT: Allow application to restore subscription without resubscribing

Allow the application to add subscription without resubscribing.
This is needed for persistent bonds that can go to deep sleep and
turn of the RAM or power-cycle.
In this case the application as a GATT client must have a way to add
the subscription callbacks back to the stack before the GATT server
sends notifications.
This should preferable be able to be done before even connecting
since the notifications can arrive immediately after connecting to
the peer.
The stack cannot persist this on it's own since it must remember the
function pointers for the callback functions. Storing these in
persistent storage would not be compatible with a Device Firmware
Upgrade (DFU) solution.
Fixes: #21798
Fix bug in gatt_sub_add potentially creating duplicate entries in the
subscriptions array for the same peer.
Since the for loop only does one iteration checking for both
matching existing entry and a free entry, then finding a free
entry before finding a matching entry would result in the same
entry being added twice in the array.
Fix this by first searching for a matching entry before finding
a free entry.

Note that this approach is not incompatible with the stack handling client subscriptions in the future: If we introduce that feature then it will be optional, and this API is designed for those client applications that want to handle the storage of the subscriptions themselves, since there is a lot of data that can go with those (char and service UUIDs, state, etc) that the stack will not be able to accomodate.


[Major] Make fmt use intuitive

And:

Standardise exported middleware type signature (i.e. () => mw instead of mw)
Export transformer instead of middleware
Provide Api Flavor with updated README
remove parse_mode completely to signal strong disuse recommendation

TODO:

answerInlineQuery

@KnorpelSenf nice, I will try to do something in this week 🌚

Ping me or request a review once you want me to TAL

Ping me or request a review once you want me to TAL

All right. The only thing left should be jsdocs, comments, readme, and updating website docs before release. It'll be.. awhile, but feel free to jump in if you need to.

Tentatively postponed until grammY 2


Benchmark glyph_index when glyph is not found

Just because I think it's quite slow
Tested on AMD Ryzen 7 1700 + Arch linux 64-bit:
running 16 tests
test family_name                 ... bench:         271 ns/iter (+/- 29)
test from_data_otf_cff           ... bench:       1,267 ns/iter (+/- 245)
test from_data_otf_cff2          ... bench:       1,264 ns/iter (+/- 112)
test from_data_ttf               ... bench:         666 ns/iter (+/- 84)
test glyph_index_not_found       ... bench:       1,887 ns/iter (+/- 136)
test glyph_index_u41             ... bench:          24 ns/iter (+/- 1)
test glyph_name_cff_276          ... bench:          97 ns/iter (+/- 3)
test glyph_name_cff_8            ... bench:           8 ns/iter (+/- 0)
test glyph_name_post_276         ... bench:         286 ns/iter (+/- 21)
test glyph_name_post_8           ... bench:           3 ns/iter (+/- 1)
test outline_glyph_276_from_cff  ... bench:       1,365 ns/iter (+/- 43)
test outline_glyph_276_from_cff2 ... bench:       1,318 ns/iter (+/- 103)
test outline_glyph_276_from_glyf ... bench:       1,238 ns/iter (+/- 120)
test outline_glyph_8_from_cff    ... bench:         507 ns/iter (+/- 45)
test outline_glyph_8_from_cff2   ... bench:         783 ns/iter (+/- 75)
test outline_glyph_8_from_glyf   ... bench:         548 ns/iter (+/- 109)

Will take a look what is wrong with it.

I found processing SegmentedCoverage (cmap::format12) is quite slow. For Noto Sans CJK JP Regular: it takes around 11ms per SegmentedCoverage table, and ttf-parser thinks it has two of it, (One for platform_id() == Unicode, and another one for platform_id() == Windows, and these two share same offset in the raw data.) that makes to take 11ms * 2 = 22ms.
Here's a sample script I tried:
use std::time::Instant;
use std::{env, error, fs};
use ttf_parser::{cmap, Face, PlatformId};

fn main() -> Result<(), Box<dyn error::Error>> {
    let path = env::args_os().skip(1).last().unwrap();
    let file = fs::read(path)?;
    let face = Face::from_slice(file.as_slice(), 0)?;

    let table = face
        .character_mapping_subtables()
        .filter(|x| {
            x.platform_id() == PlatformId::Unicode && x.format() == cmap::Format::SegmentedCoverage
        })
        .nth(0);

    if let Some(table) = table {
        // fs::write("./segmented-coverage-subtable", table.subtable_data)?;

        let time = Instant::now();
        cmap::format12::parse(table.subtable_data, 0xf001);
        let elapsed = time.elapsed().as_micros();

        // benches/fonts/SourceSansPro-Regular.ttf: 1343us (length: 821)
        // Noto Sans CJK JP Regular (from NotoSansCJK-Regular.ttc): 11053us (length: 15286)
        eprintln!(
            "{time}us ({count} entries)",
            time = elapsed,
            count = table.subtable_data[12..16]
                .iter()
                .fold(0u32, |a, &b| (a << 8) + (b as u32))
        );
    }
    Ok(())
}

And here's a SegmentedCoverage table for Noto Sans CJK JP: https://gist.github.com/xnuk/dd16b709c73ccfebb185da252ba35d62

Agreed; I have found this to be a performance issue when implementing font fallbacks.

Closing this as #72 has been merged


Replace argument FragmentActivity to Activity in SQLitePlugin

I think Activity must be by default as type of this argument.

i will take a look at this.

Yes agree. I should have been an Activity from start. I am making this change now.

Done. Thanks for your suggestion Alex.

@andpor Thanks you for good module ! This module helped me on ios with improve sqlite performance! From 2m to 2s for 20k rows, timing on react-native code ! I expected will the same result on Android, but that did not happen, may be you known methods to fetch 10k rows with time 0.5s ? Now is time 6s.
P.S.: Sorry for my English,  is not my native language.

Well, I will have a supposedly faster adapter for Android ready within the next few days. Hopefully it will give you the spread improvement you are looking for I hope. I do not know the exact timings unfortunately. Very excited about this myself too. Спасибо тебе друг.

... and I can't take full credit - core work done by Chris Brody

Sure he deserves thanks for the excellent library. :+1:

Thanks guys, I think was a team effort. If you look at https://github.com/litehelpers/Cordova-sqlite-storage/blob/master-public/AUTHORS.md, I extracted a couple major parts from DroidGap and others wrote the iOS and WP8 versions. Some others made major contributions in the first couple years. The original SQLite Plugin was made by @davibe and @joenoon for iOS and I forked it to add more and more features.
I will take credit for maintaining it since it has taken a lot of work on my part for the past few years. I am thinking about writing a HISTORY.md file for those who may be interested in the future.

@brodybits Thank you for information and your work ! And HISTORY.md good idea.

@barbarosh - check out the project under android-native and tell me what kind of timings you experience vs the original Android implementation. Hope it will be much better - fingers crossed.


PX4FMU_V1  battery voltage error

Line 853 in sensors.cpp :
#elif CONFIG_ARCH_BOARD_PX4FMU_V2
should be
#elif CONFIG_ARCH_BOARD_PX4FMU_V1

Thanks! Fixed in 5f407f5.


3.0 relations problems

I have relations like this:
set -> todos -> todoUser -> details
My api call is:
/sets?with=todos.todoUser
And I would like to get:
sets[] -> todos[] -> todouser{} -> details{}
SetTransformer
protected $relations = ['todos'];
TodoTransformer
protected $relations = ['todoUser'];
UserTransformer
protected $load = ['details'];
Result: todos are not included
Changing SetTransformer
protected $relations = ['todos' => TodoTransformer::class];
Result: todos are included, todoUser is included, details not included
If I change the api call to:
/sets?with=todos.todoUser.details
Result: todos are not included
To get details relation included I need to change:
TodoTransformer
protected $relations = ['todoUser' => UserTransformer::class];
UserTransformer add
protected $relations = ['details'];
api call:
/sets?with=todos.todoUser.details
Every other compination is not working.
When using v2 this api call /sets?with=todos.todoUser was working fine and autoloaded details relation automatically. Am i doing something wrong or why this is happening?

Ahh, this is indeed unexpected behavior. Managed to replicate in a new project. The problem is, it tries to resolve all $load relations recursively by itself without taking account of transformers that are nested through the $relations mappings.
I've written a failing test, so will get on to finding a solution as soon as possible!

Sounds good! 😊👍
On Sun, 4 Feb 2018 at 9.20, Alexander Tømmerås<EMAIL_ADDRESS>wrote:

Ahh, this is indeed unexpected behavior. Managed to replicate in a new
project. The problem is, it tries to resolve all $load relations
recursively by itself without taking account of transformers that are
nested through the $relations mappings.
I've written a failing test, so will get on to finding a solution as soon
as possible!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/flugger/laravel-responder/issues/108#issuecomment-362923358,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACmIst2WE1UZPycHk1EN83rVrfp3cNqVks5tRebegaJpZM4R4kKi
.

This should now be fixed with the latest release. Let me know if you still have issues :)

I cant get the todoUser relation included anymore after updating to 3.0.2

Have you added a transformer mapping to all $relations?

I have tried both, with mappings and strings only

Strange, I can't seem to replicate. Do you have some more information I can work with?

You can also try to add a dump to Flugg\Responder\TransformBuilder to debug this. For instance, what is the output if you add the given line to line 262:
if ($transformer instanceof Transformer) {
            $relations = $transformer->relations($this->with);
            $defaultRelations = $this->removeExcludedRelations($transformer->defaultRelations($this->with));
            $this->with = array_merge($relations, $defaultRelations);
            dd($relations, $defaultRelations);
}

array:1 [   "todos" => null ]
I can send you more info on slack if you want?

Yeah, sure thing!


Stable sort

The sorting should be stable, either w.r.t. the previous sort order, or the order of the list of row elements supplied.
For example, now, if I have a table with a name column and a score column and the score happens to be the same in most rows, sorting by score will change the order of those rows in a seemingly random way.

You can reproduce it here https://evancz.github.io/elm-sortable-table/presidents.html - sort by state descending, so you have everyone from Virginia at the top. You'll notice that the order of the presidents from Virginia is, apparently, random.

Traced the issue to this https://github.com/elm-lang/core/issues/958.

Nice, will make that the canonical one. Thanks!


Binary protocol parsing/encoding

So I really like pydantic, and in need for a binary encoding/decoding library in Python.
I'm already familiar with construct, but it's usage is not so modern (compared to Pydantic and other modern fancy libraries).
I know pydantic is mostly used for JSON, but have been wondering if there'd been an attempt to use it for binary protocols encoding/decoding? Could it be something that Pydantic would might have in the future?

Hello @aviramha, I am also interested in this question. Did you get any response from the project authors?
Do you think pinging them here would be a good idea?
Thanks,

pydantic work with python objects, parsing and validating them.
It's agnostic as to what format the data was in before it was decoded into python (except some utility methods for JSON since it's so common).
Parsing/loading/decoding the data is up to you, you can then pass it to pydantic.
Am I missing something, or misunderstanding your question?

Hello @samuelcolvin,
In fact now that you said this I agree that this should not be a responsibility of pydantic.
What I was thinking about was pydantic parsing the raw data based on a declared BaseModel, but this would be very complicated to declare, probably because it would be difficult to represent details of the raw data structure only with Model fields.
We can leave this issue closed. 😁
Thabks,


CatBoost Ranking no supported

I saw in the code that shap is supporting only catboost classifier and catboost regression
        elif str(type(model)).endswith("catboost.core.CatBoostRegressor'>"):
            assert_import("catboost")
            self.model_type = "catboost"
            self.original_model = model
        elif str(type(model)).endswith("catboost.core.CatBoostClassifier'>"):
            assert_import("catboost")
            self.model_type = "catboost"
            self.original_model = model

and when we use CatBoost for ranking the type of the model is:
catboost.core.CatBoost
by adding this:
        elif str(type(model)).endswith("catboost.core.CatBoost'>"):
            assert_import("catboost")
            self.model_type = "catboost"
            self.original_model = model

It's start to support regular CatBoost model type
is there any thing else i should add?
shape version __version__ = '0.28.3'
mac os
python 3.6.5

Nope, if that is working for you then that should be all you need. CatBoost does not have an internal implementation for SHAP, we just rely on the implementation of Tree SHAP the CatBoost team wrote in their own code: https://github.com/slundberg/shap/blob/dc53ee14340b6614cbe44c5cfad8a0897029c141/shap/explainers/tree.py#L188-L193
Mind sending the update as a PR? :)

sure i will send you :)


SAK-31040 Increase padding between site type/term

https://jira.sakaiproject.org/browse/SAK-31040
Added a bottom margin to the drop down so the two dropdowns do not butt against each other.

LGTM


Proposal - enable automerging capability

Currently merging PRs into master can be somewhat tedious.
When a PR is open it is hopefully reviewed, commented on .. and sometime later one of the maintainers sees it, considers it ready to merge, and typically clicks to update from master, then watches it over the next 20-30 minutes until the build completes, then clicks merge.
If other activity is ongoing this may take a few retries.
So we incur a significant amount of time even after that 'intent' is clear.
I would like to propose that we enable an auto-merging bot such as https://github.com/marketplace/actions/merge-pull-requests
Whilst the old workflow will still work, this will allow us to also simply tag the PR to mark our intent, and let the action worry about re-updating and trying the PR merge. For example we would tag the PR as 'automerge'
Upsides - less effort, time,distraction - quicker to clear backlog
Downsides - accidental/liberal use of automerge tag, bugs in process, very easy to queue up a series of PRs with no (easy) way to manage the queue.
Note that 'dependabot' has it's own integrated automerging which is currently enabled. Once a PR is approved it will do a similar action to that above.
There's a few alternative bots to the one above such as https://github.com/marketplace/actions/pr-merge-bot which additionally will enforce that all reviews are in approved state (even if not mandatory by github settings) which adds a little extra safety ? May be an improvement.
interested in the team's thoughts
cc: @mandy-chessell @cmgrote @grahamwallis @cong78

still valid

Good news https://github.blog/changelog/2021-02-04-pull-request-auto-merge-is-now-generally-available/

Closing this as github now offers this natively https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/automatically-merging-a-pull-request, selectable on a PR basis. Simple but should be more reliable than any of the myriad of plugins


Unable migrate container to other contaner using dmt tool

Unable migrate container to other contaner using dmt tool - Error adding record - Too many request

Is it possible to throttle the transfer rate - to accommodate a destination database with a lower RU capacity compared to the source database?


January 2022 newsletter draft

Sorry for the last-minute submission. Considering people may be offline around New Year's eve, let's plan to complete and merge this by Wednesday, January 5, if possible

[x] PRs summary
[x] GitHub stats data
[x] Flang updates by @AlexisPerry
[ ] LFortran updates by @certik

Flang updates are available here: https://github.com/milancurcic/fortran-lang.github.io/pull/3

I'm confused about something here. This PR by @AlexisPerry introduced an unintended commit ( https://github.com/milancurcic/fortran-lang.github.io/pull/3/commits/c6509ffa9c33f3070265a7697aeb19f5377d0b32), which I missed because only the newsletter file was listed under GitHub's Files changed tab. But now that that PR is merged, I see that the changes to _data/package_index.yml are included here, but they shouldn't be.
@AlexisPerry @awvwgk do you understand why this is and how to fix it? I'm pretty sure this has to do with my not understanding git to a sufficient level.

That's my fault, sorry!  I saw changes to that file showing up in my PR and undid them since I only wanted to update the newsletter file.  I don't know how to remove specific commits, but if someone does, this is the one that need removing:

d2924471d925cc04614a528358d3e1629bc47ec7

Okay, it seems like it's this commit https://github.com/milancurcic/fortran-lang.github.io/pull/3/commits/d2924471d925cc04614a528358d3e1629bc47ec7. Is there an easy way to revert only that one commit?

Could you try git revert d292447?
Le mar. 4 janv. 2022 à 22:37, Milan Curcic @.***> a
écrit :

Okay, it seems like it's this commit @.***
https://github.com/milancurcic/fortran-lang.github.io/commit/d2924471d925cc04614a528358d3e1629bc47ec7.
Is there an easy way to revert only that one commit?
—
Reply to this email directly, view it on GitHub
https://github.com/fortran-lang/fortran-lang.org/pull/357#issuecomment-1005188822,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD5RO7F27IF6PO3ZDYMO2MLUUNSBNANCNFSM5LBVYVOQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID:
@.***>

@jvdp1 Wonderful, that seems to have worked. :)

Thank you all for your contributions! Let's publish tomorrow as planned.

Thanks Milan for pushing it!


Animating parallax view by changing its size

Is it possible to animate the parallax view's size by changing its parallaxHeaderReferenceSize? I'm currently learning more about UICollectionViewFlowLayout and would like to see if this was possible. Thanks!

did you try updating the parallaxHeaderReferenceSize inside UIView animation block or UICollectionView performBatchUpdate block?


LongParameterList: added option to ignore constructors

Due to many dependencies injected via constructors I had to disable the rule in multiple projects.
But the rule is very useful, hence a new setting ignoreConstructors being introduced.

I'm a bit torn on this.
On one hand, I understand your point, @kalessil, on the other  hand this setting makes it way too easy to put a blind eye on excessive construtor parameter lists, which is a good sign of too many dependencies due to a generally bad overall application design or that the class in question simply has too many responsibilities.

As it's still false by default, users are aware they are disabling a rule (like with exceptions parameters).

As it's still false by default, users are aware they are disabling a rule (like with exceptions parameters).

I get you point but for me this exception is quite far reaching, if activated...

@ravage84: the idea behind is to have single DI point, and it can happen that a component has many of deps. But it's just one place where all deps are getting injected, so getters/setters can be discouraged.
From my experience the approach is often adopted, so I had to add the same feature to Php Inspections (EA Extended) (https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-).

I use DIs myself a lot (phug/dependency-injection, tale-di, symfony/dependency-injection).
But having more 10 injected dependencies is also a code smell, it basically mean "everything is connected to everything". And it should not.
I think, this parameter should be 4/5 maximum by default and DI would not be a sufficient reason to exclude __construct from the rule.
So I'm OK for the option, so you can say "I specifically need to inject a lot of services because..." (you should have a good reason) but it should not be enabled by default. So if I well understand, it's the case with the current code.

@kylekatarnls, I'm totally with you, but I also share experience I made with my community which are pretty badass when it comes to software quality. I'll poke you when documentation is ready, so we can put in "round" form recommendation to refactor such components.

Hm apparently I dropped my form, silly me =)
Will re-create this PR (with cross-reference to this PR)


Upgrade k8s sdk version to 1.14.3

Upgrade k8s sdk version to 1.14.3

Codecov Report

Merging #74 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #74   +/-   ##
=======================================
  Coverage   91.84%   91.84%
=======================================
  Files          30       30
  Lines        1655     1655
=======================================
  Hits         1520     1520
  Misses        117      117
  Partials       18       18

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d2a756d...5b14275. Read the comment docs.


R.takeAnyOne

I sometimes want to take the first element of an array (e.g. head).  However, I take this first element as I actually don't care what element I get, which differs in meaning from when I might take the first element of a sorted array.
I would like a takeAnyOne which simply maps directly to head but descriptively puts the different meaning in.  (e.g. implementation = const takeAnyOne = head)
Example usage: const moduleName = takeAnyOne(serviceDefinitions).module
To me this reads much better than const moduleName = head(serviceDefinitions).module, as this latter one insinuates that the order may be important (obviously useful in some other cases)
Other name could be takeOne
Thoughts?

As a general rule, Ramda is against aliases.

Ok, i guess that's fair enough.  I would almost argue this is not an alias however, and alias to me is just an alternative.  The takeAnyOne suggestion has a different meaning, and the implementation (head) would be a hidden and changeable.  But appreciate if this was done everywhere in ramda it may get a bit cluttered

We have once or twice had aliases for exactly this reason, that semantically different functions had the same implementations.  It's been rare, and I think those have mostly lasted only through a deprecation cycle.  I would be quite wary of introducing another one without strong reason.
But I have a more fundamental objection to including this function.  Ramda is very interested in working only with pure functions.  That means that every time a particular Ramda function is called with the same input, it yields the same output and has no side-effects.
Obviously if the proposed takeAnyOne simply delegated to head, it would have the same behavior.  But the only reason to consider this alias would be that the semantics of takeAnyOne are different.  There is the expectation that takeAnyOne(['larry', 'moe', 'curly']) would return 'larry' one time and 'curly' a different time.  Even if our function is technically pure, I don't want to even give the impression that we supply an impure function.

Yes I have been thinking a bit too, and actually came to a similar conclusion.  It does give a sense of uncertainty that it would actually be pure.  Should rather be named something like takeHeadToRepresentAny .  Anyhow, will close for now :-)


Expand list of retryable gRPC errors

What was changed
UNAVAILABLE and UNKNOWN gRPC errors now are retryable.

Note:
In the case when a Temporal server is unavailable and by the reason a Client call can't be completed, without a limited retry gRPC call policy it might retry infinitely.

Why?
In some cases gRPC connection might be broken or not initialized. In this case we should follow our retry policy.
Checklist

Closes #296

How was this tested:
Manually using proxy

Can you please include status code into error message?


Failing tests due to missing OS interfaces

Hi @boris-kolpackov
I have tagged some of the example applications as tests, such that a consumer has at least something he can use as a test. However, these "tests" fail on bdep ci (see https://ci.stage.build2.org/@6c041742-31fb-4324-a2f9-b1fd020bb0b2). If I want to publish this library to cppget, should I do something about this? Or is this acceptable?

Yes, I think it's fine. Maybe we will do something about dbus (like we did about X) in the future.

Published to staging queue, thanks!


Define pipeline dependencies & configuration within a cell instead of using UI annotations

Wanted to throw out this idea and see if people thought this was good idea, not sure how feasible this is though!
Some push back we've had with Kale is that by defining workflows as annotations it is harder to test them and to compose them. I think this is fair criticism but I'm still advocating for the UX model Kale strives for as I do not see a better pattern for iterative notebook development which allows for remote executions.
I wondered if a solution to this problem would be to tag a cell as a singleton "Pipeline" cell, then that would compose the dependencies and inject other configurations (ie. resource limits, tolerations, etc.) needed to actually define a working pipeline that'll run remotely. This would live the applied scientist to just manage naming cells via the UI (or even via a special magics (%%) or comments syntax).
Unclear to me what the contents of the code inside that "Pipeline" cell would be, potentially KFP syntax, TFX (or the TFX IR) or something else but wondered what the maintainers thought of this idea 😄
PS. Thanks for building Kale, when I think about how to enable our scientists to iterate on a notebook, deploy to a remote cluster and then continue their development Kale definitely seems like the future of this!

@alexlatchford It seems this might be what you are after: https://github.com/kubeflow-kale/kale/tree/master-old#tagging-language

@alexlatchford It seems this might be what you are after: https://github.com/kubeflow-kale/kale/tree/master-old#tagging-language

Thanks @DavidSpek I'm familiar with how to currently specify a pipeline using Kale but facing some opposition within my company for that not being testable. I understand notebooks are not really designed with testing in my but what I proposed instead was having some programmatic syntax (ideally python) that could be defined within a cell which could then be tested (likely via tests in another cell). Currently the consensus on that format is likely KFP itself and instead of compiling the entire notebook down to a pipeline that cell would become the pipeline that then references the other cells somehow. Obviously a very nebulous concept at the moment, especially given the complexity Kale handles for state management across the notebook.

@alexlatchford I'm not sure what type of testing you have in mind, but could you not perform the required testing using the notebook file's raw JSON as input?


psclient: initialize base class in copy ctor

This addresses compiler warnings by explicitly initializing base class.

Why we have the "dummy" copy constructor here instead of normal one? This class is used as vector element,  so we can have some errors that are really difficult to debug because of this.

@gladcow I don't know, @UdjinM6 wrote that part. I'm just trying to fix compiler warnings right now, and this one is pretty loud b/c it's in several places in the build output.

I don't know, @UdjinM6 wrote that part

🙈

Closing in favor of #2305


add environment with tank and target

This introduces a Sonar, target, and tank environment, please see https://github.com/Field-Robotics-Lab/DAVE/wiki/Sonar-Models#run-in-basement-tank-environment for views.
A choice here is to create .sdf files for the tank, target, and Sonar models.  An alternative might be to make separate .xacro files for each to enable configurability of each model.  Going forward, we might want to remove model duplication in fls_gazebo/worlds/blueview_standalone.world.

When I launch rqt_image_view I need to select blueview_p900/image_depth_sonar to get the same view as yours. When I click on the /depth/image_raw_sonar I get a gray screen.

roslaunch gtri_based_fls blueview_basement_cylinder.launch - I launched mine using roslaunch gtri_based_sonar_gazebo blueview_basement_cylinder.launch

I don't have a gtri_based_fls....should I?

My rqt_image_view also does not look like yours. It looks like the one from your first picture in the tutorial (blue background yellow sonar returns)

The behavior you mention is expected for the current master head.  You need to select this branch and rebuild.
Also, this works with the basement_world branch of gtri_based_sonar.  Maybe these two repositories should be merged?

Note - this PR is parallel with GTRI Sonar PR#1 - so need to evaluate both PR's simultaneusly.

This merge adds two things: 1) a basement tank and target, along with launch files for fls_gazebo, and 2) laser_retro property for models useful for GTRI-based Sonar.


amp cluster create (deploy script) issue

On a regular cluster with a running and healthy swarm, the script deploy stop at:
 echo "wait for swarm mode"
  swarmcheck -t 300 -c $nodecount
  checkexit "swarm mode timed out"
  ok

and exit in timeout
removing the line the cluster start normally, seems, there is a bad condition somewhere
saw 3 times and two different clusters

can't you please describe your use case?
how is the cluster created?
what is run? CLI or script?
where is it run?
the script or CLI is supposed to work fine when it is run in the standard deployment method, other deployment methods may fail. There's open PRs about it, please have a look if it's not already fixed there.


refactor: network select

DO NOT MERGE YET PLZ

@dnovacik merge yet?

closing this in favor of @IshShogun implementation. Will address the visual of network select (creating new component alltogether, as native select isn't styleable)


Teams:  Change "Cases Assigned" to pull from cases instead of "Work Types"

The list view of teams shows how many cases assigned the team has.  but in reality it is actually showing the count of work types.  we dont want that.

[ ] change the count of cases assigned on the teams list to reflect the exact same count as is shown on the details view of the team.

Blocked, need a way to get cases to filter

Superseded.


Cannot find module 'sql.js/module'

description
I try to use trilogy in a TypeScript project I'm currently working on. As soon as I use import { connect } from 'trilogy' somewhere I am presented with the error below by tsc:
I planned on using sqlite3 as backend therefore I only used npm i sqlite3, but the error appears wether I am defining the client to be sqlite3 or sql.js. I also tried to npm i sql.js, but the error persists.
steps to reproduce

Create a new project
Run npm install typescript @types/node
Run npm install trilogy sqlite3
Create index.ts with the source code below
Run npx tsc index.ts

source
import { connect } from 'trilogy'

const db = connect(':memory:')

error
node_modules/trilogy/dist/index.d.ts:4:23 - error TS2307: Cannot find module 'sql.js/module' or its corresponding type declarations.

4 import { SqlJs } from 'sql.js/module';

environment
I am using Windows 10 Pro 64 Bit, Node v14.15.3 and npm 6.14.9.

Yeah, confirmed this is an issue. I'm not sure what's changed since this code was originally put in, but it should be a relatively easy fix to adjust those imports.
A quick glance through the history of sql.js made it seem like that entry point hasn't been a thing for quite a while ¯\_(ツ)_/¯

Thank you!

Sure thing, this is released in v2.0.4, please give it a shot!


Adding more robust proxy support

The FiftyOne App can be served through a reverse proxy, but currently some edge cases exist with changing the dataset route when a pathname is present in the proxy.
Tested with an nginx proxy on a Mac:
brew install nginx

configure the http server in /opt/homebrew/etc/nginx/nginx.conf with
        location /proxy/ {
            proxy_pass   http://localhost:5151/;
        }

brew services start nginx

After building the App with yarn build in ./app, and starting the server with python fiftyone/server/main.py, http://localhost:8080/proxy?=/proxy should load the App
Notes:

Also fixes search param persistence in view and dataset setters
The proxy search param is required in order for routing to resolve fetch URLs correctly
Introduces consistent usage of the new resolveURL function to ensure search and pathname behavior is guaranteed

Is proxy search param not undefined in http://localhost:8080/proxy?=/proxy?

Included in #3746


New rule: ClassOrdering

A rule to check the contents of a class match this ordering: https://kotlinlang.org/docs/reference/coding-conventions.html#class-layout
I've enabled this for detekt, and you can see in that second commit the changes that were required to comply with the new rule. I think the changes are mostly not controversial, but for those classes where they are a suppression is probably the right way to go, or perhaps changing some extension properties into extension functions.

I'm just unsure if we want to enabled it by default

Sorry I wasn't clear. I've enabled it for detekt scans of the detekt project itself, but it's not enabled by default for users - it's active: false in default-detekt-config.yml. I thought the same thing as you, it could potentially lead to a lot of warnings on larger projects.
I also think that in almost all cases any violations it finds will lead to a more logical class layout so I think there's value in enabling by default. It's quick to cut/paste code to fix issues it finds. But for now it's not enabled by default.

Sorry I wasn't clear. I've enabled it for detekt scans of the detekt project itself, but it's not enabled by default for users - it's active: false in default-detekt-config.yml. I thought the same thing as you, it could potentially lead to a lot of warnings on larger projects.

Thanks for the clarification 👌 Looks good to me 🚀


Implement String.WordView

This implements Unicode's defined word boundaries for a string found here: https://unicode.org/reports/tr29/#Word_Boundaries.
Here's a quick snippet:
for word in "Hello world!".words {
  print(word)
}
// Hello
//
// world
// !

This is marked as WIP because I'm still investigating whether or not these word boundary semantics make sense right now.

@swift-ci please test Linux


when will the code be published？

Hi, when will the code be open-sourced？

Thanks for your interest in our work. We have uploaded the codes recently.

The code is uploaded. So I closed this issue.


Starting up REST API v7 throws a NotWritablePropertyException on "taskqueue.dir"

Describe the bug
When starting up the REST API backend in Tomcat, the following error is returned when the DSpaceKernel starts up:
14:33:04.291 [localhost-startStop-1] ERROR org.dspace.servicemanager.DSpaceServiceManager - Unable to set param (taskqueue.dir) on service bean (curate) to: /dspace/ctqueues
org.springframework.beans.NotWritablePropertyException: Invalid property 'taskqueue.dir' of bean class [org.dspace.curate.CurationScriptConfiguration]: Nested property in path 'taskqueue.dir' does not exist;
nested exception is org.springframework.beans.NotReadablePropertyException: Invalid property 'taskqueue' of bean class [org.dspace.curate.CurationScriptConfiguration]:
Bean property 'taskqueue' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

This error does NOT seem to affect the REST API.  It still starts up and functions (seemingly without additional errors)
To Reproduce
Steps to reproduce the behavior:

Download latest code from main branch (as of 2020-Aug-26) and build it
Start up Tomcat, and watch the Tomcat logs for the error.

Related work

Might be related to #2820, as CurationScriptConfiguration was added during the refactor of Curation Tasks into the scripts & processes framework.

@jonas-atmire : You might want to be aware of this bug, which looks (to me) like it was accidentally caused by #2820 (your past PR).  We might want to consider whether this can be fixed as part of the follow-up work in #2934

Closing. This is no longer reproducible. I think it may have been solved by #2968 (or some other recently merged PR)


this puts the redis main graph back.

This PR puts the main Redis graph back as Health->Graph View (old), and makes the Influx/Grafana view available as Health->Graph View (new). All the sub links are still going to Grafana/Influx, and the Redis view only supports 24 hours.
Not sure if this PR will make the transition to Grafana/Influx easier and less risky.
@dneuman64,  @mtorluemke : your call. Don't merge this PR if you think it'll make things more messy without adding value.

I can live with it.  Will give @mtorluemke a little while to think about it.  If he approves I can merge tomorrow.


Sept 25 version

Added image showing KGC graph as an example of directionality, then explained it in 3-4 paragraphs using that example. Also centered and shrank the vertex, edge, node, arc graphic.
Trying, but can't make heads or tails of this . . . I found three other sources that seem to agree with ChatGPT about the head node being the target of the arrow[head].
From ChatGPT "Head (of an Edge): In a directed graph (also known as a digraph), an edge typically consists of two nodes: the "tail" and the "head." The "head" of an edge is the node to which the edge is directed. It's the endpoint of the edge. The "head" node is the one that receives the influence, flow, or relationship from the "tail" node."
From Professor Dorit S. Hochbaum’s Lecture Notes for IEOR 266: Graph Algorithms and Network Flows (UC Berkeley)
A directed graph or digraph G is an ordered pair G := (V, A). Where V is a set whose elements are called vertices or nodes, and A is a set of ordered pairs of vertices of the form (i, j), called arcs. In an arc (i, j) node i is called the tail of the arc and node j the head of the arc.
From Elements of Graphs and Complexity Theory, [Éric D. Taillard] (https://link.springer.com/chapter/10.1007/978-3-031-13714-3_1#auth-ric_D-Taillard)
1.2.2 Directed Graph, Arcs
In some cases, the relationships between the pairs of elements are ordered. This is a directed graph or digraph . The edges of a digraph are called the arcs or directed edges . An arc is represented by an arrow connecting its endpoints.
It is therefore necessary to distinguish both endpoints of an arc (i, j). The starting point i is called the tail and the arrival point j is the head.  j is a direct successor of i and i is a direct predecessor of j.
[From Georgia Tech] (https://www.cc.gatech.edu/aimosaic/students/Psych-students/Shikano/Projects/AlgoNet/terms/digraph.html)
In a directed edge, we call the first vertex in the edge pair the TAIL of the edge, and the second vertex the HEAD of the edge. This is because when a directed edge is specified (A, B), it goes from vertex A and to vertex B.

Yes this is the valid definition in graph theory. In the data universe the (s, p, o) notation is used. This can indeed be confusing as head may be more closely associated with subject, rather than object 🙃

This is further complicated by the fact that KGE literature uses the (h,r,t) notation that corresponds to (s,p,o).


Add VLAN data dashboards

From inspecting the influx database, it doesn't look like any VLAN data is collected. If this is possible that'd be very handy.
Also, thank you for an incredible set of tools :)
edit: should add, I don't have a USG, just USWs and UAPs

Can you be more specific? What data are you looking for? Is it in the UniFi API?

I'm not sure if it's in the API, sorry. I'd like to be able to graph traffic per vlan, if that makes sense. EG if I have an IoT VLAN and a LAN VLAN, I'd like to be able to see which VLAN is carrying how much traffic.

I looked in the clients and devices API data. I do not see the information there for vlans (there is a vlans field but it's 0 for all - I have 4 vlans). I'm not sure if the data you seek is available. Does the UniFi controller present the data broken down per vlan?

hmm, I can't find the data presented in the unifi controller. that's a shame.
heres hoping ui add it sometime, but what are the odds of that?


[Bug Report]: Issues with React 17 Usage

Description
@babycourageous is reporting issues with React 17 usage and is helping debug the problem in our Discord
Describe the solution you'd like
No response
Describe alternatives you've considered
No response

@all-contributors, please add @babycourageous for bug, research

@allcontributors please add @babycourageous for bug, research


Current timestamp of recording

Summary
A instance method on the ScreenRecorder::Desktop instance which returns the current timestamp of the recording in process.
I'm not that familiar with ffmpeg so I'm not sure how easy this would be to implement, however, with a nod in the right direction I would be happy to contribute and open a PR.

@phil-l-brockwell I am not seeing a way to retrieve the current timestamp from ffmpeg itself for the recording in process. However, you could start your own timer right after starting the recorder and then use that to get somewhat accurate timestamps. Check out the stop_watch gem for this. Alternatively, there is a way to print the timestamp on the video itself.
By the way, what's the use case for this feature?

Thanks for getting back to me @kapoorlakshya
I'm recording a video and noting specific points during the video then retrospectively adding audio etc.
I have tried to use a timer as you suggested but it isn't accurate enough and putting the timestamp on the finished video wouldn't fit the use case. I think their is some lag in between the ffmpeg process beginning and when recording begins.

I'm recording a video and noting specific points during the video then retrospectively adding audio etc.

Is this audio an external track, like music or voice-over, or audio out from the system? Asking to see if we can capture audio in the recording (instructions).

I think their is some lag in between the ffmpeg process beginning and when recording begins.

Yeah, ffmpeg takes 1-1.5 seconds on a cold start, which why I had to hardcode a 1.5s delay in #start. So if you were to start the timer after calling #start, it should give a bit more accurate timestamps than if you were to start the time before.

It's an external track, and at some point I want to make it variable/interchangeable so it has to be done after the filming and accurately.
I did notice the 1.5s delay actually and tried to compensate by adding a delay to the timer, this definitely produces a more accurate result but not precise enough. I wonder if their is a way to ensure the delay of starting ffmpeg is always a fixed time?

Ah, got it!

I wonder if their is a way to ensure the delay of starting ffmpeg is always a fixed time?

Hmm... I am not sure if that's possible to control in the gem code since the delay is from ffmpeg itself. My hard coded delay is just a naive way to make sure the next lines of code (after initializing the recorder) are only executed once ffmpeg is ready and has begun recording.
This is an interesting use case that I had not consider when creating this gem. The only use case I had in mind was to record automated UI test cases using Selenium. I'll have to think a little more and experiment to figure out how we can make this possible. Please don't have any expectations because it's completely possible that there isn't a good way to get 100% accurate timestamps when using this gem, but we'll see.
If you don't mind me asking, what are you filming/recording?

Anytime you can spend is massively appreciated, you've been really helpful this far, as I said previously, I will be happy to work on a solution/pr I just need a little help in the right direction.
Unfortunately I'm working confidentially with a client and I can't really go into any more detail, but I will keep you posted

I will be happy to work on a solution/pr I just need a little help in the right direction.

The only approach I can think of right now is to embed the stop_watch gem and expose the StopWatch::Timer object (ex: @recorder.timer) and call timer.mark in #start_ffmpeg right before and after spawning the ffmpeg process. This will record the time right when ffmpeg is initialized and then again after the 1.5s wait when the recording starts. This way you'll have a window of ~1.5s to play with to get your audio timing right. And you can always call @recorder.timer.mark to mark additional timestamps during the recording (see usage examples).
I'm flexible on which gem we use for this. If you have a better one that suits your needs, I'd be happy to go with itas long as it doesn't have too many dependencies.

Unfortunately I'm working confidentially with a client and I can't really go into any more detail, but I will keep you posted

Totally understandable. I was just curious to know what this gem is being used for in general.

Interesting idea, I'm not sure if I fully understand it though. So you would use the two timestamps to work out the lag between calling ffmpeg and it actually starting it then subtract this from any subsequent timestamps?

@phil-l-brockwell Yeah, that's what I am thinking.
Another idea, based on printing the timestamps in the video, is to:

Add a white/black bar at the bottom of the video using the pad filter (instructions)
Print the timestamp in the bar using the x,y coordinates of the drawtext filter (instructions)
Go through the video and note the timestamps you need
Then during post-processing, crop out the bar with the timestamps and add audio using timestamps from step 3

Steps 1-2 should be doable using the advanced parameter, and this will yield precise timestamps from ffmpeg itself.

Hey @phil-l-brockwell, any updates? If not then I would like to close this ticket.


Additional Ext-Opts Trolling

Similar to this previous issue, it seems like another similar ext-opts issue is popping up. I want to say I've constructed the snippet correctly - it works when I make it one large text node, but when using fmta with the same prompts, it breaks. I've also checked that my code seems to be equivalent/following good practices (making sure to use the right scope) and tried logging, but to no avail.
Here's the error:

Here's the snippet source:
local load_save_registers = function (_, snip, _, user_args)
    local register_type = snip.captures[2]
    local num_registers = tonumber(snip.captures[1], 16) -- in hex
    local command
    if user_args == "load" then
        command = "lw"
    elseif user_args == "save" then
        command = "sw"
    end
    local nodes = {}
    for j = 1, num_registers do
        table.insert(nodes, fmta([[
        <> <><> <>(sp)
        ]],
        { t(command), t(register_type), t(tostring(j-1)), t(tostring((j-1) * 4))}
        )) -- this does not work!
        -- table.insert(nodes, t(command .. " " .. register_type .. tostring(j-1) .. ", " .. tostring((j-1) * 4) .. "(sp)")) -- this works
        table.insert(nodes, t({"", ""}))
    end
    table.insert(nodes, t(command .. " ra, " .. tostring((num_registers) * 4) .. "(sp)"))
    return sn(nil, nodes)
end

return {
    s({ trig='tsw([ab%d])([as])', name='sw saveregs', dscr='RISC-V: store save registers onto the stack', regTrig = true, hidden = true},
    fmta([[
    addi, sp, sp, -<>
    <>
    ]],
    { f(function (_, snip)
        return tostring(tonumber(snip.captures[1], 16) * 4 + 4)
    end), d(1, load_save_registers, {}, { user_args = { "save" } }) }
    )),

    s({ trig='tlw([ab%d])([as])', name='lw saveregs', dscr='RISC-V: load save registers onto the stack', regTrig = true, hidden = true},
    fmta([[
    <>
    addi, sp, sp, <>
    ]],
    { d(1, load_save_registers, {}, { user_args = { "load" } }),
    f(function (_, snip)
        return tostring(tonumber(snip.captures[1], 16) * 4 + 4)
    end),  }
    )),

}

Ahhh, nodes should be a flat list of nodes, load_save_registers table.inserts the node-list produced by fmta. vim.list_extend should do it ;)

Ah gotcha, thanks! I assumed that fmta would be treated as one node as with s.


Use of icons

If they are going to implement the use of icons in their project managing this way the tab,
Where to use <tab1 tabLabel = 'Tab 1'  #/> and the tab they are importing has an icon that will throw an error for future projects and someone can solve it I would thank you to leave here the solution
`import React from 'react';
import {
Text,
} from 'react-native';
import ScrollableTabView, {DefaultTabBar, } from 'react-native-scrollable-tab-view';
import {Tab1 ,Tab2, Tab3} from './MyTabFolder';
export default React.createClass({
  render() {
return <ScrollableTabView
  style={{marginTop: 20, }}
  renderTabBar={() => <DefaultTabBar />}>
  <Tab1 tabLabel='Tab 1' />
   <Tab2 tabLabel='Tab 2' />
   <Tab3 tabLabel='Tab 3' />
</ScrollableTabView>

},
});`

@Marcelrama not sure that I understood the problem 😞

Close since I'm not fully understand the issue. Probably you can use renderTab property https://github.com/skv-headless/react-native-scrollable-tab-view/blob/master/examples/FacebookTabsExample/DynamicExample.js#L61


Clean up tensor leaks when using .data() within async function

Fixes tensorflow/tfjs#264 and a few similar cases

This change is

Review status: 0 of 3 files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

Reviewed 3 of 3 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable


Revert "increment umbrella chart minor version"

This reverts commit ee14c3afac8c7e85d45eadc31b9f2757ef134a64.

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


[WIP] Do not report type imports from flow-typed packages

fixes #960
When importing types from packages that are defined in a file inside the flow-typed directory, prevent the named rule from reporting that the package itself does not provide an export with that name.
Currently there is support for type imports from local files. Restrict these checks to imports with relative paths.
I'm not really sure how much value checking type imports provides since, I suppose, Flow itself is already good at alerting about missing imported types. Maybe type imports should not be checked at
all? At least that appears to be the route already taken in no-extraneous-dependencies. Does the same hold for Type Scripts?
The alternative of making the named rule aware of the top level flow-typed directory feels a lot like duplicating functionality that already exists inside Flow.

Coverage increased (+0.006%) to 96.476% when pulling 16f678b6786e15b55a6e5985b112b785aba20898 on tf:ignore-type-import-from-package into ee15fa4c61df2ddba6fc10109f1a60bb7bddb7b6 on benmosher:master.

Indeed; thanks for your contribution, but this is a duplicate of #1057.


pom declares dependencies on findbugs libraries

The pom published on maven central is erronously declaring dependenceis on 2 findbugs libraries.
The annotations are not required for runtime and one of them has a dubious license that can cause issues.
The annotations should be optional in the pom

gradle 2.1.12 introduced compileOnly dependencies which may help here.

just to be sure, I've also followed suit along with many other projects and removed use of the JSR305 annotations entirely -- https://github.com/Swrve/rate-limited-logger/pull/14/files .  Does that look sensible to you @jtnord @NicklasWallgren ?

@jmason Yes, seems reasonable.

Fixed in https://github.com/Swrve/rate-limited-logger/pull/14


Make run :apollo-kotlin:intellij-plugin:check after ciBuild

Closing for now (why this fails is a mystery to solve... another time).


Cumulative display of time-aware data

I was able to set up a a viewer using time-aware-template (thanks for the template!).
https://gaithersburgmd.maps.arcgis.com/apps/TimeAware/index.html?appid=d82d8be587ca48b7a74a7269a5ba3ccf
Is it possible to show cumulative data during an animation? What I envision is that the data points for previous time periods will  gray out (or change to muted color), and only the data points for the current, active time-period will show in highlighted color. Please let me know if this is possible to achieve with configuration changes.
If it needs to be custom coded, I appreciate a few pointers on where and what to look for.
Thanks!
Yeon

Hi Yeon,
About 2 years late, coming from a fellow GIS analyst also utilizing the time-aware template and noticed your question.
Yes, if you open the web map, at the bottom of the screen, if it's time-aware enabled, there will be the time slider and other options.

Click on the options button, on the far right side. With the Time Settings window, click on "Show advanced options".

From there, click on the "progressively display all data" option in the "As time passes" section.

Hope this helps!

Thanks much for your post! I am sure I checked everywhere back then - maybe I simply missed it, or maybe they didn't have that option then. I will go back and update the setting. :)
Yeon

I just updated the setting. Thanks again @cghsia!


Graduate Quota/Rate Limiting to Stable

Quota and Rate Limiting features are currently in alpha. In order to make them stable, the following things need to hold true:

Maintain the current zero network overhead SLS
Always return correct results (never lie)
Must be lightweight

I was beginning to go down a path where Kanali would basically implement the raft algorithm to accomplish this. This however would be a great amount effort and I was worried I'd be reinventing the wheel when I could just use something already there. Etcd, the default Kubernetes backend, already uses raft for it's consensus algorithm. Here is the current design approach:

Watch etcd endpoints key for traffic. This will maintain the zero network overhead SLA.
Use the etcd grpc client maximum over the wire efficiency
Use protobuf for efficient serialization/deserialization

So this would require giving kanali direct access to etcd, or spinning up a separate etcd cluster? Currently, k8s (by default, but can be encrypted in 1.7 using the Provider plugins) stores all secrets unencrypted in etcd.
You might mention that it is generally a terrible idea to give anything outside of k8s access to etcd and spin up a separate one for this perhaps using the etcd-operator from CoreOS.

@SEJeff
I should clarify on some aspects.
For all k8s resources (secrets, services, apiproxies, etc), Kanali would continue to watch the apiserver. However, to persist minimal details about a request, etcd is being proposed. An example protobuf message might look like this:
message TrafficPoint {
  required string namespace = 1;
  required string proxyName = 2;
  required string keyName = 3;
}

Concerning giving Kanali access to the same etcd that Kubernetes uses, Kanali would use a separate etcd key. This is a common practice seen amongst other Kubernetes add-ons like Flannel and Calico.
All Kanali instances would watch this etcd key using the etcd grpc v3 client by coreos. Each time a Kanali instance receives traffic and writes it to etcd, all other Kanali instances will know about it and can update their in memory data structures so that rate limiting and quota policies can be properly enforced.

@frankgreco it is actually discouraged per the kubernetes documentation.
Access to etcd is equivalent to root permission in the cluster so ideally only the API server should have access to it.

Also, Calico is actually in the process of moving to storing all of their data via the apiserver via Typha directly via the kubernetes apiserver. This has been on their roadmap for awhile now.
Regarding Flannel, their documentation explicitly says using the kubernetes apiserver or a discrete etcd is preferable:
Though not required, it's recommended that flannel uses the Kubernetes API as its backing store which avoids the need to deploy a discrete etcd cluster for flannel. This flannel mode is known as the kube subnet manager.

Please consider using CRDs in the kubernetes apiserver instead of etcd directly if feasible. I love the way this project is shaping up, but we use RBAC heavily and would not give an ingress access to all secrets in plaintext (by giving it direct access to etcd).

@SEJeff I did not know that Calico was moving to this! Great find!
I see two main options here:
Use a CRD
Pros

Storage is abstracted
Explicitly enable permissions to  resource with RBAC
Familiar API via the Kubernetes api.

Cons

The idea of a storing lightweight details about a traffic point doesn't really lend itself to a CRD in my opinion. A traffic point is a data point, not a resource. A traffic point also isn't something that should ever be created/updated/deleted by any user. Instead, it's a "behind-the-scenes" metric that only Kanali should create/read. It would be a lot of overhead to create a unique name (it wouldn't be namespace).
The api server, from what I understand, does not provide a grpc client as of yet. Hence, we'd have to use json+rest which would be slow.
Every single request will require an update or creation of a CRD as well as an emitted message over every http watch stream from every Kanali pod. This is noisy and and HTTP stream might not be the best option for this.

Use a separate instance of etcd
Pros

can use grpc/protobuf
the usage of grpc should support all of the traffic noise nicely.

Cons

requires a separate etcd deployment although it should be easy to deploy as one can just use a similar manifest as the one used to bootstrap the cluster.

I'm leaning towards etcd option but would love to get your opinion.

Regarding json+http, protobuf support, comms with the apiserver via protobuf landed in kubernetes 1.3. The magic is passing the Content-Type header with the value application/vnd.kubernetes.protobuf instead of application/json.
Also I'm curious about the Cons for lightweight details about a traffic point not lending itsself to a CRD. I'd say Endpoint resources in K8S should never be used editable (except when using headless services to front non-k8s services). Forgive me for being dense, but I don't see how this is terribly different from endpoints. That said, if every single incoming request needs to update / create a CRD, that is indeed sad. I guess batching updates wouldn't be good enough would it?
Regarding complexity of using an external etcd, the etcd-operator is really good, and would be how I would suggest you recommend users to go if they use kanali + etcd.
Would you consider making the storage mechanism pluggable? Then you could implement both eventually, giving the user more flexibility. Just add decent unit tests so you don't break things!

I have been pulling my hair out for a while over why protobuf wouldn't work - if all I was missing was a header..... :)
I agree that the endpoints object does account for a lot of noise from the apiserver however there'd be exponentially more noise if there was one for every request. If the requests were batched, then you wouldn't have consensus amongst the different Kanali instances.
I like the idea of having it pluggable. I can make everything conform to an interface and then you could have multiple implementations that conform that a common interface.

Use the source luke!^Wfrank. That should work a bit better for you, so glad to help where I can. In hindsight, it doesn't make much sense to use a CRD for this just like you said, my only real suggestion is to document setting up a separate etcd cluster.
If you do indeed make the storage backend pluggable, also consider nats which we use at $REAL_JOB to sync up several packet pushing relay services together. It is really solid stuff.
 Depending on what infrastructure you already have in place, you might use etcd, Redis or whatever makes sense. On the initial raft train of thought, it should be relatively trivial to have one of those backends use www.serf.io so that things worked out of the box.


fix(prefer-default-export): Ensure yields valid syntax.

When transforming the following with the
"import/prefer-default-export" rule enabled:
export const Component = (a, b) => {
  return a == b;
}

this library would yield the following because parent.node.loc was
null on the VariableDeclaration node:
export const
// TODO: Fix this the next time the file is edited.
// eslint-disable-next-line import/prefer-default-export
Component = (a, b) => {
  return a == b;
}

by continuing to traverse when loc is null, this library now yields
the following:
// TODO: Fix this the next time the file is edited.
// eslint-disable-next-line import/prefer-default-export
export const Component = (a, b) => {
  return a == b;
}

Thanks for the fix! Rather than taking the PR directly, I added a small feature that allows this to be integrated without needing to change all of the other tests. However, I did set you as the author of the commit so that you'll show up as a contributor.
I'll publish the new version just as soon as I regain npm access...
(also: sorry for the long delay! The project was left without a maintainer after I left my former employer, but I recently re-adopted it)

Thanks for the fix! Rather than taking the PR directly, I added a small feature that allows this to be integrated without needing to change all of the other tests. However, I did set you as the author of the commit so that you'll show up as a contributor.
I'll publish the new version just as soon as I regain npm access...
(also: sorry for the long delay! The project was left without a maintainer after I left my former employer, but I recently re-adopted it)

Great thanks for the merge, glad the fix got in there.


ModuleNotFoundError: No module named 'ftx.medical'

Hello!
Issue
When I try to run the composable information system's cordindexer, mentioned here i.e python examples/pipeline/indexer/cordindexer.py --data-dir ../cord_data_2021-04-13/document_parses/pdf_json, I get an error ModuleNotFoundError: No module named 'ftx.medical'
What may this mean? Would it be an issue with the forte-wrappers? Is ftx a different alias for forte-wrappers?
Warm regards,
Screenshots

We have recently reorganize some package names here: https://github.com/asyml/forte/blob/master/ftx/onto/clinical.py, probably I can go ahead and change these references.


About pre-trained model

When will the pre-trained model be released?

Hi, the model used in this work is not pre-trained, and the results involved in the paper are fully supervised training.


[FlightSQL] GetCatalogsBuilder does not sort the catalog names

The GetCatalogsBuilder does not apply sorting as specified in the documentation comments. In contrast, other builders, such as GetDbSchemasBuilder and GetTablesBuilder, sort the record batch exactly as described in their documentation.
See: https://github.com/apache/arrow-rs/blob/e1e881405ce9b180858d5ba278803b4795b63e74/arrow-flight/src/sql/arrow.flight.protocol.sql.rs#L120-L122
And see: https://github.com/apache/arrow-rs/blob/e1e881405ce9b180858d5ba278803b4795b63e74/arrow-flight/src/sql/metadata/catalogs.rs#L70-L79

Thank you for the report @niebayes

take

Feel free to @ mention me on the PR and I can review

label_issue.py automatically added labels {'arrow'} from #6864

label_issue.py automatically added labels {'arrow-flight'} from #6864


Please update about "WillPopScope" deprecated.

I am using "WillPopScopeLoader".
Please update me on the widget as flutter has announced that it will not use "WillPopScope" in the future.

@etgkqo Done, the new version 4.0.0 has a new implementation called PopScopeLoader to replace WillPopScopeLoader.
If you get a chance to test it, can you let me know if it works as expected? Thanks


Wireshark

I ran brew cask install wireshark and this is what was spit out at me. Help please
Error: wrong number of arguments (1 for 0) while loading '/usr/local/Library/Taps/caskroom/homebrew-cask/Casks/wireshark.rb'
Please report this bug:
https://github.com/caskroom/homebrew-cask/issues
:5:in `name'
:5:in `'
:in `'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/source/path_base.rb:55:in `eval'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/source/path_base.rb:55:in `rescue in load'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/source/path_base.rb:52:in `load'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/source/tapped.rb:28:in `load'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask.rb:124:in `load'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli/install.rb:19:in `block in install_casks'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli/install.rb:17:in `each'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli/install.rb:17:in `install_casks'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli/install.rb:6:in `run'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli.rb:81:in `run_command'
/usr/local/Cellar/brew-cask/0.45.0/rubylib/cask/cli.rb:121:in `process'
/usr/local/bin/brew-cask.rb:42:in `'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Library/brew.rb:58:in `require?'
/usr/local/Library/brew.rb:141:in `'

You’re using an old version of homebrew-cask. Please brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup and try again.
Please always do this before opening new issues.

Sorry, new to this. Thank you much. I will make sure to read the rules ahead of time. Again, accept my apologies and thanks for your work.


[FEATURE] Media does not play automatically

I'm using Home Assistant and browser_mod with wallpanel to pop up a stream of my front door camera (using more-info) when the doorbell is pressed.  However, in wallpanel, the stream loads, but I am left with a "play" button in the media control and it does not play until this is pressed,  I would like it to play automatically.
I assume that it requires this option from WebSettings:
WebSettings#setMediaPlaybackRequiresUserGesture(boolean)

This could only be handled by WebView component or if we use an alternative method for playing video in the WebView.

Hi,
I'm using browser_mod ( home-assistant) to popup a camera screen when motion is detected.
I managed to get the popup to show the camera feed but i have to manually press the “play” button to get the feed going.
I've got the feeling that the auto-play function in Fully Kiosk Browser, takes care of this issue, but is it possible to do something similar in Wallpanel?


Blob Container already on tab is not refreshed by clicking on it in Explorer tab

Storage Explorer Version: 1.7.0
Platform/OS: Windows 10
Architecture: i86
Regression From: Not sure.
Bug description
When a blob container is already opened on a tab and then you refresh the containers list on the Explorer sidepanel and click on the container again, the container's content is not refreshed with the new state.
Steps to Reproduce

Create a blob container
Create a file in it
Open the container on a new tab in Storage Explorer
Delete the file from API
Refresh the Blob Containers list on the Explorer panel
Doubleclick on the container on the Explorer panel (this activates the already opened tab)
The files are still the same
If you click on Refresh in the Toolbar, the container is finally refreshed and the file is gone.

Expected Experience
When I click on the container item on the Explorer panel, the opened tab should be updated with the new state as clicking is the act of opening something.
Actual Experience
The UI probably just focuses on the already opened tab instead of re-opening it which means refreshing its content.
Additional Context

Hi @jbebe , is there a reason you don't want to use the refresh button in the tab? Our thinking is that if you refresh the tree, then that shouldn't have any effect on your editors.

It's totally understandable that you don't want to refresh the editor by refreshing the parent items in the explorer panel. But when you click on the already opened blob container from the explorer panel again, it SHOULD refresh it as you intended to reopen it which is kind of a strong intention for refresh.
It is simply not intuitive to keep it loaded with the old content when initiating a "reopen".


Update deps & fix linter

Update deps to fix vulnerabilities (there is still one missing about growl, but it's related to dev deps) Fix #48
Fix linter on new example file
Put the correct GitHub repo username in package.json

@grevory awesome! Any chance to release 0.3.3 now? Thanks 🙏


Weapon Aim Mod Does Not Appear in TTMM or its Variants

What the title says. I have triple checked, and Weapon Aim Mod is not in the list of available mods. The available mods by FLSoz are:

Armor Piercing Projectiles
Laser Mod
Patch Projectile Phasing

Intended. The TTMM version is no longer maintained, it's moving to the workshop. See the discord modding-announcement channel for details.

What is it called on the workshop? I can't find it.


Adding mapping functions between execution policies

simplify implementation of execution policies (these are now derived from a CRTP base class)
simplify handle_local_exceptions implementation

Fixes #5925

Performance test reportHPX PerformanceComparisonBENCHMARKFORK_JOIN_EXECUTORPARALLEL_EXECUTORSCHEDULER_EXECUTORFor Each(=)(=)(=)InfoPropertyBeforeAfterHPX Commitd5655f89770ba953e8de3ceb349567d5fcb74a95164e9dddfe0ea052bdc8c072a06d8c23d06696c8HPX Datetime2022-05-31T12:57:29+00:002022-06-28T00:48:17+00:00EnvfileHostnamenid01193nid01539ClusternamedaintdaintCompiler/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0Datetime2022-05-31T15:13:01.357969+02:002022-06-28T03:01:07.255303+02:00ComparisonBENCHMARKNO-EXECUTORFuture Overhead - Create Thread Hierarchical - Latch-InfoPropertyBeforeAfterHPX Commitd5655f89770ba953e8de3ceb349567d5fcb74a95164e9dddfe0ea052bdc8c072a06d8c23d06696c8HPX Datetime2022-05-31T12:57:29+00:002022-06-28T00:48:17+00:00EnvfileHostnamenid01193nid01539ClusternamedaintdaintCompiler/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0Datetime2022-05-31T15:13:18.026239+02:002022-06-28T03:01:24.347656+02:00ComparisonBENCHMARKFORK_JOIN_EXECUTOR_DEFAULT_FORK_JOIN_POLICY_ALLOCATORPARALLEL_EXECUTOR_DEFAULT_PARALLEL_POLICY_ALLOCATORSCHEDULER_EXECUTOR_DEFAULT_SCHEDULER_EXECUTOR_ALLOCATORStream Benchmark - Add(=)(=)(=)Stream Benchmark - Scale(=)(=)(=)Stream Benchmark - Triad(=)(=)(=)Stream Benchmark - Copy(=)(=)(=)InfoPropertyBeforeAfterHPX Commit71d8dbe40b737be02ea734f9d98fcc0b1e21f01a164e9dddfe0ea052bdc8c072a06d8c23d06696c8HPX Datetime2021-11-10T19:14:21+00:002022-06-28T00:48:17+00:00EnvfileHostnamenid00120nid01539ClusternamedaintdaintCompiler/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0Datetime2021-11-10T20:28:18.266961+01:002022-06-28T03:01:39.599043+02:00Explanation of SymbolsSymbolMEANING=No performance change (confidence interval within ±1%)(=)Probably no performance change (confidence interval within ±2%)(+)/(-)Very small performance improvement/degradation (≤1%)+/-Small performance improvement/degradation (≤5%)++/--Large performance improvement/degradation (≤10%)+++/---Very large performance improvement/degradation (>10%)?Probably no change, but quite large uncertainty (confidence interval with ±5%)??Unclear result, very large uncertainty (±10%)???Something unexpected…

bors merge


Daylight Sensors show up as a full block

Daylight sensors look like a brown prismarine kind of block with the daylight sensor texture on top rather than the smaller block they actually are.

Putting in a really hacky solution for this in the next update, they will render as slabs for now.

Putting in a really hacky solution for this in the next update, they will render as slabs for now.

Fixed this in the next update

Fixed this in the next update


Watcher doesn't upload with webpack changes

Describe the bug
For the watcher just for testing I'm using "files": "**/*", with "uploadOnSave": false, and "autoUpload": true,.
This works with every file, however it doesn't work with files created by webpack. In the logs I see
[info] [watcher/updated] c:\Users\Tom\Documents\Projects\eizoaward\templates\assets\dist\uikit.css however, the file isn't actually uploaded until I right click and press upload.
To Reproduce
Steps to reproduce the behavior:

Set up an environment in which webpack compiles a file.
Apply watcher to that file
See error

Expected behavior
Should upload to the server
Desktop (please complete the following information):

OS: Windows
VSCode Version 1.33.1
Extension Version 1.12.2

Can you provide your full config?
On Mon, Apr 15, 2019 at 9:22 PM Tom Smedley<EMAIL_ADDRESS>wrote:

Describe the bug
For the watcher just for testing I'm using "files": "**/*", with "uploadOnSave":
false, and "autoUpload": true,.
This works with every file, however it doesn't work with files created by
webpack. In the logs I see
[info] [watcher/updated]
c:\Users\Tom\Documents\Projects\eizoaward\templates\assets\dist\uikit.css
however, the file isn't actually uploaded until I right click and press
upload.
To Reproduce
Steps to reproduce the behavior:

Set up an environment in which webpack compiles a file.
Apply watcher to that file
See error

Expected behavior
Should upload to the server
Desktop (please complete the following information):

OS: Windows
VSCode Version 1.33.1
Extension Version 1.12.2

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/liximomo/vscode-sftp/issues/535, or mute the thread
https://github.com/notifications/unsubscribe-auth/AJXIoTY6nbB9pSLXdQHsUQdRF0NVOA9Nks5vhHz7gaJpZM4cv9qh
.

--
、什么样心情

@liximomo Sorry, I had a folder on ignore that shared the same name.