Fix logical expression

This PR modified LogicalExpression's behavior from the following three aspects：
 - Fix the logical expression(AND/OR/XOR) behavior to be consistent with Cypher when null expression is involved, refer to `https://s3.amazonaws.com/artifacts.opencypher.org/openCypher9.pdf` (search label : `Logical operations with null`).

 - Add BadNull expression check

 - Add empty expression check

 - Add empty check for Value::operator&/|/^

Don't forget to fix Value::operator&/|/^ comparator function

Already fixed.


Use newest version of PIMT

The latest version of PIMT includes a PR that greatly simplifies the parsing of its output. Should update to use this instead:
https://github.com/jenkinsci/plugin-installation-manager-tool/pull/448

Fixed in newer versions.


Added quickstart for Zero-to-app workshop

@iamontheinet, @jdanielmyers any chance either could have a look at this PR?


Enable OpenMP foralls with all OMP_MASK'ed devices

This fixed the occa-omp performance for me, thanks @camierjs !


Vulnerability roundup 77: hunspell-1.7.0: 1 advisory

search, files

[ ] CVE-2019-16707 (nixos-unstable)

Scanned versions: nixos-unstable: c1966522d7d. May contain false positives.

See also: #70098

Is this still an issue if 1caac6f2dc467dd67eff688f3a9befdad5d0f9d0 says it fixes this one? You might have more few more fixed issues like this one.

Is this still an issue if 1caac6f2dc467dd67eff688f3a9befdad5d0f9d0 says it fixes this one? You might have more few more fixed issues like this one.

Fixed in https://github.com/NixOS/nixpkgs/pull/80436

Fixed in https://github.com/NixOS/nixpkgs/pull/80436


Support Symfony 4.0

Hi @aequasi,
I'm testing the bundle on the symfony/demo project and so far it worked pretty well. Did you run into any particular issue?

@julienbourdeau composer.json does not allow for Symfony 4.0 packages to be installed - not sure how you managed to test it against Symfony 4 ;)

I used Symfony Flex since we have a contrib recipe. I didn't think about not using Flex 😄

You can use flex for it - as long as you started with Symfony 4 the results should be the same as without flex. The problem is not flex, the problem is the allowed set of dependencies.

I'm currently thinking that the 2.x version will remain compatible with Symfony 3.x while the new 3.0 version will be dedicated to 3.4 and 4.x version. I'll write the upgrade guide but it should be pretty straight forward.
If you get to try the 3.0 version, I'd love to here your feedback.

Upgrading to allow 4.0 shouldn't break BC, from what I've seen. Not much need for a major version increment. That being said, if you dont want to support 2.x or symfony 3.x then that works

Not supporting 3.4 poses a problem, upgrade-wise, since upgrading an older installation to Symfony 4.x requires going via 3.4 in order to sort out the deprecations.
Installing the current 3.x BETA (3.0.0-BETA3) on Symfony 3.4 does not appear to work.

The biggest issue i've seen is the lack of the IndexIf annotation.

Yes, I'll think about a way to add that. Do you mind opening a separate issue for it?

Finished. Feel free to close this if you want.

Hi Everyone,
Please, I am trying to use Algolia with Symfony 3.4 and after following the configuration instructions, I encountered this error "The service "search.index_manager" has a dependency on a non-existent service "serializer"". Please, can anyone assist?

you need to enable the serializer component under the framework namespace (in your config.yml file:

https://symfony.com/doc/3.4/serializer.html#activating-the-serializer
https://symfony.com/doc/current/reference/configuration/framework.html#serializer


Cleargrass Air and Robot Cleaner do not work via Token

Today I installed Xiaomi Miot Auto from HACS. Tried version v0.6.0b7 and v0.5.8
I have four devices from Xiaomi
All devices work with the cloud, but I don't want to work through the cloud.
Through the token, all sensors appeared on only two devices out of four.
Working: Mi Air Purifier 2 and Mi Smart Power Strip
Not working: Cleargrass Air and Robot Cleaner (S51)
What am I doing wrong?

Try master branch for roborock.vacuum.s5.

Try master branch for roborock.vacuum.s5.

Thanks, I'll give it a try. But I don't care as much about the vacuum cleaner as I do about Cleargrass Air, which controls all the ventilation in the house
What can you advise to make Cleargrass Air work?

Try master branch for roborock.vacuum.s5.

same error

It's work! Thank you
I think there's a percentage unit missing from the humidity?!

I think there's a percentage unit missing from the humidity?!

Fixed in https://github.com/al-one/hass-xiaomi-miot/commit/b91664846af6cfcaf00f98b6296fdefa30c10d1c


WL-4969: Reading list error after drag and drop citation into h1

The logic about saving the citation or citationCollectionOrder if it's temporary was missing.

Yeah sorry I wrote the opposite in the comment of what I meant :)


multiple invocations collide in tmpdir, crash

Steps To Reproduce The Error
Invoke imageoptim a second time on the same machine.
Expected Behaviour
Both runs complete successfully.
Actual Behaviour
When the first one completes, it expunges the temporary directory which both processes are using. The other immediately crashes:
i Running ImageOptim...
! ENOENT: no such file or directory, stat '/var/folders/ct/vwmp17px5lq96n7vrqf8fhqh0000gn/T/imageoptim-cli/image123.jpg'
! Please raise an issue at https://github.com/JamieMason/ImageOptim-CLI/issues

Version Numbers or N/A
N/A
Help Needed
Invocations should each use a unique temporary directory. I'm unfamiliar with this language, but on the command line you can see what mktemp does:
% /usr/bin/mktemp -d
/var/folders/ct/vwmp17px5lq96n7vrqf8fhqh0000gn/T/tmp.oe1HyPEd

The string oe1HyPEd in this example is there to prevent bugs of this kind.
Fixing this probably only requires a tweak to this line but at the moment I don't have time to familiarize myself enough to send a PR. If needed I will come back to this. Thanks.

Just to comment on this, I've had a similar problem when adding multiple images. I've been using it in a pre-commit hook using husky > lint-staged > and then calling image-optim. Anytime I have multiple jpg's the process seems to fail.
However, the the cli seems to work with multiple pngs. Here are the scripts I call
    "imageoptim": "yarn imageoptim:gif && yarn imageoptim:jpg && yarn imageoptim:png",         "imageoptim:gif": "imageoptim \"public/**/*.gif\"",         "imageoptim:jpg": "imageoptim \"public/**/*.jpg\"",         "imageoptim:png": "imageoptim --no-imageoptim --imagealpha \"public/**/*.png\"",
Sometimes I don't get the error, and instead it appears I get stuck in a loop or sorts until I kill the process. Unsure if this helps but figured I would chime in. Thanks!

This should hopefully be fixed in 3.0.7


Add support for indexing HStore based attributes

Closes #696
This pull requests requires some integration tests, because it introduces a feature that was not implemented in wagtailsearch.

I added proof of contept for Aggregations, please let me know what do you think about this API.

Closing this PR due to no activity.


Fix directionality issues

