push.on('notification') not fired on Android (Correct payload)

Everything works well for me with iOS. But with Android, everything seems to work well up to the point of push.on('notification')
Expected Behaviour
JS notification event should fire either in background when 'content-available' is set to 1 in the data option, else when the application is brought to the foreground.
Actual Behaviour
The notification event is never triggered
Reproduce Scenario (including but not limited to)
Basic Example
Platform and Version (eg. Android 5.0 or iOS 9.2.1)
Android 4.3 with CrossWalk 17 webview
(Android) What device vendor (e.g. Samsung, HTC, Sony...)
Samsung Galaxy S4
Cordova CLI version and cordova platform version
cordova cli 6.1.1, android platform 5.1.1
Plugin version
phonegap-plugin-push 1.6.2
Sample Push Data Payload
new gcm.Message({
    priority     : 'high',
    timeToLive   : 86400,
    sound        : 'default',
    data         : { title: 'Some title', body: 'Some content' })
});

Sample Code that illustrates the problem
var push = PushNotification.init({
    android: {
        senderID: "[SENDER ID]"
    }
});

push.on('registration', function(data) {
    // save to backend
});

push.on('notification', function(notice) {
    console.log('PushPlugin RECEIVED', notice);
});

push.on('error', function(e) {
    console.error('PushPlugin ERROR', e);
});

Logs taken while reproducing problem
adb logcat | grep PushPlugin
# App in background, push event sent, then:

D/PushPlugin_GCMIntentService(18987): onMessage - from: XXXXXXXX
D/PushPlugin_GCMIntentService(18987): normalize extras
D/PushPlugin_GCMIntentService(18987): key = body
D/PushPlugin_GCMIntentService(18987): replace key body with message
D/PushPlugin_GCMIntentService(18987): key = time
D/PushPlugin_GCMIntentService(18987): replace key time with time
D/PushPlugin_GCMIntentService(18987): key = title
D/PushPlugin_GCMIntentService(18987): replace key title with title
D/PushPlugin_GCMIntentService(18987): key = collapse_key
D/PushPlugin_GCMIntentService(18987): replace key collapse_key with collapse_key
D/PushPlugin_GCMIntentService(18987): background
D/PushPlugin_GCMIntentService(18987): message =[Some title]
D/PushPlugin_GCMIntentService(18987): title =[Some message]
D/PushPlugin_GCMIntentService(18987): contentAvailable =[null]
D/PushPlugin_GCMIntentService(18987): create notification
E/PushPlugin_GCMIntentService(18987): Number format exception - Error parsing notId: Invalid int: "null"
D/PushPlugin_GCMIntentService(18987): stored icon=null
D/PushPlugin_GCMIntentService(18987): stored iconColor=null
D/PushPlugin_GCMIntentService(18987): stored sound=true
D/PushPlugin_GCMIntentService(18987): stored vibrate=true
D/PushPlugin_GCMIntentService(18987): no icon resource found - using application icon
D/PushPlugin_GCMIntentService(18987): create actions

# Notification tapped, application opens, then:

D/PushPlugin_PushHandlerActivity(18987): not id = 0
V/PushPlugin_PushHandlerActivity(18987): onCreate
D/PushPlugin_PushHandlerActivity(18987): callback = null
D/PushPlugin_PushHandlerActivity(18987): bringToForeground = true
V/PushPlugin(18987): sendExtras: caching extras to send at a later time.
D/PushPlugin_PushHandlerActivity(18987): isPushPluginActive = false
D/PushPlugin_PushHandlerActivity(18987): forceMainActivityReload

Does this line look suspicious?
V/PushPlugin(18987): sendExtras: caching extras to send at a later time.

did you use the "content-available": "1" in the android payload?

@tropperstyle okay, but in your sample push payload you did not set content-available so the event won't be fired when the app is in the background. You would need to use:
new gcm.Message({
    priority     : 'high',
    timeToLive   : 86400,
    sound        : 'default',
    data         : { title: 'Some title', body: 'Some content', 'content-available': '1' })
});

I want the on('notification') to trigger when the app is brought to the foreground, so no, I did not set content-available in the use case I pasted above.
I did however try with content-available and again, the notification event was never fired, not in the background, or ever, even when the app was brought into the foreground.
Please re-read my issue carefully. I also split the logs between when the notification was received in the background, and later when I brought the app into the foreground.
The only difference when I added content-available was an additional line in the first section of the log
V/PushPlugin(18987): sendExtras: caching extras to send at a later time.

Along with a few key normalizing log lines

For fullness sake, here is the log with 'content-available': '1'
# App in background, push event sent, then:

D/PushPlugin_GCMIntentService(10582): onMessage - from: XXXXXXXX
D/PushPlugin_GCMIntentService(10582): normalize extras
D/PushPlugin_GCMIntentService(10582): key = body
D/PushPlugin_GCMIntentService(10582): replace key body with message
D/PushPlugin_GCMIntentService(10582): key = time
D/PushPlugin_GCMIntentService(10582): replace key time with time
D/PushPlugin_GCMIntentService(10582): key = title
D/PushPlugin_GCMIntentService(10582): replace key title with title
D/PushPlugin_GCMIntentService(10582): key = collapse_key
D/PushPlugin_GCMIntentService(10582): replace key collapse_key with collapse_key
D/PushPlugin_GCMIntentService(10582): key = content-available
D/PushPlugin_GCMIntentService(10582): replace key content-available with content-available
D/PushPlugin_GCMIntentService(10582): background
D/PushPlugin_GCMIntentService(10582): message =[Some message]
D/PushPlugin_GCMIntentService(10582): title =[Some title]
D/PushPlugin_GCMIntentService(10582): contentAvailable =[1]
D/PushPlugin_GCMIntentService(10582): create notification
E/PushPlugin_GCMIntentService(10582): Number format exception - Error parsing notId: Invalid int: "null"
D/PushPlugin_GCMIntentService(10582): stored icon=null
D/PushPlugin_GCMIntentService(10582): stored iconColor=null
D/PushPlugin_GCMIntentService(10582): stored sound=true
D/PushPlugin_GCMIntentService(10582): stored vibrate=true
D/PushPlugin_GCMIntentService(10582): no icon resource found - using application icon
D/PushPlugin_GCMIntentService(10582): create actions
D/PushPlugin_GCMIntentService(10582): send notification event
V/PushPlugin(10582): sendExtras: caching extras to send at a later time.

# Notification tapped, application opens, then:

D/PushPlugin_PushHandlerActivity(10582): not id = 0
V/PushPlugin_PushHandlerActivity(10582): onCreate
D/PushPlugin_PushHandlerActivity(10582): callback = null
D/PushPlugin_PushHandlerActivity(10582): bringToForeground = true
V/PushPlugin(10582): sendExtras: caching extras to send at a later time.
D/PushPlugin_PushHandlerActivity(10582): isPushPluginActive = false
D/PushPlugin_PushHandlerActivity(10582): forceMainActivityReload

After some digging through the source code, gWebView is always null, causing sendExtras to always hit this else block
Does this plugin need to do something special to support pluggable webviews? cordova-plugin-crosswalk-webview

@macdonst any ideas?

@tropperstyle I haven't had time to dig into it but the fact that you are using Crosswalk probably has something to do with it.

@macdonst What would be an alternative check to fix isPushPluginActive? Why does it even need to check if the webview is present? If you could just take a minute to give a high-level explanation I can try to submit a pull request. This issue is a blocker for my team right now.
public static boolean isActive() {
    return gWebView != null;
}

@tropperstyle if the webview is null then there isn't any web view to process the JS event. I think the think to look at in more detail is why is the web view null.

@tropperstyle I added the crosswalk plugin into my app and I couldn't reproduce your problem. Mind you I may not have the exact reproduction scenario. Do you need to anything else with Crosswalk other than add in the plugin? Is there a config.xml setting to tell it what webview to use?

I am also facing exactly the same issue. I am not using Crosswalk. Even the logs are same. Tried both with content-available and without that. I also added the forceShow parameter to immediately fire the event in the foreground but no luck. It's neither invoking for background notification nor when the app is running.
What does  callback = null states ?

This is my plugin list:
$ cordova plugin
code-push 1.8.0-beta "CodePushAcquisition"
com.telerik.plugins.nativepagetransitions 0.6.3 "Native Page Transitions"
cordova-plugin-camera 2.1.1 "Camera"
cordova-plugin-code-push 1.5.1-beta "CodePush"
cordova-plugin-compat 1.0.0 "Compat"
cordova-plugin-contacts 2.0.1 "Contacts"
cordova-plugin-device 1.1.1 "Device"
cordova-plugin-dialogs 1.2.0 "Notification"
cordova-plugin-file 4.1.1 "File"
cordova-plugin-file-transfer 1.5.0 "File Transfer"
cordova-plugin-geolocation 2.2.0 "Geolocation"
cordova-plugin-inappbrowser 1.2.1 "InAppBrowser"
cordova-plugin-splashscreen 3.1.0 "Splashscreen"
cordova-plugin-statusbar 2.1.2 "StatusBar"
cordova-plugin-whitelist 1.2.1 "Whitelist"
cordova-plugin-wkwebview-engine 1.0.2 "Cordova WKWebView Engine"
cordova-plugin-zip 3.1.0 "cordova-plugin-zip"
cordova-sqlite-storage 0.8.5 "Cordova sqlite storage plugin (core version)"
phonegap-plugin-push 1.6.2 "PushPlugin"

@nikhilsharma8193 Do we share any common plugins? That may help narrow down the culprit

@tropperstyle I can't help but notice your plugin list doesn't include crosswalk. Are you not using it or is the plugin list an error?

I only use crosswalk on android (for iOS I use cordova-plugin-wkwebview-engine), so I have the latest webviews on both platforms. If you want stability while using modern web standards, these plugins are a necessity. I followed the Android Platform Only Workflow which uses plugman install instead of cordova plugin add - which is probably why it doesn't show up in the list.

