[RFC] fetchFromGitHub for release archives

Issue description
Currently fetchFromGitHub only allows fetching the source archive.
Some programs (mainly those using autoconf) also provide a release archive that includes a prebuilt configure script.
So a packager has to choose to use either

fetchFromGitHub and include autoconf / autoreconfHook plus possible some other dependencies
fetchurl and specify the github url for the release archive.

It would be nice if we extended fetchFromGitHub to provide a way to download the release archive.
The change should be fairly trivial and backward-compatible, I'm just wondering if I'm missing something and this is already possible or if this would be considered an improvement in which case I'll be happy to make the required changes and submit a PR.
nixpkgs $ ag -A5 'fetch(zip|url)' | grep github.\*/release | wc -l
144

Are release archives modified/generated by github? If not, I think it makes sense to simply use fetchurl for release archives.

No, those true releases are only changed by hand, I think. It might still make sense, as there's a difference whether the result is already unpacked or not.

Should we keep this open?
I find using fetchurl for stable releases to be clearer and more straightforward. The biggest problem is rather the opposite (some using fetchurl on unstable GH archives)

Closing for now.
The current situation is that:

fetchurl should be used for stable GH release assets ; fetchzip can also be used is one wants to use its postFetch hook as seen in many fixed-output derivations.
fetchFromGitHub or fetchzip should be used on GH archives depending on personal preferences and features (the former allows to fetch git submodules).


Add badges to README

Imho people love such badges/shields, it the unofficial standard after which you judge a project. Also those badges are updated automatically and thus help to keep information up-to-date.
Btw in case someone didn't know shields.io also offers nice dub badges (current version, license, downloads, ...)

Current coverage is 88.75% (diff: 100%)

Merging #4728 into master will increase coverage by <.01%

@@             master      #4728   diff @@
==========================================
  Files           121        121
  Lines         74070      74070
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits          65737      65738     +1
+ Misses         8333       8332     -1
  Partials          0          0

Powered by Codecov. Last update 41df329...f64fc43


Support for repository Projects

I've noticed that I can't create Projects using the GitHub objects nor the GHRepository object. There is no mention in the javadoc either.
Is this going to be supported in the future?

I'd love to see support for this as well!


docs: fix typos

:tada: This PR is included in version 3.22.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


RFC: Multi-Server Integration

Background
ByConity has multi-server design in order to guarantee HA, and they are stateful because of table metadata cache. The client should send query to host server to get the best performance. To know the corresponding host server of the table, we can query the system table system.cnch_table_host, it introduces extra logic for users. In order to make the usage of multiple servers easiler, we are proposing some solutions and short/long-term plans here.
Related works
Starrocks
Each FE stores and maintains a complete copy of metadata in its memory, which guarantees indiscriminate services among the FEs. FEs can work as leaders, followers, and observers. Followers can elect a leader according to the Paxos-like BDB JE protocol. BDB JE is short for Berkeley DB Java Edition.
The leader FE reads and writes metadata. Follower and observer FEs can only read metadata. They route metadata write requests to the leader FE. The leader FE updates the metadata and then uses BDE JE to synchronize the metadata changes to the follower and observer FEs. Data writes are considered successful only after the metadata changes are synchronized to more than half of the follower FEs.

Pros:

Don't introduce new components
Easy to users

Cons:

If Metadata is big data, how to scale for complete copy.
Replication cost.

Presto Disaggregated Coordinator
https://prestodb.io/blog/2022/04/15/disggregated-coordinator
Presto has a metastore services, so the multi-coordinators are stateless.

Proposal
There are 4 options in my mind at this moment. The 4th way introduces a gateway, it is not conflicted with other options. No matter which option is used, gateway has some unique features.
Personal thoughts:

1 and 3 should be more possible than 2.
4 is always good to have no matter which approach is chosen for server.

1. Server auto forwarding

Components: client -> servers
Flow: client -> server x -> host server -> server x -> client

Pros: no extra component
Cons: One extra hop if forwarding happens

Optimization

If it is ByConity, can change protocol to reduce the network cost

Client -> server x: get host server
Client -> host server

Third party clients: keeps original protocol

Implementation

auto remote_stream = std::make_shared<DB::RemoteBlockInputStream>(*res.remote_execution_conn, query, Block(), context);
remote_stream->setPoolMode(PoolMode::GET_ONE);
remote_stream->readPrefix();
while (Block block = remote_stream->read());
remote_stream->readSuffix();
res.in = std::move(remote_stream);

2. Server stateless
Currently, we persistent metadata in FDB and cache it in host server. However, the way we use it more like a replica instead of cache.
Imaging we can delete the changes among different servers, maybe we can use it more like caches. Watch for the update of key looks like is possible in FDB but for range is challenging.
There is some discussion about it but I haven't fully understand it. FDB provides watch to let know the changes for single key but not for range. If wanting to do it for range, still need to mimic it with a key. Then for the update in the range, you need to modify the key which may leads to performance issue because of concurrency limit of single key updating.
https://forums.foundationdb.org/t/changefeeds-watching-and-getting-updates-on-ranges-of-keys/511
Pros:

Stateless
Cons:
Rely on kv function and not under control.

3. Replica (similar to Starrocks way)
Since we use FDB for persistency, ByConity doesn't need a full copy for metadata. Instead, should can have a LRU policy for a subset of the data but still need to handle data synchrinization for this subset.
The estimated memory resource consumption is 100G per 100million parts.
NuRaft also supports leader，follower and learner.

Leader and follower

leader election
replication

Learner for scaling: just receive updates from leader
https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md

Pros:

More flexible compared with relying on kv function.
Can be extend to lock service
Hot data reading balance (avoid single point)
Cons:
Meta sync cost

4. Integrate with gateway

Components: client -> gateway -> servers
Flow: client - > gateway -> host server -> gateway -> client

Pros： a good reference https://cockroachlabs.com/blog/how-we-built-cockroachdb-serverless/#serverless-architecture

Multi-tenancy
Auto-scaling (gracefully)
Serverless

Cons: introduce a new component
[Image]
Implementation

Reuse system.cnch_table_host.
Calculate with consistent hashing.

Plans

Start with solution 1 and finish in April/2023
Plan later for 2 and 3 after finishing 1.

Welcome discussion and comment, if anybody has better idea on it~


Feature/item toggle hide values

I added a small part of code, where you can click on drawer menu item to show/hide account or transaction values. Similar to other mobile bank applications - the idea is to not let others around you to see your transactions.
Main code changes are in TransactionsActivity.java, BaseDrawerActivity.java, nav_drawer_menu.xml.
Changes in other files were auto generated, since I had some problems with dependencies.
I'm not sure if any pull request will be accepted in the future, but anyway here is a small part from me.

wrong branch


Reusable Front-end documentation/tutorials?

On the frontpage of the site: http://www.telescopeapp.org/
The following is mentioned:

Reusable Front-end
If you ever outgrow Nova, just keep your React components and switch in your own back-end.

Where can I find the full list of API calls to switch the backend to something else?
Also, does there exist a tutorial for using Vulcan(frontend/react) with a custom backend?

There is no full list of API calls because it would depend on your own app and your own front-end. But generally, you would at least need to hook up the three main resolvers (list, single, total) and mutations (new, edit, remove) for each collection. And then of course whatever other resolver/mutations you've added.

Thank you @SachaG
I hope it is not too much to ask, but can you point me to an example where a custom-backend is using just 1 (or all 3 main) resolvers and 1 (or all 3 main) mutations?
If not, can you provide a small Gist showing an API (I am guessing a REST API) consuming just 1 resolver and 1 mutation?
This would really be appreciated and I will do my best to share a full-spec example (once I understand exactly how an example-API might consume the data).

Well, Vulcan is a full-stack framework so although it's possible to not use the Vulcan back-end, it's not really supported/documented, sorry.


Privacy request comments

Add ability to add comments to data privacy request
Please take a look.

Merged this to 2022.9.x-feature-privacy-console


Mono: Module build improvements

Add (Csc/Vbc/Fsc)ToolExe environment variables when running Mono's MSBuild.
Fix directory for the mono_assemblies_output_dir argument being created with the # top level directory token as part of its name.
Allow to build with mono_static=yes on Unix without specifying a mono prefix. The build script will try to find the mono prefix using the output from pkg-config.

Added option to build with mono_static=yes on Unix without specifying a mono prefix.

Now that Godot 3.1 has been released, we only plan to cherry-pick critical bug fixes to the 3.0 branch, unless there is very strong support in favor of a specific non-critical issue. Removing cherrypick label for 3.0.


Allow Custom Loading State

The error state is provied as a property of the render method. The error
is either one of 'Network Error' for connectivity problems or 'SDK Authentication Error'
for Google Maps errors.
You can set a custom loading state conditionally if there is no
googleMaps loaded and if there is no network error.
If there is an SDK Authentication error, googleMaps will still be
loaded, but with an error which you can show in the googleMaps
conditional block.
Refer to README file.

Codecov Report

Merging #14 into master will decrease coverage by 5.57%.
The diff coverage is 57.14%.

@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
- Coverage   81.25%   75.67%   -5.58%
==========================================
  Files           2        2
  Lines          32       37       +5
  Branches        5        5
==========================================
+ Hits           26       28       +2
- Misses          6        9       +3

Impacted Files
Coverage Δ

src/loadGoogleMapsSdk/index.js
71.42% <50%> (-3.58%)
:arrow_down:

src/index.js
88.88% <75%> (-11.12%)
:arrow_down:

Continue to review full report at Codecov.

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

close #13


Individual Item level cache maxAge is not overriding the maxAge of the whole cache

Hi,
The maxAge property of individual item stored in a cache is not overriding the maxAge of the whole cache. Even though we set specific maxAge for the individual items it tends to set the maxAge of the cache.
Below is the service we have created.
appCache.service('appCacheSrc', function (CacheFactory) {
var frontendCache;

if(!CacheFactory.get('frontend')){
    frontendCache = CacheFactory('frontend', {
         maxAge: 15 * 60 * 1000
        ,cacheFlushInterval: 30 * 60 * 1000
        ,deleteOnExpire: 'aggressive'
        ,storageMode: 'localStorage'
    });

    frontendCache.put('/profiles/34', {
        name: 'John',
        skills: ['programming', 'piano'],
        },{maxAge: 60 * 1000});

}
console.log(frontendCache.info('/profiles/34'));
return frontendCache;

});
Please let me know if am doing something wrong.
Thanks,
Sriram