The PDP shows that the product details and features are aligned to the left in RTL mode. This might to be caused by a postcss script (https://github.com/necolas/normalize.css), but investigation is needed. Might be a standard postcss from angular-cli.

Most directionality is provided out of the box, we might need to investigate what we can do further. but not for 1.0.


Improve same type check for ordered types in relational expressions

Purpose
$title
Address suggested changes in https://github.com/ballerina-platform/ballerina-lang/pull/29642
Fixes #29657
Fixes #29961
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

With these changes;

following result in operator '<' not defined for 'int' and 'int'

    int|(int|int|int) i = 1;
    int j = 2;
    boolean t = i < j;

following result in compiler crash "java.lang.ArrayIndexOutOfBoundsException"

    int|(int|int|int) i = 1;
    int j = 2;
    boolean t = j < i;

We have to look into this.


Corrected validation message in dialog editor

https://bugzilla.redhat.com/show_bug.cgi?id=1132125
Corrected validation message in dialog editor as described in bugzilla ticket.
I was also thinking about modifying message like
Entry point must be given for element "@edit[:field_label]".,
to specify which element is missing Entry point, but since user is not able to change element in editor, until he give some Entry point, I think there is no need for it.

I wonder if we should test for presence of @edit[:field_name] and alternate the error messages. Reason: the original message gives more information if the field is there.


Emails sending multiple times?

I'm only testing on my local install, but it seems that emails are being sent 3-4 times for some reason.
My setup is pretty simple:
File config/notifications.php:
<?php
return [
    'notifications' => [
        [
            'class' => \craft\elements\Entry::class,
            'event' => \craft\elements\Entry::EVENT_AFTER_SAVE,
            'notification' => \app\notifications\ApplicationSubmitted::class,
        ],
    ],
];

File notifications/ApplicationSubmitted.php:
<?php

namespace app\notifications;

use Craft;
use craft\elements\Entry;
use craft\helpers\ArrayHelper;
use craft\mail\Message;
use rias\notifications\models\Notification;

class ApplicationSubmitted extends Notification
{
    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($event = null)
    {
        parent::__construct($event);
    }

    /**
     * Get the notification's delivery channels.
     *
     * @return array
     */
    public function via()
    {
        $entry = $this->event->sender;

        if ($entry->section->handle === 'test' && !$this->event->isNew) {
            return [
                'mail' =><EMAIL_ADDRESS>            ];
        }

        return [];
    }

    public function toDatabase()
    {
        return ArrayHelper::toArray($this);
    }

    public function toMail($notifiable)
    {
        $title = $this->event->sender->title;

        $message = new Message();
        $message->setTo($notifiable);
        $message->setSubject("New Applicant: {$title}");
        $message->setHtmlBody("

A new application was submitted via the website.

Name: {$title}

        ");

        return $message;
    }
}

For what it's worth, on my local install I have Craft set up to simply use Sendmail as well. I haven't configured any SMTP services or anything.

You have this check if ($entry->section->handle === 'test' && !$this->event->isNew) { which means the notifications are sending when it isn't a new entry.
Are you sure this is what you want? I figure you'd want it only when it is a new submission.
I assume you're using multisite, as entries get saved multiple times (once for each site), which will cause this to happen, you could add an extra check for the siteId or even add a cache or session key to know you've already sent a notification.

Ahhh overlooked the ! in there, I pulled that from some example somewhere, must not have looked closely enough. Yeah, I'm wanting to get notifications for new submissions.
Good call on the multisite! That would make sense as to why I'm getting a number of emails, one for each site.
I'll add my updated code soon to this issue and close it once I get it working, that way others can see the proper code for checking multisite.

So I'm thinking it should be if ($entry->section->handle === 'test' && $this->$siteId == '6' && $this->event->isNew) { which adds my section handle and siteId... I'm submitting the same siteId with the guest entries form, so that should do it.


Added static-config as scala wrapper in README.md

Hi, I have created this tiny wrapper and would like to add it to existing list of wrappers :)

Hi @Krever,
Thank you for your contribution! We really value the time you've taken to put this together.
Before we proceed with reviewing this pull request, please sign the Lightbend Contributors License Agreement:
http://www.lightbend.com/contribute/cla

Signed.

Thanks for this!


New UI option to have a Geoform style search box and no map

pop up would be shown in result
option to show map

Convert CombinedPopup.js into dijit able to be called from Dashboard, WAB, etc.  Create a dijit like the geoform search to call combined pop up and show results.


Pingbot - key conflict with built-in method

Running a fresh pingbot causes an influx of warnings stating that the built-in method presence is being defined within message.rb.  The warning floods the terminal with dozens of messages per second.
W, [2017-02-06T13:58:35.671430 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.

RVM list
rvm rubies

   ruby-2.3.0 [ x86_64 ]
 * ruby-2.3.1 [ x86_64 ]
=> ruby-2.3.3 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

RVM Gemset List
   (default)
   droplet2
=> slackbot-test

Installed Gems
*** LOCAL GEMS ***

activesupport (5.0.1)
bigdecimal (default: 1.2.8)
bundler (1.14.3)
celluloid (0.17.3)
celluloid-essentials (0.20.5)
celluloid-extras (0.20.5)
celluloid-fsm (0.20.5)
celluloid-io (0.17.3)
celluloid-pool (0.20.5)
celluloid-supervision (0.20.6)
concurrent-ruby (1.0.4)
dotenv (2.2.0)
faraday (0.11.0)
faraday_middleware (<IP_ADDRESS>)
gem-wrappers (1.2.7)
gli (2.15.0)
hashie (3.5.1)
hitimes (1.2.4)
i18n (0.8.0)
io-console (default: 0.4.5)
json (2.0.3, default: 1.8.3)
minitest (5.10.1)
multipart-post (2.0.0)
nio4r (2.0.0)
psych (default: 2.1.0)
rdoc (default: 4.2.1)
slack-ruby-bot (0.9.0)
slack-ruby-client (0.7.8)
thread_safe (0.3.5)
timers (4.1.2)
tzinfo (1.2.2)
websocket-driver (0.6.5)
websocket-extensions (0.1.2)

Starting the bot
$ SLACK_API_TOKEN='<removed>' bundle exec ruby pongbot.rb
I, [2017-02-06T13:58:31.347505 #22065]  INFO -- : post https://slack.com/api/rtm.start
D, [2017-02-06T13:58:31.347693 #22065] DEBUG -- request: Accept: "application/json; charset=utf-8"
User-Agent: "Slack Ruby Client/0.7.8"
Content-Type: "application/x-www-form-urlencoded"
I, [2017-02-06T13:58:31.640112 #22065]  INFO -- Status: 200
D, [2017-02-06T13:58:31.640586 #22065] DEBUG -- response: content-type: "application/json; charset=utf-8"
transfer-encoding: "chunked"
connection: "close"
access-control-allow-origin: "*"
cache-control: "private, no-cache, no-store, must-revalidate"
content-security-policy: "referrer no-referrer;"
date: "Mon, 06 Feb 2017 18:58:31 GMT"
expires: "Mon, 26 Jul 1997 05:00:00 GMT"
pragma: "no-cache"
server: "Apache"
strict-transport-security: "max-age=31536000; includeSubDomains; preload"
vary: "Accept-Encoding"
x-accepted-oauth-scopes: "rtm:stream,client"
x-content-type-options: "nosniff"
x-oauth-scopes: "identify,read,post,client,apps"
x-slack-backend: "h"
x-slack-req-id: "02e9ebdf-3397-4b63-b616-7d15688aeea1"
x-xss-protection: "0"
x-cache: "Miss from cloudfront"
via: "1.1 355608cfdb93311f2a3196162a160168.cloudfront.net (CloudFront)"
x-amz-cf-id: "tsuBE0ep6mZeIkaOUZHdHCVYRMVhWPca_fvWyTnQQcTFV3Vh19qzmA=="
W, [2017-02-06T13:58:33.151529 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T13:58:33.156631 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T13:58:33.159227 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T13:58:33.161848 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T13:58:33.166818 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T13:58:33.168882 #22065]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.

pongbot.rb
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
end

PongBot.run

I've seen this before. You can calm down the logger level as described in https://github.com/slack-ruby/slack-ruby-bot#logging, SlackRubyBot::Client.logger.level = Logger::INFO, but this is a problem and should be fixed as well.

Perhaps I am doing something incorrectly, but setting the logger level to Logger Levels to ERROR or above appears to have no effect.
pongbot.rb - format 1
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
end

SlackRubyBot::Client.logger.level = Logger::FATAL

PongBot.run

Results in
$ SLACK_API_TOKEN='<removed>' bundle exec ruby pongbot.rb
W, [2017-02-06T14:57:11.531952 #27738]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T14:57:11.535624 #27738]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T14:57:11.538301 #27738]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at /home/tforbes/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.

pongbot.rb - format 2
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  SlackRubyBot::Client.logger.level = Logger::FATAL

  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
end

PongBot.run

Full results including stack trace at +c
$ SLACK_API_TOKEN='xoxb-129476135892-a8Hy8025uzjVqHqJo7Bdlwd8' bundle exec ruby pongbot.rb
W, [2017-02-06T14:59:35.142252 #27928]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T14:59:35.145946 #27928]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
W, [2017-02-06T14:59:35.148577 #27928]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.

<snip>

W, [2017-02-06T14:59:35.646559 #27928]  WARN -- : You are setting a key that conflicts with a built-in method Slack::Messages::Message#presence defined at ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/messages/message.rb:4. This can cause unexpected behavior when accessing the key via as a property. You can still access the key via the #[] method.
^CE, [2017-02-06T14:59:35.648562 #27928] ERROR -- : Slack::RealTime::Client::ClientNotStartedError (Slack::RealTime::Client::ClientNotStarte
dError)
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:63:in `stop!'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:48:in `stop!'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:91:in `block (2 levels) in handle_signals'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:115:in `custom_writer'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:183:in `block in deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `new'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `convert_value'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:181:in `block in deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `new'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `convert_value'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `block in convert_value'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `map'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `convert_value'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:181:in `block in deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday_middleware-<IP_ADDRESS>/lib/faraday_middleware/response/mashify.rb:26:in `new'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday_middleware-<IP_ADDRESS>/lib/faraday_middleware/response/mashify.rb:26:in `parse'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:16:in `on_complete'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:9:in `block in call'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:61:in `on_complete'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:8:in `call'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:8:in `call'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/request/url_encoded.rb:15:in `call'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/request/multipart.rb:14:in `call'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/rack_builder.rb:139:in `build_response'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/connection.rb:377:in `run_request'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/connection.rb:177:in `post'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/faraday/request.rb:25:in `request'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/faraday/request.rb:10:in `post'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/api/endpoints/rtm.rb:21:in `rtm_start'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:110:in `build_socket'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:50:in `start!'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:37:in `start!'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:29:in `block (2 levels) in run'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:69:in `handle_exceptions'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:27:in `block in run'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:26:in `loop'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:26:in `run'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/bot.rb:6:in `run'
pongbot.rb:11:in `<main>'
~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:63:in `stop!': Slack::RealTime::
Client::ClientNotStartedError (Slack::RealTime::Client::ClientNotStartedError)
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:48:in `stop!'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:91:in `block (2 levels) in handle_signals'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:115:in `custom_writer'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:183:in `block in deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `new'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `convert_value'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:181:in `block in deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `new'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:293:in `convert_value'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `block in convert_value'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `map'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:297:in `convert_value'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:181:in `block in deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `each_pair'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:176:in `deep_update'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/hashie-3.5.1/lib/hashie/mash.rb:92:in `initialize'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday_middleware-<IP_ADDRESS>/lib/faraday_middleware/response/mashify.rb:26:in `new'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday_middleware-<IP_ADDRESS>/lib/faraday_middleware/response/mashify.rb:26:in `parse'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:16:in `on_complete'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:9:in `block in call'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:61:in `on_complete'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:8:in `call'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/response.rb:8:in `call'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/request/url_encoded.rb:15:in `call'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/request/multipart.rb:14:in `call'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/rack_builder.rb:139:in `build_response'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/connection.rb:377:in `run_request'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/faraday-0.11.0/lib/faraday/connection.rb:177:in `post'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/faraday/request.rb:25:in `request'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/faraday/request.rb:10:in `post'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/web/api/endpoints/rtm.rb:21:in `rtm_start'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:110:in `build_socket'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-client-0.7.8/lib/slack/real_time/client.rb:50:in `start!'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:37:in `start!'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:29:in `block (2 levels) in run'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:69:in `handle_exceptions'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:27:in `block in run'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:26:in `loop'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/server.rb:26:in `run'
        from ~/.rvm/gems/ruby-2.3.3@slackbot-test/gems/slack-ruby-bot-0.9.0/lib/slack-ruby-bot/bot.rb:6:in `run'
		from pongbot.rb:11:in `<main>'

I have isolated the issue to the version of the hashie gem.  If I pin to version 3.4.6 pingbot will pong as expected and the warnings are no longer present.

+1

See https://github.com/intridea/hashie/issues/394.

This was fixed in slack-ruby-client in https://github.com/slack-ruby/slack-ruby-client/issues/132 and released as 0.7.9.


Crypto Margin Issues When Starting an Algorithm With Coin Holdings

Expected Behavior

If we have enough USDT to buy a Crypto pair that has USDT as the quote currency, the order is submitted without error.
Actual Behavior

In the following algorithm, we have 5048 USDT and try to spend 4946 USDT to buy 11.49434056 BCH, but we get

Order Error: ids: [2], Insufficient buying power to complete orders (Value:[4950.0378]), Reason: Id: 2, Initial Margin: 4962.90546952278992, Free Margin: 4935.098960895920593157.

Potential Solution

N/A
Reproducing the Problem

public class KrakenMarginErrorAlgorithm : QCAlgorithm
{
    private bool _ordered = false;
    public override void Initialize()
    {
        SetStartDate(2022, 1, 1);
        SetEndDate(2022, 1, 10);

        SetTimeZone(TimeZones.Utc);

        SetBrokerageModel(Brokerages.BrokerageName.Kraken, AccountType.Margin);

        SetAccountCurrency("USDT");

        SetCash("USD", 0);
        SetCash("USDT", 0);
        SetCash("BTC", 0.21638839119558914m);

        foreach (var ticker in new[] { "BTCUSDT", "BCHUSDT" })
        {
            AddCrypto(ticker, Resolution.Daily);
        }
    }

    public void LogState(int n)
    {
        Debug($"{n}. MarginRemaining: {Portfolio.MarginRemaining}; TotalMarginUsed: {Portfolio.TotalMarginUsed}; BTC: {Portfolio.CashBook["BTC"].Amount}; USDT: {Portfolio.CashBook["USDT"].Amount}; BCH: {Portfolio.CashBook["BCH"].Amount}");
    }

    public override void OnData(Slice slice)
    {
        if (_ordered)
        {
            return;
        }
        _ordered = true;

        LogState(1);
        MarketOrder("BTCUSDT", -0.10927458);
        LogState(2);
        Debug($"{11.49434056} BCHUSDT will cost {11.49434056m * slice["BCHUSDT"].Price} USDT");
        MarketOrder("BCHUSDT", 11.49434056);
        LogState(3);
    }
}

System Information

QC Cloud
Checklist

[x] I have completely filled out this template
[x] I have confirmed that this issue exists on the current master branch
[x] I have confirmed that this is not a duplicate issue by searching issues

[x] I have provided detailed steps to reproduce the issue

Closing issue for now because while using margin account type lean will respect margin used/available above cash book state, which is what's used with cash account types instead.


[Plugin] Code Climate

Signed-off-by: Frank Cycan<EMAIL_ADDRESS>Hey, I just made a Pull Request!

Created a plugin to pull some stats from Code Climate and present them.

This adds a simple card shown above as well as a backend to make requests to the Code Cliamte api to get the data.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[x] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Hey 👋 this looks like you need to regenerate the api-report.md again and push the changes. 👍

@benjdlambert
Done, sorry still trying to get used to generating that correctly.

Think the breakage in CI is because the @backstage/* dependencies in your package.json are outdated so it causes duplicates. Can you bring these dependencies up to the latest ones that in the repo and see if that fixes it? We might want to make this easier somehow if it is the cause.

@benjdlambert
Updated all @backstage/* dependencies in my package.json, hopefully it passes now.

It's not noisy it's thorough, and thank you for the thorough review @freben, hopefully I was able to fix all your comments, please lmk otherwise.

@freben hopefully I did that changeset correctly, lmk otherwise. Super excited to get this merged!


sync result document is shown again

Visual Studio Code Version : insiders
Code Sync Settings Version : 2.2.3
Operating System : windows 10
Every  time VSCode is opened the sync result document is shown again and again, even though no changes were made.

you need to toggle the summary to OFF mode so it wont open the page from the advance options.
When it downloads the new version it will only show in statur bar


Drop SVMLight from swig

These two serialization tests were causing me problems (they use python pickle), so I dropped them:
serialization_string_kernels.py
serialization_svmlight.py
If that's not ok, I will try to debug the problems

test failed for unrelated reason

Ready to merge, @vigsterkr?

conflict from other PR being merged

conflict from other PR being merged

Hmm. It looks still merge-able from here.

I fixed the conflict, but didn't notify about it :"(

I fixed the conflict, but didn't notify about it :"(

Sure, it is no problem. It is clear from the comments and commits timeline ;-)


Update K8s examples

Second round, after building the image once.

Pull Request Test Coverage Report for Build 2084

11 of 14 (78.57%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 67.459%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

util/exec_sql.js
11
14
78.57%

Totals

Change from base Build 2082:
-0.01%

Covered Lines:
6956

Relevant Lines:
9683

💛  - Coveralls


install error

I have met this error when I try to install aioquic 0.9.20
Install commands which encouter error:
apt install libssl-dev python3-dev
git checkout 0.9.20
pip install -e .

The error:
Looking in indexes: https://pypi.douban.com/simple/
Obtaining file:///root/Requirements/aioquic
Requirement already satisfied: certifi in /usr/local/lib/python3.8/dist-packages (from aioquic==0.9.20) (2022.12.7)
Requirement already satisfied: cryptography>=3.1 in /usr/local/lib/python3.8/dist-packages (from aioquic==0.9.20) (38.0.4)
Requirement already satisfied: pylsqpack<0.4.0,>=0.3.3 in /usr/local/lib/python3.8/dist-packages (from aioquic==0.9.20) (0.3.16)
Requirement already satisfied: pyopenssl>=20 in /usr/local/lib/python3.8/dist-packages (from aioquic==0.9.20) (21.0.0)
Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.8/dist-packages (from cryptography>=3.1->aioquic==0.9.20) (1.15.1)
Requirement already satisfied: six>=1.5.2 in /usr/local/lib/python3.8/dist-packages (from pyopenssl>=20->aioquic==0.9.20) (1.16.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.8/dist-packages (from cffi>=1.12->cryptography>=3.1->aioquic==0.9.20) (2.21)
Installing collected packages: aioquic
  Running setup.py develop for aioquic
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/root/Requirements/aioquic/setup.py'"'"'; __file__='"'"'/root/Requirements/aioquic/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps
         cwd: /root/Requirements/aioquic/
    Complete output (33 lines):
    running develop
    running egg_info
    writing src/aioquic.egg-info/PKG-INFO
    writing dependency_links to src/aioquic.egg-info/dependency_links.txt
    writing requirements to src/aioquic.egg-info/requires.txt
    writing top-level names to src/aioquic.egg-info/top_level.txt
    reading manifest file 'src/aioquic.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'src/aioquic.egg-info/SOURCES.txt'
    running build_ext
    building 'aioquic._crypto' extension
    x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.8 -c src/aioquic/_crypto.c -o build/temp.linux-x86_64-3.8/src/aioquic/_crypto.o -std=c99
    src/aioquic/_crypto.c: In function ‘create_ctx’:
    src/aioquic/_crypto.c:60:36: error: ‘EVP_CTRL_CCM_SET_IVLEN’ undeclared (first use in this function); did you mean ‘EVP_CTRL_GCM_SET_IVLEN’?
       60 |     res = EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_CCM_SET_IVLEN, AEAD_NONCE_LENGTH, NULL);
          |                                    ^~~~~~~~~~~~~~~~~~~~~~
          |                                    EVP_CTRL_GCM_SET_IVLEN
    src/aioquic/_crypto.c:60:36: note: each undeclared identifier is reported only once for each function it appears in
    src/aioquic/_crypto.c: In function ‘AEAD_decrypt’:
    src/aioquic/_crypto.c:131:50: error: ‘EVP_CTRL_CCM_SET_TAG’ undeclared (first use in this function); did you mean ‘EVP_CTRL_GCM_SET_TAG’?
      131 |     res = EVP_CIPHER_CTX_ctrl(self->decrypt_ctx, EVP_CTRL_CCM_SET_TAG, AEAD_TAG_LENGTH, (void*)(data + (data_len - AEAD_TAG_LENGTH)));
          |                                                  ^~~~~~~~~~~~~~~~~~~~
          |                                                  EVP_CTRL_GCM_SET_TAG
    src/aioquic/_crypto.c: In function ‘AEAD_encrypt’:
    src/aioquic/_crypto.c:185:50: error: ‘EVP_CTRL_CCM_GET_TAG’ undeclared (first use in this function); did you mean ‘EVP_CTRL_GCM_GET_TAG’?
      185 |     res = EVP_CIPHER_CTX_ctrl(self->encrypt_ctx, EVP_CTRL_CCM_GET_TAG, AEAD_TAG_LENGTH, self->buffer + outlen);
          |                                                  ^~~~~~~~~~~~~~~~~~~~
          |                                                  EVP_CTRL_GCM_GET_TAG
    src/aioquic/_crypto.c: In function ‘PyInit__crypto’:
    src/aioquic/_crypto.c:451:5: warning: implicit declaration of function ‘EVP_add_cipher’ [-Wimplicit-function-declaration]
      451 |     EVP_add_cipher(EVP_aes_128_ecb());
          |     ^~~~~~~~~~~~~~
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/root/Requirements/aioquic/setup.py'"'"'; __file__='"'"'/root/Requirements/aioquic/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.

My envs:

Python 3.8.10
OpenSSL 1.1.1f  31 Mar 2020

OK，I solved this issue mannually update the openssl version to the latest(1.1.1t).


Logs not showing for Inference Service

Describe the bug
Model Web app logs are not showing :

Browser console is showing that a request to get the logs is returning a 500 in a loop:

Steps To Reproduce

Install kubeflow from main + v1.4.1 + cognito-rds-s3 and kfserving setup

Expected behavior

The logs are available and shown.

Environment

Kubernetes version 1.21
Using EKS (yes/no), if so version? Yes
Kubeflow version 1.4.1
AWS build number main
AWS service targeted (S3, RDS, etc.) NA

Will repro this and see what is going on

Hi @AlexandreBrown, surprisingly I am unable to reproduce the issue so far.
My setup:

main branch in this repo, v1.4.1 in kubeflow/manifests
Cognito setup via https://github.com/awslabs/kubeflow-manifests/blob/main/docs/deployment/cognito/README-automated.md
RDS/S3 setup via https://github.com/awslabs/kubeflow-manifests/tree/main/docs/deployment/rds-s3#21-option-1-automated-setup
Created the following inference service using the yaml

apiVersion: "serving.kubeflow.org/v1beta1"
kind: "InferenceService"
metadata:
  name: "sklearn-iris"
spec:
  predictor:
    sklearn:
      storageUri: "gs://kfserving-samples/models/sklearn/iris"

I was able to view logs:

However, I have a few questions:

With regards to the kfserving setup you mentioned in Steps to Reproduce which setup steps are your referring to?
If you have run the setup here did you also apply the authorization policy configurations you mentioned?
Are you able to view the inference pod in the profile's namespace?
If the pod is active is it's kfserving-container present and running without issues? It seems that the logs are pulled from this container
Here are the other containers in the pod if this turns out to be relevant

$ kbl logs -n user1 sklearn-iris-predictor-default-00001-deployment-58f94dc4946sb55 kfserving-container
   istio-init           istio-proxy          kfserving-container  queue-proxy          storage-initializer

Additional debugging:
There are more logs in kfserving-models-web-app pod. For me, I was able to describe the pod via:
kbl logs -n kubeflow kfserving-models-web-app-7884f597cf-cllp5

In the same window where I am logged into the central dashboard as a user user1, I opened a new tab and pasted the following url https://kubeflow.kfissue145.rkharse.people.aws.dev/models/api/namespaces/user1/inferenceservices/sklearn-iris?logs=true&component=predictor.
Broken down this url is: https://<public dns endpoint>/models/api/namespaces/<user profile namespace>/inferenceservices/<model name>?logs=true&component=predictor
Meanwhile I tailed the logs
kbl logs -n kubeflow kfserving-models-web-app-7884f597cf-cllp5 -f

and got the following response:
2022-03-24 21:33:37,422 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-03-24 21:33:37,422 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
2022-03-24 21:33:37,445 | apps.common.routes.get | INFO | ['predictor']
2022-03-24 21:33:37,511 | root | INFO | Component pods: {'predictor': ['sklearn-iris-predictor-default-00001-deployment-58f94dc4946sb55']}
<IP_ADDRESS> - - [24/Mar/2022:21:33:37 +0000] "GET /api/namespaces/user1/inferenceservices/sklearn-iris?logs=true&component=predictor HTTP/1.1" 200 6137 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0"

In your case I believe there will be more details here and a 500 error.
I will continue trying to repro but feel free to let me know if this helped uncover any additional details.

@rrrkharse

With regards to the kfserving setup you mentioned in Steps to Reproduce which setup steps are your referring to?

I am referring to this guide

If you have run the setup https://github.com/awslabs/kubeflow-manifests/issues/82 did you also apply the authorization policy configurations you https://github.com/awslabs/kubeflow-manifests/issues/82#issuecomment-1068641378?

Yes I have, I also tried re-installing Kubeflow multiple times, didnt fix it.

Are you able to view the inference pod in the profile's namespace?

Will check this as well as your other questions on monday and get back to you.
I tried visiting my https:///models/api/namespaces//inferenceservices/?logs=true&component=predictor
and the output was :
{
  "log": "An error occured in the backend.",
  "status": 500,
  "success": false,
  "user": "my-email"
}

@rrrkharse Hello, could we get some help on this issue?
Command :
kubectl get inferenceservice -n dev

Output :
NAME                  URL                                                   READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                           AGE
sklearn-iris          http://sklearn-iris.dev.ai-rd.mdinfinity.com/          True           100                              sklearn-iris-predictor-default-00001          3m35s

Command :
kubectl get pods --all-namespaces

Output :
NAMESPACE            NAME                                                              READY   STATUS    RESTARTS   AGE
dev                  sklearn-iris-predictor-default-00001-deployment-5558697cb-t8q7b   3/3     Running   0          3m32s

(All other pods running)
Command :
kubectl logs -n dev sklearn-iris-predictor-default-00001-deployment-5558697cb-t8q7b -c kfserving-container

Output :
[I 220404 23:46:49 storage:50] Copying contents of /mnt/models to local
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:35: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:597: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:836: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:862: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps, positive=False):
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1097: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1344: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  max_n_alphas=1000, n_jobs=None, eps=np.finfo(np.float).eps,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/least_angle.py:1480: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps, copy_X=True, positive=False):
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:152: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  precompute=False, eps=np.finfo(np.float).eps,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:320: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=np.finfo(np.float).eps, random_state=None,
/usr/local/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:580: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  eps=4 * np.finfo(np.float).eps, n_jobs=None,
[I 220404 23:46:49 kfserver:151] Registering model: sklearn-iris
[I 220404 23:46:49 kfserver:121] Setting asyncio max_workers as 5
[I 220404 23:46:49 kfserver:128] Listening on port 8080
[I 220404 23:46:49 kfserver:130] Will fork 1 workers

Command :
kubectl logs -n kubeflow kfserving-models-web-app-7884f597cf-bgpk4 --tail=30

Output :
Using deprecated annotation `kubectl.kubernetes.io/default-logs-container` in pod/kfserving-models-web-app-7884f597cf-bgpk4. Please use `kubectl.kubernetes.io/default-container` instead
2022-04-05 00:20:26,660 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-04-05 00:20:26,660 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
<IP_ADDRESS> - - [05/Apr/2022:00:20:26 +0000] "GET /api/namespaces/dev/configurations/sklearn-iris-predictor-default HTTP/1.1" 200 5691 "https://our_kubeflow_url.com/models/details/dev/sklearn-iris" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
2022-04-05 00:20:26,731 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-04-05 00:20:26,731 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
<IP_ADDRESS> - - [05/Apr/2022:00:20:26 +0000] "GET /api/namespaces/dev/knativeServices/sklearn-iris-predictor-default HTTP/1.1" 200 6253 "https://our_kubeflow_url.com/models/details/dev/sklearn-iris" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
2022-04-05 00:20:26,816 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-04-05 00:20:26,816 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
<IP_ADDRESS> - - [05/Apr/2022:00:20:26 +0000] "GET /api/namespaces/dev/routes/sklearn-iris-predictor-default HTTP/1.1" 200 4226 "https://our_kubeflow_url.com/models/details/dev/sklearn-iris" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
2022-04-05 00:20:27,530 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-04-05 00:20:27,530 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
2022-04-05 00:20:27,542 | apps.common.routes.get | INFO | ['predictor']
2022-04-05 00:20:27,557 | kubeflow.kubeflow.crud_backend.errors.handlers | ERROR | Caught and unhandled Exception!
2022-04-05 00:20:27,557 | kubeflow.kubeflow.crud_backend.errors.handlers | ERROR | argument of type 'NoneType' is not iterable
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1513, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1499, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/src/apps/common/routes/get.py", line 27, in get_inference_service
    "serviceLogs", get_inference_service_logs(inference_service)
  File "/src/apps/common/routes/get.py", line 40, in get_inference_service_logs
    component_pods_dict = utils.get_inference_service_pods(svc, components)
  File "/src/apps/common/utils.py", line 42, in get_inference_service_pods
    if KNATIVE_REVISION_LABEL not in pod.metadata.labels:
TypeError: argument of type 'NoneType' is not iterable
<IP_ADDRESS> - - [05/Apr/2022:00:20:27 +0000] "GET /api/namespaces/dev/inferenceservices/sklearn-iris?logs=true&component=predictor HTTP/1.1" 500 133 "https://our_kubeflow_url.com/models/details/dev/sklearn-iris" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
2022-04-05 00:20:30,615 | kubeflow.kubeflow.crud_backend.authn | INFO | Handling request for user<EMAIL_ADDRESS>2022-04-05 00:20:30,615 | kubeflow.kubeflow.crud_backend.csrf | INFO | Skipping CSRF check for safe method: GET
<IP_ADDRESS> - - [05/Apr/2022:00:20:30 +0000] "GET /api/namespaces/dev/inferenceservices HTTP/1.1" 200 4740 "https://our_kubeflow_url.com/models/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"

This last output seems to be where things went wrong.
if KNATIVE_REVISION_LABEL not in pod.metadata.labels:
TypeError: argument of type 'NoneType' is not iterable

Perhaps this might be an issue with RoleBinding ?
Here is how we created users :

Create a profile/namespace

apiVersion: kubeflow.org/v1beta1
kind: Profile
metadata:
  name: dev

Create default-editor service account

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: default-editor-access-binding-dev
subjects:
- kind: ServiceAccount
  name: default-editor
  namespace: dev
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

Apply the RoleBinding for user (taken from kubeflow doc)

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  annotations:
    role: edit
    user<EMAIL_ADDRESS> # replace with the email of the user from your Active Directory case sensitive
  name: user-userid-email-com-clusterrole-edit
  # Ex: if the user email is<EMAIL_ADDRESS>the name should be user-lalith-vaka-kp-org-clusterrole-edit
  # Note: if the user email is<EMAIL_ADDRESS>from your Active Directory, the name should be user-lalith-vaka-kp-org-clusterrole-edit
  namespace: profileName # replace with the namespace/profile name that you are adding contributors to
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubeflow-edit
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name<EMAIL_ADDRESS> # replace with the email of the user from your Active Directory case sensitive

Apply Auth policy (again, taken from kubeflow doc)

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  annotations:
    role: edit
    user<EMAIL_ADDRESS># replace with the email of the user from your Active Directory case sensitive
  name: user-userid-email-com-clusterrole-edit
  namespace: profileName # replace with the namespace/profile name that you are adding contributors to
spec:
  action: ALLOW
  rules:
  - when:
    - key: request.headers[kubeflow-userid] # for GCP, use x-goog-authenticated-user-email instead of kubeflow-userid for authentication purpose
      values:
      -<EMAIL_ADDRESS> # replace with the email of the user from your Active Directory case sensitive

The values are set according to the email of the user (see the comments).

Hey,  the error in kfserving-models-web-app-7884f597cf-bgpk4 is not related to RBAC
but something else.
Here is the code which does that check
https://github.com/kserve/models-web-app/blob/b842420d45f0bcf596a219efc116e8c66a727683/backend/apps/common/utils.py#L47
Can you describe the pod and paste the output?

@goswamig
Command :
kubectl describe pod kfserving-models-web-app-7884f597cf-bgpk4 -n kubeflow

Output :
Name:         kfserving-models-web-app-7884f597cf-bgpk4
Namespace:    kubeflow
Priority:     0
Node:         ip-xxx-xxx-xx-xxx.us-east-2.compute.internal/xxx.xxx.xx.xxx
Start Time:   Tue, 22 Mar 2022 19:25:52 +0000
Labels:       app=kfserving
              app.kubernetes.io/component=kfserving-models-web-app
              app.kubernetes.io/name=kfserving
              istio.io/rev=default
              kustomize.component=kfserving-models-web-app
              pod-template-hash=7884f597cf
              security.istio.io/tlsMode=istio
              service.istio.io/canonical-name=kfserving
              service.istio.io/canonical-revision=latest
Annotations:  kubectl.kubernetes.io/default-logs-container: kfserving-models-web-app
              kubernetes.io/psp: eks.privileged
              prometheus.io/path: /stats/prometheus
              prometheus.io/port: 15020
              prometheus.io/scrape: true
              sidecar.istio.io/inject: true
              sidecar.istio.io/status:
                {"initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-data","istio-podinfo","istio-token","istiod-...
Status:       Running
IP:           xxx.xxx.xx.xxx
IPs:
  IP:           xxx.xxx.xx.xxx
Controlled By:  ReplicaSet/kfserving-models-web-app-7884f597cf
Init Containers:
  istio-init:
    Container ID:  docker://ac728ab75e1594e0f1a21eea389aa2a5b66b76d985f54c789fc8795672e95680
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          <none>
    Host Port:     <none>
    Args:
      istio-iptables
      -p
      15001
      -z
      15006
      -u
      1337
      -m
      REDIRECT
      -i
      *
      -x

      -b
      *
      -d
      15090,15021,15020
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Tue, 22 Mar 2022 19:25:55 +0000
      Finished:     Tue, 22 Mar 2022 19:25:55 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:        10m
      memory:     40Mi
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-xl7cg (ro)
Containers:
  kfserving-models-web-app:
    Container ID:   docker://e6b80d44ba0342e862c21a4aed4aa2903505cc534b716b9e200e72432e835283
    Image:          kfserving/models-web-app:v0.6.1
    Image ID:       docker-pullable://kfserving/models-web-app@sha256:f322d6ffdfa3b5a6fbbe3910c4cf4b5ad85871f20dbd2ed854d65f90e1fd8aba
    Port:           5000/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 22 Mar 2022 19:25:56 +0000
    Ready:          True
    Restart Count:  0
    Environment Variables from:
      kfserving-models-web-app-config-mtgm8bbd98  ConfigMap  Optional: false
    Environment:                                  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-xl7cg (ro)
  istio-proxy:
    Container ID:  docker://839a6c4dec08563abb79edcd8c7a5da89d3404292c8c7fdff2c0922b79540948
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          15090/TCP
    Host Port:     0/TCP
    Args:
      proxy
      sidecar
      --domain
      $(POD_NAMESPACE).svc.cluster.local
      --serviceCluster
      kfserving.$(POD_NAMESPACE)
      --proxyLogLevel=warning
      --proxyComponentLogLevel=misc:error
      --log_output_level=default:info
      --concurrency
      2
    State:          Running
      Started:      Tue, 22 Mar 2022 19:25:57 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:      10m
      memory:   40Mi
    Readiness:  http-get http://:15021/healthz/ready delay=1s timeout=3s period=2s #success=1 #failure=30
    Environment:
      JWT_POLICY:                    third-party-jwt
      PILOT_CERT_PROVIDER:           istiod
      CA_ADDR:                       istiod.istio-system.svc:15012
      POD_NAME:                      kfserving-models-web-app-7884f597cf-bgpk4 (v1:metadata.name)
      POD_NAMESPACE:                 kubeflow (v1:metadata.namespace)
      INSTANCE_IP:                    (v1:status.podIP)
      SERVICE_ACCOUNT:                (v1:spec.serviceAccountName)
      HOST_IP:                        (v1:status.hostIP)
      CANONICAL_SERVICE:              (v1:metadata.labels['service.istio.io/canonical-name'])
      CANONICAL_REVISION:             (v1:metadata.labels['service.istio.io/canonical-revision'])
      PROXY_CONFIG:                  {"tracing":{}}

      ISTIO_META_POD_PORTS:          [
                                         {"containerPort":5000,"protocol":"TCP"}
                                     ]
      ISTIO_META_APP_CONTAINERS:     kfserving-models-web-app
      ISTIO_META_CLUSTER_ID:         Kubernetes
      ISTIO_META_INTERCEPTION_MODE:  REDIRECT
      ISTIO_METAJSON_ANNOTATIONS:    {"kubernetes.io/psp":"eks.privileged","sidecar.istio.io/inject":"true"}

      ISTIO_META_WORKLOAD_NAME:      kfserving-models-web-app
      ISTIO_META_OWNER:              kubernetes://apis/apps/v1/namespaces/kubeflow/deployments/kfserving-models-web-app
      ISTIO_META_MESH_ID:            cluster.local
      TRUST_DOMAIN:                  cluster.local
    Mounts:
      /etc/istio/pod from istio-podinfo (rw)
      /etc/istio/proxy from istio-envoy (rw)
      /var/lib/istio/data from istio-data (rw)
      /var/run/secrets/istio from istiod-ca-cert (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-xl7cg (ro)
      /var/run/secrets/tokens from istio-token (rw)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  istio-envoy:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     Memory
    SizeLimit:  <unset>
  istio-data:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  istio-podinfo:
    Type:  DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.labels -> labels
      metadata.annotations -> annotations
      limits.cpu -> cpu-limit
      requests.cpu -> cpu-request
  istio-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  43200
  istiod-ca-cert:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      istio-ca-root-cert
    Optional:  false
  kube-api-access-xl7cg:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Here is the description of an inference pod
apiVersion: "serving.kubeflow.org/v1beta1"
kind: "InferenceService"
metadata:
  name: "torchscript-cifar"
spec:
  predictor:
    triton:
      storageUri: "gs://kfserving-examples/models/torchscript"
      runtimeVersion: 21.08-py3
      env:
      - name: OMP_NUM_THREADS
        value: "1"

describe :
Name:         torchscript-cifar-predictor-default-00001-deployment-579fdpzzbj
Namespace:    dev
Priority:     0
Node:         ip-xxx-xxx-xx-xxx.us-xxxx-x.compute.internal/xxx.xxx.xx.xxx
Start Time:   Wed, 06 Apr 2022 12:47:26 +0000
Labels:       app=torchscript-cifar-predictor-default-00001
              component=predictor
              istio.io/rev=default
              pod-template-hash=579fdc9658
              security.istio.io/tlsMode=istio
              service.istio.io/canonical-name=torchscript-cifar-predictor-default
              service.istio.io/canonical-revision=torchscript-cifar-predictor-default-00001
              serving.knative.dev/configuration=torchscript-cifar-predictor-default
              serving.knative.dev/configurationGeneration=1
              serving.knative.dev/configurationUID=bc0ebece-d60b-4e50-a830-1bc893088a4a
              serving.knative.dev/revision=torchscript-cifar-predictor-default-00001
              serving.knative.dev/revisionUID=e3bb9a41-5ab1-42fe-9955-5cbbf6d9b609
              serving.knative.dev/service=torchscript-cifar-predictor-default
              serving.knative.dev/serviceUID=25b5d802-3a0e-4a6f-8b64-aa70bf0d89a3
              serving.kubeflow.org/inferenceservice=torchscript-cifar
Annotations:  autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
              autoscaling.knative.dev/minScale: 1
              internal.serving.kubeflow.org/storage-initializer-sourceuri: gs://kfserving-examples/models/torchscript
              kubernetes.io/psp: eks.privileged
              prometheus.io/path: /stats/prometheus
              prometheus.io/port: 15020
              prometheus.io/scrape: true
              serving.knative.dev/creator: system:serviceaccount:kubeflow:default
              sidecar.istio.io/status:
                {"initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-data","istio-podinfo","istio-token","istiod-...
Status:       Running
IP:           xxx.xxx.xx.xxx
IPs:
  IP:           xxx.xxx.xx.xxx
Controlled By:  ReplicaSet/torchscript-cifar-predictor-default-00001-deployment-579fdc9658
Init Containers:
  storage-initializer:
    Container ID:  docker://d55da9dde917af69abcaadaa28464351257bb51b0b7c3f133e7913c12b294eb4
    Image:         kfserving/storage-initializer:v0.6.1
    Image ID:      docker-pullable://kfserving/storage-initializer@sha256:81b654574aec1dbce37d6e5b8d5d58b5d820fdf17e35b04cd52b1c805595fc37
    Port:          <none>
    Host Port:     <none>
    Args:
      gs://kfserving-examples/models/torchscript
      /mnt/models
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Wed, 06 Apr 2022 12:47:27 +0000
      Finished:     Wed, 06 Apr 2022 12:47:28 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:        100m
      memory:     100Mi
    Environment:  <none>
    Mounts:
      /mnt/models from kfserving-provision-location (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-j5h5h (ro)
  istio-init:
    Container ID:  docker://5ec712c6062b13d3517d600395dbce6e178fa9fe6775b0a4014159be96596f7d
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          <none>
    Host Port:     <none>
    Args:
      istio-iptables
      -p
      15001
      -z
      15006
      -u
      1337
      -m
      REDIRECT
      -i
      *
      -x

      -b
      *
      -d
      15090,15021,15020
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Wed, 06 Apr 2022 12:47:29 +0000
      Finished:     Wed, 06 Apr 2022 12:47:29 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:        10m
      memory:     40Mi
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-j5h5h (ro)
Containers:
  kfserving-container:
    Container ID:  docker://94d0a87961741aae936b52f45c709a86f7c99dd78359b761009b9bf8d5b1eaed
    Image:         nvcr.io/nvidia/tritonserver@sha256:6a1ef84e93327fef53ac11379fa4e53082c9e228de5db24e0abdfc5aff5676cf
    Image ID:      docker-pullable://nvcr.io/nvidia/tritonserver@sha256:6a1ef84e93327fef53ac11379fa4e53082c9e228de5db24e0abdfc5aff5676cf
    Port:          8080/TCP
    Host Port:     0/TCP
    Args:
      tritonserver
      --model-store=/mnt/models
      --grpc-port=9000
      --http-port=8080
      --allow-grpc=true
      --allow-http=true
    State:          Running
      Started:      Wed, 06 Apr 2022 12:50:37 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  2Gi
    Requests:
      cpu:     1
      memory:  2Gi
    Environment:
      OMP_NUM_THREADS:  1
      PORT:             8080
      K_REVISION:       torchscript-cifar-predictor-default-00001
      K_CONFIGURATION:  torchscript-cifar-predictor-default
      K_SERVICE:        torchscript-cifar-predictor-default
    Mounts:
      /mnt/models from kfserving-provision-location (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-j5h5h (ro)
  queue-proxy:
    Container ID:   docker://088fcd1e9e419ea6878f4140bca29e094a038f02b2e77a96636453f022476ea2
    Image:          gcr.io/knative-releases/knative.dev/serving/cmd/queue@sha256:0b8e031170354950f3395876961452af1c62f7ab5161c9e71[8673](https://gitlab.com/geown/artificial-intelligence/applications/kubeflow/-/jobs/2299055041#L8673)92c11881962
    Image ID:       docker-pullable://gcr.io/knative-releases/knative.dev/serving/cmd/queue@sha256:0b8e031170354950f3395876961452af1c62f7ab5161c9e71867392c11881962
    Ports:          8022/TCP, 9090/TCP, 9091/TCP, 8012/TCP
    Host Ports:     0/TCP, 0/TCP, 0/TCP, 0/TCP
    State:          Running
      Started:      Wed, 06 Apr 2022 12:50:37 +0000
    Ready:          True
    Restart Count:  0
    Requests:
      cpu:      25m
    Readiness:  http-get http://:15020/app-health/queue-proxy/readyz delay=0s timeout=1s period=1s #success=1 #failure=3
    Startup:    exec [/ko-app/queue -probe-timeout 10m0s] delay=0s timeout=600s period=1s #success=1 #failure=1
    Environment:
      SERVING_NAMESPACE:                      dev
      SERVING_SERVICE:                        torchscript-cifar-predictor-default
      SERVING_CONFIGURATION:                  torchscript-cifar-predictor-default
      SERVING_REVISION:                       torchscript-cifar-predictor-default-00001
      QUEUE_SERVING_PORT:                     8012
      CONTAINER_CONCURRENCY:                  0
      REVISION_TIMEOUT_SECONDS:               300
      SERVING_POD:                            torchscript-cifar-predictor-default-00001-deployment-579fdpzzbj (v1:metadata.name)
      SERVING_POD_IP:                          (v1:status.podIP)
      SERVING_LOGGING_CONFIG:
      SERVING_LOGGING_LEVEL:
      SERVING_REQUEST_LOG_TEMPLATE:           {"httpRequest": {"requestMethod": "{{.Request.Method}}", "requestUrl": "{{js .Request.RequestURI}}", "requestSize": "{{.Request.ContentLength}}", "status": {{.Response.Code}}, "responseSize": "{{.Response.Size}}", "userAgent": "{{js .Request.UserAgent}}", "remoteIp": "{{js .Request.RemoteAddr}}", "serverIp": "{{.Revision.PodIP}}", "referer": "{{js .Request.Referer}}", "latency": "{{.Response.Latency}}s", "protocol": "{{.Request.Proto}}"}, "traceId": "{{index .Request.Header "X-B3-Traceid"}}"}
      SERVING_ENABLE_REQUEST_LOG:             false
      SERVING_REQUEST_METRICS_BACKEND:        prometheus
      TRACING_CONFIG_BACKEND:                 none
      TRACING_CONFIG_ZIPKIN_ENDPOINT:
      TRACING_CONFIG_STACKDRIVER_PROJECT_ID:
      TRACING_CONFIG_DEBUG:                   false
      TRACING_CONFIG_SAMPLE_RATE:             0.1
      USER_PORT:                              8080
      SYSTEM_NAMESPACE:                       knative-serving
      METRICS_DOMAIN:                         knative.dev/internal/serving
      SERVING_READINESS_PROBE:                {"tcpSocket":{"port":8080,"host":"<IP_ADDRESS>"},"successThreshold":1}
      ENABLE_PROFILING:                       false
      SERVING_ENABLE_PROBE_REQUEST_LOG:       false
      METRICS_COLLECTOR_ADDRESS:
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-j5h5h (ro)
  istio-proxy:
    Container ID:  docker://671ba8badeeb542c45bebb70d2f6904a8c3c568279bb5d36cddd25fa1803b6b0
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          15090/TCP
    Host Port:     0/TCP
    Args:
      proxy
      sidecar
      --domain
      $(POD_NAMESPACE).svc.cluster.local
      --serviceCluster
      torchscript-cifar-predictor-default-00001.$(POD_NAMESPACE)
      --proxyLogLevel=warning
      --proxyComponentLogLevel=misc:error
      --log_output_level=default:info
      --concurrency
      2
    State:          Running
      Started:      Wed, 06 Apr 2022 12:50:38 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:      10m
      memory:   40Mi
    Readiness:  http-get http://:15021/healthz/ready delay=1s timeout=3s period=2s #success=1 #failure=30
    Environment:
      JWT_POLICY:                    third-party-jwt
      PILOT_CERT_PROVIDER:           istiod
      CA_ADDR:                       istiod.istio-system.svc:15012
      POD_NAME:                      torchscript-cifar-predictor-default-00001-deployment-579fdpzzbj (v1:metadata.name)
      POD_NAMESPACE:                 dev (v1:metadata.namespace)
      INSTANCE_IP:                    (v1:status.podIP)
      SERVICE_ACCOUNT:                (v1:spec.serviceAccountName)
      HOST_IP:                        (v1:status.hostIP)
      CANONICAL_SERVICE:              (v1:metadata.labels['service.istio.io/canonical-name'])
      CANONICAL_REVISION:             (v1:metadata.labels['service.istio.io/canonical-revision'])
      PROXY_CONFIG:                  {"tracing":{}}

      ISTIO_META_POD_PORTS:          [
                                         {"name":"user-port","containerPort":8080,"protocol":"TCP"}
                                         ,{"name":"http-queueadm","containerPort":8022,"protocol":"TCP"}
                                         ,{"name":"http-autometric","containerPort":9090,"protocol":"TCP"}
                                         ,{"name":"http-usermetric","containerPort":9091,"protocol":"TCP"}
                                         ,{"name":"queue-port","containerPort":8012,"protocol":"TCP"}
                                     ]
      ISTIO_META_APP_CONTAINERS:     kfserving-container,queue-proxy
      ISTIO_META_CLUSTER_ID:         Kubernetes
      ISTIO_META_INTERCEPTION_MODE:  REDIRECT
      ISTIO_METAJSON_ANNOTATIONS:    {"autoscaling.knative.dev/class":"kpa.autoscaling.knative.dev","autoscaling.knative.dev/minScale":"1","internal.serving.kubeflow.org/storage-initializer-sourceuri":"gs://kfserving-examples/models/torchscript","kubernetes.io/psp":"eks.privileged","serving.knative.dev/creator":"system:serviceaccount:kubeflow:default"}

      ISTIO_META_WORKLOAD_NAME:      torchscript-cifar-predictor-default-00001-deployment
      ISTIO_META_OWNER:              kubernetes://apis/apps/v1/namespaces/dev/deployments/torchscript-cifar-predictor-default-00001-deployment
      ISTIO_META_MESH_ID:            cluster.local
      TRUST_DOMAIN:                  cluster.local
      ISTIO_KUBE_APP_PROBERS:        {"/app-health/queue-proxy/readyz":{"httpGet":{"path":"/","port":8012,"scheme":"HTTP","httpHeaders":[{"name":"K-Network-Probe","value":"queue"}]},"timeoutSeconds":1}}
    Mounts:
      /etc/istio/pod from istio-podinfo (rw)
      /etc/istio/proxy from istio-envoy (rw)
      /var/lib/istio/data from istio-data (rw)
      /var/run/secrets/istio from istiod-ca-cert (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-j5h5h (ro)
      /var/run/secrets/tokens from istio-token (rw)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  istio-envoy:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     Memory
    SizeLimit:  <unset>
  istio-data:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  istio-podinfo:
    Type:  DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.labels -> labels
      metadata.annotations -> annotations
      limits.cpu -> cpu-limit
      requests.cpu -> cpu-request
  istio-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  43200
  istiod-ca-cert:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      istio-ca-root-cert
    Optional:  false
  kube-api-access-j5h5h:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
  kfserving-provision-location:
    Type:        EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:   <unset>
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  4m20s  default-scheduler  Successfully assigned dev/torchscript-cifar-predictor-default-00001-deployment-579fdpzzbj to ip-xxx.xxx.xx.xxx.us-xxxx-x.compute.internal
  Normal  Pulled     4m19s  kubelet            Container image "kfserving/storage-initializer:v0.6.1" already present on machine
  Normal  Created    4m19s  kubelet            Created container storage-initializer
  Normal  Started    4m19s  kubelet            Started container storage-initializer
  Normal  Pulling    4m17s  kubelet            Pulling image "docker.io/istio/proxyv2:1.9.6"
  Normal  Pulled     4m17s  kubelet            Successfully pulled image "docker.io/istio/proxyv2:1.9.6" in 223.710995ms
  Normal  Created    4m17s  kubelet            Created container istio-init
  Normal  Started    4m17s  kubelet            Started container istio-init
  Normal  Pulling    4m16s  kubelet            Pulling image "nvcr.io/nvidia/tritonserver@sha256:6a1ef84e93327fef53ac11379fa4e53082c9e228de5db24e0abdfc5aff5676cf"
  Normal  Pulled     85s    kubelet            Successfully pulled image "nvcr.io/nvidia/tritonserver@sha256:6a1ef84e93327fef53ac11379fa4e53082c9e228de5db24e0abdfc5aff5676cf" in 2m51.7544345s
  Normal  Created    69s    kubelet            Created container kfserving-container
  Normal  Started    69s    kubelet            Started container kfserving-container
  Normal  Pulled     69s    kubelet            Container image "gcr.io/knative-releases/knative.dev/serving/cmd/queue@sha256:0b8e031170354950f3395[8769](https://gitlab.com/geown/artificial-intelligence/applications/kubeflow/-/jobs/2299055041#L8769)61452af1c62f7ab5161c9e71867392c11[8819](https://gitlab.com/geown/artificial-intelligence/applications/kubeflow/-/jobs/2299055041#L8819)62" already present on machine
  Normal  Created    69s    kubelet            Created container queue-proxy
  Normal  Started    69s    kubelet            Started container queue-proxy
  Normal  Pulling    69s    kubelet            Pulling image "docker.io/istio/proxyv2:1.9.6"
  Normal  Pulled     68s    kubelet            Successfully pulled image "docker.io/istio/proxyv2:1.9.6" in 232.847416ms
  Normal  Created    68s    kubelet            Created container istio-proxy
  Normal  Started    68s    kubelet            Started container istio-proxy

So indeed the webapp pod doesnt have a level with KNATIVE_REVISION_LABEL,
@rrrkharse  Can you share your output from describe of webapp pod ? and also kserving version that is deployed in 1.4.1 ?

Pod description
$kbl describe pod -n kubeflow kfserving-models-web-app-7884f597cf-cllp5

Name:         kfserving-models-web-app-7884f597cf-cllp5
Namespace:    kubeflow
Priority:     0
Node:         ip-192-168-29-17.us-west-2.compute.internal/<IP_ADDRESS>
Start Time:   Wed, 23 Mar 2022 14:47:12 -0700
Labels:       app=kfserving
              app.kubernetes.io/component=kfserving-models-web-app
              app.kubernetes.io/name=kfserving
              istio.io/rev=default
              kustomize.component=kfserving-models-web-app
              pod-template-hash=7884f597cf
              security.istio.io/tlsMode=istio
              service.istio.io/canonical-name=kfserving
              service.istio.io/canonical-revision=latest
Annotations:  kubectl.kubernetes.io/default-logs-container: kfserving-models-web-app
              kubernetes.io/psp: eks.privileged
              prometheus.io/path: /stats/prometheus
              prometheus.io/port: 15020
              prometheus.io/scrape: true
              sidecar.istio.io/inject: true
              sidecar.istio.io/status:
                {"initContainers":["istio-init"],"containers":["istio-proxy"],"volumes":["istio-envoy","istio-data","istio-podinfo","istio-token","istiod-...
Status:       Running
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/kfserving-models-web-app-7884f597cf
Init Containers:
  istio-init:
    Container ID:  docker://487be96f9cc0d464ca525119b8d086dfa9f372c6228330431ce0477aaaebd522
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          <none>
    Host Port:     <none>
    Args:
      istio-iptables
      -p
      15001
      -z
      15006
      -u
      1337
      -m
      REDIRECT
      -i
      *
      -x

      -b
      *
      -d
      15090,15021,15020
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Sat, 26 Mar 2022 19:03:54 -0700
      Finished:     Sat, 26 Mar 2022 19:03:54 -0700
    Ready:          True
    Restart Count:  1
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:        10m
      memory:     40Mi
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-lsqmk (ro)
Containers:
  kfserving-models-web-app:
    Container ID:   docker://f797d131d45fd0a0ac48337695c2ccefbb1458bd2c24aaaa8fe0bb20383e8e8c
    Image:          kfserving/models-web-app:v0.6.1
    Image ID:       docker-pullable://kfserving/models-web-app@sha256:f322d6ffdfa3b5a6fbbe3910c4cf4b5ad85871f20dbd2ed854d65f90e1fd8aba
    Port:           5000/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sat, 26 Mar 2022 19:03:56 -0700
    Last State:     Terminated
      Reason:       Error
      Exit Code:    255
      Started:      Wed, 23 Mar 2022 14:47:26 -0700
      Finished:     Sat, 26 Mar 2022 19:01:54 -0700
    Ready:          True
    Restart Count:  1
    Environment Variables from:
      kfserving-models-web-app-config-mtgm8bbd98  ConfigMap  Optional: false
    Environment:                                  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-lsqmk (ro)
  istio-proxy:
    Container ID:  docker://bd1285c601c575b262a649855d605aa38faac634e4e1dd5bbe9f66bb8d700f2f
    Image:         docker.io/istio/proxyv2:1.9.6
    Image ID:      docker-pullable://istio/proxyv2@sha256:87a9db561d2ef628deea7a4cbd0adf008a2f64355a2796e3b840d445b7e9cd3e
    Port:          15090/TCP
    Host Port:     0/TCP
    Args:
      proxy
      sidecar
      --domain
      $(POD_NAMESPACE).svc.cluster.local
      --serviceCluster
      kfserving.$(POD_NAMESPACE)
      --proxyLogLevel=warning
      --proxyComponentLogLevel=misc:error
      --log_output_level=default:info
      --concurrency
      2
    State:          Running
      Started:      Sat, 26 Mar 2022 19:03:57 -0700
    Last State:     Terminated
      Reason:       Error
      Exit Code:    255
      Started:      Wed, 23 Mar 2022 14:47:27 -0700
      Finished:     Sat, 26 Mar 2022 19:01:54 -0700
    Ready:          True
    Restart Count:  1
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:      10m
      memory:   40Mi
    Readiness:  http-get http://:15021/healthz/ready delay=1s timeout=3s period=2s #success=1 #failure=30
    Environment:
      JWT_POLICY:                    third-party-jwt
      PILOT_CERT_PROVIDER:           istiod
      CA_ADDR:                       istiod.istio-system.svc:15012
      POD_NAME:                      kfserving-models-web-app-7884f597cf-cllp5 (v1:metadata.name)
      POD_NAMESPACE:                 kubeflow (v1:metadata.namespace)
      INSTANCE_IP:                    (v1:status.podIP)
      SERVICE_ACCOUNT:                (v1:spec.serviceAccountName)
      HOST_IP:                        (v1:status.hostIP)
      CANONICAL_SERVICE:              (v1:metadata.labels['service.istio.io/canonical-name'])
      CANONICAL_REVISION:             (v1:metadata.labels['service.istio.io/canonical-revision'])
      PROXY_CONFIG:                  {"tracing":{}}

      ISTIO_META_POD_PORTS:          [
                                         {"containerPort":5000,"protocol":"TCP"}
                                     ]
      ISTIO_META_APP_CONTAINERS:     kfserving-models-web-app
      ISTIO_META_CLUSTER_ID:         Kubernetes
      ISTIO_META_INTERCEPTION_MODE:  REDIRECT
      ISTIO_METAJSON_ANNOTATIONS:    {"kubernetes.io/psp":"eks.privileged","sidecar.istio.io/inject":"true"}

      ISTIO_META_WORKLOAD_NAME:      kfserving-models-web-app
      ISTIO_META_OWNER:              kubernetes://apis/apps/v1/namespaces/kubeflow/deployments/kfserving-models-web-app
      ISTIO_META_MESH_ID:            cluster.local
      TRUST_DOMAIN:                  cluster.local
    Mounts:
      /etc/istio/pod from istio-podinfo (rw)
      /etc/istio/proxy from istio-envoy (rw)
      /var/lib/istio/data from istio-data (rw)
      /var/run/secrets/istio from istiod-ca-cert (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-lsqmk (ro)
      /var/run/secrets/tokens from istio-token (rw)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  istio-envoy:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     Memory
    SizeLimit:  <unset>
  istio-data:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  istio-podinfo:
    Type:  DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.labels -> labels
      metadata.annotations -> annotations
      limits.cpu -> cpu-limit
      requests.cpu -> cpu-request
  istio-token:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  43200
  istiod-ca-cert:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      istio-ca-root-cert
    Optional:  false
  kube-api-access-lsqmk:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Kserve version from this commit: https://github.com/kubeflow/manifests/tree/ca48b5eb6b77e74c957bf4522e47ae82ed78cc4a/apps/kfserving/upstream/overlays/kubeflow

Any update @goswamig @rrrkharse ?

Hey @AlexandreBrown ,   so what @rrrkharse has running has different UI than what you're running.
If you noticed in @rrrkharse  he does not have Metrics tab. Are you running the same version as @rrrkharse  with same instructions. ?

@goswamig @rrrkharse I am using this commit from the aws main branch.
AWS_MANIFESTS_BUILD=038015b47104dcff5b0c596893512e4e75f5a7bd
That's maybe the only difference I could see.

/open

@AlexandreBrown, thanks for providing more details, we will try to reproduce it. Sorry for closing the issue inadvertently.

Is there a way u can delete and re-deploy the web-app deployment?
I tried today and couldn't reproduce it.

I deleted the deployment and re-launch the kubeflow install so it recreates it, still same issue :(
Are you sure it is not related to kubernetes permissions?

do u still have same error in web-deployment pod ?  Can u send the full log from web-deployment again?
I believe you can see the log of in console using kubectl  logs .... but its failing to load in web-app, right?. So I am suspecting that web-app pod is bailing out in your case with missing pod level at least that was the error in previous log which you've posted.

@goswamig Yes still the same error from the kfserving model web app.
Here is the logs (last 30 lines of the logs)
logs.txt

I believe you can see the log of in console using kubectl logs .... but its failing to load in web-app, right?

Exactly, I can see the InferenceService logs when using Kubectl but not via the model web app UI.

@AlexandreBrown  but previously you mentioned here that you can see the logs in terminal by running command
kubectl logs -n dev sklearn-iris-predictor-default-00001-deployment-5558697cb-t8q7b -c kfserving-container

Basically this is the log you'll see in web-app.
did anything change since then?

@goswamig Nothing has changed, I previously mentioned that I was seeing the logs but the result was like the photos from my last message.
So the logs of the model server is indeed accessible but it only shows what is printed when the model server successfully becomes alive. I had not tried to see the logs after sending requests, I tried today then realized that the logs that I thought were normal from kubectl was actually logs not showing any activity passed initialization.
Does that make sense ?

so I tried again today and logs we see is follow, this is same you should see in the pod.
 /usr/local/lib/python3.7/site-packages/sklearn/linear_model/randomized_l1.py:580: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
 Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
   eps=4 * np.finfo(np.float).eps, n_jobs=None,
 [I 220424 02:03:46 kfserver:151] Registering model: sklearn-iris
 [I 220424 02:03:46 kfserver:121] Setting asyncio max_workers as 5
 [I 220424 02:03:46 kfserver:128] Listening on port 8080
 [I 220424 02:03:46 kfserver:130] Will fork 1 workers
 [I 220429 21:15:35 web:2243] 200 POST /v1/models/sklearn-iris:predict (<IP_ADDRESS>) 1.38ms
 [I 220429 21:15:50 web:2243] 200 POST /v1/models/sklearn-iris:predict (<IP_ADDRESS>) 0.84ms
 [I 220429 21:16:00 web:2243] 200 POST /v1/models/sklearn-iris:predict (<IP_ADDRESS>) 0.76ms
 [I 220429 21:17:50 web:2243] 200 POST /v1/models/sklearn-iris:predict (<IP_ADDRESS>) 0.74ms

@goswamig My logs are different than yours,
Mine stop at the following :

I0428 02:43:54.056516 1 grpc_server.cc:3983] Started GRPCInferenceService at <IP_ADDRESS>:9000
I0428 02:43:54.056751 1 http_server.cc:2717] Started HTTPService at <IP_ADDRESS>:8080
I0428 02:43:54.097922 1 http_server.cc:2736] Started Metrics Service at <IP_ADDRESS>:8002

Then nothing new is logged even after new requests.
So perhaps this might suggest an issue that is deeper than just Kubeflow UI

yeah so are u able to get the response back ?

@goswamig Yes the inference works, we can query the model server and get a response back (HTTP 200) but the logs are not updated. When we run kubectl logs, nothing changes from the logs in my last message, even after thousands of requests.

Hi Alex, does this issue still exist?
Do you face this issue with 1.5 as well? I have been using 1.5 in past few months, the logs show up on the dashboard

Hi @surajkota , the issue remains for us with our current KF 1.4.1 install.
I have not tried inference with KF 1.5, will report back after trying it.

Just tested Kubeflow 1.6.1 using aws repo on a test cluster (rds-s3-cognito) and I can see the logs.
Closing this issue as a "cannot reproduce".

Thanks

Update: Was able to reproduce on Kubeflow 1.7.0.
After some tests, it looks like the cause is autoscaling from 0.
When setting minReplicas to 0 , the inference service will scale down and therefore KServe won't be able to fetch any logs.
This is normal and expected but now the reason why I had this issue is clear to me.
Setting minReplicas to 1 shows the logs (but in our case we prefer to scale from 0 therefore we leave it at 0).
Hopefully this can help someone
Cheers