This is my plugin list:
cordova-plugin-customurlscheme 4.1.5 "Custom URL scheme"
cordova-plugin-device 1.1.2 "Device"
cordova-plugin-hockeyapp 2.2.2 "HockeyApp"
cordova-plugin-inappbrowser 1.4.0 "InAppBrowser"
cordova-plugin-network-information 1.2.1 "Network Information"
cordova-plugin-spinner-dialog 1.3.1 "SpinnerDialog"
cordova-plugin-splashscreen 3.2.2 "Splashscreen"
cordova-plugin-statusbar 2.0.0 "StatusBar"
cordova-plugin-whitelist 1.2.2 "Whitelist"
cordova-plugin-x-socialsharing 5.0.12 "SocialSharing"
ionic-plugin-keyboard 1.0.8 "Keyboard"
jp.wizcorp.phonegap.plugin.wizSpinnerPlugin 1.2.0 "Wizard Spinner Plugin"
phonegap-plugin-push 1.6.3 "PushPlugin"

I have the same problem :(
This is my plugin list
Kushals-MacBook-Pro:BlueApp kushal$ cordova plugin list cordova-plugin-appversion 1.0.0 "App Version" cordova-plugin-console 1.0.2 "Console" cordova-plugin-device 1.1.1 "Device" cordova-plugin-email-composer 0.8.3 "EmailComposer" cordova-plugin-file 4.1.1 "File" cordova-plugin-inappbrowser 1.3.0 "InAppBrowser" cordova-plugin-media 2.2.0 "Media" cordova-plugin-splashscreen 3.1.0 "Splashscreen" cordova-plugin-statusbar 2.1.2 "StatusBar" cordova-plugin-vibration 2.1.0 "Vibration" cordova-plugin-websocket 0.12.0 "WebSocket for Android" cordova-plugin-whitelist 1.2.1 "Whitelist" phonegap-plugin-push 1.6.1 "PushPlugin" vensi-plugin-gattip 0.0.1 "gattip"
Here is my node server code.
`var sender = new gcm.Sender("APIKey");
var message = new gcm.Message();
message.addData('title', appName);
message.addData('message', 'my message...!');
message.addData('msgcnt','1');
message.collapseKey = 'demo';
message.delayWhileIdle = true;
message.timeToLive = 3;
var registrationIds = [];
registrationIds.push(token);

sender.send(message, registrationIds, 4, function (result) {
    console.log(result);
});`

Its working fine for the iOS app, So I released it into AppStore. Just because of this issue am not able to submit the my Android app to Play Store.  Please fix the issue with Android one ASAP. pls.

@tropperstyle
@Kushi171987
Solved, it's working fine. I had the issue because the App code was incorrect. The init() should be called  every time the app loads to make sure the WebView and CallbackContext object is available.
Also, it's mentioned in the docs, it got skipped by me. After digging the entire plugin code, I got why it was not working.
Hope it helps. If you have implemented your code correctly, it should work. Drop a reply if it doesn't. I have dug the code enough to give some suggestions. 😄

@nikhilsharma8193
Here is my code,
registerPushNotifications: function() {             if ( (typeof PushNotification === 'undefined') || !PushNotification ){                 console.log('PushNotification plugin is not loaded...');                 return;             }             var push = PushNotification.init({                 android: {                     senderID: senderID                 },                 ios: {                     alert: 'true',                     badge: 'true',                     sound: 'true'                 },                 windows: {}             });             push.on('registration', function(data) {                 sendDeviceTokenToDB(data.registrationId);             });             push.on('notification', function(data) {                 toaster.show('Message...', data.message, 'success');                 if(data.sound){                 var snd = new Media('/android_asset/www/images/ringtones/Chord.mp3');                     snd.play();                 }             });             push.on('error', function(e) {                 console.log(e.message);             });                     },
I have this function in a factory & calling this function with factory.registerPushNotifications(); when app launch.
Its working for iOS. In Android, I see 'push.on('registration', function(data)' is triggered, but 'push.on('notification', function(data)' is never fired  :(.

@Kushi171987
First, attach your push object to the window object.
window.push = PushNotification.init({
    android: {
        senderID: senderID
    },
    ios: {
        alert: 'true',
        badge: 'true',
        sound: 'true'
    },
    windows: {}
});

window.push.on('registration', function(data) {
    sendDeviceTokenToDB(data.registrationId);
});

window.push.on('notification', function(data) {
    toaster.show('Message...', data.message, 'success');
    if(data.sound){
    var snd = new Media('/android_asset/www/images/ringtones/Chord.mp3');
        snd.play();
    }
});

window.push.on('error', function(e) {
    console.log(e.message);
});

If your application is SPA(Single Page Application), the onNotification handler needs to be available in all pages,
hence attaching it to the window object (Global context). If your application is not SPA, then you will have to
keep this handler in all pages i.e (call your function in each page).

@tropperstyle Have you solved your problem? I am facing exactly the same one. @macdonst Any updates?

@orhankutlu I've never been able to reproduce it.

I think am still facing issue with the Android devices. Notifications are only working for iOS, but not Android :(

Same problem

My notifiaction handler never get triggered when app is in background.
This is my payload for Android:
{
    "priority": "high",
    "delayWhileIdle": true,
    "timeToLive": 3,
    "data": {
        "title": config.gcm.message_title,
        "body": data.new_val.desc,
        "sound": "default",
        "content-available": 1,
        "badge": 1,
        "extra": {
            "url": "deals"
        }
    }
}

This is my notification handler:
window.gcmPush.on('notification', function(data) {
    // check for url to route to
    if ( data.additionalData.extra.url ) {
        if ( typeof router !== typeof undefined ) {
            console.log(`routing to url ${data.additionalData.extra.url}`)
            router.push(data.additionalData.extra.url);
        }
    }
    window.gcmPush.finish(function() {
        console.log('Processing of push data is finished');
    });
});

And this is the logcat output when notification is received by my Google Pixel, the app is in background:

03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: onMessage - from: /topics/electronics-android
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: normalize extras
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: key = content-available
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: replace key content-available with content-available
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: key = google.sent_time
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: replace key google.sent_time with google.sent_time
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: key = body
03-30 16:16:15.618  3961  7290 D PushPlugin_GCMIntentService: replace key body with message
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: no locale found for key = message, error Value Testing of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: key = badge
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: replace key badge with count
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: key = extra
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: replace key extra with extra
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: key = sound
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: replace key sound with sound
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: key = title
03-30 16:16:15.619  3961  7290 D PushPlugin_GCMIntentService: replace key title with title
03-30 16:16:15.620  3961  7290 D PushPlugin_GCMIntentService: no locale found for key = title, error Value Look of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.620  3961  7290 D PushPlugin_GCMIntentService: key = google.message_id
03-30 16:16:15.620  3961  7290 D PushPlugin_GCMIntentService: replace key google.message_id with google.message_id
03-30 16:16:15.620  3961  7290 D PushPlugin_GCMIntentService: background
03-30 16:16:15.620  3961  7290 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.639  3961  7290 D PushPlugin_GCMIntentService: message =[Testing out ]
03-30 16:16:15.639  3961  7290 D PushPlugin_GCMIntentService: title =[Look Inside]
03-30 16:16:15.640  3961  7290 D PushPlugin_GCMIntentService: contentAvailable =[1]
03-30 16:16:15.640  3961  7290 D PushPlugin_GCMIntentService: forceStart =[null]
03-30 16:16:15.640  3961  7290 D PushPlugin_GCMIntentService: create notification
03-30 16:16:15.640  3961  7290 E PushPlugin_GCMIntentService: Number format exception - Error parsing notId: null
03-30 16:16:15.652  3961  7290 D PushPlugin_GCMIntentService: stored icon=null
03-30 16:16:15.652  3961  7290 D PushPlugin_GCMIntentService: stored iconColor=null
03-30 16:16:15.652  3961  7290 D PushPlugin_GCMIntentService: stored sound=true
03-30 16:16:15.652  3961  7290 D PushPlugin_GCMIntentService: stored vibrate=true
03-30 16:16:15.652  3961  7290 D PushPlugin_GCMIntentService: no icon resource found - using application icon
03-30 16:16:15.653  3961  7290 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.653  3961  7290 D PushPlugin_GCMIntentService: create actions: with in-line
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: onMessage - from: /topics/electronics-android
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: normalize extras
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: key = content-available
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: replace key content-available with content-available
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: key = google.sent_time
03-30 16:16:15.658  3961  7291 D PushPlugin_GCMIntentService: replace key google.sent_time with google.sent_time
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = body
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key body with message
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: no locale found for key = message, error Value Testing of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = badge
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key badge with count
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = extra
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key extra with extra
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = sound
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key sound with sound
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = title
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key title with title
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: no locale found for key = title, error Value Look of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: key = google.message_id
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: replace key google.message_id with google.message_id
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: background
03-30 16:16:15.659  3961  7291 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.662  3961  7291 D PushPlugin_GCMIntentService: message =[Testing out ]
03-30 16:16:15.662  3961  7291 D PushPlugin_GCMIntentService: title =[Look Inside]
03-30 16:16:15.662  3961  7291 D PushPlugin_GCMIntentService: contentAvailable =[1]
03-30 16:16:15.662  3961  7291 D PushPlugin_GCMIntentService: forceStart =[null]
03-30 16:16:15.662  3961  7291 D PushPlugin_GCMIntentService: create notification
03-30 16:16:15.662  3961  7291 E PushPlugin_GCMIntentService: Number format exception - Error parsing notId: null
03-30 16:16:15.663  3961  7290 D PushPlugin_GCMIntentService: app is not running and content available true
03-30 16:16:15.663  3961  7290 D PushPlugin_GCMIntentService: send notification event
03-30 16:16:15.663  3961  7290 V PushPlugin: sendExtras: caching extras to send at a later time.
03-30 16:16:15.671  3961  7291 D PushPlugin_GCMIntentService: stored icon=null
03-30 16:16:15.671  3961  7291 D PushPlugin_GCMIntentService: stored iconColor=null
03-30 16:16:15.671  3961  7291 D PushPlugin_GCMIntentService: stored sound=true
03-30 16:16:15.671  3961  7291 D PushPlugin_GCMIntentService: stored vibrate=true
03-30 16:16:15.671  3961  7291 D PushPlugin_GCMIntentService: no icon resource found - using application icon
03-30 16:16:15.672  3961  7291 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.672  3961  7291 D PushPlugin_GCMIntentService: create actions: with in-line
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: onMessage - from: /topics/electronics-android
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: normalize extras
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: key = content-available
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: replace key content-available with content-available
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: key = google.sent_time
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: replace key google.sent_time with google.sent_time
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: key = body
03-30 16:16:15.672  3961  7292 D PushPlugin_GCMIntentService: replace key body with message
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: no locale found for key = message, error Value Testing of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: key = badge
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: replace key badge with count
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: key = extra
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: replace key extra with extra
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: key = sound
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: replace key sound with sound
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: key = title
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: replace key title with title
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: no locale found for key = title, error Value Look of type java.lang.String cannot be converted to JSONObject
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: key = google.message_id
03-30 16:16:15.673  3961  7292 D PushPlugin_GCMIntentService: replace key google.message_id with google.message_id
03-30 16:16:15.674  3961  7292 D PushPlugin_GCMIntentService: background
03-30 16:16:15.674  3961  7292 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.676  3961  7292 D PushPlugin_GCMIntentService: message =[Testing out ]
03-30 16:16:15.676  3961  7292 D PushPlugin_GCMIntentService: title =[Look Inside]
03-30 16:16:15.676  3961  7292 D PushPlugin_GCMIntentService: contentAvailable =[1]
03-30 16:16:15.676  3961  7292 D PushPlugin_GCMIntentService: forceStart =[null]
03-30 16:16:15.676  3961  7292 D PushPlugin_GCMIntentService: create notification
03-30 16:16:15.676  3961  7292 E PushPlugin_GCMIntentService: Number format exception - Error parsing notId: null
03-30 16:16:15.685  3961  7291 D PushPlugin_GCMIntentService: app is not running and content available true
03-30 16:16:15.685  3961  7291 D PushPlugin_GCMIntentService: send notification event
03-30 16:16:15.685  3961  7291 V PushPlugin: sendExtras: caching extras to send at a later time.
03-30 16:16:15.700  3961  7292 D PushPlugin_GCMIntentService: stored icon=null
03-30 16:16:15.700  3961  7292 D PushPlugin_GCMIntentService: stored iconColor=null
03-30 16:16:15.700  3961  7292 D PushPlugin_GCMIntentService: stored sound=true
03-30 16:16:15.700  3961  7292 D PushPlugin_GCMIntentService: stored vibrate=true
03-30 16:16:15.701  3961  7292 D PushPlugin_GCMIntentService: no icon resource found - using application icon
03-30 16:16:15.701  3961  7292 D PushPlugin_GCMIntentService: count =[1]
03-30 16:16:15.701  3961  7292 D PushPlugin_GCMIntentService: create actions: with in-line
03-30 16:16:15.718  3961  7292 D PushPlugin_GCMIntentService: app is not running and content available true
03-30 16:16:15.718  3961  7292 D PushPlugin_GCMIntentService: send notification event
03-30 16:16:15.718  3961  7292 V PushPlugin: sendExtras: caching extras to send at a later time.

And this is the output when touching on the notification:

03-30 16:21:27.048  3961  3961 D PushPlugin_PushHandlerActivity: not id = 0
03-30 16:21:27.049  3961  3961 V PushPlugin_PushHandlerActivity: onCreate
03-30 16:21:27.049  3961  3961 D PushPlugin_PushHandlerActivity: callback = null
03-30 16:21:27.049  3961  3961 D PushPlugin_PushHandlerActivity: dismissed = false
03-30 16:21:27.049  3961  3961 V PushPlugin: sendExtras: caching extras to send at a later time.
03-30 16:21:27.049  3961  3961 D PushPlugin_PushHandlerActivity: bringToForeground = true
03-30 16:21:27.056  3961  3961 D PushPlugin_PushHandlerActivity: isPushPluginActive = false
03-30 16:21:27.056  3961  3961 D PushPlugin_PushHandlerActivity: forceMainActivityReload

@macdonst I have the same issue , every time the app fire 'registration' and not fire 'notification' why ?
my Payload:
$fields  = array(
'data' => array(
'title'     => 'Teste !',
"badge" => 1,
'sound'=>'default',
'content-available'  => 1,
'extra'=>array(
"id_oferta" => '646',
),
      'body'    => 'Abre Oferta 646'
    ),
    'registration_ids' => $registrationIds,
              'delayWhileIdle'=>true,
              'timeToLive'=>3,
    'priority' => 'high',
);

$fields = json_encode ( $fields );

$headers = array (
        'Authorization: key=' . "my auth",
        'Content-Type: application/json'
);

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); // Be sure to use ipV4

$result = curl_exec ( $ch );


Bump third party dependencies

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Updating a bunch of third party dependencies used for CI.
Which issue(s) this PR fixes:

None
Does this PR have test?
None

Special notes for your reviewer:
None
Does this PR introduce a user-facing change?

None

/test pull-security-profiles-operator-test-e2e

/test pull-security-profiles-operator-test-e2e

/retest

/retest

/retest

/retest

/lgtm


Load & save from GitHub (repo / gist)

It would be really great to have a possibility to load / save from GitHub (repo or gist).
This gives the tool the most open and free online storage with complete editing history!
The complete functionality can be extracted from GeoJSON.io - http://geojson.io/ which is 100% open-source: https://github.com/mapbox/geojson.io (see src/source)
It is pretty easy to implement with the GitHub API and authentication via GateKeeper (https://github.com/prose/gatekeeper - where geojson.io uses https://geojsonioauth.herokuapp.com).

It would be really great to have a possibility to load / save from GitHub (repo or gist).
This gives the tool the most open and free online storage with complete editing history!

Good idea for the online version!!
Want to think more about storage options - would also be possible to support a local filesystem if I wrap it in Electron.
So perhaps there are 3 storage options:

local storage
gist storage
file storage (if a filesystem is available aka running in electron)

To add onto this as I'm not sure if you're touching on it, I'd love to see it so that it also uses the webhooks of github to auto-update on push. For example, with http://<IP_ADDRESS>/, the style is auto-updated the second a push happens to the watched repo. With the editor, I have it simply triggered so that on push, it reboots the entire editor with the latest style from the repo.

The best-practice for how to store the GL styles and it's assets in editable form inside of GitHub repo / Gist is now defined at https://github.com/klokantech/gl-style-package-spec (implemented by @jirik)
Examples of such "gl-style" repos exist now - we have spent quite a lot of time on this already...
I am keen to have a web instance of the editor (ideally hosted on OpenMapTiles domain) with ability to load & edit & save in this format with GitHub as the storage.

Would this mean that every keystroke (or field unfocus) becomes a GitHub commit?

Would this mean that every keystroke (or field unfocus) becomes a GitHub commit?

That would not be desirable - then we indeed need a Save/Export/Publish button. I do like the implicit saving though (and with the CTRL-Z/CTRL-Y you can always go back and forth).

+1 for the save/export/publish/commit button ;-)

@jirik completed this in https://github.com/maputnik/editor/pull/86

Only the anonymous gist is implemented.
The main target on this ticket was saving edits into a repository like https://github.com/openmaptiles/osm-bright-gl-style


Fixing the omit_needless_words test.

What's in this pull request?

AppKit apinotes do not get applied on anything other than macOS. This
commit extracts the AppKit related part of the test into a separate
file, in order to not restrict all other tests from being executed on
simulators.
rdar://problem/27495329

Before merging this pull request to apple/swift repository:

[ ] Test pull request on Swift continuous integration.

Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please smoke test
    All supported platforms     | @swift-ci Please smoke test and merge
    OS X platform               | @swift-ci Please smoke test OS X platform
    Linux platform              | @swift-ci Please smoke test Linux platform

A smoke test on macOS does the following:

Builds the compiler incrementally.
Builds the standard library only for macOS. Simulator standard libraries and
device standard libraries are not built.
lldb is not built.
The test and validation-test targets are run only for macOS. The optimized
version of these tests are not run.

A smoke test on Linux does the following:

Builds the compiler incrementally.
Builds the standard library incrementally.
lldb is built incrementally.
The swift test and validation-test targets are run. The optimized version of these
tests are not run.
lldb is tested.

Validation Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please test
    All supported platforms     | @swift-ci Please clean test
    All supported platforms     | @swift-ci Please test and merge
    OS X platform               | @swift-ci Please test OS X platform
    OS X platform               | @swift-ci Please clean test OS X platform
    OS X platform               | @swift-ci Please benchmark
    Linux platform              | @swift-ci Please test Linux platform
    Linux platform              | @swift-ci Please clean test Linux platform

Lint Testing
    Language     | Comment
    ------------ | -------------
    Python       | @swift-ci Please Python lint

Note: Only members of the Apple organization can trigger swift-ci.

@swift-ci Please test

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 38629b9fa0de946156cbb1fb7261476b3076c73c
Test requested by - @moiseev

@swift-ci Please test Linux platform

Build failed
Jenkins build - Swift Test Linux Platform
Git Commit - 38629b9fa0de946156cbb1fb7261476b3076c73c
Test requested by - @moiseev

The Linux failure is unrelated:
Testsuite summary for libkqueue 2.0.4
15:57:42 ===================================================================
15:57:42 # TOTAL: 1
15:57:42 # PASS:  0
15:57:42 # SKIP:  0
15:57:42 # XFAIL: 0
15:57:42 # FAIL:  1

@swift-ci Please smoke test Linux platform

Thank you, @moiseev

@swift-ci Please test Linux platform


[BUG]: Incorrect VTT Text Track pointing to a URI which returns a 404 page results in black screen on video playback

Version
6.4.3
What platforms are you having the problem on?
iOS
System Version
15.2 Simulator
On what device are you experiencing the issue?
Simulator
Architecture
Old architecture
What happened?
If the textTracks property has a VTT text track which points to a remote uri which returns a 404 HTML page instead of a valid VTT file, the iOS simulator video player shows a black screen for the duration of the video. The video will be the correct length. onError is not called.
Reproduction
repository link
Reproduction
Step to reproduce this bug are:
The following component consistently causes the issue for me. The issue occurs when the player launches into fullscreen
import React, {useRef, useState} from 'react';
import Video, {TextTrackType} from 'react-native-video';

import{
    View,
    TouchableOpacity,
} from 'react-native';

const VideoButton = ({paused, portrait}) => {
    const player = useRef(null);
    const [playing, setPlaying] = useState(paused);
    const videoStyle = {
        flex:1,
        width: 320,
        height: portrait ? 569 : 180,
        marginTop: 40,
        margin: 10,
        zIndex: 0
    };
    return (
        <View style={{flex:1, backgroundColor:'red'}}>
            <TouchableOpacity
                onPress={()=> {

                    player.current.presentFullscreenPlayer();
                    setPlaying(true);
                }}
            >
                <Video
                    style={videoStyle}
                    paused={!playing}
                    ref={player}
                    source={{uri: 'https://github.com/chromium/chromium/raw/master/media/test/data/90rotation.mp4'}}
                    textTracks={[
                        {
                            title: 'English CC',
                            language: 'en',
                            type: TextTrackType.VTT,
                            uri: 'http://google.com/blargh'
                        }
                    ]}
                />
            </TouchableOpacity>
        </View>
    );
};

export default VideoButton;

@freeboub @seyedmostafahasani should we expect from user to validate their text track or should we do on our side ?

In my opinion, it's better to handle it ourselves, like Android does (on Android, we show the video).
WDYT? @freeboub


Authentication support

Hi, I don't see any commands or options to use http basic authentication. Any plans to add this in the future? I'm using Shield to secure my ES.

I figured out that the usual<EMAIL_ADDRESS>form works in the host specification.

Cool, thanks for the tip


native types in protobufs to make userland code more sane

Lets goahead and move the types into Loomchain first

Merge got hairy across two repos so just manually added changes here: 9d08e2a


how move the specified folder instead of a file ?

Hey, guys. I want to use python to move the specified folder instead of a file, such as '/Game/Materials/' folder to '/Game/Test/Materials/' what should I do? Ask for help! Thank you.

@dfb  Does this also fix the redirectors, as the context menu Fix up Redirectors in Folder do ?

That's a great question, but unfortunately I don't know the answer - I'm not very familiar with how the engine handles redirectors internally.
The good news, though, is that you should be able to perform a simple experiment to discover the answer because you can look to see what redirectors exist (see https://docs.unrealengine.com/en-us/Engine/Basics/Redirectors) - so you could manually move a folder in the editor and verify that you see a redirector show up, and then you could do a similar rename but via Python and see if a redirector is created.


K8SPXC-264 Wait for patch propagation

 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.Iv Pil seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Test name
Status

big-data
failed

storage
passed

scaling
passed

init-deploy
passed

recreate
passed

self-healing
passed

scaling-proxysql
passed

limits
passed

monitoring
failed

restore-to-encrypted-cluster
failed

upgrade
failed

self-healing-advanced
failed

operator-self-healing
passed

demand-backup
passed

upgrade-consistency
passed

monitoring-2-0
passed

security-context
passed

affinity
passed

one-pod
passed

auto-tuning
passed

scheduled-backup
passed

proxysql-sidecar-res-limits
passed

demand-backup-encrypted-with-tls
passed

Test name
Status

init-deploy
passed

recreate
passed

big-data
passed

storage
passed

scaling
failed

scaling-proxysql
failed

self-healing
passed

limits
passed

upgrade
passed

restore-to-encrypted-cluster
passed

upgrade-consistency
passed

monitoring
passed

self-healing-advanced
passed

security-context
passed

demand-backup
passed

monitoring-2-0
passed

operator-self-healing
passed

affinity
passed

one-pod
failed

auto-tuning
passed

scheduled-backup
failed

proxysql-sidecar-res-limits
passed

demand-backup-encrypted-with-tls
failed

Test name
Status

storage
passed

self-healing
passed

big-data
passed

self-healing-advanced
passed

operator-self-healing
passed

recreate
passed

restore-to-encrypted-cluster
passed

demand-backup
passed

scheduled-backup
failed

scaling
passed

init-deploy
passed

limits
passed

monitoring
passed

monitoring-2-0
passed

affinity
passed

one-pod
passed

demand-backup-encrypted-with-tls
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

scaling-proxysql
passed

upgrade
passed

upgrade-consistency
passed

security-context
passed

Test name
Status

init-deploy
passed

limits
passed

monitoring
passed

monitoring-2-0
passed

scaling
passed

affinity
passed

scaling-proxysql
passed

one-pod
passed

upgrade
passed

big-data
passed

auto-tuning
passed

storage
passed

upgrade-consistency
passed

proxysql-sidecar-res-limits
passed

self-healing
passed

security-context
passed

self-healing-advanced
passed

operator-self-healing
passed

recreate
passed

restore-to-encrypted-cluster
passed

demand-backup
passed

scheduled-backup
failed

demand-backup-encrypted-with-tls
passed

Test name
Status

recreate
passed

init-deploy
passed

scaling
passed

big-data
failed

storage
failed

scaling-proxysql
failed

limits
passed

monitoring
failed

monitoring-2-0
failed

affinity
passed

restore-to-encrypted-cluster
failed

upgrade
passed

demand-backup
passed

self-healing
passed

upgrade-consistency
passed

one-pod
failed

auto-tuning
failed

security-context
passed

proxysql-sidecar-res-limits
passed

self-healing-advanced
failed

scheduled-backup
failed

demand-backup-encrypted-with-tls
failed

operator-self-healing
failed

Test name
Status

storage
failed

big-data
failed

recreate
passed

restore-to-encrypted-cluster
passed

init-deploy
passed

limits
passed

monitoring
failed

monitoring-2-0
failed

scaling
passed

scaling-proxysql
failed

self-healing
passed

self-healing-advanced
failed

upgrade
passed

upgrade-consistency
passed

security-context
passed

demand-backup
passed

scheduled-backup
failed

affinity
passed

one-pod
passed

operator-self-healing
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

demand-backup-encrypted-with-tls
failed

Test name
Status

recreate
passed

storage
passed

big-data
failed

scaling
passed

init-deploy
passed

limits
passed

self-healing
passed

scaling-proxysql
passed

restore-to-encrypted-cluster
failed

upgrade
passed

monitoring
failed

demand-backup
failed

monitoring-2-0
failed

self-healing-advanced
failed

affinity
passed

scheduled-backup
passed

operator-self-healing
passed

upgrade-consistency
passed

security-context
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

demand-backup-encrypted-with-tls
failed

Test name
Status

big-data
passed

scaling
passed

scaling-proxysql
passed

upgrade
passed

init-deploy
passed

upgrade-consistency
passed

limits
passed

security-context
passed

monitoring
failed

recreate
passed

restore-to-encrypted-cluster
passed

storage
passed

self-healing
passed

self-healing-advanced
failed

monitoring-2-0
failed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

operator-self-healing
passed

demand-backup
failed

scheduled-backup
passed

demand-backup-encrypted-with-tls
failed

Test name
Status

big-data
passed

recreate
passed

storage
passed

restore-to-encrypted-cluster
passed

self-healing
passed

demand-backup
passed

self-healing-advanced
failed

scaling
passed

scaling-proxysql
passed

upgrade
passed

upgrade-consistency
passed

security-context
passed

init-deploy
passed

limits
passed

monitoring
failed

monitoring-2-0
failed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

operator-self-healing
passed

scheduled-backup
passed

demand-backup-encrypted-with-tls
failed

Test name
Status

init-deploy
passed

limits
passed

monitoring
failed

recreate
passed

restore-to-encrypted-cluster
passed

demand-backup
passed

storage
passed

scheduled-backup
passed

scaling
passed

self-healing
passed

demand-backup-encrypted-with-tls
passed

scaling-proxysql
passed

self-healing-advanced
failed

upgrade
passed

upgrade-consistency
passed

security-context
passed

big-data
passed

monitoring-2-0
failed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

operator-self-healing
passed

Test name
Status

storage
passed

scaling
passed

init-deploy
passed

self-healing
passed

recreate
passed

scaling-proxysql
passed

limits
passed

self-healing-advanced
failed

restore-to-encrypted-cluster
passed

upgrade
passed

monitoring
failed

demand-backup
passed

upgrade-consistency
passed

scheduled-backup
passed

security-context
passed

demand-backup-encrypted-with-tls
passed

big-data
passed

monitoring-2-0
failed

operator-self-healing
passed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

scaling
passed

scaling-proxysql
passed

upgrade
passed

recreate
passed

big-data
passed

upgrade-consistency
passed

restore-to-encrypted-cluster
passed

security-context
passed

demand-backup
passed

init-deploy
passed

scheduled-backup
passed

limits
passed

demand-backup-encrypted-with-tls
passed

monitoring
failed

storage
passed

self-healing
passed

self-healing-advanced
passed

monitoring-2-0
failed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

operator-self-healing
passed

Test name
Status

big-data
passed

init-deploy
passed

storage
passed

limits
passed

self-healing
passed

monitoring
failed

self-healing-advanced
passed

recreate
passed

operator-self-healing
passed

restore-to-encrypted-cluster
passed

demand-backup
passed

scaling
passed

scheduled-backup
passed

scaling-proxysql
passed

demand-backup-encrypted-with-tls
passed

upgrade
passed

upgrade-consistency
passed

security-context
passed

monitoring-2-0
failed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed


Update Flask, Werkzeug and related packages and add Python 3.11 to CI

Replaces #155, #169 and #170. All packages need to be updated same time, as well as MarkupSafe and flask_restx, to avoid conflicts. With these changes SatSale also works with Python 3.11 for me.

Hmm, can't figure out that GRPC client build failure, doesn't happen to me locally. Reverting Python 3.11 CI update.

tACK. Awesome job, I had been trying to wrangle this on-and-off. Still not building for me on 3.11 but this is definitely a step closer!


feat(teleport-extension-replicator): Cancel downloading of mutation before Epoch

copilot:all

Current dependencies on/for this PR:

main

PR #3596   👈

This comment was auto-generated by Graphite.


Prepare demo YouTube video

Tasks

Prepare YouTube to fully demonstrate project features and capabilities
No length limit
Should showcase the entire functionality of the product
Should explain the problem your system solves and its business potential
Include any other technical or otherwise details that you see fit
Vocal narration needs to be in
Link to video needs to be included in the README.md

Video complete:
https://youtu.be/RKo8-B3RKVY


Factor dependencies differently.

Following up on #249, I liked @psarka's suggestion of depending on
dask[bag] to obtain cloudpickle and toolz, since intake itself does
not import either directly.
Just submitted for consideration --- no strong opinion on this.

I suggest we clean up the remaining PRs and return the this before the next release.


Adding tos 2

@patflynn @loosebazooka @elharo

+csells
+suneilthomas
On Tue, Oct 13, 2015 at 4:29 PM, nbashirbello<EMAIL_ADDRESS>wrote:

[image: screenshot from 2015-10-13 15 54 21]
https://cloud.githubusercontent.com/assets/6805942/10467409/87ae12c4-71c7-11e5-8708-b0ee1b0405fd.png
[image: screenshot from 2015-10-13 16 21 50]
https://cloud.githubusercontent.com/assets/6805942/10467410/87b09c56-71c7-11e5-9733-c1e83385d655.png
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-147842621
.

Suneil makes the good point that the wording in the notification should be the same as the wording in the settings dialog (or at least cover the same points).  He is happy with the settings panel wording so let's also include that in the notification.
@csells also pointed out that we should always emphasize that we only track anonymous data about usage.

@csells @loosebazooka The way we have this architectet all Google Login using Google plugins are going to have their tracking going through our analytics project. Assuming we think that's OK we should reframe our analytics as Google wide and not specific to GCT.

sgtm
On Oct 14, 2015, at 10:19 AM, Patrick Flynn <notifications<EMAIL_ADDRESS>wrote:
@csellshttps://github.com/csells @loosebazookahttps://github.com/loosebazooka The way we have this architectet all Google Login using Google plugins are going to have their tracking going through our analytics project. Assuming we think that's OK we should reframe our analytics as Google wide and not specific to GCT.
—
Reply to this email directly or view it on GitHubhttps://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-148064504.

@csells @patflynn

The "More.." link in the notification opens up the Settings dialog where the rest of the message is. If we add all the text to the notification, it seems quite long.

I think it's better to have it all.  I guess the settings page at that
point no longer represents "more" information.  Maybe it should be renamed
to 'settings'.
Also you still need to emphasize the anonymous nature of the data
collection.
On Wed, Oct 14, 2015 at 1:18 PM, nbashirbello<EMAIL_ADDRESS>wrote:

@csells https://github.com/csells @patflynn
https://github.com/patflynn
[image: screenshot from 2015-10-13 16 21 50]
https://cloud.githubusercontent.com/assets/6805942/10491380/760a40b2-7274-11e5-8bf0-bec5cd3ad46e.png
The "More.." link in the notification opens up the Settings dialog where
the rest of the message is. If we add all the text to the notification, it
seems quite long.
[image: screenshot from 2015-10-14 13 18 03]
https://cloud.githubusercontent.com/assets/6805942/10491730/19ce6574-7276-11e5-956f-6713dc54f0ab.png
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-148123612
.

That's a little wordy for a dialog. Can we cut it down at all? Maybe just
Send anonymous usage statistics to Google?
Click Agree to send data or Don;t agree otherwise.
Your usage of this plugin...
Also should there be Agree/Don't Agree buttons somewhere? I don;t see them
in the screenshot? Is that hiding behind the "Settings..." link?
On Thu, Oct 15, 2015 at 2:03 PM, nbashirbello<EMAIL_ADDRESS>wrote:

[image: screenshot from 2015-10-15 13 44 34]
https://cloud.githubusercontent.com/assets/6805942/10522874/855a38e8-7345-11e5-9612-b606eba81daa.png
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-148474382
.

--
Elliotte Rusty Harold
<EMAIL_ADDRESS>

There are no agree and disagree button exactly. The links act as buttons, so clicking agree calls the API and sets the opt in option to true.

OK, I see now. I totally didn't understand that as a user though.
Furthermore, on the Web, (which this isn't, of course) clicking a link
doesn't take any action.
On Thu, Oct 15, 2015 at 5:05 PM, nbashirbello<EMAIL_ADDRESS>wrote:

There are no agree and disagree button exactly. The links act as buttons,
so clicking agree calls the API and sets the opt in option to true.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-148521182
.

--
Elliotte Rusty Harold
<EMAIL_ADDRESS>

@patflynn @csells Please take a look at the last image of the notification. There are some suggestions that follow of shortening the text. Thanks.

ping!

personally I'm fine with the verbose popup. They'll only see it once, but I defer to @csells on this one.

FYI:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb246446(v=vs.85).aspx
General UI principles for dailogs and reading on screen suggest keeping all
dialog box text short, to the point, active voice, and imperative mood.
On Mon, Oct 19, 2015 at 12:53 PM, Patrick Flynn<EMAIL_ADDRESS>wrote:

personally I'm fine with the verbose popup. They'll only see it once, but
I defer to @csells https://github.com/csells on this one.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-149278908
.

--
Elliotte Rusty Harold
<EMAIL_ADDRESS>

This is my preference:
Title: Help improve the Cloud Tools plugin by sending anonymous usage statics to Google.
Body: Please click I_agree if you want to help make the Cloud Tools plugin better or I_don't_agree otherwise. Settings...

@patflynn Can we enable the usage tracker in this cl?

@nbashirbello yes definitely enable the usage tracker when an analytics flag id is provided and the user is opted in..

@elharo Hey, any idea why the travis Thaksbuild is failing? I sent you an email earlier. The error is below and I can't figure out the cause:
Could not copy file '/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/resources/config.properties' to '/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/build/resources/main/config.properties'.
Thanks

Let me look. I haven't seen this one before, and I don't think anyone has
done anything with that code recently.
On Thu, Oct 29, 2015 at 1:31 PM, nbashirbello<EMAIL_ADDRESS>wrote:

@elharo https://github.com/elharo Hey, any idea why the travis
Thaksbuild is failing? I sent you an email earlier. The error is below and
I can't figure out the cause:
Could not copy file
'/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/resources/config.properties'
to
'/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/build/resources/main/config.properties'.
Thanks
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-152309649
.

--
Elliotte Rusty Harold
<EMAIL_ADDRESS>

Looks like that file's from your pull request. Any chance there's a
permission issue there? Is it world readable?
On Thu, Oct 29, 2015 at 2:19 PM, Elliotte Rusty Harold<EMAIL_ADDRESS>wrote:

Let me look. I haven't seen this one before, and I don't think anyone has
done anything with that code recently.
On Thu, Oct 29, 2015 at 1:31 PM, nbashirbello<EMAIL_ADDRESS>wrote:

@elharo https://github.com/elharo Hey, any idea why the travis
Thaksbuild is failing? I sent you an email earlier. The error is below and
I can't figure out the cause:
Could not copy file
'/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/resources/config.properties'
to
'/home/travis/build/GoogleCloudPlatform/gcloud-intellij/google-login-plugin/build/resources/main/config.properties'.
Thanks
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/gcloud-intellij/pull/124#issuecomment-152309649
.

--
Elliotte Rusty Harold
<EMAIL_ADDRESS>
--
Elliotte Rusty Harold
<EMAIL_ADDRESS>

If we can get my last round of comments addressed I'm good to LGTM. I'd like to get this PR merged tomorrow if possible.

@elharo @patflynn  Made discussed changes.

Nabila, please squash all your commits.
LGTM.

closes #104


[HOTFIX] Fixed edit document link only linking to the first trajectory to develop

The previous document edit link only allowed editting the first trajectory (well, the first document object).
This PR fixes that, by adding an edit link for every documents object.
Also changed the compare link logic a bit.

I think when I wrote it I was somehow convinced that studies shared a Documents item. Having a single link for the attachments page would never have worked without rewriting that as well. Quite an educational hotfix for me!


Create test_consumer.py

Hopefully a simpler sort of 'hello world' for unit testing for python novices like me.
Description
I had a hard time trying to make sense of your documentation (still not sure where/how to edit your primary documentation) so after getting some basic unit tests to work I wanted to offer up this in hopes it may help other 'novices' like me.
Fixes # (issue number)
Type of change
Please delete options that are not relevant.

[X] Documentation (typos, code examples, or any documentation updates)
[ ] Bug fix (a non-breaking change that resolves an issue)
[ ] New feature (a non-breaking change that adds functionality)
[ ] Breaking change (a fix or feature that would disrupt existing functionality)
[ ] This change requires a documentation update

Checklist

[ ] My code adheres to the style guidelines of this project (scripts/lint.sh shows no errors)
[X] I have conducted a self-review of my own code
[ ] I have made the necessary changes to the documentation
[X] My changes do not generate any new warnings
[X] I have added tests to validate the effectiveness of my fix or the functionality of my new feature
[ ] Both new and existing unit tests pass successfully on my local environment by running scripts/test-cov.sh
[ ] I have ensured that static analysis tests are passing by running scripts/static-anaylysis.sh
[ ] I have included code examples to illustrate the modifications

One of the biggest FastStream features is an automatic pydantic-base serialization, described there.
So, your example has no sense, cuz it represents incorrect framework usage
Btw, looks like you just missed "Tutorial" documentation section and looked only at "Kafka" one. All Framework features are described detail enough there. If you have some problems with the specific section/page, you can just click to "edit" btn on the rite top of a documentation page, edit it and create a PR.

Thanks for the feedback, this is your guys project so I have to assume you know better than I do.
I'd just like to say that in my setting (Working for a large enterprise) and having created a half-dozen kafka consumers now for various projects, I don't think your assumptions are accurate.
In these cases I'm simply looking to consume a message from a topic, and I have no idea what shape/form that payload will take (some other system publishes it). In this example, the json payload is a giant mess (100+ lines and 3 different levels of structure). I literally need 3 fields out of this whole thing.
There's no need to create a model for this, I just pull out the 3 fields I need, validate that data, and move on with acting upon the message I got. No need to make this any more complicated than that.
None of the existing tutorials or examples had a clear cut example of how you could do that so I figured I'd try to give back in case any other noobs like me are trying this out :)

@ChadDa3mon I see your point. Let me think a bit about where and how exactly to add such an example over the weekend.

@ChadDa3mon is it the example you were tried to implement by yourself?
from faststream import FastStream
from faststream.kafka import KafkaBroker

broker = KafkaBroker()
app = FastStream(broker)

@broker.subscriber("test")
async def handle(name: str, age: int):
    print(f"{name=}, {age=}")

@app.after_startup
async def t():
    await broker.publish({
        "name": "John",
        "age": 25,
        "useless": {
            "nested": "useless"
        }
    }, topic="test")

If you need no to consume all fields, you can just define the fields you want: all other will be ignored


[QUERY] Using Azure.Identity to Authenticate Microsoft users

Hi,
Query/Question
I have a .net core desktop application (it's a Microsoft internal app) where we authenticate all the users with Microsoft account using MSAL library following the example here and then check their access for a particular security group using graph client. In our app we do need to access some azure resources such as the blob storage which requires a token credential from Azure. Authenticating users twice is kind of annoying so I was wondering if there is a way to authenticate users within Microsoft using Azure.Identity instead of MSAL and cache the token (for multiple app start) so that we can reuse it while accessing Azure resources. It would be great if someone can share some documentation or code samples to do the same.
Also, looking through the documentation it seems like Azure Active Directory Graph APIs will soon be deprecated so how can I create a graph client using the azure access token.?
Any help is much appreciated. Thanks in advance.
Environment:

Azure.Identity Version=1.4.0
Azure.Storage.Blobs Version=12.9.1
Framework - .NET Core 5
Microsoft.Graph Version=4.5.0
Microsoft.Graph.Auth Version=1.0.0-preview.7
Microsoft.Identity.Client Version=4.35.1
Microsoft.Identity.Client.Extensions.Msal Version=2.18.9

Thank you for your feedback.  Tagging and routing to the team members best able to assist.

Hi @ShrutiJaiswal1494  - Just to clarify, are you authenticating to the Azure resources as the user running the application? How is the app using the information about the user's security group membership?

Hey, @christothes I am trying to access the azure resources using the registered App. The app needs to authenticate the user on their behalf

If your intention is to secure access to something using this approach, I don't believe your registered app credentials would be secure. Have you considered just adding the security group to the storage contributors role and accessing the storage service as the user?

Do you mean a security group that consists of all users of my application and giving that security group the permissions to access the storage?

In that case, my concern is there isn't a security group (which I am aware of) that consists of all the Microsoft employees which I can use in this case :(

Sorry for the side track, but have you seen this sample? It incorporates Graph and Identity https://docs.microsoft.com/en-us/graph/tutorials/dotnet-core?tutorial-step=1
Note that you won't be able to use the same token for graph as with the Azure service, since they will target different scopes.


Bug - Im not on the ally list

Describe the bug
Im not on the ally list
Expected behaviour
I should be on the ally list
How can we reproduce this?
By not having me on the ally list
Potential fix
Put me on the ally list
"InfDev"
Applicable media

This shitty screenshot shows that I'm not on the ally list.

Please include an example with you using this bot on MMO or a private server. Thanks


Add unit to config field names

follow-up to #2220, resulted from some review comments in https://github.com/CosmWasm/wasmvm/pull/560

@MergifyIO backport release/2.2


Kong 2.0.5 Luarocks package?

Can we get a Kong 2.0.5 release that has a bunch of 2.0.x fixes to luarocks?
Would like it for a release we were planning tonight if possible
https://luarocks.org/modules/kong/kong
@gszr if your in charge of some of the release packaging and such. Seems 2.0.5 has been out in github for 8 days, and Kong owns luarocks so hopefully no blockers here 👍 .
Best,
Jeremy

This would be really helpful!

@bungle I've never at'd you before, but going to use my "One-time" on this ;)

@gszr this is similar to https://github.com/Kong/kong/issues/6087
I wonder if you could help us out here? We'd really love to have this sometime today if possible...

This is done. Thanks for bringing that to our attention!

@gszr awesome man really appreciate it.  Was getting nervous for our change ticket window tonight when I saw that version was missing not gonna lie 😆  .


Connection errors that happens intermittently

We are using the nuget package in a service that calls Dynamics a few times a minute.
And intermittently we get errors that we couldn't connect because a few different exceptions:

Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseConnectionException: Failed to connect to Dataverse\r\n ---> System.AggregateException: One or more errors occurred. (Exception - Fault While initializing client - RefreshInstanceDetails)
Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseConnectionException: Failed to connect to Dataverse\r\n ---> System.AggregateException: One or more errors occurred. (Need a non-empty authority (Parameter 'Authority'))
Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseConnectionException: Failed to connect to Dataverse\r\n ---> System.AggregateException: One or more errors occurred. (An error occurred while sending the request.)\r\n ---> System.Net.Http.HttpRequestException: An error occurred while sending the request.\r\n ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host..\r\n ---> System.Net.Sockets.SocketException (10054): An existing connection was forcibly closed by the remote host.

We also get
System.ServiceModel.CommunicationException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (domain.crm4.dynamics.com:443)
But not sure if that is connected to your nuget package.
This happens 2 or 3 times each day on different times, and then there can be a surge of up to 10 to 15 exceptions.
I'm sure there is a lot of information I have not included that you need, but just let me know what you need.

we are also facing the same problem in our solution when we use our application after 10 to 15 API calls getting the issue.
we posted the issue in the same platform issue 321, if you find any solution let us know.

We have seen a few reports of this in the last few weeks.
The errors are indicating a network issue between the client and the server,
@johandynamics,  on your #2, are there should be sub-exceptions there, most likely what you're seeing in #3 Can you validate?
What may be needed here is to create a Support ticket to engage Platform networking folks to help troubleshoot this problem specifically to the environments your connecting too.

Yes.. this is what I was expecting to see.
This is your error:  Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host
That is the network layer terminating the connection, that can happen due to bad gateway's or firewalls, connection drops (mid-communication)
We have discussed putting in retires for this type of error, but our telemetry tells us that when we see "An existing connection was forcibly closed by the remote host" it nearly aways a network element (firewall / gateway / proxy server ) that is failing. Retrying the operation internally masks the problem and shows up as performance issues.
I would start by taking a look at where your service is and the path it takes to get to PowerPlatform.  You can also aways open a support ticket with us to help troubleshoot the problem from the PowerPlatform side to your host (where possible).
That said, this behavior has occurred in the past where our (PowerPlatform) perimeter security system would terminate connections due to out of date or what were seen as corrupted SSL certificates used on requests.   But I, personally, have not seen that since we retired TLS 1.x in the network.
My recommendation would be as follows:
If you are hosting this client locally (your own vm / local host) make sure it's running a supported OS and that OS is patched current (Linux / windows / mac / whatever),  if your still seeing the issue after that reach out to the team that owns the firewall/gateway/proxy server managing traffic and see if they can help you troubleshoot it there, connection terminations should appear in their logs.  I have seen this, in the past, reveal a bad node or a proxy server that was misconfigured, which would be supported in this case by the semi randomness its being seen.
If that does not pan out, or lead to a reason, I would recommend opening a support ticket with Microsoft to so the PowerPlatform side can be investigated.

Going to close this..
thanks !

We are experience similar issue.  We used SDK to connect to CRM on cloud.  Per Microsoft recommendation, we replace ADAL auth with Microsoft.PowerPlatform.Dataverse.Client.  .NET application is running on framework 4.7.2. We did not get any error when doing unit testing in our test environment.  However, after we deployed the application to our production with higher volume of transactions (we load more than 1/2 million of records daily), then we got the following error
Exception Message:
Failed to connect to Dataverse
StackTrace:
at Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.CreateServiceConnection(Object externalOrgServiceProxy, AuthenticationType requestedAuthType, String hostName, String port, String orgName, NetworkCredential credential, String userId, SecureString password, String domain, String Geo, String claimsHomeRealm, Boolean useSsl, Boolean useUniqueInstance, OrganizationDetail orgDetail, String clientId, Uri redirectUri, PromptBehavior promptBehavior, OrganizationWebProxyClientAsync externalOrgWebProxyClient, String certificateThumbPrint, StoreName certificateStoreName, X509Certificate2 certificate, Uri instanceUrl, Boolean isCloned, Boolean useDefaultCreds, Version incomingOrgVersion, ILogger externalLogger, String tokenCacheStorePath)
at Microsoft.PowerPlatform.Dataverse.Client.ServiceClient..ctor(Uri instanceUrl, String clientId, String clientSecret, Boolean useUniqueInstance, ILogger logger)
Inner Message:
One or more errors occurred.
Inner StackTrace:
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)    at System.Threading.Tasks.Task1.get_Result()
at Microsoft.PowerPlatform.Dataverse.Client.ConnectionService.GetCachedService(ConnectionService& ConnectionObject)
at Microsoft.PowerPlatform.Dataverse.Client.ConnectionService.IntilizeService(ConnectionService& ConnectionObject)
at Microsoft.PowerPlatform.Dataverse.Client.ConnectionService.DoLogin(ConnectionService& ConnectionObject)
at Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.CreateServiceConnection(Object externalOrgServiceProxy, AuthenticationType requestedAuthType, String hostName, String port, String orgName, NetworkCredential credential, String userId, SecureString password, String domain, String Geo, String claimsHomeRealm, Boolean useSsl, Boolean useUniqueInstance, OrganizationDetail orgDetail, String clientId, Uri redirectUri, PromptBehavior promptBehavior, OrganizationWebProxyClientAsync externalOrgWebProxyClient, String certificateThumbPrint, StoreName certificateStoreName, X509Certificate2 certificate, Uri instanceUrl, Boolean isCloned, Boolean useDefaultCreds, Version incomingOrgVersion, ILogger externalLogger, String tokenCacheStorePath)
After rolling back the changes to use Microsoft.Xrm.Tooling.Connector with ADAL, the error is gone.
Any help or comment for trouble shooting is appreciated.

BTW, just an update here. In me case, it actually did turn out to be a customer's fairly complex network configuration being the issue. Anyway, we were able to replicate and compare side by side and they know what to do or how to fix.
@rsaclee , I'm not sure the latest issue you're having is related to the OP.
@MattB-msft , thanks as always. It was indeed a network issue on the customer side.


Code for handling authorship record element

Put together the beginnings of a code framework to handle the authorship record.
Related ticket:
https://github.com/cjcodeproj/vtmedia-schema/issues/10

First commit:
https://github.com/cjcodeproj/medialibrary/pull/84/commits/1cb071ea3e22d2b43fa3d56245911cc43ea95f16

Second commit (some copyright headers were not updated):
https://github.com/cjcodeproj/medialibrary/pull/84/commits/b694b0c38791c418e8a7253dbde5919a784475c1

Code Notes:

This is the first code in the base that generates XML output.  Other internal code will need to replicate this pattern.
Two proof of concept tools, one to read existing records, and another to generate an authorship template.

Closing ticket.


fix bug in /status/properties filtering

Description

Fixed a bug in /status/properties endpoint
#12950 introduced ~or exposed~ an issue with masking sensitive properties when calling /status/properties.
The unit test for this method was broken before the aforementioned patch was created which lead this patch to silently breaking the actual code
Splitter.on(",").split(returnedProperties.get("druid.server.hiddenProperties")).forEach(hiddenProperties::add);

That java is not a valid way to split a string with the format ["item1", ... "itemN"] ... [ ] " all need to be stripped out of the string before that line is valid.
Due to that bad splitting of the string, the unit test was passing, but not testing what we wanted it to test. My patch fixes the splitting of that hiddenProperties string. This fix causes the test to fail, alerting me to the fact that the filtering method is not working as intended. I went away from using the filtered map concept in the original patch, and instead removed the sensitive k:v pairs from a copy of the passed map and returned that modified map. This now passes the updated unit tests and has been verified in a cluster.

Key changed/added classes in this PR

StatusResource
StatusResourceTest

This PR has:

[X] been self-reviewed.
[X] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[X] been tested in a test Druid cluster.

I confirmed in my current 0.22.x cluster that the exact match filtering works as expected despite the unit test being broken in that version too.

Great catch @capistrant. LGTM. can you also add an assertion that the size of returned properties is less than injector.getInstance(Properties.class).size()? That way, such an issue won't happen again.

@paul-rogers welp, I guess this got merged quickly since it needed to fix the regression in backport. I think I will follow on with a PR to master (no-backport) with a change to add the redactions instead of deletion. I'm also interested in hearing more about the efficiency of scanning the configs for stuff to redact. Perhaps I'm overlooking some point about making it more efficient, per your comment.


Refactor directory structure so it makes sense again (fsw contains non-fsw)

Is your feature request related to a problem? Please describe.
fsw is misleading in that it includes unit tests, etc but then there are also fsw implementations within modules...
Describe the solution you'd like
Implement a flattened/sensible directory structure.  Needs discussion.
Describe alternatives you've considered

cfe/

CMakeLists.txt (all the general stuff)
fsw/

modules/

sbr/
msg/

core/

es/
...

public_inc/

unit-test-stubs/
unit-test-coverage/
unit-test-functional/
eds/
docs/
... and so on

Additional context
https://github.com/nasa/cFE/pull/947#pullrequestreview-517018628
Requester Info
Jacob Hageman - NASA/GSFC
ping @acudmore

Also related to #626 (utilize cmake libraries) that could help clean up includes/dependencies.

I would suggest a unit-test directory with functional, stubs, and coverage subdirectories

CCB 2020-10-28 APPROVED

Something like the simplified tree in the original comment would be great.

I assume "core" contains the base services (es, evs, etc.). What do we get from nesting those as opposed to keeping them directly under "fsw"

I assume "core" contains the base services (es, evs, etc.). What do we get from nesting those as opposed to keeping them directly under "fsw"

The "core" services all use one CMakeList.txt, and become one cfe-core library in the build context.  The individual modules each have their own CMakeLists.txt and can be removed/replaced via configuration.  Eventually everything could follow the module approach and we could break out cfe-core into it's elements, but we aren't there yet (and it's not critical for Caelum).

Need to consider how this affects the build system and the way it finds components.  In particular the component-level CMakeLists.txt files need to reside at the top level of the module they define.
I have two possible suggestions for consideration.  The first is a "lighter" version that still preserves the current core grouping and wouldn't substantially impact the general build scripts or user understanding of the layout:
.
├── cmake
│   ├── sample_defs
│   └── target
│       ├── CMakeLists.txt
│       ├── inc
│       └── src
├── core
│   ├── CMakeLists.txt
│   ├── eds
│   ├── fsw
│   │   ├── es
│   │   ├── evs
│   │   ├── fs
│   │   ├── sb
│   │   ├── tbl
│   │   └── time
│   ├── mission_inc
│   ├── private_inc
│   └── unit-test
│       ├── coverage
│       ├── functional
│       └── stubs
├── docs
└── modules
    ├── cfe_assert
    │   ├── CMakeLists.txt
    │   ├── inc
    │   └── src
    ├── cfe_testcase
    │   ├── CMakeLists.txt
    │   └── src
    ├── cfe_testrunner
    │   ├── CMakeLists.txt
    │   ├── inc
    │   └── src
    └── msg
        ├── CMakeLists.txt
        ├── mission_inc
        ├── src
        └── unit-test
            ├── coverage
            ├── functional
            └── stubs

In this approach the MISSION_CORE_MODULES would be modified to contain core instead of cfe-core but it should otherwise work as long as the corresponding search path is updated, I don't think it would require much script modification other than to adjust the paths.
The second is a more full-blown modularization, which is what I think we should strive toward but is definitely a bigger change not only in the scripting but also user mindset:
.
├── cmake
│   ├── sample_defs
│   └── target
│       ├── inc
│       └── src
├── core
│   └── inc
├── docs
└── modules
    ├── cfe_assert
    │   ├── CMakeLists.txt
    │   ├── inc
    │   └── src
    ├── cfe_testcase
    │   ├── CMakeLists.txt
    │   └── src
    ├── cfe_testrunner
    │   ├── CMakeLists.txt
    │   ├── inc
    │   └── src
    ├── es
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    ├── evs
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    ├── fs
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    ├── msg
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    ├── sb
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    ├── tbl
    │   ├── CMakeLists.txt
    │   ├── eds
    │   ├── fsw
    │   │   ├── inc
    │   │   └── src
    │   └── unit-test
    │       ├── coverage
    │       ├── functional
    │       └── stubs
    └── time
        ├── CMakeLists.txt
        ├── eds
        ├── fsw
        │   ├── inc
        │   └── src
        └── unit-test
            ├── coverage
            ├── functional
            └── stubs

In this approach the MISSION_CORE_MODULES would list out all individual core modules directly, i.e. instead of cfe-core it would have es evs sb tbl time fs and we would have to do some work to deal with the current places that core apps call internal functions or reference internal data structures in other core apps - either promote them to public or come up with a different way to handle it.  (this is the current fsw/cfe-core/src/inc/private dir - which I'd like to see go away.

Uh-oh we're approaching taxonomy territory!

I'd prefer an approach that separates fsw from non-fsw.  Your modules directory mixes that concept in both options (as does the current structure).  I think we would benefit from an obvious difference.

Yes - The reality is that all modules have both fsw and non-fsw components.  This is true of all apps and libraries.  Ideally - in a general sense - when a user adds modules (of any kind) to their build, they want to add the FSW stuff as all supporting stuff - tests, documentation, etc as one logical unit.
I don't see why we'd want to treat the core modules any differently - they are just other modules.
So the very general form/template would be:

CMakeLists.txt at top level for overall app build recipe (builds FSW plus any supporting stuff)
eds dir for CMD/TLM definitions
fsw dir for actual code that is executing on the flight processor - divided into inc for public API and src for source files
unit-test dir for the tests  (could be simplified to just test)
docs dir for documentation (not shown earlier, but we should probably have it!)

I think @jphickey's second option is actually not that bad, the fsw separation is inherent inside each module and I like how it encapsulates everything related to each module inside a single directory, similar to how the apps are implemented. That being said, should we really consider cfe_assert, cfe_testcase , and cfe_testrunner as modules? More broadly, what makes something a module?

@astrogeco - good catch, actually cfe_testcase as it exists today is just a holding place for some ES functional tests - this would be under es/unit-test/functional.  So that module goes away in this structure.
cfe_assert (a lib) and cfe_testrunner (an app) are both separately compiled and loaded modules - hence why they are separate. You would add these to cfe_es_startup.scr when running the tests, leave them out for normal FSW deployment.  I think they should stay as separate entities, as they are today.  They could even be forked into entirely separate repos, but they are so small/simple that seems more work and management effort than its worth.  Easier to keep them grouped with CFE core.
I also prefer the second approach - i.e. fully modular - and as I said before, it would take some work to make the CFE core apps play nice in this more isolated arrangement.   I think we are close to having this be workable ... Mainly just have to fix some aspects of the ER log and cleanup code that calls directly into other modules and bypasses the public API.  Worst case we just move them to public headers but document that they aren't intended to be directly referenced outside CFE itself.  But all in all I don't think it would take a whole lot of work to get it running with this fully modularized directory structure.

From a taxonomy perspective, those three items don't have a fsw component which makes them outliers. I want to make sure that when people talk about modules everyone agrees on what they are. Having non-fsw items inside the modules directory is confusing.

Correct - they are test support modules, not FSW modules - although they could be loaded into a FSW environment for test purposes when you want to do that.
Personally I don't think the term "modules" implies FSW - nowhere did we say that every module needs to have a FSW component.   Some have FSW, some do not, depending on their purpose.
But that's my opinion - if you wanted to use a separate parent dir that's fine - but I don't think it adds any value, since we already designate what is "fsw" and what is not inside the modules themselves.  It is somewhat redundant to designate "fsw" in the parent dir as well.

I agree that we never said modules have to have a FSW component. Regardless of what we end up with I want to make sure we define and lay out things in a way that makes sense. So from a definition and educational perspective I'd like to have a statement that says "Modules are composed of such and such, a typical module contains these types of things. If you want to add X functionality you should create a module. If you want to add Y functionality you should create some_other_thing"

I concur w/ the second @jphickey option.  I think in the short term we can keep the "cfe core" concept for private includes/API bypass.  This could all benefit from #626, interface libraries.  We will need a spot for ut_support, and possibly consider the task library concept for general task implementations.


CLI usage link not working in the Setup in the README

In the Setup the link to "CLI usage" is not working.

Thx

Fixed


refactor: refactor neutrino class into smaller methods

Description:
Refactor neutrino class into smaller methods
Motivation and Context:
Before working on some improvements to the sync process to better handle the wallet recovery process (See https://github.com/LN-Zap/zap-desktop/issues/2080)
How Has This Been Tested?
Manually - create new lo al wallet, verify sync works as expected
Types of changes:
Refactor
Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[ ] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage remained the same at 20.212% when pulling 8a1f2122e90a852c92f94a7ea174287269ee3703 on mrfelton:refactor/modularise-neutrino-class into 359bc41a881c6909c4e9c0f718b603cf64a8485a on LN-Zap:next.


TEP-0147: introducing matrix.strategy

Changes
Introducing matrix.strategy to allow pipeline authors to specify explicit combinations dynamically.
apiVersion: tekton.dev/v1
kind: Pipeline
spec:
  tasks:
    - name: clone
      taskRef:
        name: clone
    - name: build
       matrix:
         strategy: $(tasks.setup.results.matrix) # <JSON payload of a list of params and values>

where $(tasks.setup.results.matrix) could be set to:
{"include":  [{"IMAGE": "image", "DOCKERFILE": "path/to/Dockerfile"}]}

or
{"include":  [{"IMAGE": "image-1", "DOCKERFILE": "path/to/Dockerfile1"},
                    {"IMAGE": "image-2", "DOCKERFILE": "path/to/Dockerfile2"},
                    {"IMAGE": "image-3", "DOCKERFILE": "path/to/Dockerfile3"}]}

https://github.com/tektoncd/pipeline/issues/7170
https://github.com/tektoncd/community/pull/1081
/kind feature
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs if any changes are user facing, including updates to minimum requirements e.g. Kubernetes version bumps
[ ] Has Tests included if any functionality added or changed
[ ] Follows the commit message standard
[ ] Meets the Tekton contributor standards (including functionality, content, code)
[ ] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[ ] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings). See some examples of good release notes.
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

@pritidesai are you still working on TEP-0147?


OpenGL portfile assumes Windows SDK is installed in Program Files (x86) directory

https://github.com/Microsoft/vcpkg/blob/8641dfd9dd6d3bf190515822060872a56ee37906/ports/opengl/portfile.cmake#L8-L14
This does not always seem to be the case. For me the Windows SDK was installed in the root directory of a partition.

Hi @RobinKa ,
Plz following these steps:

Add these following code to the portfile.cmake file in vcpkg\ports\opengl directory:
vcpkg_get_program_files_32_bit(PROGRAM_FILES_32_BIT)
message("prog path: ${PROGRAM_FILES_32_BIT}")
Using command ".\vcpkg.exe remove opengl" to remove opengl.
Rebuild opengl.
Provide output log.

Thanks,
Lily

Hello @wangli28 ,
Thanks for the response. Sorry if I was not clear enough. My program files path is found just fine. The issue is that the OpenGL portfile is looking within the program files folder for the Windows SDK, although Windows SDK does not have to be installed there (eg. for me it is F:\Windows Kits\). Instead of hardcoding the path to be in program files, the path should be determined by reading a value in the registry (see https://stackoverflow.com/a/35121768).

Hi,
I have the same issue,
The following packages will be built and installed:
    libwebp[core]:x64-windows
  * opengl[core]:x64-windows
Additional packages (*) will be modified to complete this operation.
Starting package 1/2: opengl:x64-windows
Building package opengl[core]:x64-windows...
CMake Error at ports/opengl/portfile.cmake:20 (message):
  Cannot find Windows 10.0.18362.0 SDK.  File does not exist: C:\Program
  Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\OpenGL32.Lib
Call Stack (most recent call first):
  scripts/ports.cmake:74 (include)

my windows kit is installed in the following folder
D:\Windows Kits\10\Lib\10.0.18362.0\um\x64

Hi,
I have the same issue,
The following packages will be built and installed:
    libwebp[core]:x64-windows
  * opengl[core]:x64-windows
Additional packages (*) will be modified to complete this operation.
Starting package 1/2: opengl:x64-windows
Building package opengl[core]:x64-windows...
CMake Error at ports/opengl/portfile.cmake:20 (message):
  Cannot find Windows 10.0.18362.0 SDK.  File does not exist: C:\Program
  Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\OpenGL32.Lib
Call Stack (most recent call first):
  scripts/ports.cmake:74 (include)

my windows kit is installed in the following folder
D:\Windows Kits\10\Lib\10.0.18362.0\um\x64

Does anybody have any solutions?

this bug still exists and my workaroud is to make a dir junction

Change the file "vcpkg\ports\opengl\portfile.cmake":
    vcpkg_get_program_files_32_bit(PROGRAM_FILES_32_BIT)
    vcpkg_get_windows_sdk(WINDOWS_SDK)

    if (WINDOWS_SDK MATCHES "10.")
        set(LIBGLFILEPATH  "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Include\\${WINDOWS_SDK}\\um")
    elseif(WINDOWS_SDK MATCHES "8.")
        set(LIBGLFILEPATH  "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Include\\um")
    else()
        message(FATAL_ERROR "Portfile not yet configured for Windows SDK with version: ${WINDOWS_SDK}")
    endif()

like this:
    GET_FILENAME_COMPONENT(SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)
    vcpkg_get_windows_sdk(WINDOWS_SDK)

    if (WINDOWS_SDK MATCHES "10.")
        set(LIBGLFILEPATH  "${SDK_PATH}\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${SDK_PATH}\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${SDK_PATH}\\Include\\${WINDOWS_SDK}\\um")
    elseif(WINDOWS_SDK MATCHES "8.")
        set(LIBGLFILEPATH  "${SDK_PATH}\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${SDK_PATH}\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${SDK_PATH}\\Include\\um")
    else()
        message(FATAL_ERROR "Portfile not yet configured for Windows SDK with version: ${WINDOWS_SDK}")
    endif()

Solve the problem for me.
So, seens the problem is the hardcoded sdk path in cmake file.

Change the file "vcpkg\ports\opengl\portfile.cmake":
    vcpkg_get_program_files_32_bit(PROGRAM_FILES_32_BIT)
    vcpkg_get_windows_sdk(WINDOWS_SDK)

    if (WINDOWS_SDK MATCHES "10.")
        set(LIBGLFILEPATH  "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${PROGRAM_FILES_32_BIT}\\Windows Kits\\10\\Include\\${WINDOWS_SDK}\\um")
    elseif(WINDOWS_SDK MATCHES "8.")
        set(LIBGLFILEPATH  "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${PROGRAM_FILES_32_BIT}\\Windows Kits\\8.1\\Include\\um")
    else()
        message(FATAL_ERROR "Portfile not yet configured for Windows SDK with version: ${WINDOWS_SDK}")
    endif()

like this:
    GET_FILENAME_COMPONENT(SDK_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)
    vcpkg_get_windows_sdk(WINDOWS_SDK)

    if (WINDOWS_SDK MATCHES "10.")
        set(LIBGLFILEPATH  "${SDK_PATH}\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${SDK_PATH}\\Lib\\${WINDOWS_SDK}\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${SDK_PATH}\\Include\\${WINDOWS_SDK}\\um")
    elseif(WINDOWS_SDK MATCHES "8.")
        set(LIBGLFILEPATH  "${SDK_PATH}\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\OpenGL32.Lib")
        set(LIBGLUFILEPATH "${SDK_PATH}\\Lib\\winv6.3\\um\\${TRIPLET_SYSTEM_ARCH}\\GlU32.Lib")
        set(HEADERSPATH    "${SDK_PATH}\\Include\\um")
    else()
        message(FATAL_ERROR "Portfile not yet configured for Windows SDK with version: ${WINDOWS_SDK}")
    endif()

Solve the problem for me.
So, seens the problem is the hardcoded sdk path in cmake file.
I found @AlessandroMenti's suggestion here: #8288

This solved it for me, too.

Duplicated to https://github.com/microsoft/vcpkg/issues/8288


[CARBONDATA-1094] Wrong results returned by the query in case inverted index is not created on a column

Problem: Wrong results returned by the query in case inverted index is not created on a column
Fix: When inverted index does not exist for a column or column is not a sort column then

Block or blocklet cannot be pruned as data for that column is not sorted
While applying the filter linear search should be applied instead of binary search as binary search can be applied only on sorted data

Verified result
SELECT * FROM index1 WHERE city >= 'Shanghai'
+---+-----+----------+
| id| name|      city|
+---+-----+----------+
| 11|James|Washington|
| 20|Kevin| Singapore|
|  9| Mary|     Tokyo|
| 16| Paul|  Shanghai|
|  4| Sara|     Tokyo|
+---+-----+----------+

LGTM
@sounakr Please have a look on range filter changes.

restest this please


[WIP] Support for polymorphic tile types.

A code walkthrough may be more appropriate.

Replaced by https://github.com/s22s/rasterframes/pull/5, which builds against CircleCI.


MSS210-Mini Connection Dropped All Requests - Content-Length Header Case Issue

Recently purchased some Meross MSS210-Mini smartplugs
https://www.amazon.co.uk/gp/product/B08D69M19G
These would refuse to work with the current version of the module, with the the connection being dropped immediately after all requests, no response returned.
After a lot of debugging I managed to identify this is due to the new plugs being case sensitive to the content length header.  By default the request lib sends 'content-length', when this is altered to 'Content-Length' the device responds.  I've altered the code to manually calculate/insert this header with the case as the device prefers it.
I have tested this against my new MSS210-Mini devices and my older big MSS210 with its original firmware and on/off/status functions are working as expected.  Interestingly the older device is working regardless of the case of content-length its just these new devices which are picky about the case.
I'll raise a PR with these changes.

PR https://github.com/dehsgr/node-red-contrib-meross/pull/14 fixes this issue

Published new version to NPM.

There were heavy changes within API resulting in static message ids, sign tokens and timestamp not being accepted anymore. I re-wrote code base to reflect such changes and generating such information instantly.
Thanks go to @jixunmoe with his project https://github.com/jixunmoe/meross-login getting me in the right direction.
v2.0.0 of this project is published now requiring the Meross key instead of message id, sign/token and timestamp (see ReadMe.md).

About to post the same :)  Had updated fw on my devices and they stopped working with the replayed timestamp/sign/message ids.  Had hacked a version using  md5(messageId + key + timestamp) and generated values rather than static, was working.
Will test 2.0.0.

Confirm 2.0.0 working for my devices (MSS210 mini and MSS210 large/regular, both running latest firmware [latest firmware had previously broken 1.x module using static values]).


Fix DG bugs

Codecov Report

Merging #288 (68a7aa8) into master (b3e4c5e) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #288      +/-   ##
============================================
- Coverage     70.44%   70.42%   -0.03%
- Complexity      816      819       +3
============================================
  Files           111      111
  Lines          2751     2752       +1
  Branches        356      356
============================================
  Hits           1938     1938
  Misses          703      703
- Partials        110      111       +1

Impacted Files
Coverage Δ

.../seedu/address/logic/parser/FindCommandParser.java
96.29% <0.00%> (-1.82%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more