You can't set maxAge for individual items
On Aug 19, 2015 8:40 AM, "sriramjothimani"<EMAIL_ADDRESS>wrote:

Hi,
The maxAge property of individual item stored in a cache is not overriding
the maxAge of the whole cache. Even though we set specific maxAge for the
individual items it tends to set the maxAge of the cache.
Below is the service we have created.
appCache.service('appCacheSrc', function (CacheFactory) {
var frontendCache;
if(!CacheFactory.get('frontend')){
frontendCache = CacheFactory('frontend', {
maxAge: 15 * 60 * 1000
,cacheFlushInterval: 30 * 60 * 1000
,deleteOnExpire: 'aggressive'
,storageMode: 'localStorage'
});
frontendCache.put('/profiles/34', {
    name: 'John',
    skills: ['programming', 'piano'],
    },{maxAge: 60 * 1000});

}
console.log(frontendCache.info('/profiles/34'));
return frontendCache;
});
Please let me know if am doing something wrong.
Thanks,
Sriram
—
Reply to this email directly or view it on GitHub
https://github.com/jmdobry/angular-cache/issues/194.

Ok so I have to create a separate cache if I need to have a different maxAge ?

Yes
On Aug 19, 2015 8:53 AM, "sriramjothimani"<EMAIL_ADDRESS>wrote:

Ok so I have to create a separate cache if I need to have a different
maxAge ?
—
Reply to this email directly or view it on GitHub
https://github.com/jmdobry/angular-cache/issues/194#issuecomment-132626747
.


Fishing issue

Describe the bug
If i use good rod the bot dosent pull the pokemons out at all, not even once
To Reproduce
Steps to reproduce the behavior:

Get 1000 fishing tokens in pokemeow
Buy good rod in pokemeow
Use it
The bot wont pull out any fish

Expected behavior
Expected it to pull it out and catch it (i tried mannually pulling it out and it caught the pokemon for me by itself) but wont pull the pokemon out
Screenshots

Desktop (please complete the following information):

OS: Windows
Browser Chrome
Version windows 10

Additional context
I tried it 3 times but gave me the same results everytime

i think it cant detect button using good rod

Ohh  i kinda taught of the same reason too even tho i know nothing about coding,
In pokemeow the superior rod is used by default. So i cant switch back to the old rod too 😭.
Anyways thanks for letting me know

Oh, I actually had a similar thought, even though I don't know much about coding. In Pokemeow, the superior rod is automatically used, so I can't switch back to the old rod either. 😭 Anyways, thanks for letting me know.
I'm not sure if there's a similar issue with the super rod and the gold rod, but there's a good chance there might be, right? Just a little thought from this little brain haha.

Since I only have an old rod, can you help me debug this?

Oh, I actually had a similar thought, even though I don't know much about coding. In Pokemeow, the superior rod is automatically used, so I can't switch back to the old rod either. 😭 Anyways, thanks for letting me know.
I'm not sure if there's a similar issue with the super rod and the gold rod, but there's a good chance there might be, right? Just a little thought from this little brain haha.

There was a similar issue with super rods and I had fixed it. Are you using the latest fishing.py file?

Oh, I actually had a similar thought, even though I don't know much about coding. In Pokemeow, the superior rod is automatically used, so I can't switch back to the old rod either. 😭 Anyways, thanks for letting me know.
I'm not sure if there's a similar issue with the super rod and the gold rod, but there's a good chance there might be, right? Just a little thought from this little brain haha.

There was a similar issue with super rods and I had fixed it. Are you using the latest fishing.py file?

I guess, i downloaded the latest release, i am not too sure though. Here is the file
import json
import asyncio
from time import time
from random import randint

from discord import Message, InvalidData
from discord.ext import commands

from cogs.hunting import auto_buy
from cogs.startup import Config

fishes = json.load(open("fishes.json"))

class Fishing(commands.Cog):
    def __init__(self, bot: commands.Bot) -> None:
        self.bot = bot
        self.config: Config = bot.config

    @commands.Cog.listener()
    async def on_message(self, message: Message) -> None:
        if not message.interaction:
            return

        if (
            message.interaction.name != "fish spawn"
            or message.interaction.user != self.bot.user
            or message.channel.id != self.config.fishing_channel_id
        ):
            return

        if "Please wait" not in message.content:
            return

        await asyncio.sleep(self.config.retry_cooldown)
        await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
        await self.bot.fishing_channel_commands["fish spawn"]()

    @commands.Cog.listener()
    async def on_message_edit(self, before: Message, after: Message) -> None:
        if not after.interaction or not after.embeds:
            return

        if (
            after.interaction.user != self.bot.user
            or after.interaction.name != "fish spawn"
            or after.channel.id != self.config.fishing_channel_id
        ):
            return

        if (
            "Not even a nibble" in after.embeds[0].description
            or "The Pokemon got away..." in after.embeds[0].description
        ):
            self.bot.last_fish = time()
            await asyncio.sleep(self.config.fishing_cooldown)
            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await self.bot.fishing_channel_commands["fish spawn"]()
            return

        elif (
            "cast out an" in after.embeds[0].description
            and "click the" in after.embeds[0].description
        ):
            self.bot.last_fish = time()

            try:
                await after.components[0].children[0].click()

            except InvalidData:
                pass

            return

        elif "fished out a wild" in after.embeds[0].description:
            self.bot.fish_encounters += 1

            if "shiny" in after.embeds[0].description.lower():
                ball = self.config.fish_balls["Shiny"]

            elif "golden" in after.embeds[0].description.lower():
                ball = self.config.fish_balls["Golden"]

            else:
                rarity = fishes[after.embeds[0].description.split("**")[3]]
                ball = self.config.fish_balls[rarity]

            balls = ["mb", "db", "prb", "ub", "gb", "pb"]
            balls = balls[balls.index(ball) :]

            buttons = [
                button
                for button in after.components[0].children
                for ball in balls
                if button.custom_id == ball + "_fish"
            ]

            if not buttons:
                return

            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await buttons[-1].click()
            return

        elif "fished out a wild" in before.embeds[0].description:
            if "caught" in after.embeds[0].description:
                self.bot.fish_catches += 1

            tasks = []

            if "Your next Quest is now ready!" in before.content:
                tasks.append(asyncio.create_task(
                    self.bot.fishing_channel_commands["quest info"]()
                ))

            tasks.append(asyncio.create_task(
                auto_buy(self.bot, self.config, self.bot.fishing_channel_commands, after)
            ))

            await asyncio.sleep(self.config.fishing_cooldown)
            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await self.bot.fishing_channel_commands["fish spawn"]()
            [await task for task in tasks]
            return

Oh, I actually had a similar thought, even though I don't know much about coding. In Pokemeow, the superior rod is automatically used, so I can't switch back to the old rod either. 😭 Anyways, thanks for letting me know.
I'm not sure if there's a similar issue with the super rod and the gold rod, but there's a good chance there might be, right? Just a little thought from this little brain haha.

There was a similar issue with super rods and I had fixed it. Are you using the latest fishing.py file?

I guess, i downloaded the latest release, i am not too sure though. Here is the file
import json
import asyncio
from time import time
from random import randint

from discord import Message, InvalidData
from discord.ext import commands

from cogs.hunting import auto_buy
from cogs.startup import Config

fishes = json.load(open("fishes.json"))

class Fishing(commands.Cog):
    def __init__(self, bot: commands.Bot) -> None:
        self.bot = bot
        self.config: Config = bot.config

    @commands.Cog.listener()
    async def on_message(self, message: Message) -> None:
        if not message.interaction:
            return

        if (
            message.interaction.name != "fish spawn"
            or message.interaction.user != self.bot.user
            or message.channel.id != self.config.fishing_channel_id
        ):
            return

        if "Please wait" not in message.content:
            return

        await asyncio.sleep(self.config.retry_cooldown)
        await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
        await self.bot.fishing_channel_commands["fish spawn"]()

    @commands.Cog.listener()
    async def on_message_edit(self, before: Message, after: Message) -> None:
        if not after.interaction or not after.embeds:
            return

        if (
            after.interaction.user != self.bot.user
            or after.interaction.name != "fish spawn"
            or after.channel.id != self.config.fishing_channel_id
        ):
            return

        if (
            "Not even a nibble" in after.embeds[0].description
            or "The Pokemon got away..." in after.embeds[0].description
        ):
            self.bot.last_fish = time()
            await asyncio.sleep(self.config.fishing_cooldown)
            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await self.bot.fishing_channel_commands["fish spawn"]()
            return

        elif (
            "cast out an" in after.embeds[0].description
            and "click the" in after.embeds[0].description
        ):
            self.bot.last_fish = time()

            try:
                await after.components[0].children[0].click()

            except InvalidData:
                pass

            return

        elif "fished out a wild" in after.embeds[0].description:
            self.bot.fish_encounters += 1

            if "shiny" in after.embeds[0].description.lower():
                ball = self.config.fish_balls["Shiny"]

            elif "golden" in after.embeds[0].description.lower():
                ball = self.config.fish_balls["Golden"]

            else:
                rarity = fishes[after.embeds[0].description.split("**")[3]]
                ball = self.config.fish_balls[rarity]

            balls = ["mb", "db", "prb", "ub", "gb", "pb"]
            balls = balls[balls.index(ball) :]

            buttons = [
                button
                for button in after.components[0].children
                for ball in balls
                if button.custom_id == ball + "_fish"
            ]

            if not buttons:
                return

            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await buttons[-1].click()
            return

        elif "fished out a wild" in before.embeds[0].description:
            if "caught" in after.embeds[0].description:
                self.bot.fish_catches += 1

            tasks = []

            if "Your next Quest is now ready!" in before.content:
                tasks.append(asyncio.create_task(
                    self.bot.fishing_channel_commands["quest info"]()
                ))

            tasks.append(asyncio.create_task(
                auto_buy(self.bot, self.config, self.bot.fishing_channel_commands, after)
            ))

            await asyncio.sleep(self.config.fishing_cooldown)
            await asyncio.sleep(randint(0, self.config.suspicion_avoidance) / 1000)
            await self.bot.fishing_channel_commands["fish spawn"]()
            [await task for task in tasks]
            return

I had made a commit 2 days ago to the fishing.py. Please download it from the repository and not from the releases tab. It will fix your issue.

I have made some other changes to different files as well. So you might as well download the whole repository again.

Yes, i downloaded it from releases, redownloaded right now from repo and it works, thanks for the assistance khanna and lufy


Reordering of predicates and filters (pushing up and/or pushing down) in JOINs to get the most performant plan

Description
Currently, Druid does not support pushing down predicates (condition and filter) pass a Join (i.e. into Join's children). Druid only supports pushing predicates into the join if they originated from above the join. Hence, the location of predicates and filters in your Druid SQL is very important.
Since Druid cannot reliably push up / push down filters smartly (pushing up is NOT always the best and pushing down is NOT always the best but Druid is not smart enough to figure this out), the PR https://github.com/apache/druid/pull/9773 disabled pushing down predicates (condition and filter) pass a Join (i.e. into Join's children) altogether.
We should rethink how we do the following:

Apply and write rules for JOIN (especially around pushing up/down predicates such as Rule that pushes predicates from a Filter into the Join below them and Rule that pushes predicates in a Join into the inputs to the join)
how we calculate cost for JOIN.

Motivation
Druid should be able to smartly reorder predicates and filters (pushing up and/or pushing down)  in JOINS to get the most performant plan.

I would like to take this up, please.
cc @nishantmonu51

You can go ahead @atris. Though please put up a design proposal first if you can.

Thanks!


Dreame D9 - problem after firmware update

After update vacuum firmware to 4.1.8_1132 HA stoped seeing the vacuum.
Log from HA below:
Logger: homeassistant.components.vacuum
Source: custom_components/xiaomi_vacuum/miio/miioprotocol.py:242
Integration: Odkurzacz ([documentation], [issues]
First occurred: 09:15:48 (1 occurrences)
Last logged: 09:15:48
xiaomi_vacuum: Error on device update!
Traceback (most recent call last):
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 194, in send
data, addr = s.recvfrom(4096)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 194, in send
data, addr = s.recvfrom(4096)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 194, in send
data, addr = s.recvfrom(4096)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 194, in send
data, addr = s.recvfrom(4096)
socket.timeout: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 431, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 736, in async_device_update
await task
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/xiaomi_vacuum/vacuum.py", line 653, in update
state = self._vacuum.status()
File "/config/custom_components/xiaomi_vacuum/miio/dreamevacuum.py", line 205, in status
for prop in self.get_properties_for_mapping()
File "/config/custom_components/xiaomi_vacuum/miio/miot_device.py", line 65, in get_properties_for_mapping
return self.get_properties(
File "/config/custom_components/xiaomi_vacuum/miio/device.py", line 269, in get_properties
values.extend(self.send(property_getter, _props[:max_properties]))
File "/config/custom_components/xiaomi_vacuum/miio/device.py", line 178, in send
return self._protocol.send(
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 234, in send
return self.send(
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 234, in send
return self.send(
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 234, in send
return self.send(
File "/config/custom_components/xiaomi_vacuum/miio/miioprotocol.py", line 242, in send
raise DeviceException("No response from the device") from ex
custom_components.xiaomi_vacuum.miio.exceptions.DeviceException: No response from the device

Do you have this problem all the time? or was it a one time occurance?

Hello,
Just for your information, I had the same problem. I don't know if it's due to the firmware update, but the ip address of my robot had changed. So I changed it in my configuration (HA) and it works again.

It seems that firmware updated is changing token. Strange situation is that when i checking token it was like before. After all i deleted vacuum from mi home and add it again. After that token was diferent. Now everythink work fine on Home assistant. Unfortunetly i lost all my maps, data and schedules on mi home.

thanks for reporting this.


Can't set worklog comment.

Expected Behavior
The worklog comment button should display the worklog comment input field when clicked.
Actual Behavior
The worklog comment button won't display the worklog comment input field when clicked.
Steps to Reproduce the Problem

Select an issue.
Click on the play button.
Click on the pencil button.

GIF Capture

Specifications

Chronos-timetracker version: 3.0.1
OS: Windows 10 Pro

Notes:

Already try to unninstall and install again.

Seeing the same behavior on OSX - 3.0.1 installed this morning.


Use get request for getting stablecoins

Better than hardcoding list of possible stablecoins, which is the case in multiple files.
Use:  https://www.binance.com/bapi/composite/v1/public/promo/cmc/cryptocurrency/category?id=604f2753ebccdd50cd175fc1&limit=10 to get the top 10 stable coins on Binance

Not necessary, since it would create issues during startup


Update README.md to include ollama-r library

Add ollama-r library

Is it not possible to list different libraries for one programming language on the README, to provide users with more options? e.g., like how there are many overlapping web/desktop and extensions (e.g., there are multiple extensions for the Obsidian note-taking app). If not, feel free to close this issue. Thanks.

Thanks for the PR! Will append it to the list for now


Plz help me

Hi
something unexpected happened, new version of packer/protectors? or it wasn't packed/protected!
https://s11.postimg.org/cuo4v24b7/Untitled1.png

You'll need to share the hash or the file at a minimum...

Same issue here. I've attached the file.
Please see APK located here:
www.apkmonk.com/app/cn.ninebot.ninebot/

Closing old issue that lacks context / details.


It seems to be disconnected from the Internet

iOS 11.2.6  always show It seems to be disconnected from the Internet!!!!!

Hi there! For general questions about how to use AFNetworking, please ask on StackOverflow. Thanks!


Allow pullup inputs and opendrain outputs

This fixes #321, #199 and extends on #118, and also fixes this issue for other peripherals that don't mind which pull-ups are configured for their inputs and whether their outputs are pushpull or open drain.
This is a superset of #357 and #359. Prefer this PR.

cc @therealprof
What are you think about?

bors r+


Prevent nav menu from clipping on short document bodies

Use floats rather than absolute positioning for menu

Looks good at various widths and I tried it on some browsers and mobile devices on browserstack.


Vertical scrolling on sub-views

I am sure this is probably a simple styling issue...
I have setup a horizontal swiper and the swiping is working fine.
Let's say I have a view with a bunch of input boxes and other content in it that overflows vertically. How can I scroll the view by swiping vertically?
Thanks!

Change to a scrollView isn't working ?

Ah ok thank you! The scrolling is working, but the bottom of the content can't be seen - I have to force the rubberband effect in order to see the bottom. Any ideas on how to fix that?

I just add a bunch of padding until it shows up right.

I'm curious in my case only the last page is scrolling. It there anything I can do to may each page scrollable?

You can try wrapping your page in TouchableWithoutFeedback


Ensure GridFS collections are dropped properly

This PR aims to ensure also a GridFS collection is dropped when calling $dm->getSchemaManager()->dropCollections();. Currently dropping a GridFS collection has no affect and the data remains in there.

Thanks!


Travis CI Pipeline should switch from osx to linux

Right now, the Travis CI pipeline is using os: osx for a lot of jobs/stages, see .travis.yml.
This is bad for several reasons:

osx has some licence costs affiliated to it, which are currently being paid by travis (as keptn is an Open Source project)
osx has a much longer bootup time (around 60 seconds) compared to linux (less than 10 seconds), thus slowing down our travis pipeline unnecessarily
osx lacks certain features on travis (e.g., docker)
Travis provides only a limited number of osx build-servers (as there is a licence cost involved), which results to mac os jobs being queued up (backlog), especially during the european night time

In conclusion: We should only use osx builds when we really have to, e.g., when we are compiling something for osx and we need to ensure it runs with osx.
I've tried switching to linux, but it seems that some basic tests in the cli fail, while they work fine under osx: https://travis-ci.org/keptn/keptn/builds/598183032
Testing keptn CLI on linux
?   	github.com/keptn/keptn/cli	[no test files]
keptn creates the folder /home/travis/.keptn/ to store logs and possibly creds.
--- FAIL: TestAuthCmd (0.00s)
    auth_test.go:25: open /home/travis/.keptn/.keptn: no such file or directory
--- FAIL: TestConfigureMonitoringCmd (0.00s)
    configure_monitoring_test.go:96: An error occured This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestCreateProjectCmd (0.00s)
    create_project_test.go:60: An error occured This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestCreateProjectIncorrectProjectNameCmd (0.00s)
    create_project_test.go:83: An error occured: This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestCreateProjectIncorrectStageNameCmd (0.00s)
    create_project_test.go:117: An error occured: This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestCreateProjectCmdWithGitMissingParam (0.00s)
    create_project_test.go:146: An error occured: This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestCreateProjectCmdWithGit (0.00s)
--- FAIL: TestDeleteProjectCmd (0.00s)
    delete_project_test.go:28: An error occured This command requires to be authenticated. See "keptn auth" for details
--- FAIL: TestOnboardServiceWrongHelmChartPath (0.00s)
    onboard_service_test.go:39: Error actual = This command requires to be authenticated. See "keptn auth" for details, and Expected = Provided Helm chart does not exist.
--- FAIL: TestOnboardServiceDeploymentStrategy (0.00s)
    onboard_service_test.go:66: Error actual = This command requires to be authenticated. See "keptn auth" for details, and Expected = The provided deployment strategy is not supported. Select: [direct|blue_green_service].
--- FAIL: TestNewArtifact (0.29s)
    send_event_newArtifact_test.go:38: An error occured This command requires to be authenticated. See "keptn auth" for details
Availability of provided image cannot be checked.
Availability of provided image cannot be checked.
Availability of provided image cannot be checked.
2019/10/15 16:35:35 An error occured This command requires to be authenticated. See "keptn auth" for details
FAIL	github.com/keptn/keptn/cli/cmd	1.292s
?   	github.com/keptn/keptn/cli/pkg/logging	[no test files]
ok  	github.com/keptn/keptn/cli/utils	0.494s
ok  	github.com/keptn/keptn/cli/utils/credentialmanager	0.072s
ok  	github.com/keptn/keptn/cli/utils/validator	0.122s
ok  	github.com/keptn/keptn/cli/utils/websockethelper	0.048s

As a first step, the daily cron job (covering some long running integration tests with GKE) has been switched from osx to linux in PR #993.

In addition, we have switched the unit tests from osx to linux, and moved the osx build to the bottom of the pipeline (to not block the whole pipeline initially).
I also tried to move the cross-compiling away from osx, but it seems that I've run into an issue that is not within our control:
build my-binary: cannot find module for path github.com/docker/docker-credential-helpers/registryurl

Details see https://github.com/keptn/keptn/pull/1534
For now, we believe that the switch that we performed is sufficient.


Code along streams with David Burns

Adding details of Twitch streams that I will be doing. I will be streaming the work that I do on https://github.com/Seleniumhq/Selenium as well as https://github.com/nightwatchjs/nightwatch. I might even, time allowing, even dive into some work on browsers to make the web more testable!

Thanks!  Will pull this one in and then reformat the ReadMe to better differentiate Events from Streams as it'd be great to encourage a few more of these.  Thanks @AutomatedTester !


It's not connecting

Hi,
I tried to put this in a basic mobile app with just a scaffold and a text area to see if it is working. But i couldn't make it work. Can you please share an example with a basic mobile app structure? It would be really helpful.
Thanks...

Hi, sorry, I don't have such example.
You can try to run from console on your host to ensure that library works


Add ability to customize HMM_ prefix

Resolves #112. I only did this to function names; types have a lowercase prefix and can be easily typedef'd anyway.

Looks good as well feel free to merge it


Method setHandshakeTimeout of SslHandler does not work in server side

Expected behavior
I want to enable setHandshakeTimeout() in server side. I call the method setHandshakeTimeout() like this sslHandler.setHandshakeTimeout(1,TimeUnit.MILLISECONDS); The value of HandshakeTimeout is set to a very small value so that the client and server can not complete the handshake since the handshake is timeout.
Actual behavior
But it can not work when I use this in server.The connection can still be established between server and client. However when I do the same in client, the SSL connection can not be established , this is what I expect to see.
Steps to reproduce

call the sslHandler.setHandshakeTimeoutMillis(1); or sslHandler.setHandshakeTimeout(1,TimeUnit.MILLISECONDS); in server
do connect and SSL connection can be successfully established
do 1 and 2 again in client side, and SSL connection can not be established

Minimal yet complete reproducer code (or URL to code)
You may use SecureChat example or any other SSL example to reproduce
Netty version
4.1.15.Final
JVM version (e.g. java -version)
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

@BillyYccc please check https://github.com/netty/netty/pull/7277

Fixed


COS integration improvements

Applicable spec: n/a
Overview

Log repo policy check http status code in case of failure.
Log job conclusion.
Update the dashboard to visualise job metrics, with the option to specify specific repositories. Job metrics are grouped in a separate row.

Rationale
More metrics are being collected and visualised to improve long-term monitoring and alerting.
Module Changes

github_client, github_metrics, github_type, metrics_type, metrics, runner_manager, runner_metrics: Retrieve and include job conclusion
pre-job script has been adapted to include repo policy http code

Checklist

[x] The charm style guide was applied
[x] The contributing guide was applied
[x] The changes are compliant with ISD054 - Managing Charm Complexity
[x] The documentation is generated using src-docs
[x] The documentation for charmhub is updated.
[x] The PR is tagged with appropriate label (urgent, trivial, complex)

Is it possible to see a breakdown of # of jobs by repo? So that we can get a high level overview of which repo is using it? I couldn't see it in the screenshot

Is it possible to see a breakdown of # of jobs by repo? So that we can get a high level overview of which repo is using it? I couldn't see it in the screenshot

Added a visualisation. Unfortunately the repo values are not sorted by count, this should be possible with Loki 2.8.x using the sort operator. See also https://github.com/grafana/grafana/issues/17245 for this problem.

Looks fine, just the question regarding the repository. I couldn't spot where that info was being collected either?

The repos to be filtered can be defined in the mask for the variable "repository". (see first screenshot). Unfortunately, the list of all possible repos cannot be pre-calculated and just selected like the other variables (juju_application,...), because this is a query variable and the labels we use are calculated using a json parser expression (see https://community.grafana.com/t/grafana-variable-loki-label-values-for-json-parser-created-labels/50180). If it's important, we'd have to add the repository as a real label, but that would mean changing the promtail configuration and could be more complex (might need an adaptation of the grafana agent).


Logging stopped for cattle-debug.log

Rancher Version: Build from master
rancher-server ran out of disk space and stopped logging cattle-debug.log.
Also  there is cattle-debug.log3478474258142890.tmp files were not getting cleared for the last few days , which has contributed to the disk space growing.
During the time when cattle-debug.log was not being written , cattle-error.log  was still being created.
Even after reclaiming some space , there is no logging done for cattle-debug.log
root@a84cb9dea0fc:/source/runtime/cli/logs# ls -lth
total 4.2G
-rw-r--r-- 1 root root  35M Apr  4 17:55 cattle-error.log
-rw-r--r-- 1 root root 1.2M Apr  4 00:00 cattle-error.2016-04-03.log.gz
-rw-r--r-- 1 root root 1.2M Apr  3 00:00 cattle-error.2016-04-02.log.gz
-rw-r--r-- 1 root root 549M Apr  2 16:00 cattle-debug.log
-rw-r--r-- 1 root root 1.1G Apr  2 12:57 cattle-debug.log3784335746547692.tmp
-rw-r--r-- 1 root root 1.1G Apr  2 08:57 cattle-debug.log3769894642788196.tmp
-rw-r--r-- 1 root root  60M Apr  2 05:02 cattle-debug.2016-04-02.log.gz
-rw-r--r-- 1 root root 220K Apr  2 00:00 cattle-error.2016-04-01.log.gz
-rw-r--r-- 1 root root 294M Apr  1 23:59 cattle-debug.log3737674411162991.tmp
-rw-r--r-- 1 root root  62M Apr  1 22:37 cattle-debug.2016-04-01.log.gz
-rw-r--r-- 1 root root 222K Apr  1 00:01 cattle-error.2016-03-31.log.gz
-rw-r--r-- 1 root root 291M Mar 31 23:59 cattle-debug.log3651292765578079.tmp
-rw-r--r-- 1 root root  63M Mar 31 21:56 cattle-debug.2016-03-31.log.gz
-rw-r--r-- 1 root root 216K Mar 31 00:00 cattle-error.2016-03-30.log.gz
-rw-r--r-- 1 root root 298M Mar 30 23:59 cattle-debug.log3564881238471369.tmp
-rw-r--r-- 1 root root  63M Mar 30 21:55 cattle-debug.2016-03-30.log.gz
-rw-r--r-- 1 root root 226K Mar 30 00:00 cattle-error.2016-03-29.log.gz
-rw-r--r-- 1 root root 462M Mar 29 23:59 cattle-debug.log3478474258142890.tmp
-rw-r--r-- 1 root root  62M Mar 29 19:10 cattle-debug.2016-03-29.log.gz
root@a84cb9dea0fc:/source/runtime/cli/logs#

If wait one day to see if it resolves itself.  There very little we can do when the disk runs out of space.  Bad things happen.

@ibuildthecloud , is the cattle-debug.log3478474258142890.tmp files not being cleared possibly be because of running out of disk space ? Not being able to clear this temp file may itself lead to running out of disk space.

Closing due to inactivity, please reopen if you think this is still relevant to current releases & important.


Debug mode where we check weight updates

Introduce a debug mode where after each epoch we make sure that all weights in the model actually get updated

Closing this as this issue is not longer need


Add multi-objective capabilities

Pymoo has a strong multi-objective solver, NSGA2. We need an example that successfully runs it demonstrates how to handle Pareto front results

@albertoIWES maybe this is interesting for you, will be developed in branch 8-add-multi-objective-capabilities

Thanks for letting me know! I'll check it out in the next days to see what's in 👍

From: Jonas Schmidt @.>
Sent: Tuesday, November 1, 2022 8:17 AM
To: FraunhoferIWES/iwopy @.>
Cc: Jimenez Haro, Alberto @.>; Mention @.>
Subject: Re: [FraunhoferIWES/iwopy] Add multi-objective capabilities (Issue #8)
@albertoIWEShttps://github.com/albertoIWES maybe this is interesting for you, will be developed in branch 8-add-multi-objective-capabilitieshttps://github.com/FraunhoferIWES/iwopy/tree/8-add-multi-objective-capabilities
—
Reply to this email directly, view it on GitHubhttps://github.com/FraunhoferIWES/iwopy/issues/8#issuecomment-1298120067, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AZSMSJ3K4URFGFH42IL3CW3WGC7YRANCNFSM6AAAAAARTZEJZQ.
You are receiving this because you were mentioned.Message ID: @.***>

done with release v0.1.3


Pull request

Please review, I just tried to clean up the code by moving some into a function for data validation

Merge to fork


Cron input is triggering twice every period

What happened?:
I have a job running on a cross of an hourly cron and a manually updated input repo. I see 2 commits to the cron repo every hour, very close to each other.
Here is the pipeline spec:
{
  "pipeline": {
    "name": "<name>"
  },
  "transform": {
    "image": "{IMAGE}",
    "cmd": ["{CMD}"]
  },
  "input": {
    "cross": [
    {
      "cron": {
        "name": "trigger",
        "spec": "@hourly",
        "repo": "hourly_trigger"
      }
    }, {
      "atom": {
        "repo": "<other input>",
        "glob": "/*"
      }
    }]
  },
  "enable_stats": true,
  "parallelism_spec": {
    "constant": 1
  }
}

Here are recent commits to the hourly_trigger repo:
-- 21:31 $ pachctl list-commit hourly_trigger -n 10
REPO           ID                               PARENT                           STARTED        DURATION           SIZE
hourly_trigger 207e1126a8304331aa3e092fdb63bc80 e6cbe84563f542a4adddb66481ee04c8 33 minutes ago 1 second           26B
hourly_trigger e6cbe84563f542a4adddb66481ee04c8 b2fecc3dea014c2d8e9792566033a183 33 minutes ago Less than a second 26B
hourly_trigger b2fecc3dea014c2d8e9792566033a183 b4261e57420a44d7980477cf14b5996a 2 hours ago    2 seconds          26B
hourly_trigger b4261e57420a44d7980477cf14b5996a 7f31df3af7ca4f7ebce1c865fcb3c52c 2 hours ago    Less than a second 26B
hourly_trigger 7f31df3af7ca4f7ebce1c865fcb3c52c 9fcded16b1944252b0609b1d0f5b20d6 3 hours ago    2 seconds          26B
hourly_trigger 9fcded16b1944252b0609b1d0f5b20d6 ed3659b44a0e4830934dc9e7f953065e 3 hours ago    Less than a second 26B
hourly_trigger ed3659b44a0e4830934dc9e7f953065e 46b1d47047a24af98c8914a02f71e069 4 hours ago    1 second           26B
hourly_trigger 46b1d47047a24af98c8914a02f71e069 d6cf61aecb9b4275912ef4091e5542dc 4 hours ago    Less than a second 26B
hourly_trigger d6cf61aecb9b4275912ef4091e5542dc 8e97abee9d4d443cb6537674c3830e81 5 hours ago    1 second           26B
hourly_trigger 8e97abee9d4d443cb6537674c3830e81 f9597d6016814bafbc8227e22b54e7ab 5 hours ago    Less than a second 26B

Here is the raw inspect-commit of 2 commits that happened close to each other:
-- 21:31 $ pachctl inspect-commit hourly_trigger 207e1126a8304331aa3e092fdb63bc80 --raw
{
  "commit": {
    "repo": {
      "name": "hourly_trigger"
    },
    "id": "207e1126a8304331aa3e092fdb63bc80"
  },
  "parentCommit": {
    "repo": {
      "name": "hourly_trigger"
    },
    "id": "e6cbe84563f542a4adddb66481ee04c8"
  },
  "started": "2018-07-11T15:00:00.355139592Z",
  "finished": "2018-07-11T15:00:02.338848560Z",
  "sizeBytes": "26",
  "subvenance": [<redacted>]
  "tree": {
    "hash": "e8a305e68c6dceeacaaa3957e78d28c6d13bb7d9d249c7cd32a438df522cfb209109413fc8a179ca6ad7e454df37ee7a15772e516e5a0a9c91f0e609edf64e8e"
  }
}
-- 21:31 $ pachctl inspect-commit hourly_trigger e6cbe84563f542a4adddb66481ee04c8 --raw
{
  "commit": {
    "repo": {
      "name": "hourly_trigger"
    },
    "id": "e6cbe84563f542a4adddb66481ee04c8"
  },
  "parentCommit": {
    "repo": {
      "name": "hourly_trigger"
    },
    "id": "b2fecc3dea014c2d8e9792566033a183"
  },
  "childCommits": [
    {
      "repo": {
        "name": "hourly_trigger"
      },
      "id": "207e1126a8304331aa3e092fdb63bc80"
    }
  ],
  "started": "2018-07-11T15:00:00.360974638Z",
  "finished": "2018-07-11T15:00:00.723664161Z",
  "sizeBytes": "26",
  "subvenance": [<redacted>],
  "tree": {
    "hash": "e8a305e68c6dceeacaaa3957e78d28c6d13bb7d9d249c7cd32a438df522cfb209109413fc8a179ca6ad7e454df37ee7a15772e516e5a0a9c91f0e609edf64e8e"
  }

The other, manually updated repo has not changed:
REPO            ID                               PARENT                           STARTED      DURATION           SIZE
<input> c49c931842ee4415b66ed2c09e7b6472 4a5ad9bb42a64eacb8078753108cea75 24 hours ago Less than a second 218B
<input> 4a5ad9bb42a64eacb8078753108cea75 457519af0b29413694d492fde1f9babf 24 hours ago Less than a second 196B
<input> 457519af0b29413694d492fde1f9babf 996962d9424742cc8571317c5d5cd149 24 hours ago Less than a second 170B
<input> 996962d9424742cc8571317c5d5cd149 f3cd2a184b4443e88e6c5704e588cfbe 24 hours ago Less than a second 135B
<input> f3cd2a184b4443e88e6c5704e588cfbe a485281250e34267b7f1d66a1d6b1871 24 hours ago Less than a second 135B
<input> a485281250e34267b7f1d66a1d6b1871 af8528d10c414f9cafef1eab4d0db438 24 hours ago Less than a second 135B
<input> af8528d10c414f9cafef1eab4d0db438 a5e5a3d0e21e4766833677b6de2db084 24 hours ago Less than a second 135B
<input> a5e5a3d0e21e4766833677b6de2db084 96a9d3b9d649406e868593eb6f74ed46 24 hours ago Less than a second 135B
<input> 96a9d3b9d649406e868593eb6f74ed46 792e95f4c9a94d2281b0fcf51b8ae3b3 24 hours ago Less than a second 135B
<input> 792e95f4c9a94d2281b0fcf51b8ae3b3 cbd459ddadf649da8971197e33bec324 24 hours ago Less than a second 135B

This started happening well after the cron repo was created. It seemed to correlate with a number of very quick commits to the other repo in the cross, but I can't confirm that. I have not tried to reproduce from scratch.
What you expected to happen?:
Hourly cron to trigger once per hour.
How to reproduce it (as minimally and precisely as possible)?:
I have not tried to reproduce from scratch.
Anything else we need to know?:
I have one pachd pod.
Environment?:

Kubernetes version (use kubectl version):

-- 21:31 $ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.7", GitCommit:"dd5e1a2978fd0b97d9b78e1564398aeea7e7fe92", GitTreeState:"clean", BuildDate:"2018-04-19T00:05:56Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.4-gke.2", GitCommit:"eb2e43842aaa21d6f0bb65d6adf5a84bbdc62eaf", GitTreeState:"clean", BuildDate:"2018-06-15T21:48:39Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}```

- Pachyderm CLI version (use `pachctl version`):

-- 21:31 $ pachctl version
COMPONENT           VERSION
pachctl             1.7.4
pachd               1.7.4

- Cloud provider (e.g. aws, azure, gke) or local deployment (e.g. minikube vs dockerized k8s): GKE

Could this be related to things getting out of sync following multiple pipeline updates that you filed in #3045 ? Wondering if each --reprocess is maybe re-adding a cron trigger?

@gabrielgrant it's possible, but I've kicked off a number of reprocesses, so it's definitely not happening every time.
Is there a suggested workaround for this? It would be nice to get these jobs back to running once per hour.

Looks like the best "workabound" is gonna be this PR fixing the issue #3054 ;)


routes tied to interfaces in json

Routes can be expressed without being tied to a specific interface. One can do that with ip route in linux(ip route add  via:) and in all routers. However, Linux Netplan does not seem to support it. And Netplan being the network config way in linux nowadays... Maybe other implementations have the same restriction. So suggesting to move the routes from the node level in the JSON topology file to within an interface. (And obviously only put the proper routes related to the interface under that interface).  Without that change, a parser can do all the mapping but that is just more work, prone to issues and does not really help.
So in JSON, instead of nodes[n].routes[], we would have nodes[n].interface[m].routes[]
In my own implementation, that was not a lot of work to change. good!

networkgraph-fullmars.json
updated json.


MOLO 514 - Poll Surveys results phase2

@codiebeulaine @projectmushroom
Please review
Polls results

Surveys results

Instead of the previous implementation:


Create package.json

fixes #35

Thanks. Tbh I wasn't sure how much these would be of use in a netcore world


RazorEngine.Core.NetCore in a Linux docker container: 'COM Interop is not supported on this platform.'

Can you give me a slight insight what's happening here and why it tries to use Interop?
        var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

        var templateManager = new ResolvePathTemplateManager(new[]
            {Path.Combine(path, EmailTemplatesFolder)});

        var config = new TemplateServiceConfiguration
        {
            TemplateManager = templateManager,
        };

        var templateService = RazorEngineService.Create(config);

       var body = templateService .RunCompile($"MyTemplate.cshtml", null, _myModel);

The template itself is quite simple:
@model server.Models.MyModel

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Welcome</title>
    @{ Model.Subject = "bla bla bla"; }
</head>
<body>
    <p>
        Hello @Model.Username,
    </p>
</body>
</html>

However when I run it on a remote Linux machine in a docker container I got the following error:
RazorEngine.Templating.TemplateCompilationException: Errors while compiling a Template.
Please try the following to solve the situation:
  * If the problem is about missing/invalid references or multiple defines either try to load
    the missing references manually (in the compiling appdomain!) or
    Specify your references manually by providing your own IReferenceResolver implementation.
    See https://antaris.github.io/RazorEngine/ReferenceResolver.html for details.
    Currently all references have to be available as files!
  * If you get 'class' does not contain a definition for 'member':
        try another modelType (for example 'null' to make the model dynamic).
        NOTE: You CANNOT use typeof(dynamic) to make the model dynamic!
    Or try to use static instead of anonymous/dynamic types.
More details about the error:
 - warning: (7, 4) Unnecessary using directive.
	 - warning: (6, 4) Unnecessary using directive.
	 - warning: (8, 4) Unnecessary using directive.
	 - warning: (5, 4) Unnecessary using directive.
	 - error: (0, 0) Unexpected error writing debug information -- 'COM Interop is not supported on this platform.'

I'm using 4.6.0-rc1 version btw.

I got same problem on macos 10.13.2

me too...

+1

I got the same problem on macos 10.14.3

+1 macos 10.14.3
Blocking my tool development. :(

Workaround :
I had to fork and changed :
RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.cs:
using (var assemblyStream = File.Open(assemblyFile, FileMode.Create, FileAccess.ReadWrite))
using (var pdbStream = File.Open(assemblyPdbFile, FileMode.Create, FileAccess.ReadWrite))
{
	var opts = new EmitOptions()
		.WithPdbFilePath(assemblyPdbFile);
	var pdbStreamHelper = pdbStream;

	if (IsMono()) {
		opts = opts.WithDebugInformationFormat(DebugInformationFormat.PortablePdb);
	}

	EmitResult result = null;
	if (Debugger.IsAttached) {
		result = compilation.Emit(assemblyStream, pdbStreamHelper, options: opts);
	} else {
		result = compilation.Emit(assemblyStream);
	}
	//var result = compilation.Emit(assemblyStream, pdbStreamHelper, options: opts);
	//var result = compilation.Emit(assemblyStream);
	if (!result.Success)
	{
		var errors =
			result.Diagnostics.Select(diag => {
				var lineSpan = diag.Location.GetLineSpan();
				return new Templating.RazorEngineCompilerError(
					string.Format("{0}", diag.GetMessage()),
					lineSpan.Path,
					lineSpan.StartLinePosition.Line,
					lineSpan.StartLinePosition.Character,
					diag.Id,
					diag.Severity != DiagnosticSeverity.Error);
			});

		throw new Templating.TemplateCompilationException(errors, compilationData, context.TemplateContent);
	}
}

compilation.Emit(assemblyStream, pdbStreamHelper, options: opts)
is the part that fails.
Be aware that I think you wont get error details in case of a template error.
And of course requires more testing...
Works in a Docker container hosted in kubernetes.

Still not working :( Need a fix for this.

Did you implemented the changes above?
Basically you only need to change (line#242) :
compilation.Emit(assemblyStream, pdbStreamHelper, options: opts)
to
compilation.Emit(assemblyStream)
I forked this version : https://github.com/fouadmess/RazorEngine
You get the same error?

Just got the same error when using:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <LangVersion>7.3</LangVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="RazorEngine.NetCore" Version="2.2.2" />
  </ItemGroup>
</Project>

When using dotnet add package RazorEngine --version 4.5.1-alpha001, i get  "Could not load file or assembly 'System.Configuration.ConfigurationManager ...." https://github.com/Antaris/RazorEngine/issues/515
@Antaris is it that RazorEngine has never worked on netcoreapp?

Did you implemented the changes above?
Basically you only need to change (line#242) :
compilation.Emit(assemblyStream, pdbStreamHelper, options: opts)
to
compilation.Emit(assemblyStream)
I forked this version : https://github.com/fouadmess/RazorEngine
You get the same error?

Unfortunately I didnt hesitate and switched the library to get rid of the problem, because I didn't want to fork it and package it myself.
I am on RazorLight now. It has other downsides, but it atleast fixed my problem for the moment.

What is the current status of this error? Any updates? Is there any way to run this package on Linux?

any fix on this?

still getting the same error in docker

did you guys use any alternative plugin aside from razor engine that works in container

See my previous comment. :)

I am on RazorLight now. It has other downsides, but it atleast fixed my problem for the moment.

I switched to a different template engine.

the same problem.  .net core 2.2 on linux
- error: (0, 0) Unexpected error writing debug information -- 'COM Interop is not supported on this platform.'

the same problem. .net core 2.1 ~ 3.1 on mac

error: (0, 0) Unexpected error writing debug information -- 'COM Interop is not supported on this platform.'

I switched to a different template engine (not Razor).

What did you change to?

I think as of today, you got 2 options (without changing your existing templates):

Using the fix of @mgoodfellow available from Nuget. Ref https://github.com/fouadmess/RazorEngine/pull/3
Switching to RazorLight. Works like RazorEngine, but seems really more maintained

One interesting observation on MacOS using Rider. If running the project with a debugger attached, I get this error. If the debugger isn't attached, no error.

One interesting observation on MacOS using Rider. If running the project with a debugger attached, I get this error. If the debugger isn't attached, no error.


Keybase can't find the Github proof

Tried this several times to get it to recognise the keybase.md file in my Gists but it fails every time. If I type manually I can easily find it. Seems the software isn't bug free yet?
https://gist.github.com/mbthedude
Keybase proof
I hereby claim:
I am mbthedude on github.
I am mbthedude (https://keybase.io/mbthedude) on keybase.
I have a public key ASCA-wdlSWhVyelZ9DewdYGFvIRFUUasIqEPpQmDWwqkCwo

To claim this, I am signing this object:
{
"body": {
"key": {
"eldest_kid": "012080fb0765496855c9e959f437b0758185bc84455146ac22a10fa509835b0aa40b0a",
"host": "keybase.io",
"kid": "012080fb0765496855c9e959f437b0758185bc84455146ac22a10fa509835b0aa40b0a",
"uid": "674d14ee9a4c699db30b5a3b48db9f19",
"username": "mbthedude"
},
"merkle_root": {
"ctime":<PHONE_NUMBER>,
"hash": "a451884074ba341b296d7955104b176d70c6ed3edcae32b286e094c3b0ee6c86284f8e630fb4a62fee942f51a0625da3d1ad4621695170de2afa7dba7396e7db",
"hash_meta": "473f913ad508dd7387a0d1405b3cf1befe94be419bd3c547111cad8e8582d7fb",
"seqno": 6364687
},
"service": {
"entropy": "XO1sF+qP1h77lyQ/JyOy5fMd",
"name": "github",
"username": "mbthedude"
},
"type": "web_service_binding",
"version": 2
},
"client": {
"name": "keybase.io go client",
"version": "4.4.0"
},
"ctime":<PHONE_NUMBER>,
"expire_in": 504576000,
"prev": "4a9fe0f98e8fa41402934693a85901c2f8e56e4a3cae5ac465726caee75989e6",
"seqno": 5,
"tag": "signature"
}
with the key ASCA-wdlSWhVyelZ9DewdYGFvIRFUUasIqEPpQmDWwqkCwo, yielding the signature:
hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEggPsHZUloVcnpWfQ3sHWBhbyERVFGrCKhD6UJg1sKpAsKp3BheWxvYWTESpcCBcQgSp/g+Y6PpBQCk0aTqFkBwvjlbko8rlrEZXJsrudZiebEIBnfwLX3afJ4y4DBMDceB/a22sgay9X5K5FYNLZeZOB8AgHCo3NpZ8RA2/mOdO46E1GYDjuE8ak728TKiwInMlPpoC9D/jTwbtgD1LwnDIdWTabdt05ND0uB27P8AKAKT1EAWWqw2xRuAqhzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEIPtXsj9wAxuWje9AFpGq5yFFz4CqTPMFb4Xs8OWT050go3RhZ80CAqd2ZXJzaW9uAQ==
And finally, I am proving ownership of the github account by posting this as a gist.
My publicly-auditable identity:
https://keybase.io/mbthedude
From the command line:
Consider the keybase command line program.
look me up
keybase id mbthedude

Hi, can you check if the gist is still up and if it is a public gist? I can't seem to see it on https://gist.github.com/mbthedude

I have the same issue.

Had the same issue but solved as I realise that I had not make my keybase.md gist to be public 🤦 (as it was instructed on the Keybase instruction).
Just make sure that you select the Create public gist when publishing. By default, it will set to a secret gist

Or if you had create a secret gist, there is an option to make it public. Go to your secret gist, click on edit and there is an option on the top right to make it a public gist.

Hope this helps.
Cheers!

For me, the issue was resolved by destroying the private gist, which I had clicked Make Public on, and re-creating a new public gist.


Gobblin support for Kafka 0.7

Does Gobblin support Kafka 0.7 as a data source ?

No, 0.8 is the minimum level.


Biometrics lock bug

In the latest build, any action that requires authentication needs to authenticate twice. This also involves what seems to be an app switch between the two attempts, so if the app is set to Locked and Secured, it becomes impossible to unlock the app without a reinstall.

Issue created by BlueBubbles Bot in the BlueBubbles commnity on behalf of @scarlett in #android-bugs.

Update: force stop and clear cache now allows me to get into the app when Locked and Secured is enabled, but everything still does require two prompts.

Update 2: Force stop and cache clear didn't fix the issue in Locked and Secured, it actually just switched the setting back to Locked. That's probably a separate bug too

Update 2: Force stop and cache clear didn't fix the issue in Locked and Secured, it actually just switched the setting back to Locked. That's probably a separate bug too

Not a bug because the app will not switch the security level if the authentication isn't successful (which it sounds like it locked you out when you switched so that would be the case)

Close it?

@romhacks can you reproduce on the most recent alpha build?

I can still reproduce the double authentication screens

Hm okay idk then. Nobody else has this issue so I'm inclined to say it's a Samsung bug? Don't think there's anything wrong in our logic for the lock/unlock.

I agree. Closing

update for the books: The One UI 3 (android 11) upgrade seems to fix this bug.


[$250] When there is only one message in a chat then on deleting that message it shows "fake" in LHN - reported by @Tushu17

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Click on :green-plus-button:
New chat > Search a new user
Message the searched user
Delete the message and check the LHN

Expected Result:
It shouldn't show the "fake" in LHN
Actual Result:
LHN shows "fake"
Workaround:
unknown
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: 1.1.46-3
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43995119/160738760-46bb5613-684b-421a-82e8-5d723da17a6f.mp4
Expensify/Expensify Issue URL:
Issue reported by: @Tushu17
Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1647727189086589
Job Post: https://www.upwork.com/jobs/~0182dfea977510a8eb
View all open jobs on GitHub

@Tushu17 please apply to the posted job for reporting bonus. Thanks!

Proposal
The bug is coming from this line:
https://github.com/Expensify/App/blob/ce6363cd7d08819c6ea94b7ffb6a8009eeab3775/src/libs/actions/ReportActions.js#L105
   const lastMessageIndex = _.findLastIndex(reportActions[reportID], action => (
        !ReportUtils.isDeletedAction(action)
    ));

This does not happen when you  just create one message and delete it. It also happens when you delete all the messages.
If I am not mistaken reportActions[reportID] always contains an object at index 0 with this data:

So when all the messages are  deleted the object at index 0 is the one that will pass this test :
https://github.com/Expensify/App/blob/ce6363cd7d08819c6ea94b7ffb6a8009eeab3775/src/libs/actions/ReportActions.js#L106
Here much depends with what the expected results are. Here is my solution.
Solution
When lastMessageIndex returns 0  we should get the index of the last message from reportActions[reportID]
    let lastMessageIndex = _.findLastIndex(reportActions[reportID], action => (
        !ReportUtils.isDeletedAction(action)
    ));

    lastMessageIndex = lastMessageIndex ? lastMessageIndex : reportActions[reportID].length

https://github.com/Expensify/App/blob/ce6363cd7d08819c6ea94b7ffb6a8009eeab3775/src/libs/actions/ReportActions.js#L105
https://user-images.githubusercontent.com/4520893/161401735-623f6350-aa9d-4b70-818f-c1fee9f76f72.mov

I will review the proposal(s) by tomorrow.

@thienlnam What's expected here?

I think it showing either blank or some sort of indication the message was deleted works here

Thanks, @thienlnam.
I think it should be blank because we don't show any deleted indication if delete the last message. Instead, the message that was before deleted is shown in the preview.
@brianmuks Can you update your proposal to match the expected OP let us know thanks!

Thanks, @thienlnam. I think it should be blank because we don't show any deleted indication if delete the last message. Instead, the message that was before deleted is shown in the preview.
@brianmuks Can you update your proposal to match the expected OP let us know thanks!

Thanks for the feedback. My proposal at the moment shows blank but what I understand is that you want the last deleted message to still show on the LHN . Is that right ?

No @brianmuks It should be blank.

Will this https://github.com/Expensify/App/issues/8361#issuecomment-1086727568 show a blank on LHN? @brianmuks

Will this #8361 (comment) show a blank on LHN? @brianmuks

Yes it will show blank.

No @brianmuks It should be blank.

Then this proposal aligns well with what you are looking for https://github.com/Expensify/App/issues/8361#issuecomment-1086727568

@thienlnam What's expected OP here?

I am catching up here. What does OP stand for ? I want to sound like an engineer too 😄

@brianmuks
Your proposal is not clear, I am not able to follow your Solution can brief it more clearly, and instead of the diff(which is confusing) can you send a snippet of the modified block.

OP means Output

Let me check with the team to see verify what the expected output should be.  Will post back here when I hear back

Okay @thienlnam

I'm not following here, lastMessageIndex = lastMessageIndex ? lastMessageIndex : reportActions[reportID].length
@brianmuks Can you briefly explain how this addresses the issue?

My comment here explains the technical aspect: https://github.com/Expensify/App/issues/8361#issuecomment-1086727568
lastMessageIndex = lastMessageIndex ? lastMessageIndex : reportActions[reportID].length

The snippet above ensures that the index  of  object where the _fake_ is coming from is not used as the last message in the LHN.  From my understanding reportActions[reportID][0] contains auto-generated data.

reportActions[reportID].length Does make any sense to me.

reportActions[reportID].length Does make any sense to me.

I see your point. I was trying to get the index  of the last deleted message . The correction then should be reportActions[reportID].length -1 .

reportActions[reportID].length Does make any sense to me.

I see your point. I was trying to get the index of the last deleted message . The correction then should be reportActions[reportID].length -1  but this will break if you send only one message then you delete it .
If 3 messages were deleted reportActions[reportID].length will return 4. Off-course there is no message at index 4. The snippet below handles such a scenario especially if you start a new chat, send one message then you delete it. I don't think anything will break.
    return ReportUtils.formatReportLastMessageText(
        lodashGet(reportActions, [reportID, lastMessageIndex, 'message', 0, 'text'], ''),
    );

Alternatively we can just do this :
    return lastMessageIndex ? ReportUtils.formatReportLastMessageText(
        lodashGet(reportActions, [reportID, lastMessageIndex, 'message', 0, 'text'], ''),
    ) : '';

Return an empty string when lastMessageIndex is 0.

@Santhosh-Sellavel any comment on this ?

Pending review from C+.  I don't think we should be changing what the lastMessageIndex is, it makes more sense to return an empty string if the lastMessageIndex is 0

@thienlnam how is this :
 return lastMessageIndex ? ReportUtils.formatReportLastMessageText(
         lodashGet(reportActions, [reportID, lastMessageIndex, 'message', 0, 'text'], ''),
     ) : '';

I don't think we should be changing what the lastMessageIndex is

I agree with you here @thienlnam.
But I would dig little this a bit before moving forward, I'll update on Monday thanks!

@thienlnam
@brianmuks Proposal Looks Good!
🎀 👀 🎀 C+ reviewed

Hired @brianmuks , @Santhosh-Sellavel , and @Tushu17 for the job in upwork. Dream team!

@brianmuks Any update here ?

@kevinksullivan @thienlnam
As per Contributing guidelines,

Daily updates on weekdays are highly recommended. If you know you won’t be able to provide updates for > 1 week, please comment on the PR or issue how long you plan to be out so that we may plan accordingly. We understand everyone needs a little vacation here and there. Any issue that doesn't receive an update for 1 full week may be considered abandoned and the original contract terminated.

There is no update over one week on this one, can we terminate @brianmuks contract add the Help Wanted Label here?

@kevinksullivan @thienlnam As per Contributing guidelines,

Daily updates on weekdays are highly recommended. If you know you won’t be able to provide updates for > 1 week, please comment on the PR or issue how long you plan to be out so that we may plan accordingly. We understand everyone needs a little vacation here and there. Any issue that doesn't receive an update for 1 full week may be considered abandoned and the original contract terminated.

There is no update over one week on this one, can we terminate @brianmuks contract add the Help Wanted Label here?

Sorry for the delay. PR will be ready by tomorrow 🙏

Hi @brianmuks , do you have an update/PR for us today?

Hi @brianmuks , do you have an update/PR for us today?

@kevinksullivan PR is ready https://github.com/Expensify/App/pull/8967

We're going to be revisiting a solution for group chats since currently with the fix it shows the name of the user that last sent a message and then no message which seems like a bug.

We're going to be revisiting a solution for group chats since currently with the fix it shows the name of the user that last sent a message and then no message which seems like a bug.

Further to my proposal. To fix the mentioned bug ☝🏾 we can check if the last message is an empty string. If so then we can just set lastMessageText to an empty string which in turn will force LHN to show the subtitle instead of the name of the user who sent the last deleted message as it is the case currently.
https://github.com/Expensify/App/blob/8e3c67ba25200f5558ce6be6fd3aa211c43d60b6/src/libs/OptionsListUtils.js#L237
 let lastMessageText = report && !isArchivedRoom && hasMultipleParticipants && lastActorDetails && lodashGet(report, 'lastMessageText', null)

https://user-images.githubusercontent.com/4520893/170326162-debe0a3c-2732-48ce-9a45-96c8c91f94eb.mov

@brianmuks How it works out for group chat?

@brianmuks How it works out for group chat?
Can you share screen recording covering both before adding the message case & after deleting the message.
@Santhosh-Sellavel here you go :

https://user-images.githubusercontent.com/4520893/170452812-73504dd1-20f6-41d2-9f9d-7fbc2fa79898.mov

@thienlnam
@brianmuks new changes look good to me.
One suggestion there are too many checks for one boolean, can we break down checks in a meaningful way?

&& lodashGet(report, 'lastMessageText', null)

Thanks @Santhosh-Sellavel .
How is this  ?
https://github.com/Expensify/App/blob/8e3c67ba25200f5558ce6be6fd3aa211c43d60b6/src/libs/OptionsListUtils.js#L237
    let lastMessageText = report && hasMultipleParticipants && lastActorDetails  ? `${lastActorDetails.displayName}:  : ''; `
    //Since no empty message can be sent we next  check if the message was deleted
   lastMessageText =  lodashGet(report, 'lastMessageText', null) ? lastMessageText : '';

You're somewhat on the right track, but you're removing the subtitle name completely which is not what we want to do here.
Also, in the video you linked - the expected functionality is incorrect.  If you're deleting the only message in the group chat, the subtitle should be empty and not show anything

@thienlnam I am not removing the subtitle you can check the video below or I could be missing something here.
I had this comment below from @Santhosh-Sellavel  when I revisited the solution. The aim has been to restore all chats to their original state as when one initiated the conversation.

Additional Context:
Both One to One & group chats are restored to the same state before no messages after deleting the sent messages.
i.e email is shown refer to image/video above

https://user-images.githubusercontent.com/4520893/171154254-253229dc-0ede-4982-be2f-494c9c803a48.mov

@brianmuks
On this line https://github.com/Expensify/expensify-common/pull/451
@thienlnam has a different requirement for group chat alone. Not to show email at all.

@brianmuks
On this line https://github.com/Expensify/expensify-common/pull/451
@thienlnam has a different requirement for group chat alone. Not to show email at all.

Thanks @Santhosh-Sellavel for the clarification 🙏🏾 . Let me work on it.

@thienlnam I was checking if there is a method to check if chat is a group chat but it seems there is none.
It was suggested that I create one on the thread below. I would like to hear your thoughts on this .
https://expensify.slack.com/archives/C01GTK53T8Q/p1654092407682469

I have created a method to determine if chat is group chat as suggested here :
https://expensify.slack.com/archives/C01GTK53T8Q/p1654093853902489?thread_ts=1654092407.682469&cid=C01GTK53T8Q
 * Whether the provided report is a group chat
 * @param {Object} report
 * @param {String} report.chatType
 * @returns {Boolean}
 */
function isGroupChat(report) {
    return report.participants.length > 2;
}

The methods is sitting here:
https://github.com/brianmuks/Expensify.cash/blob/2a8b8a490e224d6e0cd02bbf39853dd9c4fdff24/src/libs/reportUtils.js
Can I go ahead with this approach ?

It might be slightly more complicated and you will need to check if the report participants are still greater than 1 if you exclude these emails https://github.com/Expensify/App/blob/main/src/pages/NewChatPage.js#L63-L63

It might be slightly more complicated and you will need to check if the report participants are still greater than 1 if you exclude these emails https://github.com/Expensify/App/blob/main/src/pages/NewChatPage.js#L63-L63

Thanks @thienlnam . I am on it !

@thienlnam I created a method in this proposal that returns true if the session email is the only participant. With that I can fix the missing logic in this problem. Can I elaborate some proposal for this problem?

@JosueEchandiaAsto We already hired someone to do this job.

@brianmuks Any update on this?

@Santhosh-Sellavel I am pushing an update today. Sorry for the delay 😞 . I was having issues with the app it couldn't function properly. I think it had to do with the caching issues.

It might be slightly more complicated and you will need to check if the report participants are still greater than 1 if you exclude these emails https://github.com/Expensify/App/blob/main/src/pages/NewChatPage.js#L63-L63

@thienlnam it appears that even when we exclude the suggested EXPENSIFY_EMAILS, for #annouce chat room we might still get participants being greater than one as seen in the screen shot.
I am still trying to figure out the best approach to detect a group chat.

Why can't we have something like this for group chat:
function isGroupChat(report) {
    return lodashGet(report, ['chatType'], '') === CONST.REPORT.CHAT_TYPE.POLICY_GROUP_CHAT;
}

This means that the following will have to be modified to include POLICY_GROUP_CHAT
https://github.com/Expensify/App/blob/406040d1b208277e44580bb372323e934b112f37/src/CONST.js#L247
     CHAT_TYPE: {
            POLICY_ANNOUNCE: 'policyAnnounce',
            POLICY_ADMINS: 'policyAdmins',
            DOMAIN_ALL: 'domainAll',
            POLICY_ROOM: 'policyRoom',
            POLICY_EXPENSE_CHAT: 'policyExpenseChat',
           +POLICY_GROUP_CHAT: 'policyGroupChat',
        },

@thienlnam @brianmuks

It might be slightly more complicated and you will need to check if the report participants are still greater than 1 if you exclude these emails https://github.com/Expensify/App/blob/main/src/pages/NewChatPage.js#L63-L63

We won't able to create a chat with the excluded emails.
Policy rooms or default rooms have value in chatType. So if chatType is empty and participants are greater than > 1 in reports. This check should be fine right?

@brianmuks What's the goal of this method / how will it solve the solution?

The goal is to use the method to determine if chat is group chat. If true based on this https://github.com/Expensify/App/issues/8361#issuecomment-1142078639 we should be able to
show nothing when a group chat is initiated and when all messages are deleted.

Okay, in this case let's just check if there are multiple participants including expensify emails. If there are more than 2 people in a group chat, it will append the name of the user

If I am getting this right:

We don't need a method to determine if chat is group chat

it will append the name of the user

For group chats : Instead of showing nothing when all messages are deleted we should show the name of the user who sent the last message

We don't need a method to determine if chat is group chat

@thienlnam thanks for clarifying this. I am on it.

So right now, our issue is that for chats with multiple participants - it will show the name of the person sending the message right?
Yes

Any update @brianmuks?

This issue https://github.com/Expensify/App/issues/8361#issuecomment-1164548104 keeps persisting. I think it might be a bug. I have tried to clear cookies to no avail. Let me check on other platforms.

This issue https://github.com/Expensify/App/issues/8361#issuecomment-1164548104 keeps persisting. I think it might be a bug. I have tried to clear cookies to no avail. Let me check on other platforms.

We must have fixed the fake in another change.  However, if you have two messages and delete the most recent one, it correctly shows the message sent before correct?

We must have fixed the fake in another change.

Yes the fake issue was fixed but not merged yet.

However, if you have two messages and delete the most recent one, it correctly shows the message sent before correct?
No, the deleted messages are not disappearing on the LHN only from the chat view

Yes the fake issue was fixed but not merged yet.

What do you mean by not merged yet - you're experiencing it on every branch so it must be on main right? Do you mean not deployed?

No, the deleted messages are not disappearing on the LHN only from the chat view

I just tested deleting a message on prod (Version 1.1.82-5 (1.1.82-5).  It will show the last message
It looks like this issue is resolved - the outcome we've had is also acceptable (showing the email if the only message is deleted)

Yes, _fake_ issue is no longer reproducible now in production. Even though @brianmuks PR #8967 is not merged yet.

@kevinksullivan Let's pay out this issue to pay them for their time but this issue has been fixed by another PR

Paid @Santhosh-Sellavel and @Tushu17 .  @brianmuks please accept hire.

Paid @Santhosh-Sellavel and @Tushu17 . @brianmuks please accept hire.
Done. Thanks

@thienlnam for group name case shall we create a new issue or shall we update the description and reapply the Help Wanted label?

Current functionality is fine - we can leave it as that for now

@brianmuks please accept hire.
@kevinksullivan I am waiting on you 😄 . Thanks.


Update events in right side flyout

Is Your Feature Request Related To A Problem? Please describe.
The events in the right side flyout need updated.
Describe The Solution. Why is it needed?
Update the right side flyout to show the upcoming events and remove old ones.
Additional Context.
This is a reoccurring task.
Related Issues
n/a

This is set to go out 02 December.


[ISSUE #488]Support rebalance and recommend in EventMesh

Fixes ISSUE#488
Motivation

Support the rebalance of clients with same group in diffent eventmesh;
Support the recommendation of EventMesh to client.

Modifications

Add eventmesh-registry-plugin module;
Add sub module eventmesh-registry-api in the eventmesh-registry-plugin, this module provides simple registry api design;
Add sub module eventmesh-registry-namesrv in the eventmesh-registry-plugin, this module only provides default empty implementation of plugin according to eventmesh-registry-api so far;
Add relative code of rebalance and recommendation in eventmesh-runtime.

Codecov Report

Merging #489 (b2b5850) into develop (31a3825) will decrease coverage by 0.32%.
The diff coverage is 1.97%.

:exclamation: Current head b2b5850 differs from pull request most recent head 954d170. Consider uploading reports for the commit 954d170 to get more accurate results

@@              Coverage Diff              @@
##             develop     #489      +/-   ##
=============================================
- Coverage      11.02%   10.69%   -0.33%
  Complexity       326      326
=============================================
  Files            229      235       +6
  Lines          10975    11378     +403
  Branches         924      991      +67
=============================================
+ Hits            1210     1217       +7
- Misses          9667    10062     +395
- Partials          98       99       +1

Impacted Files
Coverage Δ

...ntime/admin/controller/ClientManageController.java
0.00% <0.00%> (ø)

.../admin/handler/QueryRecommendEventMeshHandler.java
0.00% <0.00%> (ø)

...apache/eventmesh/runtime/boot/EventMeshServer.java
0.00% <0.00%> (ø)

...che/eventmesh/runtime/boot/EventMeshTCPServer.java
0.00% <0.00%> (ø)

...ventmesh/runtime/constants/EventMeshConstants.java
0.00% <ø> (ø)

...ocol/tcp/client/EventMeshTcpMessageDispatcher.java
0.00% <0.00%> (ø)

...ol/tcp/client/group/ClientSessionGroupMapping.java
0.00% <0.00%> (ø)

...cp/client/rebalance/EventMeshRebalanceService.java
0.00% <0.00%> (ø)

...l/tcp/client/rebalance/EventmeshRebalanceImpl.java
0.00% <0.00%> (ø)

...l/tcp/client/recommend/EventMeshRecommendImpl.java
0.00% <0.00%> (ø)

... and 11 more

Continue to review full report at Codecov.

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


Modified Call Screen and Call Model

Description 📜
Modified Call Screen and Call Model
Fixes #6579

Type of change 📝

[ ] Au#dio (Should be in mp3 format Includes speech clarity, Concise ,Low distortion)
[ ] Vi#deo (Animations, screen-recordings, presentations and regular explanatory films are all possibilties etc)
[x] Documentation (Content Creation in the form of codes or tutorials)
[ ] Other (If you choose other, Please mention changes below)

Domain of Contribution 📊

[x] Android Dev (Flutter)
[ ] Android Dev #(Java)
[ ] Android Dev #(Kotlin)
[ ] Backend Dev #(Java)
[ ] Backend Dev #(.NET)
[ ] Backend Dev #(PHP)
[ ] Backend Dev #(Python)
[ ] C/#CPP
[ ] Competitive #Programming
[ ] Cyber #Security
[ ] DS#A
[ ] Data#base
[ ] Datascience with #Python
[ ] Datascience with #R
[ ] Frontend Dev #HTML/CSS/JS
[ ] Frontend Dev #React/Angular/Vue
[ ] Go#lang
[ ] Interview #Prep
[ ] Java_#Domain
[ ] JavaScript_#Domain
[ ] ME#RN
[ ] Machine #Learning
[ ] Open #Source
[ ] Python_#Domain
[ ] Ru#st
[ ] Statis#tics
[ ] UI/#UX

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

Screenshots / Gif (Optional) 📸

@Gagarod can you attach a screenshot in this PR?

@Gagarod can you attach a screenshot in this PR?

Sure


Update Velero component for Packet [openebs and restic plugin support]

This PR adds supports for Packet platform for Packet platform with the help of OpenEBS and Restic plugin.
TODO:

e2e tests
Documentation.

Please review and provide your valuable feedback.

I removed the commit that is associated with this Pr #971 since the direction of the mentioned PR is still not sure.
There was an issue with OpenEBS plugin which has been addressed.
For e2e tests there are a few options that we could use (we need velero binary to create a backup)

Create a scheduled backup for e2e tests. One of th open bugs in Velero is that once a scheduled is created the backup is triggered immediately. We could exploit that behaviour in CI for e2e tests.

For restore we can use an already backup snapshot that can be restored on every CI job. Successful restore to end the test.

However we need to find a way to trigger the backup(if not using scheduled backup)/restore using the velero binary.

However we need to find a way to trigger the backup(if not using scheduled backup)/restore without using the velero binary.

I'd create a pod/job with velero binary to just manually create a backup velero create backup --include-namespaces <foo> and wait for backup to finish.
Then remove the namespace.
Then try to recover it from the backup.
Then run e2e tests again? E.g. we could remove prometheus-operator namespace and run it's tests to make sure it recovered.
BTW, should we do e2e tests as separate PR? This one is already quite large.

However we need to find a way to trigger the backup(if not using scheduled backup)/restore without using the velero binary.

I'd create a pod/job with velero binary to just manually create a backup velero create backup --include-namespaces <foo> and wait for backup to finish.
Then remove the namespace.
Then try to recover it from the backup.
Then run e2e tests again? E.g. we could remove prometheus-operator namespace and run it's tests to make sure it recovered.
BTW, should we do e2e tests as separate PR? This one is already quite large.

Yes @invidian thats the idea to cover e2e tests in a separate PR.


fix: remove potentially buggy Redpanda quirk

Newer versions of Redpanda do not require the OffsetOutOfBounds
quirk anymore, so let's remove it. See #147 on why this is a good idea.

Looking at the socks5 test failure...

Fix in https://github.com/redpanda-data/redpanda/pull/4201 included in v22.1.1